diff options
author | Gard Spreemann <gard.spreemann@epfl.ch> | 2018-08-20 21:03:51 +0200 |
---|---|---|
committer | Gard Spreemann <gard.spreemann@epfl.ch> | 2018-08-20 21:03:51 +0200 |
commit | 4c1b1727ab44a773d27b090463ac6db957267136 (patch) | |
tree | 53520f77b9e88998181b2bb8c368302aaa5fea3c | |
parent | f8b9be92615662a1f9559608930559138f9c1fd8 (diff) | |
parent | 657f73321f04d5d1c4cec8085ec43a73633b96af (diff) |
Merge branch 'master' into gspr/mpi
1651 files changed, 68350 insertions, 1744 deletions
diff --git a/geom_bottleneck/CMakeLists.txt b/geom_bottleneck/CMakeLists.txt index 62dc2f2..7a820ac 100644 --- a/geom_bottleneck/CMakeLists.txt +++ b/geom_bottleneck/CMakeLists.txt @@ -33,3 +33,6 @@ set (libraries ${libraries} ${CMAKE_THREAD_LIBS_INIT}) add_executable(bottleneck_dist ${CMAKE_CURRENT_SOURCE_DIR}/example/bottleneck_dist.cpp ${WS_HEADERS}) target_link_libraries(bottleneck_dist PUBLIC ${libraries}) + +add_executable(bottleneck_test ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests_main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_hera_bottleneck.cpp) +target_link_libraries(bottleneck_test PUBLIC ${libraries}) diff --git a/geom_bottleneck/example/bottleneck_dist.cpp b/geom_bottleneck/example/bottleneck_dist.cpp index b66e7bc..8966789 100644 --- a/geom_bottleneck/example/bottleneck_dist.cpp +++ b/geom_bottleneck/example/bottleneck_dist.cpp @@ -48,35 +48,27 @@ int main(int argc, char* argv[]) PairVector diagramA, diagramB; int decPrecision { 0 }; - if (!hera::bt::readDiagramPointSet(argv[1], diagramA, decPrecision)) { + if (!hera::readDiagramPointSet(argv[1], diagramA, decPrecision)) { std::exit(1); } - if (!hera::bt::readDiagramPointSet(argv[2], diagramB, decPrecision)) { + if (!hera::readDiagramPointSet(argv[2], diagramB, decPrecision)) { std::exit(1); } double res; + hera::bt::MatchingEdge<double> e; if (argc >= 4) { // the third parameter is epsilon, // return approximate distance (faster) double delta = atof(argv[3]); if (delta > 0.0) { if (useSamplingHeur && diagramA.size() > heurThreshold && diagramB.size() > heurThreshold) { -#ifdef VERBOSE_BOTTLENECK - std::cout << "using sampling heuristic" << std::endl; -#endif res = hera::bottleneckDistApproxHeur(diagramA, diagramB, delta); } else { -#ifdef VERBOSE_BOTTLENECK - std::cout << "NOT using sampling heuristic" << std::endl; -#endif - res = hera::bottleneckDistApprox(diagramA, diagramB, delta); + res = hera::bottleneckDistApprox(diagramA, diagramB, delta, e, true); } } else if (delta == 0.0) { -#ifdef VERBOSE_BOTTLENECK - std::cout << "NOT using sampling heuristic, computing EXACT answer" << std::endl; -#endif res = hera::bottleneckDistExact(diagramA, diagramB, decPrecision); } else { std::cerr << "The third parameter (relative error) must be positive!" << std::endl; @@ -84,13 +76,12 @@ int main(int argc, char* argv[]) } } else { // only filenames have been supplied, return exact distance -#ifdef VERBOSE_BOTTLENECK - std::cout << "NOT using sampling heuristic, computing EXACT answer" << std::endl; -#endif - res = hera::bottleneckDistExact(diagramA, diagramB, decPrecision); + res = hera::bottleneckDistExact(diagramA, diagramB, decPrecision, e, true); + } std::cout << std::setprecision(15) << res << std::endl; - + //std::cout << "Longest edge " << e.first.get_user_id() << " <-> " << e.second.get_user_id() << std::endl; + //std::cout << "Longest edge " << e.first << " <-> " << e.second << std::endl; // Alternative could be to construct DiagramPointSet // using the constructor with iterators. // May be useful if the same diagram is used multiple times diff --git a/geom_bottleneck/include/basic_defs_bt.h b/geom_bottleneck/include/basic_defs_bt.h index ad09986..172e0f7 100644 --- a/geom_bottleneck/include/basic_defs_bt.h +++ b/geom_bottleneck/include/basic_defs_bt.h @@ -33,6 +33,7 @@ derivative works thereof, in binary and source code form. #include <ciso646> #endif +#include <utility> #include <vector> #include <stdexcept> #include <math.h> @@ -45,431 +46,524 @@ derivative works thereof, in binary and source code form. #include "def_debug_bt.h" #ifndef FOR_R_TDA -#include <iostream> -#endif -namespace hera { -namespace bt { +#include <iostream> -typedef int IdType; -constexpr IdType MinValidId = 10; +#endif -template<class Real = double> -struct Point { - Real x, y; +namespace hera { - bool operator==(const Point<Real> &other) const + template<class Real = double> + Real get_infinity() { - return ((this->x == other.x) and (this->y == other.y)); + return Real(-1.0); } - bool operator!=(const Point<Real> &other) const - { - return !(*this == other); - } + namespace bt { + + + typedef int IdType; + constexpr IdType MinValidId = 10; + + template<class Real = double> + struct Point + { + Real x, y; + + bool operator==(const Point<Real>& other) const + { + return ((this->x == other.x) and (this->y == other.y)); + } + + bool operator!=(const Point<Real>& other) const + { + return !(*this == other); + } - Point(Real ax, Real ay) : x(ax), y(ay) {} + Point(Real ax, Real ay) : + x(ax), y(ay) + {} - Point() : x(0.0), y(0.0) {} + Point() : + x(0.0), y(0.0) + {} #ifndef FOR_R_TDA - template<class R> - friend std::ostream& operator<<(std::ostream& output, const Point<R>& p) - { - output << "(" << p.x << ", " << p.y << ")"; - return output; - } + template<class R> + friend std::ostream& operator<<(std::ostream& output, const Point<R>& p) + { + output << "(" << p.x << ", " << p.y << ")"; + return output; + } #endif -}; - -template<class Real = double> -struct DiagramPoint { - // Points above the diagonal have type NORMAL - // Projections onto the diagonal have type DIAG - // for DIAG points only x-coordinate is relevant - // to-do: add getters/setters, checks in constructors, etc - enum Type { - NORMAL, DIAG - }; - // data members -private: - Real x, y; -public: - Type type; - IdType id; - - // operators, constructors - bool operator==(const DiagramPoint<Real> &other) const - { - // compare by id only - assert(this->id >= MinValidId); - assert(other.id >= MinValidId); - bool areEqual{ this->id == other.id }; - assert(!areEqual or ((this->x == other.x) and (this->y == other.y) and (this->type == other.type))); - return areEqual; - } + }; + + template<class Real = double> + struct DiagramPoint + { + // Points above the diagonal have type NORMAL + // Projections onto the diagonal have type DIAG + // for DIAG points only x-coordinate is relevant + // to-do: add getters/setters, checks in constructors, etc + enum Type + { + NORMAL, DIAG + }; + // data members + private: + Real x, y; + public: + Type type; + IdType id; + IdType user_id; + + // operators, constructors + bool operator==(const DiagramPoint<Real>& other) const + { + // compare by id only + assert(this->id >= MinValidId); + assert(other.id >= MinValidId); + bool areEqual { this->id == other.id }; + assert(!areEqual or ((this->x == other.x) and (this->y == other.y) and (this->type == other.type))); + return areEqual; + } - bool operator!=(const DiagramPoint &other) const - { - return !(*this == other); - } + bool operator!=(const DiagramPoint& other) const + { + return !(*this == other); + } - DiagramPoint(Real _x, Real _y, Type _type, IdType _id) : - x(_x), - y(_y), - type(_type), - id(_id) - { - if ( _y == _x and _type != DIAG) - throw std::runtime_error("Point on the main diagonal must have DIAG type"); + DiagramPoint() : + x(0.0), + y(0.0), + type(DiagramPoint::DIAG), + id(MinValidId - 1), + user_id(-1) + { + } - } + DiagramPoint(Real _x, Real _y, Type _type, IdType _id, IdType _user_id) : + x(_x), + y(_y), + type(_type), + id(_id), + user_id(_user_id) + { + if (_y == _x and _type != DIAG) { + throw std::runtime_error("Point on the main diagonal must have DIAG type"); + } + } - bool isDiagonal(void) const { return type == DIAG; } - bool isNormal(void) const { return type == NORMAL; } + bool isDiagonal() const + { return type == DIAG; } - Real inline getRealX() const // return the x-coord - { - return x; - } + bool isNormal() const + { return type == NORMAL; } - Real inline getRealY() const // return the y-coord - { - return y; - } + bool isInfinity() const + { + return x == std::numeric_limits<Real>::infinity() or + x == -std::numeric_limits<Real>::infinity() or + y == std::numeric_limits<Real>::infinity() or + y == -std::numeric_limits<Real>::infinity(); + } + + Real inline getRealX() const // return the x-coord + { + return x; + } + + Real inline getRealY() const // return the y-coord + { + return y; + } + + IdType inline get_user_id() const + { + if (isNormal()) + return user_id; + else + return -1; + } + + Real inline get_persistence(const Real internal_p = get_infinity()) const + { + if (isDiagonal()) + return 0.0; + Real pers = fabs(y - x) / 2; + if (internal_p == get_infinity()) { + return pers; + } else if (internal_p == 1.0) { + return 2 * pers; + } else { + return std::pow(static_cast<Real>(2), static_cast<Real>(1) / internal_p); + } + } #ifndef FOR_R_TDA - template<class R> - friend std::ostream& operator<<(std::ostream& output, const DiagramPoint<R>& p) - { - if ( p.isDiagonal() ) { - output << "(" << p.x << ", " << p.y << ", " << 0.5 * (p.x + p.y) << ", " << p.id << " DIAG )"; - } else { - output << "(" << p.x << ", " << p.y << ", " << p.id << " NORMAL)"; - } - return output; - } + + friend std::ostream& operator<<(std::ostream& output, const DiagramPoint& p) + { + if (p.isDiagonal()) { + output << "(" << p.x << ", " << p.y << ", " << 0.5 * (p.x + p.y) << ", " << p.id << " DIAG )"; + } else { + output << "(" << p.x << ", " << p.y << ", " << p.id << " NORMAL)"; + } + return output; + } #endif + }; + + template<class Real> + using MatchingEdge = std::pair<DiagramPoint<Real>, DiagramPoint<Real>>; + + // compute l-inf distance between two diagram points + template<class Real> + inline Real distLInf(const DiagramPoint<Real>& a, const DiagramPoint<Real>& b) + { + if (a.isDiagonal() and b.isDiagonal()) { + // distance between points on the diagonal is 0 + return 0.0; + } + // otherwise distance is a usual l-inf distance + return std::max(fabs(a.getRealX() - b.getRealX()), fabs(a.getRealY() - b.getRealY())); + } -}; + // this function works with points at infinity as well + // not needed in actual computation, since these points are processed + // separately, but is useful in tests + template<class Real> + inline Real dist_l_inf_slow(const DiagramPoint<Real>& a, const DiagramPoint<Real>& b) + { + if (a.isDiagonal() and b.isDiagonal()) { + // distance between points on the diagonal is 0 + return 0.0; + } + // otherwise distance is a usual l-inf distance + // + Real dx = (a.getRealX() == b.getRealX()) ? 0.0 : fabs(a.getRealX() - b.getRealX()); + Real dy = (a.getRealY() == b.getRealY()) ? 0.0 : fabs(a.getRealY() - b.getRealY()); + Real result = std::max(dx, dy); + if (std::isnan(result)) + result = std::numeric_limits<Real>::infinity(); + return result; + } -// compute l-inf distance between two diagram points -template<class Real> -Real distLInf(const DiagramPoint<Real>& a, const DiagramPoint<Real>& b) -{ - if ( a.isDiagonal() and b.isDiagonal() ) { - // distance between points on the diagonal is 0 - return 0.0; - } - // otherwise distance is a usual l-inf distance - return std::max(fabs(a.getRealX() - b.getRealX()), fabs(a.getRealY() - b.getRealY())); -} - - -template <class T> -inline void hash_combine(std::size_t & seed, const T & v) -{ - std::hash<T> hasher; - seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); -} - -//template<class Real = double> -//struct PointHash { -// size_t operator()(const Point<Real> &p) const -// { -// size_t seed = 0; -// hash_combine(seed, p.x); -// hash_combine(seed, p.y); -// return seed; -// } -//}; - -template<class Real = double> -struct DiagramPointHash { - size_t operator()(const DiagramPoint<Real> &p) const - { - assert(p.id >= MinValidId); - return std::hash<int>()(p.id); - } -}; -template<class Real = double> -Real distLInf(const DiagramPoint<Real> &a, const DiagramPoint<Real> &b); -//template<class Real = double> -//typedef std::unordered_set<Point, PointHash> PointSet; -template<class Real_ = double> -class DiagramPointSet; + template<class Real = double> + inline Real get_infinity() + { + return Real(-1.0); + } + + template<class T> + inline void hash_combine(std::size_t& seed, const T& v) + { + std::hash<T> hasher; + seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); + } -template<class Real> -void addProjections(DiagramPointSet<Real> &A, DiagramPointSet<Real> &B); + template<class Real = double> + struct DiagramPointHash + { + size_t operator()(const DiagramPoint<Real>& p) const + { + assert(p.id >= MinValidId); + return std::hash<int>()(p.id); + } + }; -template<class Real_> -class DiagramPointSet { -public: + template<class Real = double> + Real distLInf(const DiagramPoint<Real>& a, const DiagramPoint<Real>& b); - using Real = Real_; - using DgmPoint = DiagramPoint<Real>; - using DgmPointHash = DiagramPointHash<Real>; - using const_iterator = typename std::unordered_set<DgmPoint, DgmPointHash>::const_iterator; - using iterator = typename std::unordered_set<DgmPoint, DgmPointHash>::iterator; + //template<class Real = double> + //typedef std::unordered_set<Point, PointHash> PointSet; + template<class Real_ = double> + class DiagramPointSet; -private: + template<class Real> + void addProjections(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B); - bool isLinked { false }; - IdType maxId { MinValidId + 1 }; - std::unordered_set<DgmPoint, DgmPointHash> points; + template<class Real_> + class DiagramPointSet + { + public: -public: + using Real = Real_; + using DgmPoint = DiagramPoint<Real>; + using DgmPointHash = DiagramPointHash<Real>; + using const_iterator = typename std::unordered_set<DgmPoint, DgmPointHash>::const_iterator; + using iterator = typename std::unordered_set<DgmPoint, DgmPointHash>::iterator; - void insert(const DgmPoint& p) - { - points.insert(p); - if (p.id > maxId) { - maxId = p.id + 1; - } - } + private: - void erase(const DgmPoint& p, bool doCheck = true) - { - // if doCheck, erasing non-existing elements causes assert - auto it = points.find(p); - if (it != points.end()) { - points.erase(it); - } else { - assert(!doCheck); - } - } + bool isLinked { false }; + IdType maxId { MinValidId + 1 }; + std::unordered_set<DgmPoint, DgmPointHash> points; + public: - void erase(const const_iterator it) - { - points.erase(it); - } + void insert(const DgmPoint& p) + { + points.insert(p); + if (p.id > maxId) { + maxId = p.id + 1; + } + } - void removeDiagonalPoints() - { - if (isLinked) { - auto ptIter = points.begin(); - while(ptIter != points.end()) { - if (ptIter->isDiagonal()) { - ptIter = points.erase(ptIter); + void erase(const DgmPoint& p, bool doCheck = true) + { + // if doCheck, erasing non-existing elements causes assert + auto it = points.find(p); + if (it != points.end()) { + points.erase(it); } else { - ptIter++; + assert(!doCheck); } } - isLinked = false; - } - } - size_t size() const - { - return points.size(); - } - void reserve(const size_t newSize) - { - points.reserve(newSize); - } + void erase(const const_iterator it) + { + points.erase(it); + } - void clear() - { - points.clear(); - } + void removeDiagonalPoints() + { + if (isLinked) { + auto ptIter = points.begin(); + while (ptIter != points.end()) { + if (ptIter->isDiagonal()) { + ptIter = points.erase(ptIter); + } else { + ptIter++; + } + } + isLinked = false; + } + } - bool empty() const - { - return points.empty(); - } + size_t size() const + { + return points.size(); + } - bool hasElement(const DgmPoint &p) const - { - return points.find(p) != points.end(); - } + void reserve(const size_t newSize) + { + points.reserve(newSize); + } - iterator find(const DgmPoint &p) - { - return points.find(p); - } + void clear() + { + points.clear(); + } - iterator begin() - { - return points.begin(); - } + bool empty() const + { + return points.empty(); + } - iterator end() - { - return points.end(); - } + bool hasElement(const DgmPoint& p) const + { + return points.find(p) != points.end(); + } - const_iterator find(const DgmPoint &p) const - { - return points.find(p); - } + iterator find(const DgmPoint& p) + { + return points.find(p); + } - const_iterator cbegin() const - { - return points.cbegin(); - } + iterator begin() + { + return points.begin(); + } - const_iterator cend() const - { - return points.cend(); - } + iterator end() + { + return points.end(); + } + + const_iterator cbegin() const + { + return points.cbegin(); + } + + const_iterator cend() const + { + return points.cend(); + } + + + const_iterator find(const DgmPoint& p) const + { + return points.find(p); + } #ifndef FOR_R_TDA - template<class R> - friend std::ostream& operator<<(std::ostream& output, const DiagramPointSet<R>& ps) - { - output << "{ "; - for(auto pit = ps.cbegin(); pit != ps.cend(); ++pit) { - output << *pit << ", "; - } - output << "\b\b }"; - return output; - } -#endif - friend void addProjections<Real_>(DiagramPointSet<Real_>& A, DiagramPointSet<Real_>& B); + friend std::ostream& operator<<(std::ostream& output, const DiagramPointSet& ps) + { + output << "{ "; + for (auto pit = ps.cbegin(); pit != ps.cend(); ++pit) { + output << *pit << ", "; + } + output << "\b\b }"; + return output; + } - template<class PairIterator> - void fillIn(PairIterator begin_iter, PairIterator end_iter) - { - isLinked = false; - clear(); - IdType uniqueId = MinValidId + 1; - for (auto iter = begin_iter; iter != end_iter; ++iter) { - insert(DgmPoint(iter->first, iter->second, DgmPoint::NORMAL, uniqueId++)); - } - } +#endif - template<class PointContainer> - void fillIn(const PointContainer& dgm_cont) - { - using Traits = DiagramTraits<PointContainer>; - isLinked = false; - clear(); - IdType uniqueId = MinValidId + 1; - for (const auto& pt : dgm_cont) { - Real x = Traits::get_x(pt); - Real y = Traits::get_y(pt); - insert(DgmPoint(x, y, DgmPoint::NORMAL, uniqueId++)); - } - } + friend void addProjections<Real_>(DiagramPointSet<Real_>& A, DiagramPointSet<Real_>& B); + + template<class PairIterator> + void fillIn(PairIterator begin_iter, PairIterator end_iter) + { + isLinked = false; + clear(); + IdType uniqueId = MinValidId + 1; + IdType user_id = 0; + for (auto iter = begin_iter; iter != end_iter; ++iter) { + insert(DgmPoint(iter->first, iter->second, DgmPoint::NORMAL, uniqueId++, user_id++)); + } + } + template<class PointContainer> + void fillIn(const PointContainer& dgm_cont) + { + using Traits = DiagramTraits<PointContainer>; + isLinked = false; + clear(); + IdType uniqueId = MinValidId + 1; + IdType user_id = 0; + for (const auto& pt : dgm_cont) { + Real x = Traits::get_x(pt); + Real y = Traits::get_y(pt); + insert(DgmPoint(x, y, DgmPoint::NORMAL, uniqueId++, user_id++)); + } + } - // ctor from range - template<class PairIterator> - DiagramPointSet(PairIterator begin_iter, PairIterator end_iter) - { - fillIn(begin_iter, end_iter); - } - // ctor from container, uses DiagramTraits - template<class PointContainer> - DiagramPointSet(const PointContainer& dgm) - { - fillIn(dgm); - } + // ctor from range + template<class PairIterator> + DiagramPointSet(PairIterator begin_iter, PairIterator end_iter) + { + fillIn(begin_iter, end_iter); + } + // ctor from container, uses DiagramTraits + template<class PointContainer> + DiagramPointSet(const PointContainer& dgm) + { + fillIn(dgm); + } - // default ctor, empty diagram - DiagramPointSet(IdType minId = MinValidId + 1) : maxId(minId + 1) {}; - IdType nextId() { return maxId + 1; } + // default ctor, empty diagram + DiagramPointSet(IdType minId = MinValidId + 1) : + maxId(minId + 1) + {}; -}; // DiagramPointSet + IdType nextId() + { return maxId + 1; } + }; // DiagramPointSet -template<class Real, class DiagPointContainer> -Real getFurthestDistance3Approx(DiagPointContainer& A, DiagPointContainer& B) { - Real result{0.0}; - DiagramPoint<Real> begA = *(A.begin()); - DiagramPoint<Real> optB = *(B.begin()); - for (const auto &pointB : B) { - if (distLInf(begA, pointB) > result) { - result = distLInf(begA, pointB); - optB = pointB; - } - } - for (const auto &pointA : A) { - if (distLInf(pointA, optB) > result) { - result = distLInf(pointA, optB); - } - } - return result; -} - -// preprocess diagrams A and B by adding projections onto diagonal of points of -// A to B and vice versa. NB: ids of points will be changed! -template<class Real_> -void addProjections(DiagramPointSet<Real_>& A, DiagramPointSet<Real_>& B) -{ - - using Real = Real_; - using DgmPoint = DiagramPoint<Real>; - using DgmPointSet = DiagramPointSet<Real>; - - IdType uniqueId {MinValidId + 1}; - DgmPointSet newA, newB; - - // copy normal points from A to newA - // add projections to newB - for(auto& pA : A) { - if (pA.isNormal()) { - DgmPoint dpA {pA.getRealX(), pA.getRealY(), DgmPoint::NORMAL, uniqueId++}; - DgmPoint dpB {(pA.getRealX() +pA.getRealY())/2, (pA.getRealX() +pA.getRealY())/2, DgmPoint::DIAG, uniqueId++}; - newA.insert(dpA); - newB.insert(dpB); + + template<class Real, class DiagPointContainer> + Real getFurthestDistance3Approx(DiagPointContainer& A, DiagPointContainer& B) + { + Real result { 0.0 }; + DiagramPoint<Real> begA = *(A.begin()); + DiagramPoint<Real> optB = *(B.begin()); + for (const auto& pointB : B) { + if (distLInf(begA, pointB) > result) { + result = distLInf(begA, pointB); + optB = pointB; + } + } + for (const auto& pointA : A) { + if (distLInf(pointA, optB) > result) { + result = distLInf(pointA, optB); + } + } + return result; } - } - for(auto& pB : B) { - if (pB.isNormal()) { - DgmPoint dpB {pB.getRealX(), pB.getRealY(), DgmPoint::NORMAL, uniqueId++}; - DgmPoint dpA {(pB.getRealX() +pB.getRealY())/2, (pB.getRealX() +pB.getRealY())/2, DgmPoint::DIAG, uniqueId++}; - newB.insert(dpB); - newA.insert(dpA); + // preprocess diagrams A and B by adding projections onto diagonal of points of + // A to B and vice versa. Also removes points at infinity! + // NB: ids of points will be changed! + template<class Real_> + void addProjections(DiagramPointSet<Real_>& A, DiagramPointSet<Real_>& B) + { + + using Real = Real_; + using DgmPoint = DiagramPoint<Real>; + using DgmPointSet = DiagramPointSet<Real>; + + IdType uniqueId { MinValidId + 1 }; + DgmPointSet newA, newB; + + // copy normal points from A to newA + // add projections to newB + for (auto& pA : A) { + if (pA.isNormal() and not pA.isInfinity()) { + // add pA's projection to B + DgmPoint dpA { pA.getRealX(), pA.getRealY(), DgmPoint::NORMAL, uniqueId++, pA.get_user_id() }; + DgmPoint dpB { (pA.getRealX() + pA.getRealY()) / 2, (pA.getRealX() + pA.getRealY()) / 2, + DgmPoint::DIAG, uniqueId++, -1 }; + newA.insert(dpA); + newB.insert(dpB); + } + } + + for (auto& pB : B) { + if (pB.isNormal() and not pB.isInfinity()) { + // add pB's projection to A + DgmPoint dpB { pB.getRealX(), pB.getRealY(), DgmPoint::NORMAL, uniqueId++, pB.get_user_id() }; + DgmPoint dpA { (pB.getRealX() + pB.getRealY()) / 2, (pB.getRealX() + pB.getRealY()) / 2, + DgmPoint::DIAG, uniqueId++, -1 }; + newB.insert(dpB); + newA.insert(dpA); + } + } + + A = newA; + B = newB; + A.isLinked = true; + B.isLinked = true; } - } - A = newA; - B = newB; - A.isLinked = true; - B.isLinked = true; -} - - -//#ifndef FOR_R_TDA - -//template<class Real> -//std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real>& p) -//{ -// if ( p.isDiagonal() ) { -// output << "(" << p.x << ", " << p.y << ", " << 0.5 * (p.x + p.y) << ", " << p.id << " DIAG )"; -// } else { -// output << "(" << p.x << ", " << p.y << ", " << p.id << " NORMAL)"; -// } -// return output; -//} - -//template<class Real> -//std::ostream& operator<<(std::ostream& output, const DiagramPointSet<Real>& ps) -//{ -// output << "{ "; -// for(auto pit = ps.cbegin(); pit != ps.cend(); ++pit) { -// output << *pit << ", "; -// } -// output << "\b\b }"; -// return output; -//} -//#endif // FOR_R_TDA - - -} // end namespace bt + //#ifndef FOR_R_TDA + + //template<class Real> + //std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real>& p) + //{ + // if ( p.isDiagonal() ) { + // output << "(" << p.x << ", " << p.y << ", " << 0.5 * (p.x + p.y) << ", " << p.id << " DIAG )"; + // } else { + // output << "(" << p.x << ", " << p.y << ", " << p.id << " NORMAL)"; + // } + // return output; + //} + + //template<class Real> + //std::ostream& operator<<(std::ostream& output, const DiagramPointSet<Real>& ps) + //{ + // output << "{ "; + // for(auto pit = ps.cbegin(); pit != ps.cend(); ++pit) { + // output << *pit << ", "; + // } + // output << "\b\b }"; + // return output; + //} + //#endif // FOR_R_TDA + + + } // end namespace bt } // end namespace hera #endif // HERA_BASIC_DEFS_BT_H diff --git a/geom_bottleneck/include/bottleneck.h b/geom_bottleneck/include/bottleneck.h index d0d82b6..64da2c8 100644 --- a/geom_bottleneck/include/bottleneck.h +++ b/geom_bottleneck/include/bottleneck.h @@ -43,73 +43,110 @@ derivative works thereof, in binary and source code form. #include "bound_match.h" namespace hera { + // internal_p defines cost function on edges (use hera::get_infinity(), + // if you want to explicitly refer to l_inf, but that's default value + // delta is relative error, default is 1 percent + template<class Real = double> + struct BottleneckParams + { + Real internal_p { hera::get_infinity() }; + Real delta { 0.01 }; + }; + + // functions taking containers as input + // template parameter PairContainer must be a container of pairs of real + // numbers (pair.first = x-coordinate, pair.second = y-coordinate) + // PairContainer class must support iteration of the form + // for(it = pairContainer.begin(); it != pairContainer.end(); ++it) + + // all functions in this header are wrappers around + // functions from hera::bt namespace + + // get exact bottleneck distance, + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistExact(PairContainer& dgm_A, PairContainer& dgm_B, const int decPrecision, + hera::bt::MatchingEdge<typename DiagramTraits<PairContainer>::RealType>& longest_edge, + bool compute_longest_edge = true) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::DiagramPointSet<Real> a(dgm_A); + hera::bt::DiagramPointSet<Real> b(dgm_B); + return hera::bt::bottleneckDistExact(a, b, decPrecision, longest_edge, compute_longest_edge); + } + + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistExact(PairContainer& dgm_A, PairContainer& dgm_B, const int decPrecision) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::MatchingEdge<Real> longest_edge; + return bottleneckDistExact(dgm_A, dgm_B, decPrecision, longest_edge, false); + } + + + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistExact(PairContainer& dgm_A, PairContainer& dgm_B) + { + int dec_precision = 14; + return bottleneckDistExact(dgm_A, dgm_B, dec_precision); + } -// functions taking containers as input -// template parameter PairContainer must be a container of pairs of real -// numbers (pair.first = x-coordinate, pair.second = y-coordinate) -// PairContainer class must support iteration of the form -// for(it = pairContainer.begin(); it != pairContainer.end(); ++it) - - -// get exact bottleneck distance, -template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType -bottleneckDistExact(PairContainer& dgm_A, PairContainer& dgm_B) -{ - using Real = typename DiagramTraits<PairContainer>::RealType; - hera::bt::DiagramPointSet<Real> a(dgm_A); - hera::bt::DiagramPointSet<Real> b(dgm_B); - return hera::bt::bottleneckDistExact<Real>(a, b, 14); -} - -// get exact bottleneck distance, -template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType -bottleneckDistExact(PairContainer& dgm_A, PairContainer& dgm_B, const int decPrecision) -{ - using Real = typename DiagramTraits<PairContainer>::RealType; - hera::bt::DiagramPointSet<Real> a(dgm_A); - hera::bt::DiagramPointSet<Real> b(dgm_B); - return hera::bt::bottleneckDistExact(a, b, decPrecision); -} // return the interval (distMin, distMax) such that: // a) actual bottleneck distance between A and B is contained in the interval // b) if the interval is not (0,0), then (distMax - distMin) / distMin < delta -template<class PairContainer> -std::pair<typename DiagramTraits<PairContainer>::RealType, typename DiagramTraits<PairContainer>::RealType> -bottleneckDistApproxInterval(PairContainer& dgm_A, PairContainer& dgm_B, const typename DiagramTraits<PairContainer>::RealType delta) -{ - using Real = typename DiagramTraits<PairContainer>::RealType; - hera::bt::DiagramPointSet<Real> a(dgm_A); - hera::bt::DiagramPointSet<Real> b(dgm_B); - return hera::bt::bottleneckDistApproxInterval(a, b, delta); -} - - -template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType -bottleneckDistApproxHeur(PairContainer& dgm_A, PairContainer& dgm_B, const typename DiagramTraits<PairContainer>::RealType delta) -{ - using Real = typename DiagramTraits<PairContainer>::RealType; - hera::bt::DiagramPointSet<Real> a(dgm_A); - hera::bt::DiagramPointSet<Real> b(dgm_B); - std::pair<Real, Real> resPair = hera::bt::bottleneckDistApproxIntervalHeur(a, b, delta); - return resPair.second; -} - + template<class PairContainer> + std::pair<typename DiagramTraits<PairContainer>::RealType, typename DiagramTraits<PairContainer>::RealType> + bottleneckDistApproxInterval(PairContainer& dgm_A, PairContainer& dgm_B, + const typename DiagramTraits<PairContainer>::RealType delta) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::DiagramPointSet<Real> a(dgm_A); + hera::bt::DiagramPointSet<Real> b(dgm_B); + return hera::bt::bottleneckDistApproxInterval(a, b, delta); + } + +// use sampling heuristic: discard most of the points with small persistency +// to get a good initial approximation of the bottleneck distance + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistApproxHeur(PairContainer& dgm_A, PairContainer& dgm_B, + const typename DiagramTraits<PairContainer>::RealType delta) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::DiagramPointSet<Real> a(dgm_A); + hera::bt::DiagramPointSet<Real> b(dgm_B); + std::pair<Real, Real> resPair = hera::bt::bottleneckDistApproxIntervalHeur(a, b, delta); + return resPair.second; + } // get approximate distance, // see bottleneckDistApproxInterval -template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType -bottleneckDistApprox(PairContainer& A, PairContainer& B, const typename DiagramTraits<PairContainer>::RealType delta) -{ - using Real = typename DiagramTraits<PairContainer>::RealType; - hera::bt::DiagramPointSet<Real> a(A.begin(), A.end()); - hera::bt::DiagramPointSet<Real> b(B.begin(), B.end()); - return hera::bt::bottleneckDistApprox(a, b, delta); -} + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistApprox(PairContainer& A, PairContainer& B, + const typename DiagramTraits<PairContainer>::RealType delta, + hera::bt::MatchingEdge<typename DiagramTraits<PairContainer>::RealType>& longest_edge, + bool compute_longest_edge = true) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::DiagramPointSet<Real> a(A.begin(), A.end()); + hera::bt::DiagramPointSet<Real> b(B.begin(), B.end()); + return hera::bt::bottleneckDistApprox(a, b, delta, longest_edge, compute_longest_edge); + } + + template<class PairContainer> + typename DiagramTraits<PairContainer>::RealType + bottleneckDistApprox(PairContainer& A, PairContainer& B, + const typename DiagramTraits<PairContainer>::RealType delta) + { + using Real = typename DiagramTraits<PairContainer>::RealType; + hera::bt::MatchingEdge<Real> longest_edge; + return hera::bottleneckDistApprox(A, B, delta, longest_edge, false); + } + } // end namespace hera diff --git a/geom_bottleneck/include/bottleneck_detail.h b/geom_bottleneck/include/bottleneck_detail.h index 27c3c5d..7241c9a 100644 --- a/geom_bottleneck/include/bottleneck_detail.h +++ b/geom_bottleneck/include/bottleneck_detail.h @@ -43,39 +43,44 @@ derivative works thereof, in binary and source code form. namespace hera { -namespace bt { - - - -// functions taking DiagramPointSet as input. -// ATTENTION: parameters A and B (diagrams) will be changed after the call -// (projections added). - -// return the interval (distMin, distMax) such that: -// a) actual bottleneck distance between A and B is contained in the interval -// b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon -template<class Real> -std::pair<Real, Real> bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - - -// heuristic (sample diagram to estimate the distance) -template<class Real> -std::pair<Real, Real> bottleneckDistApproxIntervalHeur(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - -// get approximate distance, -// see bottleneckDistApproxInterval -template<class Real> -Real bottleneckDistApprox(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - -// get exact bottleneck distance, -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const int decPrecision); - -// get exact bottleneck distance, -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B); - -} // end namespace bt + namespace bt { + + // functions taking DiagramPointSet as input. + // ATTENTION: parameters A and B (diagrams) will be changed after the call + // (projections added). + + // return the interval (distMin, distMax) such that: + // a) actual bottleneck distance between A and B is contained in the interval + // b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon + template<class Real> + std::pair<Real, Real> bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, + const Real epsilon, MatchingEdge<Real>& longest_edge, + bool compute_longest_edge = false); + + + // heuristic (sample diagram to estimate the distance) + template<class Real> + std::pair<Real, Real> + bottleneckDistApproxIntervalHeur(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, + bool compute_longest_edge = false); + + // get approximate distance, + // see bottleneckDistApproxInterval + template<class Real> + Real bottleneckDistApprox(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, + MatchingEdge<Real>& longest_edge, bool compute_longest_edge = false); + + // get exact bottleneck distance, + template<class Real> + Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const int decPrecision, + MatchingEdge<Real>& longest_edge, bool compute_longest_edge = false); + + // get exact bottleneck distance, + template<class Real> + Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, MatchingEdge<Real>& longest_edge, + bool compute_longest_edge = false); + + } // end namespace bt } // end namespace hera diff --git a/geom_bottleneck/include/bottleneck_detail.hpp b/geom_bottleneck/include/bottleneck_detail.hpp index 64c6696..8f51d07 100644 --- a/geom_bottleneck/include/bottleneck_detail.hpp +++ b/geom_bottleneck/include/bottleneck_detail.hpp @@ -40,746 +40,597 @@ derivative works thereof, in binary and source code form. #include <sstream> #include <string> #include <cctype> +#include <set> #include "bottleneck_detail.h" namespace hera { -namespace bt { - -// return the interval (distMin, distMax) such that: -// a) actual bottleneck distance between A and B is contained in the interval -// b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon -template<class Real> -std::pair<Real, Real> bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon) -{ - // empty diagrams are not considered as error - if (A.empty() and B.empty()) - return std::make_pair(0.0, 0.0); - - // link diagrams A and B by adding projections - addProjections(A, B); - - // TODO: think about that! - // we need one threshold for checking if the distance is 0, - // another one for the oracle! - constexpr Real epsThreshold { 1.0e-10 }; - std::pair<Real, Real> result { 0.0, 0.0 }; - bool useRangeSearch { true }; - // construct an oracle - BoundMatchOracle<Real> oracle(A, B, epsThreshold, useRangeSearch); - // check for distance = 0 - if (oracle.isMatchLess(2*epsThreshold)) { - return result; - } - // get a 3-approximation of maximal distance between A and B - // as a starting value for probe distance - Real distProbe { getFurthestDistance3Approx<Real, DiagramPointSet<Real>>(A, B) }; - // aliases for result components - Real& distMin {result.first}; - Real& distMax {result.second}; - - if ( oracle.isMatchLess(distProbe) ) { - // distProbe is an upper bound, - // find lower bound with binary search - do { - distMax = distProbe; - distProbe /= 2.0; - } while (oracle.isMatchLess(distProbe)); - distMin = distProbe; - } else { - // distProbe is a lower bound, - // find upper bound with exponential search - do { - distMin = distProbe; - distProbe *= 2.0; - } while (!oracle.isMatchLess(distProbe)); - distMax = distProbe; - } - // bounds are found, perform binary search - //std::cout << "Bounds found, distMin = " << distMin << ", distMax = " << distMax << ", ratio = " << ( distMax - distMin ) / distMin << std::endl ; - distProbe = ( distMin + distMax ) / 2.0; - while ( ( distMax - distMin ) / distMin >= epsilon ) { - if (oracle.isMatchLess(distProbe)) { - distMax = distProbe; - } else { - distMin = distProbe; - } - distProbe = ( distMin + distMax ) / 2.0; - } - return result; -} - -template<class Real> -void sampleDiagramForHeur(const DiagramPointSet<Real>& dgmIn, DiagramPointSet<Real>& dgmOut) -{ -#ifdef VERBOSE_BOTTLENECK - std::cout << "Entered sampleDiagramForHeur, dgmIn.size = " << dgmIn.size() << std::endl; -#endif - struct pair_hash { - std::size_t operator()(const std::pair<Real, Real> p) const + namespace bt { + + template<class Real> + void binarySearch(const Real epsilon, + std::pair<Real, Real>& result, + BoundMatchOracle <Real>& oracle, + const Real infinityCost, + bool isResultInitializedCorrectly, + const Real distProbeInit) { - return std::hash<Real>()(p.first) ^ std::hash<Real>()(p.second); - } - }; - std::unordered_map<std::pair<Real, Real>, int, pair_hash> m; - for(auto ptIter = dgmIn.cbegin(); ptIter != dgmIn.cend(); ++ptIter) { - if (ptIter->isNormal()) { - m[std::make_pair(ptIter->getRealX(), ptIter->getRealY())]++; - } - } -#ifdef VERBOSE_BOTTLENECK - std::cout << "map filled in, m.size = " << m.size() << std::endl; -#endif - if (m.size() < 2) { - dgmOut = dgmIn; - return; - } - std::vector<int> v; - for(const auto& ptQtyPair : m) { - v.push_back(ptQtyPair.second); - } -#ifdef VERBOSE_BOTTLENECK - std::cout << "v filled in, v.size = " << v.size() << std::endl; -#endif - std::sort(v.begin(), v.end()); -#ifdef VERBOSE_BOTTLENECK - std::cout << "v sorted" << std::endl; -#endif - int maxLeap = v[1] - v[0]; - int cutVal = v[0]; - for(int i = 1; i < static_cast<int>(v.size())- 1; ++i) { - int currLeap = v[i+1] - v[i]; - if (currLeap > maxLeap) { - maxLeap = currLeap; - cutVal = v[i]; - } - } -#ifdef VERBOSE_BOTTLENECK - std::cout << "cutVal found, cutVal = " << cutVal << std::endl; -#endif - std::vector<std::pair<Real, Real>> vv; - // keep points whose multiplicites are at most cutVal - // quick-and-dirty: fill in vv with copies of each point - // to construct DiagramPointSet from it later - for(const auto& ptQty : m) { - if (ptQty.second < cutVal) { - for(int i = 0; i < ptQty.second; ++i) { - vv.push_back(std::make_pair(ptQty.first.first, ptQty.first.second)); + // aliases for result components + Real& distMin = result.first; + Real& distMax = result.second; + + distMin = std::max(distMin, infinityCost); + distMax = std::max(distMax, infinityCost); + + Real distProbe; + + if (not isResultInitializedCorrectly) { + distProbe = distProbeInit; + if (oracle.isMatchLess(distProbe)) { + // distProbe is an upper bound, + // find lower bound with binary search + do { + distMax = distProbe; + distProbe /= 2.0; + } while (oracle.isMatchLess(distProbe)); + distMin = distProbe; + } else { + // distProbe is a lower bound, + // find upper bound with exponential search + do { + distMin = distProbe; + distProbe *= 2.0; + } while (!oracle.isMatchLess(distProbe)); + distMax = distProbe; + } } - } - } -#ifdef VERBOSE_BOTTLENECK - std::cout << "vv filled in, vv.size = " << v.size() << std::endl; -#endif - dgmOut.clear(); - dgmOut = DiagramPointSet<Real>(vv.begin(), vv.end()); -#ifdef VERBOSE_BOTTLENECK - std::cout << "dgmOut filled in, dgmOut.size = " << dgmOut.size() << std::endl; -#endif -} - - -// return the interval (distMin, distMax) such that: -// a) actual bottleneck distance between A and B is contained in the interval -// b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon -template<class Real> -std::pair<Real, Real> bottleneckDistApproxIntervalWithInitial(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, const std::pair<Real, Real> initialGuess) -{ - // empty diagrams are not considered as error - if (A.empty() and B.empty()) - return std::make_pair(0.0, 0.0); - - // link diagrams A and B by adding projections - addProjections(A, B); - - constexpr Real epsThreshold { 1.0e-10 }; - std::pair<Real, Real> result { 0.0, 0.0 }; - bool useRangeSearch { true }; - // construct an oracle - BoundMatchOracle<Real> oracle(A, B, epsThreshold, useRangeSearch); - Real& distMin {result.first}; - Real& distMax {result.second}; - - // initialize search interval from initialGuess - distMin = initialGuess.first; - distMax = initialGuess.second; - - assert(distMin <= distMax); - - // make sure that distMin is a lower bound - while(oracle.isMatchLess(distMin)) { - // distMin is in fact an upper bound, so assign it to distMax - distMax = distMin; - // and decrease distMin by 5 % - distMin = 0.95 * distMin; - } - - // make sure that distMax is an upper bound - while(not oracle.isMatchLess(distMax)) { - // distMax is in fact a lower bound, so assign it to distMin - distMin = distMax; - // and increase distMax by 5 % - distMax = 1.05 * distMax; - } - - // bounds are found, perform binary search - //std::cout << "Bounds found, distMin = " << distMin << ", distMax = " << distMax << ", ratio = " << ( distMax - distMin ) / distMin << std::endl ; - Real distProbe = ( distMin + distMax ) / 2.0; - while ( ( distMax - distMin ) / distMin >= epsilon ) { - if (oracle.isMatchLess(distProbe)) { - distMax = distProbe; - } else { - distMin = distProbe; - } - distProbe = ( distMin + distMax ) / 2.0; - } - return result; -} - -// return the interval (distMin, distMax) such that: -// a) actual bottleneck distance between A and B is contained in the interval -// b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon -// use heuristic: initial estimate on sampled diagrams -template<class Real> -std::pair<Real, Real> bottleneckDistApproxIntervalHeur(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon) -{ - // empty diagrams are not considered as error - if (A.empty() and B.empty()) - return std::make_pair(0.0, 0.0); - - DiagramPointSet<Real> sampledA, sampledB; - sampleDiagramForHeur(A, sampledA); - sampleDiagramForHeur(B, sampledB); -#ifdef VERBOSE_BOTTLENECK - std::cout << "A : " << A.size() << ", sampled: " << sampledA.size() << std::endl; - std::cout << "B : " << B.size() << ", sampled: " << sampledB.size() << std::endl; -#endif - std::pair<Real, Real> initGuess = bottleneckDistApproxInterval(sampledA, sampledB, epsilon); -#ifdef VERBOSE_BOTTLENECK - std::cout << "initial guess with sampling: " << initGuess.first << ", " << initGuess.second << std::endl; - std::cout << "running on the original diagrams" << std::endl; -#endif - return bottleneckDistApproxIntervalWithInitial<Real>(A, B, epsilon, initGuess); -} - - - -// get approximate distance, -// see bottleneckDistApproxInterval -template<class Real> -Real bottleneckDistApprox(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon) -{ - auto interval = bottleneckDistApproxInterval<Real>(A, B, epsilon); - return interval.second; -} - - -template<class Real> -Real bottleneckDistExactFromSortedPwDist(DiagramPointSet<Real>&A, DiagramPointSet<Real>& B, std::vector<Real>& pairwiseDist, const int decPrecision) -{ - //for(size_t k = 0; k < pairwiseDist.size(); ++k) { - //std::cout << "pairwiseDist[" << k << "] = " << std::setprecision(15) << pairwiseDist[k] << std::endl; - //} - // trivial case: we have only one candidate - if (pairwiseDist.size() == 1) - return pairwiseDist[0]; - - bool useRangeSearch = true; - Real distEpsilon = std::numeric_limits<Real>::max(); - Real diffThreshold = 0.1; - for(int k = 0; k < decPrecision; ++k) { - diffThreshold /= 10.0; - } - for(size_t k = 0; k < pairwiseDist.size() - 2; ++k) { - auto diff = pairwiseDist[k+1]- pairwiseDist[k]; - //std::cout << "diff = " << diff << ", pairwiseDist[k] = " << pairwiseDist[k] << std::endl; - if ( diff > diffThreshold and diff < distEpsilon ) { - distEpsilon = diff; - } - } - distEpsilon /= 3.0; - //std::cout << "decPrecision = " << decPrecision << ", distEpsilon = " << distEpsilon << std::endl; - - BoundMatchOracle<Real> oracle(A, B, distEpsilon, useRangeSearch); - // binary search - size_t iterNum {0}; - size_t idxMin {0}, idxMax {pairwiseDist.size() - 1}; - size_t idxMid; - while(idxMax > idxMin) { - idxMid = static_cast<size_t>(floor(idxMin + idxMax) / 2.0); - //std::cout << "while begin: min = " << idxMin << ", idxMax = " << idxMax << ", idxMid = " << idxMid << ", testing d = " << std::setprecision(15) << pairwiseDist[idxMid] << std::endl; - iterNum++; - // not A[imid] < dist <=> A[imid] >= dist <=> A[imid[ >= dist + eps - if (oracle.isMatchLess(pairwiseDist[idxMid] + distEpsilon / 2.0)) { - //std::cout << "isMatchLess = true" << std::endl; - idxMax = idxMid; - } else { - //std::cout << "isMatchLess = false " << std::endl; - idxMin = idxMid + 1; - } - //std::cout << "while end: idxMin = " << idxMin << ", idxMax = " << idxMax << ", idxMid = " << idxMid << std::endl; - } - idxMid = static_cast<size_t>(floor(idxMin + idxMax) / 2.0); - return pairwiseDist[idxMid]; -} - - -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B) -{ - return bottleneckDistExact(A, B, 14); -} - -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const int decPrecision) -{ - using DgmPoint = DiagramPoint<Real>; - - constexpr Real epsilon = 0.001; - auto interval = bottleneckDistApproxInterval(A, B, epsilon); - const Real delta = 0.50001 * (interval.second - interval.first); - const Real approxDist = 0.5 * ( interval.first + interval.second); - const Real minDist = interval.first; - const Real maxDist = interval.second; - //std::cout << std::setprecision(15) << "minDist = " << minDist << ", maxDist = " << maxDist << std::endl; - if ( delta == 0 ) { - return interval.first; - } - // copy points from A to a vector - // todo: get rid of this? - std::vector<DgmPoint> pointsA; - pointsA.reserve(A.size()); - for(const auto& ptA : A) { - pointsA.push_back(ptA); - } - - //std::vector<Real> killdist; - //for(auto pta : a) { - //for(auto ptb : b) { - //if ( distlinf(pta, ptb) > mindist and distlinf(pta, ptb) < maxdist) { - //killdist.push_back(distlinf(pta, ptb)); - //std::cout << pta << ", " << ptb << std::endl; - //} - //} - //} - //std::sort(killdist.begin(), killdist.end()); - //for(auto d : killdist) { - //std::cout << d << std::endl; - //} - //std::cout << "*************" << std::endl; - - // in this vector we store the distances between the points - // that are candidates to realize - std::vector<Real> pairwiseDist; - { - // vector to store centers of vertical stripes - // two for each point in A and the id of the corresponding point - std::vector<std::pair<Real, DgmPoint>> xCentersVec; - xCentersVec.reserve(2 * pointsA.size()); - for(auto ptA : pointsA) { - xCentersVec.push_back(std::make_pair(ptA.getRealX() - approxDist, ptA)); - xCentersVec.push_back(std::make_pair(ptA.getRealX() + approxDist, ptA)); - } - // lambda to compare pairs <coordinate, id> w.r.t coordinate - auto compLambda = [](std::pair<Real, DgmPoint> a, std::pair<Real, DgmPoint> b) - { return a.first < b.first; }; - - std::sort(xCentersVec.begin(), xCentersVec.end(), compLambda); - //std::cout << "xCentersVec.size = " << xCentersVec.size() << std::endl; - //for(auto p = xCentersVec.begin(); p!= xCentersVec.end(); ++p) { - //if (p->second.id == 200) { - //std::cout << "index of 200: " << p - xCentersVec.begin() << std::endl; - //} - //} - //std::vector<DgmPoint> - // todo: sort points in B, reduce search range in lower and upper bounds - for(auto ptB : B) { - // iterator to the first stripe such that ptB lies to the left - // from its right boundary (x_B <= x_j + \delta iff x_j >= x_B - \delta - auto itStart = std::lower_bound(xCentersVec.begin(), - xCentersVec.end(), - std::make_pair(ptB.getRealX() - delta, ptB), - compLambda); - //if (ptB.id == 236) { - //std::cout << itStart - xCentersVec.begin() << std::endl; - //} - - for(auto iterA = itStart; iterA < xCentersVec.end(); ++iterA) { - //if (ptB.id == 236) { - //std::cout << "consider " << iterA->second << std::endl; - //} - if ( ptB.getRealX() < iterA->first - delta) { - // from that moment x_B >= x_j - delta - // is violated: x_B no longer lies to right from the left - // boundary of current stripe - //if (ptB.id == 236) { - //std::cout << "break" << std::endl; - //} + // bounds are correct , perform binary search + distProbe = (distMin + distMax) / 2.0; + while ((distMax - distMin) / distMin >= epsilon) { + + if (distMax < infinityCost) { + distMin = infinityCost; + distMax = infinityCost; break; } - // we're here => ptB lies in vertical stripe, - // check if distance fits into the interval we've found - Real pwDist = distLInf(iterA->second, ptB); - //if (ptB.id == 236) { - //std::cout << pwDist << std::endl; - //} - //std::cout << 1000*minDist << " <= " << 1000*pwDist << " <= " << 1000*maxDist << std::endl; - if (pwDist >= minDist and pwDist <= maxDist) { - pairwiseDist.push_back(pwDist); + + if (oracle.isMatchLess(distProbe)) { + distMax = distProbe; + } else { + distMin = distProbe; } + + distProbe = (distMin + distMax) / 2.0; } + + distMin = std::max(distMin, infinityCost); + distMax = std::max(distMax, infinityCost); } - } - - { - // for y - // vector to store centers of vertical stripes - // two for each point in A and the id of the corresponding point - std::vector<std::pair<Real, DgmPoint>> yCentersVec; - yCentersVec.reserve(2 * pointsA.size()); - for(auto ptA : pointsA) { - yCentersVec.push_back(std::make_pair(ptA.getRealY() - approxDist, ptA)); - yCentersVec.push_back(std::make_pair(ptA.getRealY() + approxDist, ptA)); - } - // lambda to compare pairs <coordinate, id> w.r.t coordinate - auto compLambda = [](std::pair<Real, DgmPoint> a, std::pair<Real, DgmPoint> b) - { return a.first < b.first; }; - std::sort(yCentersVec.begin(), yCentersVec.end(), compLambda); + // template<class Real> + // inline Real getOneDimensionalCost(std::vector<Real>& set_A, std::vector<Real>& set_B) + // { + // if (set_A.size() != set_B.size()) { + // return std::numeric_limits<Real>::infinity(); + // } + // + // if (set_A.empty()) { + // return Real(0.0); + // } + // + // std::sort(set_A.begin(), set_A.end()); + // std::sort(set_B.begin(), set_B.end()); + // + // Real result = 0.0; + // for (size_t i = 0; i < set_A.size(); ++i) { + // result = std::max(result, (std::fabs(set_A[i] - set_B[i]))); + // } + // + // return result; + // } + + + template<class Real> + struct CostEdgePair + { + Real cost; + typename hera::bt::MatchingEdge<Real> edge; + }; + + template<class Real> + using CoordPointPair = std::pair<Real, typename hera::bt::DiagramPoint<Real>>; - // std::cout << "Sorted vector of y-centers:" << std::endl; - //for(auto coordPtPair : yCentersVec) { - //std::cout << coordPtPair.first << ", id = " << coordPtPair.second.id << std::endl; - //} - /*std::cout << "End of sorted vector of y-centers:" << std::endl;*/ + template<class Real> + using CoordPointVector = std::vector<typename hera::bt::CoordPointPair<Real>>; - //std::vector<DgmPoint> - // todo: sort points in B, reduce search range in lower and upper bounds - for(auto ptB : B) { - auto itStart = std::lower_bound(yCentersVec.begin(), - yCentersVec.end(), - std::make_pair(ptB.getRealY() - delta, ptB), - compLambda); + template<class Real> + struct CoordPointPairComparator + { + bool operator()(const CoordPointPair<Real>& a, const CoordPointPair<Real>& b) const + { + return a.first < b.first or (a.first == b.first and a.second.id < b.second.id); + }; + }; + + template<class Real> + inline typename hera::bt::CostEdgePair<Real> + getOneDimensionalCost(typename hera::bt::CoordPointVector<Real>& set_A, + typename hera::bt::CoordPointVector<Real>& set_B) + { + using MatchingEdgeR = hera::bt::MatchingEdge<Real>; + using CostEdgePairR = CostEdgePair<Real>; + if (set_A.size() != set_B.size()) { + return CostEdgePairR { std::numeric_limits<Real>::infinity(), MatchingEdgeR() }; + } - for(auto iterA = itStart; iterA < yCentersVec.end(); ++iterA) { - if ( ptB.getRealY() < iterA->first - delta) { - break; - } - Real pwDist = distLInf(iterA->second, ptB); - //std::cout << 1000*minDist << " <= " << 1000*pwDist << " <= " << 1000*maxDist << std::endl; - if (pwDist >= minDist and pwDist <= maxDist) { - pairwiseDist.push_back(pwDist); + if (set_A.empty()) { + return CostEdgePairR { Real(0.0), MatchingEdgeR() }; + } + + std::sort(set_A.begin(), set_A.end(), CoordPointPairComparator<Real>()); + std::sort(set_B.begin(), set_B.end(), CoordPointPairComparator<Real>()); + + CostEdgePairR result { -1.0, MatchingEdgeR() }; + + for (size_t i = 0; i < set_A.size(); ++i) { + Real curr_cost = std::fabs(set_A[i].first - set_B[i].first); + if (curr_cost > result.cost) { + result.cost = curr_cost; + result.edge = MatchingEdgeR(set_A[i].second, set_B[i].second); } } + return result; } - } - - //std::cout << "pairwiseDist.size = " << pairwiseDist.size() << " out of " << A.size() * A.size() << std::endl; - std::sort(pairwiseDist.begin(), pairwiseDist.end()); - //for(auto ddd : pairwiseDist) { - //std::cout << std::setprecision(15) << ddd << std::endl; - //} - - return bottleneckDistExactFromSortedPwDist(A, B, pairwiseDist, decPrecision); -} - -template<class Real> -Real bottleneckDistSlow(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B) -{ - using DistVerticesPair = std::pair<Real, std::pair<size_t, size_t>>; - - // use range search when building the layer graph - bool useRangeSearch { true }; - // find maximum of min. distances for each point, - // use this value as lower bound for bottleneck distance - bool useHeurMinIdx { true }; - - // find matching in a greedy manner to - // get an upper bound for a bottleneck distance - bool useHeurGreedyMatching { false }; - - // use successive multiplication of idxMin with 2 to get idxMax - bool goUpToFindIdxMax { false }; - // - goUpToFindIdxMax = goUpToFindIdxMax and !useHeurGreedyMatching; - - if (!useHeurGreedyMatching) { - long int N = 3 * (A.size() / 2 ) * (B.size() / 2); - std::vector<Real> pairwiseDist; - pairwiseDist.reserve(N); - Real maxMinDist {0.0}; - for(auto& p_A : A) { - Real minDist { std::numeric_limits<Real>::max() }; - for(auto& p_B : B) { - if (p_A.isNormal() or p_B.isNormal()) { - Real d = distLInf(p_A, p_B); - pairwiseDist.push_back(d); - if (useHeurMinIdx and p_A.isNormal()) { - if (d < minDist) - minDist = d; - } + + + template<class Real> + inline CostEdgePair<Real> getInfinityCost(const DiagramPointSet <Real>& A, const DiagramPointSet <Real>& B, + bool compute_longest_edge = false) + { + using CostEdgePairR = CostEdgePair<Real>; + using CoordPointVectorR = CoordPointVector<Real>; + + CoordPointVectorR x_plus_A, x_minus_A, y_plus_A, y_minus_A; + CoordPointVectorR x_plus_B, x_minus_B, y_plus_B, y_minus_B; + + for (auto iter_A = A.cbegin(); iter_A != A.cend(); ++iter_A) { + Real x = iter_A->getRealX(); + Real y = iter_A->getRealY(); + if (x == std::numeric_limits<Real>::infinity()) { + y_plus_A.emplace_back(y, *iter_A); + } else if (x == -std::numeric_limits<Real>::infinity()) { + y_minus_A.emplace_back(y, *iter_A); + } else if (y == std::numeric_limits<Real>::infinity()) { + x_plus_A.emplace_back(x, *iter_A); + } else if (y == -std::numeric_limits<Real>::infinity()) { + x_minus_A.emplace_back(x, *iter_A); } } - if (useHeurMinIdx and p_A.isNormal() and minDist > maxMinDist) { - maxMinDist = minDist; + + for (auto iter_B = B.cbegin(); iter_B != B.cend(); ++iter_B) { + Real x = iter_B->getRealX(); + Real y = iter_B->getRealY(); + if (x == std::numeric_limits<Real>::infinity()) { + y_plus_B.emplace_back(y, *iter_B); + } else if (x == -std::numeric_limits<Real>::infinity()) { + y_minus_B.emplace_back(y, *iter_B); + } else if (y == std::numeric_limits<Real>::infinity()) { + x_plus_B.emplace_back(x, *iter_B); + } else if (y == -std::numeric_limits<Real>::infinity()) { + x_minus_B.emplace_back(x, *iter_B); + } } - } - std::sort(pairwiseDist.begin(), pairwiseDist.end()); + CostEdgePairR result = getOneDimensionalCost(x_plus_A, x_plus_B); - Real distEpsilon = std::numeric_limits<Real>::max(); - for(size_t k = 0; k < pairwiseDist.size() - 2; ++k) { - auto diff = pairwiseDist[k+1]- pairwiseDist[k]; - if ( diff > 1.0e-10 and diff < distEpsilon ) { - distEpsilon = diff; + CostEdgePairR next_cost_edge = getOneDimensionalCost(x_minus_A, x_minus_B); + if (next_cost_edge.cost > result.cost) { + result = next_cost_edge; } - } - distEpsilon /= 3.0; - - BoundMatchOracle<Real> oracle(A, B, distEpsilon, useRangeSearch); - // binary search - size_t iterNum {0}; - size_t idxMin {0}, idxMax {pairwiseDist.size() - 1}; - if (useHeurMinIdx) { - auto maxMinIter = std::equal_range(pairwiseDist.begin(), pairwiseDist.end(), maxMinDist); - assert(maxMinIter.first != pairwiseDist.end()); - idxMin = maxMinIter.first - pairwiseDist.begin(); - //std::cout << "maxMinDist = " << maxMinDist << ", idxMin = " << idxMin << ", d = " << pairwiseDist[idxMin] << std::endl; - } - if (goUpToFindIdxMax) { - if ( pairwiseDist.size() == 1) { - return pairwiseDist[0]; + next_cost_edge = getOneDimensionalCost(y_plus_A, y_plus_B); + if (next_cost_edge.cost > result.cost) { + result = next_cost_edge; } - idxMax = std::max<size_t>(idxMin, 1); - while (!oracle.isMatchLess(pairwiseDist[idxMax])) { - //std::cout << "entered while" << std::endl; - idxMin = idxMax; - if (2*idxMax > pairwiseDist.size() -1) { - idxMax = pairwiseDist.size() - 1; - break; - } else { - idxMax *= 2; - } + next_cost_edge = getOneDimensionalCost(y_minus_A, y_minus_B); + if (next_cost_edge.cost > result.cost) { + result = next_cost_edge; } - //std::cout << "size = " << pairwiseDist.size() << ", idxMax = " << idxMax << ", pw[max] = " << pairwiseDist[idxMax] << std::endl; + + return result; } - size_t idxMid { (idxMin + idxMax) / 2 }; - while(idxMax > idxMin) { - iterNum++; - if (oracle.isMatchLess(pairwiseDist[idxMid])) { - idxMax = idxMid; + // return the interval (distMin, distMax) such that: + // a) actual bottleneck distance between A and B is contained in the interval + // b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon + template<class Real> + inline std::pair<Real, Real> + bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, + MatchingEdge<Real>& edge, bool compute_longest_edge) + { + using MatchingEdgeR = MatchingEdge<Real>; + using CostEdgePairR = CostEdgePair<Real>; + + edge = MatchingEdgeR(); + // empty diagrams are not considered as error + if (A.empty() and B.empty()) { + return std::make_pair(0.0, 0.0); + } + + CostEdgePairR inf_cost_edge = getInfinityCost(A, B, true); + + Real infinity_cost = inf_cost_edge.cost; + if (infinity_cost == std::numeric_limits<Real>::infinity()) { + return std::make_pair(infinity_cost, infinity_cost); } else { - if (idxMax - idxMin == 1) - idxMin++; - else - idxMin = idxMid; + edge = inf_cost_edge.edge; + } + + // link diagrams A and B by adding projections + addProjections(A, B); + + // TODO: think about that! + // we need one threshold for checking if the distance is 0, + // another one for the oracle! + constexpr Real epsThreshold { 1.0e-10 }; + std::pair<Real, Real> result { 0.0, 0.0 }; + bool useRangeSearch { true }; + // construct an oracle + BoundMatchOracle<Real> oracle(A, B, epsThreshold, useRangeSearch); + // check for distance = 0 + if (oracle.isMatchLess(2 * epsThreshold)) { + if (infinity_cost > epsThreshold) { + result.first = infinity_cost; + result.second = infinity_cost; + edge = inf_cost_edge.edge; + } + return result; } - idxMid = (idxMin + idxMax) / 2; + // get a 3-approximation of maximal distance between A and B + // as a starting value for probe distance + Real distProbe { getFurthestDistance3Approx<Real, DiagramPointSet<Real>>(A, B) }; + binarySearch(epsilon, result, oracle, infinity_cost, false, distProbe); + // to compute longest edge a perfect matching is needed + if (compute_longest_edge and result.first > infinity_cost) { + oracle.isMatchLess(result.second); + edge = oracle.get_longest_edge(); + } + return result; } - return pairwiseDist[idxMid]; - } else { - // with greeedy matching - long int N = A.size() * B.size(); - std::vector<DistVerticesPair> pairwiseDist; - pairwiseDist.reserve(N); - Real maxMinDist {0.0}; - size_t idxA{0}, idxB{0}; - for(auto p_A : A) { - Real minDist { std::numeric_limits<Real>::max() }; - idxB = 0; - for(auto p_B : B) { - Real d = distLInf(p_A, p_B); - pairwiseDist.push_back( std::make_pair(d, std::make_pair(idxA, idxB) ) ); - if (useHeurMinIdx and p_A.isNormal()) { - if (d < minDist) - minDist = d; + + template<class Real> + void sampleDiagramForHeur(const DiagramPointSet <Real>& dgmIn, DiagramPointSet <Real>& dgmOut) + { + struct pair_hash + { + std::size_t operator()(const std::pair<Real, Real> p) const + { + return std::hash<Real>()(p.first) ^ std::hash<Real>()(p.second); + } + }; + std::unordered_map<std::pair<Real, Real>, int, pair_hash> m; + for (auto ptIter = dgmIn.cbegin(); ptIter != dgmIn.cend(); ++ptIter) { + if (ptIter->isNormal() and not ptIter->isInfinity()) { + m[std::make_pair(ptIter->getRealX(), ptIter->getRealY())]++; + } + } + if (m.size() < 2) { + dgmOut = dgmIn; + return; + } + std::vector<int> v; + for (const auto& ptQtyPair : m) { + v.push_back(ptQtyPair.second); + } + std::sort(v.begin(), v.end()); + int maxLeap = v[1] - v[0]; + int cutVal = v[0]; + for (int i = 1; i < static_cast<int>(v.size()) - 1; ++i) { + int currLeap = v[i + 1] - v[i]; + if (currLeap > maxLeap) { + maxLeap = currLeap; + cutVal = v[i]; } - idxB++; } - if (useHeurMinIdx and p_A.isNormal() and minDist > maxMinDist) { - maxMinDist = minDist; + std::vector<std::pair<Real, Real>> vv; + // keep points whose multiplicites are at most cutVal + // quick-and-dirty: fill in vv with copies of each point + // to construct DiagramPointSet from it later + for (const auto& ptQty : m) { + if (ptQty.second < cutVal) { + for (int i = 0; i < ptQty.second; ++i) { + vv.push_back(std::make_pair(ptQty.first.first, ptQty.first.second)); + } + } } - idxA++; + dgmOut.clear(); + dgmOut = DiagramPointSet<Real>(vv.begin(), vv.end()); } - auto compLambda = [](DistVerticesPair a, DistVerticesPair b) - { return a.first < b.first;}; - std::sort(pairwiseDist.begin(), - pairwiseDist.end(), - compLambda); + // return the interval (distMin, distMax) such that: + // a) actual bottleneck distance between A and B is contained in the interval + // b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon + template<class Real> + std::pair<Real, Real> + bottleneckDistApproxIntervalWithInitial(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, + const Real epsilon, + const std::pair<Real, Real> initialGuess, + const Real infinity_cost, + MatchingEdge <Real>& longest_edge, + bool compute_longest_edge = false) + { + // empty diagrams are not considered as error + if (A.empty() and B.empty()) { + return std::make_pair(0.0, 0.0); + } + + // link diagrams A and B by adding projections + addProjections(A, B); + + constexpr Real epsThreshold { 1.0e-10 }; + std::pair<Real, Real> result { 0.0, 0.0 }; + bool useRangeSearch { true }; + // construct an oracle + BoundMatchOracle<Real> oracle(A, B, epsThreshold, useRangeSearch); + + Real& distMin { result.first }; + Real& distMax { result.second }; - Real distEpsilon = std::numeric_limits<Real>::max(); - for(size_t k = 0; k < pairwiseDist.size() - 2; ++k) { - auto diff = pairwiseDist[k+1].first - pairwiseDist[k].first; - if ( diff > 1.0e-10 and diff < distEpsilon ) { - distEpsilon = diff; + // initialize search interval from initialGuess + distMin = initialGuess.first; + distMax = initialGuess.second; + + assert(distMin <= distMax); + + // make sure that distMin is a lower bound + while (oracle.isMatchLess(distMin)) { + // distMin is in fact an upper bound, so assign it to distMax + distMax = distMin; + // and decrease distMin by 5 % + distMin = 0.95 * distMin; } - } - distEpsilon /= 3.0; - - BoundMatchOracle<Real> oracle(A, B, distEpsilon, useRangeSearch); - - // construct greedy matching - size_t numVert { A.size() }; - size_t numMatched { 0 }; - std::unordered_set<size_t> aTobMatched, bToaMatched; - aTobMatched.reserve(numVert); - bToaMatched.reserve(numVert); - size_t distVecIdx {0}; - while( numMatched < numVert) { - auto vertPair = pairwiseDist[distVecIdx++].second; - //std::cout << "distVecIdx = " << distVecIdx << ", matched: " << numMatched << " out of " << numVert << std::endl; - //std::cout << "vertex A idx = " << vertPair.first << ", B idx: " << vertPair.second << " out of " << numVert << std::endl; - if ( aTobMatched.count(vertPair.first) == 0 and - bToaMatched.count(vertPair.second) == 0 ) { - aTobMatched.insert(vertPair.first); - bToaMatched.insert(vertPair.second); - numMatched++; + + // make sure that distMax is an upper bound + while (not oracle.isMatchLess(distMax)) { + // distMax is in fact a lower bound, so assign it to distMin + distMin = distMax; + // and increase distMax by 5 % + distMax = 1.05 * distMax; } - } - size_t idxMax = distVecIdx-1; - //std::cout << "idxMax = " << idxMax << ", size = " << pairwiseDist.size() << std::endl; - // binary search - size_t iterNum {0}; - size_t idxMin {0}; - if (useHeurMinIdx) { - auto maxMinIter = std::equal_range(pairwiseDist.begin(), - pairwiseDist.end(), - std::make_pair(maxMinDist, std::make_pair(0,0)), - compLambda); - assert(maxMinIter.first != pairwiseDist.end()); - idxMin = maxMinIter.first - pairwiseDist.begin(); - //std::cout << "maxMinDist = " << maxMinDist << ", idxMin = " << idxMin << ", d = " << pairwiseDist[idxMin].first << std::endl; - } - size_t idxMid { (idxMin + idxMax) / 2 }; - while(idxMax > idxMin) { - iterNum++; - if (oracle.isMatchLess(pairwiseDist[idxMid].first)) { - idxMax = idxMid; - } else { - if (idxMax - idxMin == 1) - idxMin++; - else - idxMin = idxMid; + + // bounds are found, perform binary search + Real distProbe = (distMin + distMax) / 2.0; + binarySearch(epsilon, result, oracle, infinity_cost, true, distProbe); + if (compute_longest_edge) { + longest_edge = oracle.get_longest_edge(); } - idxMid = (idxMin + idxMax) / 2; + return result; } - return pairwiseDist[idxMid].first; - } - // stats - /* - // count number of edges - // pairwiseDist is sorted, add edges of the same length - int edgeNumber {idxMid}; - while(pairwiseDist[edgeNumber + 1] == pairwiseDist[edgeNumber]) - edgeNumber++; - // add edges between diagonal points - edgeNumber += N / 3; - // output stats - std::cout << idxMid << "\t" << N; - std::cout << "\t" << iterNum; - std::cout << "\t" << A.size() + B.size(); - std::cout << "\t" << edgeNumber << "\t"; - std::cout << (Real)(edgeNumber) / (Real)(A.size() + B.size()) << std::endl; - */ -} - -// wrappers -template<class Real> -bool readDiagramPointSet(const std::string& fname, std::vector<std::pair<Real, Real>>& result) -{ - int decPrecision; - return readDiagramPointSet(fname.c_str(), result, decPrecision); -} - -template<class Real> -bool readDiagramPointSet(const char* fname, std::vector<std::pair<Real, Real>>& result) -{ - int decPrecision; - return readDiagramPointSet(fname, result, decPrecision); -} - -template<class Real> -bool readDiagramPointSet(const std::string& fname, std::vector<std::pair<Real, Real>>& result, int& decPrecision) -{ - return readDiagramPointSet(fname.c_str(), result, decPrecision); -} - -// reading function -template<class Real> -bool readDiagramPointSet(const char* fname, std::vector<std::pair<Real, Real>>& result, int& decPrecision) -{ - size_t lineNumber { 0 }; - result.clear(); - std::ifstream f(fname); - if (!f.good()) { -#ifndef FOR_R_TDA - std::cerr << "Cannot open file " << fname << std::endl; -#endif - return false; - } - std::string line; - while(std::getline(f, line)) { - lineNumber++; - // process comments: remove everything after hash - auto hashPos = line.find_first_of("#", 0); - if( std::string::npos != hashPos) { - line = std::string(line.begin(), line.begin() + hashPos); - } - if (line.empty()) { - continue; + + // return the interval (distMin, distMax) such that: + // a) actual bottleneck distance between A and B is contained in the interval + // b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon + // use heuristic: initial estimate on sampled diagrams + template<class Real> + std::pair<Real, Real> + bottleneckDistApproxIntervalHeur(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, const Real epsilon, + MatchingEdge <Real>& longest_edge) + { + // empty diagrams are not considered as error + if (A.empty() and B.empty()) { + return std::make_pair(0.0, 0.0); + } + + Real infinity_cost = getInfinityCost(A, B); + if (infinity_cost == std::numeric_limits<Real>::infinity()) { + return std::make_pair(infinity_cost, infinity_cost); + } + + DiagramPointSet<Real> sampledA, sampledB; + sampleDiagramForHeur(A, sampledA); + sampleDiagramForHeur(B, sampledB); + + std::pair<Real, Real> initGuess = bottleneckDistApproxInterval(sampledA, sampledB, epsilon); + + initGuess.first = std::max(initGuess.first, infinity_cost); + initGuess.second = std::max(initGuess.second, infinity_cost); + + return bottleneckDistApproxIntervalWithInitial<Real>(A, B, epsilon, initGuess, infinity_cost, longest_edge); } - // trim whitespaces - auto whiteSpaceFront = std::find_if_not(line.begin(),line.end(),isspace); - auto whiteSpaceBack = std::find_if_not(line.rbegin(),line.rend(),isspace).base(); - if (whiteSpaceBack <= whiteSpaceFront) { - // line consists of spaces only - move to the next line - continue; + + + // get approximate distance, + // see bottleneckDistApproxInterval + template<class Real> + Real bottleneckDistApprox(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, const Real epsilon, + MatchingEdge <Real>& longest_edge, bool compute_longest_edge) + { + auto interval = bottleneckDistApproxInterval<Real>(A, B, epsilon, longest_edge, compute_longest_edge); + return interval.second; } - line = std::string(whiteSpaceFront,whiteSpaceBack); - bool fracPart = false; - int currDecPrecision = 0; - for(auto c : line) { - if (c == '.') { - fracPart = true; - } else if (fracPart) { - if (isdigit(c)) { - currDecPrecision++; + + + template<class Real> + Real bottleneckDistExactFromSortedPwDist(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, + const std::vector<Real>& pairwiseDist, + const int decPrecision, MatchingEdge <Real>& longest_edge, + bool compute_longest_edge = false) + { + // trivial case: we have only one candidate + if (pairwiseDist.size() == 1) { + return pairwiseDist[0]; + } + + bool useRangeSearch = true; + Real distEpsilon = std::numeric_limits<Real>::max(); + Real diffThreshold = 0.1; + for (int k = 0; k < decPrecision; ++k) { + diffThreshold /= 10; + } + for (size_t k = 0; k < pairwiseDist.size() - 2; ++k) { + auto diff = pairwiseDist[k + 1] - pairwiseDist[k]; + if (diff > diffThreshold and diff < distEpsilon) { + distEpsilon = diff; + } + } + distEpsilon = std::min(diffThreshold, distEpsilon / 3); + + BoundMatchOracle<Real> oracle(A, B, distEpsilon, useRangeSearch); + // binary search + size_t iterNum { 0 }; + size_t idxMin { 0 }, idxMax { pairwiseDist.size() - 1 }; + size_t idxMid; + while (idxMax > idxMin) { + idxMid = static_cast<size_t>(floor(idxMin + idxMax) / 2); + iterNum++; + // not A[imid] < dist <=> A[imid] >= dist <=> A[imid[ >= dist + eps + if (oracle.isMatchLess(pairwiseDist[idxMid] + distEpsilon / 2)) { + idxMax = idxMid; } else { - fracPart = false; - if (currDecPrecision > decPrecision) - decPrecision = currDecPrecision; - currDecPrecision = 0; + idxMin = idxMid + 1; } } + idxMid = static_cast<size_t>(floor(idxMin + idxMax) / 2); + Real result = pairwiseDist[idxMid]; + if (compute_longest_edge) { + oracle.isMatchLess(result + distEpsilon / 2); + longest_edge = oracle.get_longest_edge(); + } + return result; } - Real x, y; - std::istringstream iss(line); - if (not(iss >> x >> y)) { -#ifndef FOR_R_TDA - std::cerr << "Error in file " << fname << ", line number " << lineNumber << ": cannot parse \"" << line << "\"" << std::endl; -#endif - return false; + + + template<class Real> + Real + bottleneckDistExact(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, MatchingEdge <Real>& longest_edge, + bool compute_longest_edge) + { + return bottleneckDistExact(A, B, 14, longest_edge, compute_longest_edge); } - if ( x != y ) { - result.push_back(std::make_pair(x,y)); - } else { -#ifndef FOR_R_TDA -#ifndef VERBOSE_BOTTLENECK - std::cerr << "Warning: in file " << fname << ", line number " << lineNumber << ", zero persistence point ignored: \"" << line << "\"" << std::endl; -#endif -#endif + + template<class Real> + Real bottleneckDistExact(DiagramPointSet <Real>& A, DiagramPointSet <Real>& B, const int decPrecision, + MatchingEdge <Real>& longest_edge, bool compute_longest_edge) + { + using DgmPoint = DiagramPoint<Real>; + + constexpr Real epsilon = 0.001; + auto interval = bottleneckDistApproxInterval(A, B, epsilon, longest_edge, true); + // if the longest edge is on infinity, the answer is already exact + // this will be detected here and all the code after if + // may assume that the longest edge is on finite points + if (interval.first == interval.second) { + return interval.first; + } + const Real delta = 0.50001 * (interval.second - interval.first); + const Real approxDist = 0.5 * (interval.first + interval.second); + const Real minDist = interval.first; + const Real maxDist = interval.second; + if (delta == 0) { + return interval.first; + } + // copy points from A to a vector + // todo: get rid of this? + std::vector<DgmPoint> pointsA; + pointsA.reserve(A.size()); + for (const auto& ptA : A) { + pointsA.push_back(ptA); + } + + // in this vector we store the distances between the points + // that are candidates to realize + std::set<Real> pairwiseDist; + { + // vector to store centers of vertical stripes + // two for each point in A and the id of the corresponding point + std::vector<std::pair<Real, DgmPoint>> xCentersVec; + xCentersVec.reserve(2 * pointsA.size()); + for (auto ptA : pointsA) { + xCentersVec.push_back(std::make_pair(ptA.getRealX() - approxDist, ptA)); + xCentersVec.push_back(std::make_pair(ptA.getRealX() + approxDist, ptA)); + } + // lambda to compare pairs <coordinate, id> w.r.t coordinate + auto compLambda = [](std::pair<Real, DgmPoint> a, std::pair<Real, DgmPoint> b) { + return a.first < b.first; + }; + + std::sort(xCentersVec.begin(), xCentersVec.end(), compLambda); + // todo: sort points in B, reduce search range in lower and upper bounds + for (auto ptB : B) { + // iterator to the first stripe such that ptB lies to the left + // from its right boundary (x_B <= x_j + \delta iff x_j >= x_B - \delta + auto itStart = std::lower_bound(xCentersVec.begin(), + xCentersVec.end(), + std::make_pair(ptB.getRealX() - delta, ptB), + compLambda); + + for (auto iterA = itStart; iterA < xCentersVec.end(); ++iterA) { + if (ptB.getRealX() < iterA->first - delta) { + // from that moment x_B >= x_j - delta + // is violated: x_B no longer lies to right from the left + // boundary of current stripe + break; + } + // we're here => ptB lies in vertical stripe, + // check if distance fits into the interval we've found + Real pwDist = distLInf(iterA->second, ptB); + if (pwDist >= minDist and pwDist <= maxDist) { + pairwiseDist.insert(pwDist); + } + } + } + } + + { + // for y + // vector to store centers of vertical stripes + // two for each point in A and the id of the corresponding point + std::vector<std::pair<Real, DgmPoint>> yCentersVec; + yCentersVec.reserve(2 * pointsA.size()); + for (auto ptA : pointsA) { + yCentersVec.push_back(std::make_pair(ptA.getRealY() - approxDist, ptA)); + yCentersVec.push_back(std::make_pair(ptA.getRealY() + approxDist, ptA)); + } + // lambda to compare pairs <coordinate, id> w.r.t coordinate + auto compLambda = [](std::pair<Real, DgmPoint> a, std::pair<Real, DgmPoint> b) { + return a.first < b.first; + }; + + std::sort(yCentersVec.begin(), yCentersVec.end(), compLambda); + + // todo: sort points in B, reduce search range in lower and upper bounds + for (auto ptB : B) { + auto itStart = std::lower_bound(yCentersVec.begin(), + yCentersVec.end(), + std::make_pair(ptB.getRealY() - delta, ptB), + compLambda); + + + for (auto iterA = itStart; iterA < yCentersVec.end(); ++iterA) { + if (ptB.getRealY() < iterA->first - delta) { + break; + } + Real pwDist = distLInf(iterA->second, ptB); + if (pwDist >= minDist and pwDist <= maxDist) { + pairwiseDist.insert(pwDist); + } + } + } + } + + std::vector<Real> pw_dists; + pw_dists.reserve(pairwiseDist.size()); + for(Real d : pairwiseDist) { + pw_dists.push_back(d); + } + + return bottleneckDistExactFromSortedPwDist(A, B, pw_dists, decPrecision, longest_edge, + compute_longest_edge); } - } - f.close(); - return true; -} -} // end namespace bt + } // end namespace bt } // end namespace hera #endif // HERA_BOTTLENECK_HPP diff --git a/geom_bottleneck/include/bound_match.h b/geom_bottleneck/include/bound_match.h index 770c7df..99543f9 100644 --- a/geom_bottleneck/include/bound_match.h +++ b/geom_bottleneck/include/bound_match.h @@ -56,6 +56,7 @@ public: bool getMatchedVertex(const DgmPoint& p, DgmPoint& result) const; bool isPerfect() const; void trimMatching(const Real newThreshold); + MatchingEdge<Real> get_longest_edge() const; #ifndef FOR_R_TDA template<class R> friend std::ostream& operator<<(std::ostream& output, const Matching<R>& m); @@ -82,6 +83,7 @@ public: BoundMatchOracle(DgmPointSet psA, DgmPointSet psB, Real dEps, bool useRS = true); bool isMatchLess(Real r); bool buildMatchingForThreshold(const Real r); + MatchingEdge<Real> get_longest_edge() const { return M.get_longest_edge(); } private: DgmPointSet A, B; Matching<Real> M; diff --git a/geom_bottleneck/include/bound_match.hpp b/geom_bottleneck/include/bound_match.hpp index 221bd0f..b95628f 100644 --- a/geom_bottleneck/include/bound_match.hpp +++ b/geom_bottleneck/include/bound_match.hpp @@ -45,429 +45,467 @@ derivative works thereof, in binary and source code form. #endif #ifndef FOR_R_TDA + #include <iostream> + #endif -namespace hera{ -namespace bt { +namespace hera { + namespace bt { #ifndef FOR_R_TDA -template<class Real> -std::ostream& operator<<(std::ostream& output, const Matching<Real>& m) -{ - output << "Matching: " << m.AToB.size() << " pairs ("; - if (!m.isPerfect()) { - output << "not"; - } - output << " perfect)" << std::endl; - for(auto atob : m.AToB) { - output << atob.first << " <-> " << atob.second << " distance: " << distLInf(atob.first, atob.second) << std::endl; - } - return output; -} + + template<class Real> + std::ostream& operator<<(std::ostream& output, const Matching <Real>& m) + { + output << "Matching: " << m.AToB.size() << " pairs ("; + if (!m.isPerfect()) { + output << "not"; + } + output << " perfect)" << std::endl; + for (auto atob : m.AToB) { + output << atob.first << " <-> " << atob.second << " distance: " << distLInf(atob.first, atob.second) + << std::endl; + } + return output; + } + #endif -template<class R> -void Matching<R>::sanityCheck() const -{ + template<class R> + void Matching<R>::sanityCheck() const + { #ifdef DEBUG_MATCHING - assert( AToB.size() == BToA.size() ); - for(auto aToBPair : AToB) { - auto bToAPair = BToA.find(aToBPair.second); - assert(bToAPair != BToA.end()); - assert( aToBPair.first == bToAPair->second); - } + assert( AToB.size() == BToA.size() ); + for(auto aToBPair : AToB) { + auto bToAPair = BToA.find(aToBPair.second); + assert(bToAPair != BToA.end()); + assert( aToBPair.first == bToAPair->second); + } #endif -} - -template<class R> -bool Matching<R>::isPerfect() const -{ - return AToB.size() == A.size(); -} - -template<class R> -void Matching<R>::matchVertices(const DgmPoint& pA, const DgmPoint& pB) -{ - assert(A.hasElement(pA)); - assert(B.hasElement(pB)); - AToB.erase(pA); - AToB.insert( {{ pA, pB }} ); - BToA.erase(pB); - BToA.insert( {{ pB, pA }} ); -} - -template<class R> -bool Matching<R>::getMatchedVertex(const DgmPoint& p, DgmPoint& result) const -{ - sanityCheck(); - auto inA = AToB.find(p); - if (inA != AToB.end()) { - result = inA->second; - return true; - } else { - auto inB = BToA.find(p); - if (inB != BToA.end()) { - result = inB->second; - return true; } - } - return false; -} - - -template<class R> -void Matching<R>::checkAugPath(const Path& augPath) const -{ - assert(augPath.size() % 2 == 0); - for(size_t idx = 0; idx < augPath.size(); ++idx) { - bool mustBeExposed { idx == 0 or idx == augPath.size() - 1 }; - if (isExposed(augPath[idx]) != mustBeExposed) { + + template<class R> + bool Matching<R>::isPerfect() const + { + return AToB.size() == A.size(); + } + + template<class R> + void Matching<R>::matchVertices(const DgmPoint& pA, const DgmPoint& pB) + { + assert(A.hasElement(pA)); + assert(B.hasElement(pB)); + AToB.erase(pA); + AToB.insert({{ pA, pB }}); + BToA.erase(pB); + BToA.insert({{ pB, pA }}); + } + + template<class R> + bool Matching<R>::getMatchedVertex(const DgmPoint& p, DgmPoint& result) const + { + sanityCheck(); + auto inA = AToB.find(p); + if (inA != AToB.end()) { + result = inA->second; + return true; + } else { + auto inB = BToA.find(p); + if (inB != BToA.end()) { + result = inB->second; + return true; + } + } + return false; + } + + + template<class R> + void Matching<R>::checkAugPath(const Path& augPath) const + { + assert(augPath.size() % 2 == 0); + for (size_t idx = 0; idx < augPath.size(); ++idx) { + bool mustBeExposed { idx == 0 or idx == augPath.size() - 1 }; + if (isExposed(augPath[idx]) != mustBeExposed) { #ifndef FOR_R_TDA - std::cerr << "mustBeExposed = " << mustBeExposed << ", idx = " << idx << ", point " << augPath[idx] << std::endl; + std::cerr << "mustBeExposed = " << mustBeExposed << ", idx = " << idx << ", point " << augPath[idx] + << std::endl; #endif + } + assert(isExposed(augPath[idx]) == mustBeExposed); + DgmPoint matchedVertex; + if (idx % 2 == 0) { + assert(A.hasElement(augPath[idx])); + if (not mustBeExposed) { + getMatchedVertex(augPath[idx], matchedVertex); + assert(matchedVertex == augPath[idx - 1]); + } + } else { + assert(B.hasElement(augPath[idx])); + if (not mustBeExposed) { + getMatchedVertex(augPath[idx], matchedVertex); + assert(matchedVertex == augPath[idx + 1]); + } + } + } } - assert( isExposed(augPath[idx]) == mustBeExposed ); - DgmPoint matchedVertex {0.0, 0.0, DgmPoint::DIAG, 1}; - if ( idx % 2 == 0 ) { - assert( A.hasElement(augPath[idx])); - if (not mustBeExposed) { - getMatchedVertex(augPath[idx], matchedVertex); - assert(matchedVertex == augPath[idx - 1]); + + // use augmenting path to increase + // the size of the matching + template<class R> + void Matching<R>::increase(const Path& augPath) + { + sanityCheck(); + // check that augPath is an augmenting path + checkAugPath(augPath); + for (size_t idx = 0; idx < augPath.size() - 1; idx += 2) { + matchVertices(augPath[idx], augPath[idx + 1]); } - } else { - assert( B.hasElement(augPath[idx])); - if (not mustBeExposed) { - getMatchedVertex(augPath[idx], matchedVertex); - assert(matchedVertex == augPath[idx + 1]); + sanityCheck(); + } + + template<class R> + DiagramPointSet <R> Matching<R>::getExposedVertices(bool forA) const + { + sanityCheck(); + DgmPointSet result; + const DgmPointSet* setToSearch { forA ? &A : &B }; + const std::unordered_map<DgmPoint, DgmPoint, DgmPointHash>* mapToSearch { forA ? &AToB : &BToA }; + for (auto it = setToSearch->cbegin(); it != setToSearch->cend(); ++it) { + if (mapToSearch->find((*it)) == mapToSearch->cend()) { + result.insert((*it)); + } } + return result; } - } -} - -// use augmenting path to increase -// the size of the matching -template<class R> -void Matching<R>::increase(const Path& augPath) -{ - sanityCheck(); - // check that augPath is an augmenting path - checkAugPath(augPath); - for(size_t idx = 0; idx < augPath.size() - 1; idx += 2) { - matchVertices( augPath[idx], augPath[idx + 1]); - } - sanityCheck(); -} - -template<class R> -DiagramPointSet<R> Matching<R>::getExposedVertices(bool forA) const -{ - sanityCheck(); - DgmPointSet result; - const DgmPointSet* setToSearch { forA ? &A : &B }; - const std::unordered_map<DgmPoint, DgmPoint, DgmPointHash>* mapToSearch { forA ? &AToB : &BToA }; - for(auto it = setToSearch->cbegin(); it != setToSearch->cend(); ++it) { - if (mapToSearch->find((*it)) == mapToSearch->cend()) { - result.insert((*it)); + + template<class R> + void Matching<R>::getAllAdjacentVertices(const DgmPointSet& setIn, + DgmPointSet& setOut, + bool forA) const + { + sanityCheck(); + //bool isDebug {false}; + setOut.clear(); + const std::unordered_map<DgmPoint, DgmPoint, DgmPointHash>* m; + m = (forA) ? &BToA : &AToB; + for (auto pit = setIn.cbegin(); pit != setIn.cend(); ++pit) { + auto findRes = m->find(*pit); + if (findRes != m->cend()) { + setOut.insert((*findRes).second); + } + } + sanityCheck(); } - } - return result; -} - -template<class R> -void Matching<R>::getAllAdjacentVertices(const DgmPointSet& setIn, - DgmPointSet& setOut, - bool forA) const -{ - sanityCheck(); - //bool isDebug {false}; - setOut.clear(); - const std::unordered_map<DgmPoint, DgmPoint, DgmPointHash>* m; - m = ( forA ) ? &BToA : &AToB; - for(auto pit = setIn.cbegin(); pit != setIn.cend(); ++pit) { - auto findRes = m->find(*pit); - if (findRes != m->cend()) { - setOut.insert((*findRes).second); + + template<class R> + bool Matching<R>::isExposed(const DgmPoint& p) const + { + return (AToB.find(p) == AToB.end()) && (BToA.find(p) == BToA.end()); } - } - sanityCheck(); -} - -template<class R> -bool Matching<R>::isExposed(const DgmPoint& p) const -{ - return ( AToB.find(p) == AToB.end() ) && ( BToA.find(p) == BToA.end() ); -} - -// remove all edges whose length is > newThreshold -template<class R> -void Matching<R>::trimMatching(const R newThreshold) -{ - //bool isDebug { false }; - sanityCheck(); - for(auto aToBIter = AToB.begin(); aToBIter != AToB.end(); ) { - if ( distLInf(aToBIter->first, aToBIter->second) > newThreshold ) { - // remove edge from AToB and BToA - BToA.erase(aToBIter->second); - aToBIter = AToB.erase(aToBIter); - } else { - aToBIter++; + + // remove all edges whose length is > newThreshold + template<class R> + void Matching<R>::trimMatching(const R newThreshold) + { + //bool isDebug { false }; + sanityCheck(); + for (auto aToBIter = AToB.begin(); aToBIter != AToB.end();) { + if (distLInf(aToBIter->first, aToBIter->second) > newThreshold) { + // remove edge from AToB and BToA + BToA.erase(aToBIter->second); + aToBIter = AToB.erase(aToBIter); + } else { + aToBIter++; + } + } + sanityCheck(); + } + + template<class R> + MatchingEdge <R> Matching<R>::get_longest_edge() const + { + R max_dist = -1.0; + MatchingEdge<R> edge; + for (const auto& x : AToB) { + //std::cout << "max_dist = " << max_dist << std::endl; + //std::cout << "distance = " << distLInf(x.first, x.second) << std::endl; + + // for now skew edges may appear in the matching + // but they should not be returned to user + // if currrent edge is a skew edge, there must another edge + // with the same cost + R curr_dist; + if (x.first.isDiagonal() and x.second.isNormal()) { + curr_dist = x.second.get_persistence(hera::get_infinity()); + } else if (x.first.isNormal() and x.second.isDiagonal()) { + curr_dist = x.first.get_persistence(hera::get_infinity()); + } else { + curr_dist = distLInf(x.first, x.second); + } + if (max_dist < curr_dist) { + max_dist = curr_dist; + edge = x; + //std::cout << "updated max_dist = " << max_dist << std::endl; + //std::cout << "updated edge = " << x.first << " <-> " << x.second << std::endl; + } + } + return edge; + } + + // ------- BoundMatchOracle -------------- + + template<class R, class NO> + BoundMatchOracle<R, NO>::BoundMatchOracle(DgmPointSet psA, DgmPointSet psB, + Real dEps, bool useRS) : + A(psA), B(psB), M(A, B), distEpsilon(dEps), useRangeSearch(useRS), prevQueryValue(0.0) + { + neighbOracle = std::unique_ptr<NeighbOracle>(new NeighbOracle(psB, 0, distEpsilon)); } - } - sanityCheck(); -} - -// ------- BoundMatchOracle -------------- - -template<class R, class NO> -BoundMatchOracle<R, NO>::BoundMatchOracle(DgmPointSet psA, DgmPointSet psB, - Real dEps, bool useRS) : - A(psA), B(psB), M(A, B), distEpsilon(dEps), useRangeSearch(useRS), prevQueryValue(0.0) -{ - neighbOracle = std::unique_ptr<NeighbOracle>(new NeighbOracle(psB, 0, distEpsilon)); -} - -template<class R, class NO> -bool BoundMatchOracle<R, NO>::isMatchLess(Real r) -{ + + template<class R, class NO> + bool BoundMatchOracle<R, NO>::isMatchLess(Real r) + { #ifdef VERBOSE_BOTTLENECK - std::chrono::high_resolution_clock hrClock; - std::chrono::time_point<std::chrono::high_resolution_clock> startMoment; - startMoment = hrClock.now(); + std::chrono::high_resolution_clock hrClock; + std::chrono::time_point<std::chrono::high_resolution_clock> startMoment; + startMoment = hrClock.now(); #endif - bool result = buildMatchingForThreshold(r); + bool result = buildMatchingForThreshold(r); #ifdef VERBOSE_BOTTLENECK - auto endMoment = hrClock.now(); - std::chrono::duration<double, std::milli> iterTime = endMoment - startMoment; - std::cout << "isMatchLess for r = " << r << " finished in " << std::chrono::duration<double, std::milli>(iterTime).count() << " ms." << std::endl; + auto endMoment = hrClock.now(); + std::chrono::duration<double, std::milli> iterTime = endMoment - startMoment; + std::cout << "isMatchLess for r = " << r << " finished in " << std::chrono::duration<double, std::milli>(iterTime).count() << " ms." << std::endl; #endif - return result; - -} - - -template<class R, class NO> -void BoundMatchOracle<R, NO>::removeFromLayer(const DgmPoint& p, const int layerIdx) { - //bool isDebug {false}; - layerGraph[layerIdx].erase(p); - if (layerOracles[layerIdx]) { - layerOracles[layerIdx]->deletePoint(p); - } -} - -// return true, if there exists an augmenting path from startVertex -// in this case the path is returned in result. -// startVertex must be an exposed vertex from L_1 (layer[0]) -template<class R, class NO> -bool BoundMatchOracle<R, NO>::buildAugmentingPath(const DgmPoint startVertex, Path& result) -{ - //bool isDebug {false}; - DgmPoint prevVertexA = startVertex; - result.clear(); - result.push_back(startVertex); - size_t evenLayerIdx {1}; - while ( evenLayerIdx < layerGraph.size() ) { - //for(size_t evenLayerIdx = 1; evenLayerIdx < layerGraph.size(); evenLayerIdx += 2) { - DgmPoint nextVertexB{0.0, 0.0, DgmPoint::DIAG, 1}; // next vertex from even layer - bool neighbFound = layerOracles[evenLayerIdx]->getNeighbour(prevVertexA, nextVertexB); - if (neighbFound) { - result.push_back(nextVertexB); - if ( layerGraph.size() == evenLayerIdx + 1) { - break; - } else { - // nextVertexB must be matched with some vertex from the next odd - // layer - DgmPoint nextVertexA {0.0, 0.0, DgmPoint::DIAG, 1}; - if (!M.getMatchedVertex(nextVertexB, nextVertexA)) { + return result; + + } + + + template<class R, class NO> + void BoundMatchOracle<R, NO>::removeFromLayer(const DgmPoint& p, const int layerIdx) + { + //bool isDebug {false}; + layerGraph[layerIdx].erase(p); + if (layerOracles[layerIdx]) { + layerOracles[layerIdx]->deletePoint(p); + } + } + + // return true, if there exists an augmenting path from startVertex + // in this case the path is returned in result. + // startVertex must be an exposed vertex from L_1 (layer[0]) + template<class R, class NO> + bool BoundMatchOracle<R, NO>::buildAugmentingPath(const DgmPoint startVertex, Path& result) + { + //bool isDebug {false}; + DgmPoint prevVertexA = startVertex; + result.clear(); + result.push_back(startVertex); + size_t evenLayerIdx { 1 }; + while (evenLayerIdx < layerGraph.size()) { + //for(size_t evenLayerIdx = 1; evenLayerIdx < layerGraph.size(); evenLayerIdx += 2) { + DgmPoint nextVertexB; // next vertex from even layer + bool neighbFound = layerOracles[evenLayerIdx]->getNeighbour(prevVertexA, nextVertexB); + if (neighbFound) { + result.push_back(nextVertexB); + if (layerGraph.size() == evenLayerIdx + 1) { + break; + } else { + // nextVertexB must be matched with some vertex from the next odd + // layer + DgmPoint nextVertexA; + if (!M.getMatchedVertex(nextVertexB, nextVertexA)) { #ifndef FOR_R_TDA - std::cerr << "Vertices in even layers must be matched! Unmatched: "; - std::cerr << nextVertexB << std::endl; - std::cerr << evenLayerIdx << "; " << layerGraph.size() << std::endl; + std::cerr << "Vertices in even layers must be matched! Unmatched: "; + std::cerr << nextVertexB << std::endl; + std::cerr << evenLayerIdx << "; " << layerGraph.size() << std::endl; #endif - throw std::runtime_error("Unmatched vertex in even layer"); + throw std::runtime_error("Unmatched vertex in even layer"); + } else { + assert(!(nextVertexA.getRealX() == 0 and nextVertexA.getRealY() == 0)); + result.push_back(nextVertexA); + prevVertexA = nextVertexA; + evenLayerIdx += 2; + continue; + } + } } else { - assert( ! (nextVertexA.getRealX() == 0 and nextVertexA.getRealY() == 0) ); - result.push_back(nextVertexA); - prevVertexA = nextVertexA; - evenLayerIdx += 2; - continue; + // prevVertexA has no neighbours in the next layer, + // backtrack + if (evenLayerIdx == 1) { + // startVertex is not connected to any vertices + // in the next layer, augm. path doesn't exist + removeFromLayer(startVertex, 0); + return false; + } else { + assert(evenLayerIdx >= 3); + assert(result.size() % 2 == 1); + result.pop_back(); + DgmPoint prevVertexB = result.back(); + result.pop_back(); + removeFromLayer(prevVertexA, evenLayerIdx - 1); + removeFromLayer(prevVertexB, evenLayerIdx - 2); + // we should proceed from the previous odd layer + assert(result.size() >= 1); + prevVertexA = result.back(); + evenLayerIdx -= 2; + continue; + } } + } // finished iterating over all layers + // remove all vertices in the augmenting paths + // the corresponding layers + for (size_t layerIdx = 0; layerIdx < result.size(); ++layerIdx) { + removeFromLayer(result[layerIdx], layerIdx); } - } else { - // prevVertexA has no neighbours in the next layer, - // backtrack - if (evenLayerIdx == 1) { - // startVertex is not connected to any vertices - // in the next layer, augm. path doesn't exist - removeFromLayer(startVertex, 0); - return false; - } else { - assert(evenLayerIdx >= 3); - assert(result.size() % 2 == 1); - result.pop_back(); - DgmPoint prevVertexB = result.back(); - result.pop_back(); - removeFromLayer(prevVertexA, evenLayerIdx-1); - removeFromLayer(prevVertexB, evenLayerIdx-2); - // we should proceed from the previous odd layer - assert(result.size() >= 1); - prevVertexA = result.back(); - evenLayerIdx -= 2; - continue; - } + return true; } - } // finished iterating over all layers - // remove all vertices in the augmenting paths - // the corresponding layers - for(size_t layerIdx = 0; layerIdx < result.size(); ++layerIdx) { - removeFromLayer(result[layerIdx], layerIdx); - } - return true; -} - - - - -template<class R, class NO> -bool BoundMatchOracle<R, NO>::buildMatchingForThreshold(const Real r) -{ - //bool isDebug {false}; - if (prevQueryValue > r) { - M.trimMatching(r); - } - prevQueryValue = r; - while(true) { - buildLayerGraph(r); - if (augPathExist) { - std::vector<Path> augmentingPaths; - DgmPointSet copyLG0; - for(DgmPoint p : layerGraph[0]) { - copyLG0.insert(p); - } - for(DgmPoint exposedVertex : copyLG0) { - Path augPath; - if (buildAugmentingPath(exposedVertex, augPath)) { - augmentingPaths.push_back(augPath); - } + + + template<class R, class NO> + bool BoundMatchOracle<R, NO>::buildMatchingForThreshold(const Real r) + { + //bool isDebug {false}; + if (prevQueryValue > r) { + M.trimMatching(r); } - if (augmentingPaths.empty()) { + prevQueryValue = r; + while (true) { + buildLayerGraph(r); + if (augPathExist) { + std::vector<Path> augmentingPaths; + DgmPointSet copyLG0; + for (DgmPoint p : layerGraph[0]) { + copyLG0.insert(p); + } + for (DgmPoint exposedVertex : copyLG0) { + Path augPath; + if (buildAugmentingPath(exposedVertex, augPath)) { + augmentingPaths.push_back(augPath); + } + } + if (augmentingPaths.empty()) { #ifndef FOR_R_TDA - std::cerr << "augmenting paths must exist, but were not found!" << std::endl; + std::cerr << "augmenting paths must exist, but were not found!" << std::endl; #endif - throw std::runtime_error("bad epsilon?"); - } - // swap all augmenting paths with matching to increase it - for(auto& augPath : augmentingPaths ) { - M.increase(augPath); + throw std::runtime_error("bad epsilon?"); + } + // swap all augmenting paths with matching to increase it + for (auto& augPath : augmentingPaths) { + M.increase(augPath); + } + } else { + return M.isPerfect(); + } } - } else { - return M.isPerfect(); } - } -} -template<class R, class NO> -void BoundMatchOracle<R, NO>::printLayerGraph(void) -{ + template<class R, class NO> + void BoundMatchOracle<R, NO>::printLayerGraph(void) + { #ifdef DEBUG_BOUND_MATCH - for(auto& layer : layerGraph) { - std::cout << "{ "; - for(auto& p : layer) { - std::cout << p << "; "; - } - std::cout << "\b\b }" << std::endl; - } + for(auto& layer : layerGraph) { + std::cout << "{ "; + for(auto& p : layer) { + std::cout << p << "; "; + } + std::cout << "\b\b }" << std::endl; + } #endif -} + } -template<class R, class NO> -void BoundMatchOracle<R, NO>::buildLayerGraph(Real r) -{ + template<class R, class NO> + void BoundMatchOracle<R, NO>::buildLayerGraph(Real r) + { #ifdef VERBOSE_BOTTLENECK - std::cout << "Entered buildLayerGraph, r = " << r << std::endl; + std::cout << "Entered buildLayerGraph, r = " << r << std::endl; #endif - layerGraph.clear(); - DgmPointSet L1 = M.getExposedVertices(); - layerGraph.push_back(L1); - neighbOracle->rebuild(B, r); - size_t k = 0; - DgmPointSet layerNextEven; - DgmPointSet layerNextOdd; - bool exposedVerticesFound {false}; - while(true) { - layerNextEven.clear(); - for( auto p : layerGraph[k]) { - bool neighbFound; - DgmPoint neighbour {0.0, 0.0, DgmPoint::DIAG, 1}; - if (useRangeSearch) { - std::vector<DgmPoint> neighbVec; - neighbOracle->getAllNeighbours(p, neighbVec); - neighbFound = !neighbVec.empty(); - for(auto& neighbPt : neighbVec) { - layerNextEven.insert(neighbPt); - if (!exposedVerticesFound and M.isExposed(neighbPt)) - exposedVerticesFound = true; - } - } else { - while(true) { - neighbFound = neighbOracle->getNeighbour(p, neighbour); - if (neighbFound) { - layerNextEven.insert(neighbour); - neighbOracle->deletePoint(neighbour); - if ((!exposedVerticesFound) && M.isExposed(neighbour)) { - exposedVerticesFound = true; + layerGraph.clear(); + DgmPointSet L1 = M.getExposedVertices(); + layerGraph.push_back(L1); + neighbOracle->rebuild(B, r); + size_t k = 0; + DgmPointSet layerNextEven; + DgmPointSet layerNextOdd; + bool exposedVerticesFound { false }; + while (true) { + layerNextEven.clear(); + for (auto p : layerGraph[k]) { + bool neighbFound; + //DgmPoint neighbour {0.0, 0.0, DgmPoint::DIAG, 1}; + DgmPoint neighbour; + if (useRangeSearch) { + std::vector<DgmPoint> neighbVec; + neighbOracle->getAllNeighbours(p, neighbVec); + neighbFound = !neighbVec.empty(); + for (auto& neighbPt : neighbVec) { + layerNextEven.insert(neighbPt); + if (!exposedVerticesFound and M.isExposed(neighbPt)) { + exposedVerticesFound = true; + } } } else { - break; + while (true) { + neighbFound = neighbOracle->getNeighbour(p, neighbour); + if (neighbFound) { + layerNextEven.insert(neighbour); + neighbOracle->deletePoint(neighbour); + if ((!exposedVerticesFound) && M.isExposed(neighbour)) { + exposedVerticesFound = true; + } + } else { + break; + } + } + } // without range search + } // all vertices from previous odd layer processed + if (layerNextEven.empty()) { + augPathExist = false; + break; + } + if (exposedVerticesFound) { + for (auto it = layerNextEven.cbegin(); it != layerNextEven.cend();) { + if (!M.isExposed(*it)) { + layerNextEven.erase(it++); + } else { + ++it; + } + } + layerGraph.push_back(layerNextEven); + augPathExist = true; + break; } - } // without range search - } // all vertices from previous odd layer processed - if (layerNextEven.empty()) { - augPathExist = false; - break; + layerGraph.push_back(layerNextEven); + M.getAllAdjacentVertices(layerNextEven, layerNextOdd); + layerGraph.push_back(layerNextOdd); + k += 2; + } + buildLayerOracles(r); + printLayerGraph(); } - if (exposedVerticesFound) { - for(auto it = layerNextEven.cbegin(); it != layerNextEven.cend(); ) { - if ( ! M.isExposed(*it) ) { - layerNextEven.erase(it++); + + // create geometric oracles for each even layer + // odd layers have NULL in layerOracles + template<class R, class NO> + void BoundMatchOracle<R, NO>::buildLayerOracles(Real r) + { + //bool isDebug {false}; + // free previously constructed oracles + layerOracles.clear(); + for (size_t layerIdx = 0; layerIdx < layerGraph.size(); ++layerIdx) { + if (layerIdx % 2 == 1) { + // even layer, build actual oracle + layerOracles.emplace_back(new NeighbOracle(layerGraph[layerIdx], r, distEpsilon)); } else { - ++it; + // odd layer + layerOracles.emplace_back(nullptr); } - } - layerGraph.push_back(layerNextEven); - augPathExist = true; - break; - } - layerGraph.push_back(layerNextEven); - M.getAllAdjacentVertices(layerNextEven, layerNextOdd); - layerGraph.push_back(layerNextOdd); - k += 2; - } - buildLayerOracles(r); - printLayerGraph(); - } - -// create geometric oracles for each even layer -// odd layers have NULL in layerOracles -template<class R, class NO> -void BoundMatchOracle<R, NO>::buildLayerOracles(Real r) -{ - //bool isDebug {false}; - // free previously constructed oracles - layerOracles.clear(); - for(size_t layerIdx = 0; layerIdx < layerGraph.size(); ++layerIdx) { - if (layerIdx % 2 == 1) { - // even layer, build actual oracle - layerOracles.emplace_back(new NeighbOracle(layerGraph[layerIdx], r, distEpsilon)); - } else { - // odd layer - layerOracles.emplace_back(nullptr); } - } -} -} // end namespace bt + } // end namespace bt } // end namespace hera #endif // HERA_BOUND_MATCH_HPP diff --git a/geom_bottleneck/include/catch/catch.hpp b/geom_bottleneck/include/catch/catch.hpp new file mode 100644 index 0000000..f7681f4 --- /dev/null +++ b/geom_bottleneck/include/catch/catch.hpp @@ -0,0 +1,11545 @@ +/* + * Catch v1.9.6 + * Generated: 2017-06-27 12:19:54.557875 + * ---------------------------------------------------------- + * This file has been merged from multiple headers. Please don't edit it directly + * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. + * + * Distributed under the Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + */ +#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED +#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + +#define TWOBLUECUBES_CATCH_HPP_INCLUDED + +#ifdef __clang__ +# pragma clang system_header +#elif defined __GNUC__ +# pragma GCC system_header +#endif + +// #included from: internal/catch_suppress_warnings.h + +#ifdef __clang__ +# ifdef __ICC // icpc defines the __clang__ macro +# pragma warning(push) +# pragma warning(disable: 161 1682) +# else // __ICC +# pragma clang diagnostic ignored "-Wglobal-constructors" +# pragma clang diagnostic ignored "-Wvariadic-macros" +# pragma clang diagnostic ignored "-Wc99-extensions" +# pragma clang diagnostic ignored "-Wunused-variable" +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wpadded" +# pragma clang diagnostic ignored "-Wc++98-compat" +# pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +# pragma clang diagnostic ignored "-Wswitch-enum" +# pragma clang diagnostic ignored "-Wcovered-switch-default" +# endif +#elif defined __GNUC__ +# pragma GCC diagnostic ignored "-Wvariadic-macros" +# pragma GCC diagnostic ignored "-Wunused-variable" +# pragma GCC diagnostic ignored "-Wparentheses" + +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wpadded" +#endif +#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) +# define CATCH_IMPL +#endif + +#ifdef CATCH_IMPL +# ifndef CLARA_CONFIG_MAIN +# define CLARA_CONFIG_MAIN_NOT_DEFINED +# define CLARA_CONFIG_MAIN +# endif +#endif + +// #included from: internal/catch_notimplemented_exception.h +#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED + +// #included from: catch_common.h +#define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED + +// #included from: catch_compiler_capabilities.h +#define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED + +// Detect a number of compiler features - mostly C++11/14 conformance - by compiler +// The following features are defined: +// +// CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported? +// CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported? +// CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods +// CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported? +// CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported +// CATCH_CONFIG_CPP11_LONG_LONG : is long long supported? +// CATCH_CONFIG_CPP11_OVERRIDE : is override supported? +// CATCH_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) +// CATCH_CONFIG_CPP11_SHUFFLE : is std::shuffle supported? +// CATCH_CONFIG_CPP11_TYPE_TRAITS : are type_traits and enable_if supported? + +// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported? + +// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported? +// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported? +// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported? +// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported? +// **************** +// Note to maintainers: if new toggles are added please document them +// in configuration.md, too +// **************** + +// In general each macro has a _NO_<feature name> form +// (e.g. CATCH_CONFIG_CPP11_NO_NULLPTR) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + +// All the C++11 features can be disabled with CATCH_CONFIG_NO_CPP11 + +#ifdef __cplusplus + +# if __cplusplus >= 201103L +# define CATCH_CPP11_OR_GREATER +# endif + +# if __cplusplus >= 201402L +# define CATCH_CPP14_OR_GREATER +# endif + +#endif + +#ifdef __clang__ + +# if __has_feature(cxx_nullptr) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +# if __has_feature(cxx_noexcept) +# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# endif + +# if defined(CATCH_CPP11_OR_GREATER) +# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) +# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \ + _Pragma( "clang diagnostic pop" ) + +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "clang diagnostic pop" ) +# endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// We know some environments not to support full POSIX signals +#if defined(__CYGWIN__) || defined(__QNX__) + +# if !defined(CATCH_CONFIG_POSIX_SIGNALS) +# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +# endif + +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Cygwin +#ifdef __CYGWIN__ + +// Required for some versions of Cygwin to declare gettimeofday +// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin +# define _BSD_SOURCE + +#endif // __CYGWIN__ + +//////////////////////////////////////////////////////////////////////////////// +// Borland +#ifdef __BORLANDC__ + +#endif // __BORLANDC__ + +//////////////////////////////////////////////////////////////////////////////// +// EDG +#ifdef __EDG_VERSION__ + +#endif // __EDG_VERSION__ + +//////////////////////////////////////////////////////////////////////////////// +// Digital Mars +#ifdef __DMC__ + +#endif // __DMC__ + +//////////////////////////////////////////////////////////////////////////////// +// GCC +#ifdef __GNUC__ + +# if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +// - otherwise more recent versions define __cplusplus >= 201103L +// and will get picked up below + +#endif // __GNUC__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#ifdef _MSC_VER + +#define CATCH_INTERNAL_CONFIG_WINDOWS_SEH + +#if (_MSC_VER >= 1600) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) +#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE +#define CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS +#endif + +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// + +// Use variadic macros if the compiler supports them +#if ( defined _MSC_VER && _MSC_VER > 1400 && !defined __EDGE__) || \ + ( defined __WAVE__ && __WAVE_HAS_VARIADICS ) || \ + ( defined __GNUC__ && __GNUC__ >= 3 ) || \ + ( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L ) + +#define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS + +#endif + +// Use __COUNTER__ if the compiler supports it +#if ( defined _MSC_VER && _MSC_VER >= 1300 ) || \ + ( defined __GNUC__ && ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3 )) ) || \ + ( defined __clang__ && __clang_major__ >= 3 ) + +#define CATCH_INTERNAL_CONFIG_COUNTER + +#endif + +//////////////////////////////////////////////////////////////////////////////// +// C++ language feature support + +// catch all support for C++11 +#if defined(CATCH_CPP11_OR_GREATER) + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +# define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM +# define CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_TUPLE +# define CATCH_INTERNAL_CONFIG_CPP11_TUPLE +# endif + +# ifndef CATCH_INTERNAL_CONFIG_VARIADIC_MACROS +# define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS +# endif + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) +# define CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG +# endif + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) +# define CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE +# endif +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) +# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +# endif +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE) +# define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE +# endif +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS) +# define CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS +# endif + +#endif // __cplusplus >= 201103L + +// Now set the actual defines based on the above + anything the user has configured +#if defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NO_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_NULLPTR +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_NOEXCEPT +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_GENERATED_METHODS +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_NO_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_IS_ENUM +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_CPP11_NO_TUPLE) && !defined(CATCH_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_TUPLE +#endif +#if defined(CATCH_INTERNAL_CONFIG_VARIADIC_MACROS) && !defined(CATCH_CONFIG_NO_VARIADIC_MACROS) && !defined(CATCH_CONFIG_VARIADIC_MACROS) +# define CATCH_CONFIG_VARIADIC_MACROS +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_NO_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_LONG_LONG +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_NO_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_OVERRIDE +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_NO_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_UNIQUE_PTR +#endif +// Use of __COUNTER__ is suppressed if __JETBRAINS_IDE__ is #defined (meaning we're being parsed by a JetBrains IDE for +// analytics) because, at time of writing, __COUNTER__ is not properly handled by it. +// This does not affect compilation +#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) && !defined(__JETBRAINS_IDE__) +# define CATCH_CONFIG_COUNTER +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_NO_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_SHUFFLE +#endif +# if defined(CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS) && !defined(CATCH_CONFIG_CPP11_NO_TYPE_TRAITS) && !defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_TYPE_TRAITS +# endif +#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) +# define CATCH_CONFIG_WINDOWS_SEH +#endif +// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. +#if !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) +# define CATCH_CONFIG_POSIX_SIGNALS +#endif + +#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS +#endif + +// noexcept support: +#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT) +# define CATCH_NOEXCEPT noexcept +# define CATCH_NOEXCEPT_IS(x) noexcept(x) +#else +# define CATCH_NOEXCEPT throw() +# define CATCH_NOEXCEPT_IS(x) +#endif + +// nullptr support +#ifdef CATCH_CONFIG_CPP11_NULLPTR +# define CATCH_NULL nullptr +#else +# define CATCH_NULL NULL +#endif + +// override support +#ifdef CATCH_CONFIG_CPP11_OVERRIDE +# define CATCH_OVERRIDE override +#else +# define CATCH_OVERRIDE +#endif + +// unique_ptr support +#ifdef CATCH_CONFIG_CPP11_UNIQUE_PTR +# define CATCH_AUTO_PTR( T ) std::unique_ptr<T> +#else +# define CATCH_AUTO_PTR( T ) std::auto_ptr<T> +#endif + +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#ifdef CATCH_CONFIG_COUNTER +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#else +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#endif + +#define INTERNAL_CATCH_STRINGIFY2( expr ) #expr +#define INTERNAL_CATCH_STRINGIFY( expr ) INTERNAL_CATCH_STRINGIFY2( expr ) + +#include <sstream> +#include <algorithm> + +namespace Catch { + + struct IConfig; + + struct CaseSensitive { enum Choice { + Yes, + No + }; }; + + class NonCopyable { +#ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + NonCopyable( NonCopyable const& ) = delete; + NonCopyable( NonCopyable && ) = delete; + NonCopyable& operator = ( NonCopyable const& ) = delete; + NonCopyable& operator = ( NonCopyable && ) = delete; +#else + NonCopyable( NonCopyable const& info ); + NonCopyable& operator = ( NonCopyable const& ); +#endif + + protected: + NonCopyable() {} + virtual ~NonCopyable(); + }; + + class SafeBool { + public: + typedef void (SafeBool::*type)() const; + + static type makeSafe( bool value ) { + return value ? &SafeBool::trueValue : 0; + } + private: + void trueValue() const {} + }; + + template<typename ContainerT> + inline void deleteAll( ContainerT& container ) { + typename ContainerT::const_iterator it = container.begin(); + typename ContainerT::const_iterator itEnd = container.end(); + for(; it != itEnd; ++it ) + delete *it; + } + template<typename AssociativeContainerT> + inline void deleteAllValues( AssociativeContainerT& container ) { + typename AssociativeContainerT::const_iterator it = container.begin(); + typename AssociativeContainerT::const_iterator itEnd = container.end(); + for(; it != itEnd; ++it ) + delete it->second; + } + + bool startsWith( std::string const& s, std::string const& prefix ); + bool startsWith( std::string const& s, char prefix ); + bool endsWith( std::string const& s, std::string const& suffix ); + bool endsWith( std::string const& s, char suffix ); + bool contains( std::string const& s, std::string const& infix ); + void toLowerInPlace( std::string& s ); + std::string toLower( std::string const& s ); + std::string trim( std::string const& str ); + bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); + + struct pluralise { + pluralise( std::size_t count, std::string const& label ); + + friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); + + std::size_t m_count; + std::string m_label; + }; + + struct SourceLineInfo { + + SourceLineInfo(); + SourceLineInfo( char const* _file, std::size_t _line ); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + SourceLineInfo(SourceLineInfo const& other) = default; + SourceLineInfo( SourceLineInfo && ) = default; + SourceLineInfo& operator = ( SourceLineInfo const& ) = default; + SourceLineInfo& operator = ( SourceLineInfo && ) = default; +# endif + bool empty() const; + bool operator == ( SourceLineInfo const& other ) const; + bool operator < ( SourceLineInfo const& other ) const; + + char const* file; + std::size_t line; + }; + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); + + // This is just here to avoid compiler warnings with macro constants and boolean literals + inline bool isTrue( bool value ){ return value; } + inline bool alwaysTrue() { return true; } + inline bool alwaysFalse() { return false; } + + void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ); + + void seedRng( IConfig const& config ); + unsigned int rngSeed(); + + // Use this in variadic streaming macros to allow + // >> +StreamEndStop + // as well as + // >> stuff +StreamEndStop + struct StreamEndStop { + std::string operator+() { + return std::string(); + } + }; + template<typename T> + T const& operator + ( T const& value, StreamEndStop ) { + return value; + } +} + +#define CATCH_INTERNAL_LINEINFO ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) ) +#define CATCH_INTERNAL_ERROR( msg ) ::Catch::throwLogicError( msg, CATCH_INTERNAL_LINEINFO ); + +namespace Catch { + + class NotImplementedException : public std::exception + { + public: + NotImplementedException( SourceLineInfo const& lineInfo ); + NotImplementedException( NotImplementedException const& ) {} + + virtual ~NotImplementedException() CATCH_NOEXCEPT {} + + virtual const char* what() const CATCH_NOEXCEPT; + + private: + std::string m_what; + SourceLineInfo m_lineInfo; + }; + +} // end namespace Catch + +/////////////////////////////////////////////////////////////////////////////// +#define CATCH_NOT_IMPLEMENTED throw Catch::NotImplementedException( CATCH_INTERNAL_LINEINFO ) + +// #included from: internal/catch_context.h +#define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED + +// #included from: catch_interfaces_generators.h +#define TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED + +#include <string> + +namespace Catch { + + struct IGeneratorInfo { + virtual ~IGeneratorInfo(); + virtual bool moveNext() = 0; + virtual std::size_t getCurrentIndex() const = 0; + }; + + struct IGeneratorsForTest { + virtual ~IGeneratorsForTest(); + + virtual IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) = 0; + virtual bool moveNext() = 0; + }; + + IGeneratorsForTest* createGeneratorsForTest(); + +} // end namespace Catch + +// #included from: catch_ptr.hpp +#define TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +namespace Catch { + + // An intrusive reference counting smart pointer. + // T must implement addRef() and release() methods + // typically implementing the IShared interface + template<typename T> + class Ptr { + public: + Ptr() : m_p( CATCH_NULL ){} + Ptr( T* p ) : m_p( p ){ + if( m_p ) + m_p->addRef(); + } + Ptr( Ptr const& other ) : m_p( other.m_p ){ + if( m_p ) + m_p->addRef(); + } + ~Ptr(){ + if( m_p ) + m_p->release(); + } + void reset() { + if( m_p ) + m_p->release(); + m_p = CATCH_NULL; + } + Ptr& operator = ( T* p ){ + Ptr temp( p ); + swap( temp ); + return *this; + } + Ptr& operator = ( Ptr const& other ){ + Ptr temp( other ); + swap( temp ); + return *this; + } + void swap( Ptr& other ) { std::swap( m_p, other.m_p ); } + T* get() const{ return m_p; } + T& operator*() const { return *m_p; } + T* operator->() const { return m_p; } + bool operator !() const { return m_p == CATCH_NULL; } + operator SafeBool::type() const { return SafeBool::makeSafe( m_p != CATCH_NULL ); } + + private: + T* m_p; + }; + + struct IShared : NonCopyable { + virtual ~IShared(); + virtual void addRef() const = 0; + virtual void release() const = 0; + }; + + template<typename T = IShared> + struct SharedImpl : T { + + SharedImpl() : m_rc( 0 ){} + + virtual void addRef() const { + ++m_rc; + } + virtual void release() const { + if( --m_rc == 0 ) + delete this; + } + + mutable unsigned int m_rc; + }; + +} // end namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +namespace Catch { + + class TestCase; + class Stream; + struct IResultCapture; + struct IRunner; + struct IGeneratorsForTest; + struct IConfig; + + struct IContext + { + virtual ~IContext(); + + virtual IResultCapture* getResultCapture() = 0; + virtual IRunner* getRunner() = 0; + virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0; + virtual bool advanceGeneratorsForCurrentTest() = 0; + virtual Ptr<IConfig const> getConfig() const = 0; + }; + + struct IMutableContext : IContext + { + virtual ~IMutableContext(); + virtual void setResultCapture( IResultCapture* resultCapture ) = 0; + virtual void setRunner( IRunner* runner ) = 0; + virtual void setConfig( Ptr<IConfig const> const& config ) = 0; + }; + + IContext& getCurrentContext(); + IMutableContext& getCurrentMutableContext(); + void cleanUpContext(); + Stream createStream( std::string const& streamName ); + +} + +// #included from: internal/catch_test_registry.hpp +#define TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED + +// #included from: catch_interfaces_testcase.h +#define TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED + +#include <vector> + +namespace Catch { + + class TestSpec; + + struct ITestCase : IShared { + virtual void invoke () const = 0; + protected: + virtual ~ITestCase(); + }; + + class TestCase; + struct IConfig; + + struct ITestCaseRegistry { + virtual ~ITestCaseRegistry(); + virtual std::vector<TestCase> const& getAllTests() const = 0; + virtual std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const = 0; + }; + + bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); + std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ); + std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ); + +} + +namespace Catch { + +template<typename C> +class MethodTestCase : public SharedImpl<ITestCase> { + +public: + MethodTestCase( void (C::*method)() ) : m_method( method ) {} + + virtual void invoke() const { + C obj; + (obj.*m_method)(); + } + +private: + virtual ~MethodTestCase() {} + + void (C::*m_method)(); +}; + +typedef void(*TestFunction)(); + +struct NameAndDesc { + NameAndDesc( const char* _name = "", const char* _description= "" ) + : name( _name ), description( _description ) + {} + + const char* name; + const char* description; +}; + +void registerTestCase + ( ITestCase* testCase, + char const* className, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ); + +struct AutoReg { + + AutoReg + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ); + + template<typename C> + AutoReg + ( void (C::*method)(), + char const* className, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ) { + + registerTestCase + ( new MethodTestCase<C>( method ), + className, + nameAndDesc, + lineInfo ); + } + + ~AutoReg(); + +private: + AutoReg( AutoReg const& ); + void operator= ( AutoReg const& ); +}; + +void registerTestCaseFunction + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ); + +} // end namespace Catch + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ + static void TestName(); \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); } \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \ + static void TestName() + #define INTERNAL_CATCH_TESTCASE( ... ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ \ + struct TestName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ + } \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \ + void TestName::test() + #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ + INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + +#else + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ + static void TestName(); \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \ + static void TestName() + #define INTERNAL_CATCH_TESTCASE( Name, Desc ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), Name, Desc ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, Name, Desc ) \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + namespace{ \ + struct TestCaseName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ + } \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \ + void TestCaseName::test() + #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, TestName, Desc )\ + INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, TestName, Desc ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, Name, Desc ) \ + CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \ + Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); \ + CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + +#endif + +// #included from: internal/catch_capture.hpp +#define TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED + +// #included from: catch_result_builder.h +#define TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED + +// #included from: catch_result_type.h +#define TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED + +namespace Catch { + + // ResultWas::OfType enum + struct ResultWas { enum OfType { + Unknown = -1, + Ok = 0, + Info = 1, + Warning = 2, + + FailureBit = 0x10, + + ExpressionFailed = FailureBit | 1, + ExplicitFailure = FailureBit | 2, + + Exception = 0x100 | FailureBit, + + ThrewException = Exception | 1, + DidntThrowException = Exception | 2, + + FatalErrorCondition = 0x200 | FailureBit + + }; }; + + inline bool isOk( ResultWas::OfType resultType ) { + return ( resultType & ResultWas::FailureBit ) == 0; + } + inline bool isJustInfo( int flags ) { + return flags == ResultWas::Info; + } + + // ResultDisposition::Flags enum + struct ResultDisposition { enum Flags { + Normal = 0x01, + + ContinueOnFailure = 0x02, // Failures fail test, but execution continues + FalseTest = 0x04, // Prefix expression with ! + SuppressFail = 0x08 // Failures are reported but do not fail the test + }; }; + + inline ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) { + return static_cast<ResultDisposition::Flags>( static_cast<int>( lhs ) | static_cast<int>( rhs ) ); + } + + inline bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; } + inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } + inline bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; } + +} // end namespace Catch + +// #included from: catch_assertionresult.h +#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED + +#include <string> + +namespace Catch { + + struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; + + struct DecomposedExpression + { + virtual ~DecomposedExpression() {} + virtual bool isBinaryExpression() const { + return false; + } + virtual void reconstructExpression( std::string& dest ) const = 0; + + // Only simple binary comparisons can be decomposed. + // If more complex check is required then wrap sub-expressions in parentheses. + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator + ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator * ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator / ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator % ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( T const& ); + template<typename T> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( T const& ); + + private: + DecomposedExpression& operator = (DecomposedExpression const&); + }; + + struct AssertionInfo + { + AssertionInfo() {} + AssertionInfo( char const * _macroName, + SourceLineInfo const& _lineInfo, + char const * _capturedExpression, + ResultDisposition::Flags _resultDisposition, + char const * _secondArg = ""); + + char const * macroName; + SourceLineInfo lineInfo; + char const * capturedExpression; + ResultDisposition::Flags resultDisposition; + char const * secondArg; + }; + + struct AssertionResultData + { + AssertionResultData() : decomposedExpression( CATCH_NULL ) + , resultType( ResultWas::Unknown ) + , negated( false ) + , parenthesized( false ) {} + + void negate( bool parenthesize ) { + negated = !negated; + parenthesized = parenthesize; + if( resultType == ResultWas::Ok ) + resultType = ResultWas::ExpressionFailed; + else if( resultType == ResultWas::ExpressionFailed ) + resultType = ResultWas::Ok; + } + + std::string const& reconstructExpression() const { + if( decomposedExpression != CATCH_NULL ) { + decomposedExpression->reconstructExpression( reconstructedExpression ); + if( parenthesized ) { + reconstructedExpression.insert( 0, 1, '(' ); + reconstructedExpression.append( 1, ')' ); + } + if( negated ) { + reconstructedExpression.insert( 0, 1, '!' ); + } + decomposedExpression = CATCH_NULL; + } + return reconstructedExpression; + } + + mutable DecomposedExpression const* decomposedExpression; + mutable std::string reconstructedExpression; + std::string message; + ResultWas::OfType resultType; + bool negated; + bool parenthesized; + }; + + class AssertionResult { + public: + AssertionResult(); + AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); + ~AssertionResult(); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + AssertionResult( AssertionResult const& ) = default; + AssertionResult( AssertionResult && ) = default; + AssertionResult& operator = ( AssertionResult const& ) = default; + AssertionResult& operator = ( AssertionResult && ) = default; +# endif + + bool isOk() const; + bool succeeded() const; + ResultWas::OfType getResultType() const; + bool hasExpression() const; + bool hasMessage() const; + std::string getExpression() const; + std::string getExpressionInMacro() const; + bool hasExpandedExpression() const; + std::string getExpandedExpression() const; + std::string getMessage() const; + SourceLineInfo getSourceInfo() const; + std::string getTestMacroName() const; + void discardDecomposedExpression() const; + void expandDecomposedExpression() const; + + protected: + AssertionInfo m_info; + AssertionResultData m_resultData; + }; + +} // end namespace Catch + +// #included from: catch_matchers.hpp +#define TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED + +namespace Catch { +namespace Matchers { + namespace Impl { + + template<typename ArgT> struct MatchAllOf; + template<typename ArgT> struct MatchAnyOf; + template<typename ArgT> struct MatchNotOf; + + class MatcherUntypedBase { + public: + std::string toString() const { + if( m_cachedToString.empty() ) + m_cachedToString = describe(); + return m_cachedToString; + } + + protected: + virtual ~MatcherUntypedBase(); + virtual std::string describe() const = 0; + mutable std::string m_cachedToString; + private: + MatcherUntypedBase& operator = ( MatcherUntypedBase const& ); + }; + + template<typename ObjectT> + struct MatcherMethod { + virtual bool match( ObjectT const& arg ) const = 0; + }; + template<typename PtrT> + struct MatcherMethod<PtrT*> { + virtual bool match( PtrT* arg ) const = 0; + }; + + template<typename ObjectT, typename ComparatorT = ObjectT> + struct MatcherBase : MatcherUntypedBase, MatcherMethod<ObjectT> { + + MatchAllOf<ComparatorT> operator && ( MatcherBase const& other ) const; + MatchAnyOf<ComparatorT> operator || ( MatcherBase const& other ) const; + MatchNotOf<ComparatorT> operator ! () const; + }; + + template<typename ArgT> + struct MatchAllOf : MatcherBase<ArgT> { + virtual bool match( ArgT const& arg ) const CATCH_OVERRIDE { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if (!m_matchers[i]->match(arg)) + return false; + } + return true; + } + virtual std::string describe() const CATCH_OVERRIDE { + std::string description; + description.reserve( 4 + m_matchers.size()*32 ); + description += "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + description += " and "; + description += m_matchers[i]->toString(); + } + description += " )"; + return description; + } + + MatchAllOf<ArgT>& operator && ( MatcherBase<ArgT> const& other ) { + m_matchers.push_back( &other ); + return *this; + } + + std::vector<MatcherBase<ArgT> const*> m_matchers; + }; + template<typename ArgT> + struct MatchAnyOf : MatcherBase<ArgT> { + + virtual bool match( ArgT const& arg ) const CATCH_OVERRIDE { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if (m_matchers[i]->match(arg)) + return true; + } + return false; + } + virtual std::string describe() const CATCH_OVERRIDE { + std::string description; + description.reserve( 4 + m_matchers.size()*32 ); + description += "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + description += " or "; + description += m_matchers[i]->toString(); + } + description += " )"; + return description; + } + + MatchAnyOf<ArgT>& operator || ( MatcherBase<ArgT> const& other ) { + m_matchers.push_back( &other ); + return *this; + } + + std::vector<MatcherBase<ArgT> const*> m_matchers; + }; + + template<typename ArgT> + struct MatchNotOf : MatcherBase<ArgT> { + + MatchNotOf( MatcherBase<ArgT> const& underlyingMatcher ) : m_underlyingMatcher( underlyingMatcher ) {} + + virtual bool match( ArgT const& arg ) const CATCH_OVERRIDE { + return !m_underlyingMatcher.match( arg ); + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "not " + m_underlyingMatcher.toString(); + } + MatcherBase<ArgT> const& m_underlyingMatcher; + }; + + template<typename ObjectT, typename ComparatorT> + MatchAllOf<ComparatorT> MatcherBase<ObjectT, ComparatorT>::operator && ( MatcherBase const& other ) const { + return MatchAllOf<ComparatorT>() && *this && other; + } + template<typename ObjectT, typename ComparatorT> + MatchAnyOf<ComparatorT> MatcherBase<ObjectT, ComparatorT>::operator || ( MatcherBase const& other ) const { + return MatchAnyOf<ComparatorT>() || *this || other; + } + template<typename ObjectT, typename ComparatorT> + MatchNotOf<ComparatorT> MatcherBase<ObjectT, ComparatorT>::operator ! () const { + return MatchNotOf<ComparatorT>( *this ); + } + + } // namespace Impl + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + // - deprecated: prefer ||, && and ! + template<typename T> + inline Impl::MatchNotOf<T> Not( Impl::MatcherBase<T> const& underlyingMatcher ) { + return Impl::MatchNotOf<T>( underlyingMatcher ); + } + template<typename T> + inline Impl::MatchAllOf<T> AllOf( Impl::MatcherBase<T> const& m1, Impl::MatcherBase<T> const& m2 ) { + return Impl::MatchAllOf<T>() && m1 && m2; + } + template<typename T> + inline Impl::MatchAllOf<T> AllOf( Impl::MatcherBase<T> const& m1, Impl::MatcherBase<T> const& m2, Impl::MatcherBase<T> const& m3 ) { + return Impl::MatchAllOf<T>() && m1 && m2 && m3; + } + template<typename T> + inline Impl::MatchAnyOf<T> AnyOf( Impl::MatcherBase<T> const& m1, Impl::MatcherBase<T> const& m2 ) { + return Impl::MatchAnyOf<T>() || m1 || m2; + } + template<typename T> + inline Impl::MatchAnyOf<T> AnyOf( Impl::MatcherBase<T> const& m1, Impl::MatcherBase<T> const& m2, Impl::MatcherBase<T> const& m3 ) { + return Impl::MatchAnyOf<T>() || m1 || m2 || m3; + } + +} // namespace Matchers + +using namespace Matchers; +using Matchers::Impl::MatcherBase; + +} // namespace Catch + +namespace Catch { + + struct TestFailureException{}; + + template<typename T> class ExpressionLhs; + + struct CopyableStream { + CopyableStream() {} + CopyableStream( CopyableStream const& other ) { + oss << other.oss.str(); + } + CopyableStream& operator=( CopyableStream const& other ) { + oss.str(std::string()); + oss << other.oss.str(); + return *this; + } + std::ostringstream oss; + }; + + class ResultBuilder : public DecomposedExpression { + public: + ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg = "" ); + ~ResultBuilder(); + + template<typename T> + ExpressionLhs<T const&> operator <= ( T const& operand ); + ExpressionLhs<bool> operator <= ( bool value ); + + template<typename T> + ResultBuilder& operator << ( T const& value ) { + m_stream().oss << value; + return *this; + } + + ResultBuilder& setResultType( ResultWas::OfType result ); + ResultBuilder& setResultType( bool result ); + + void endExpression( DecomposedExpression const& expr ); + + virtual void reconstructExpression( std::string& dest ) const CATCH_OVERRIDE; + + AssertionResult build() const; + AssertionResult build( DecomposedExpression const& expr ) const; + + void useActiveException( ResultDisposition::Flags resultDisposition = ResultDisposition::Normal ); + void captureResult( ResultWas::OfType resultType ); + void captureExpression(); + void captureExpectedException( std::string const& expectedMessage ); + void captureExpectedException( Matchers::Impl::MatcherBase<std::string> const& matcher ); + void handleResult( AssertionResult const& result ); + void react(); + bool shouldDebugBreak() const; + bool allowThrows() const; + + template<typename ArgT, typename MatcherT> + void captureMatch( ArgT const& arg, MatcherT const& matcher, char const* matcherString ); + + void setExceptionGuard(); + void unsetExceptionGuard(); + + private: + AssertionInfo m_assertionInfo; + AssertionResultData m_data; + + static CopyableStream &m_stream() + { + static CopyableStream s; + return s; + } + + bool m_shouldDebugBreak; + bool m_shouldThrow; + bool m_guardException; + }; + +} // namespace Catch + +// Include after due to circular dependency: +// #included from: catch_expression_lhs.hpp +#define TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED + +// #included from: catch_evaluate.hpp +#define TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4389) // '==' : signed/unsigned mismatch +#pragma warning(disable:4312) // Converting int to T* using reinterpret_cast (issue on x64 platform) +#endif + +#include <cstddef> + +namespace Catch { +namespace Internal { + + enum Operator { + IsEqualTo, + IsNotEqualTo, + IsLessThan, + IsGreaterThan, + IsLessThanOrEqualTo, + IsGreaterThanOrEqualTo + }; + + template<Operator Op> struct OperatorTraits { static const char* getName(){ return "*error*"; } }; + template<> struct OperatorTraits<IsEqualTo> { static const char* getName(){ return "=="; } }; + template<> struct OperatorTraits<IsNotEqualTo> { static const char* getName(){ return "!="; } }; + template<> struct OperatorTraits<IsLessThan> { static const char* getName(){ return "<"; } }; + template<> struct OperatorTraits<IsGreaterThan> { static const char* getName(){ return ">"; } }; + template<> struct OperatorTraits<IsLessThanOrEqualTo> { static const char* getName(){ return "<="; } }; + template<> struct OperatorTraits<IsGreaterThanOrEqualTo>{ static const char* getName(){ return ">="; } }; + + template<typename T> + inline T& opCast(T const& t) { return const_cast<T&>(t); } + +// nullptr_t support based on pull request #154 from Konstantin Baumann +#ifdef CATCH_CONFIG_CPP11_NULLPTR + inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; } +#endif // CATCH_CONFIG_CPP11_NULLPTR + + // So the compare overloads can be operator agnostic we convey the operator as a template + // enum, which is used to specialise an Evaluator for doing the comparison. + template<typename T1, typename T2, Operator Op> + class Evaluator{}; + + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsEqualTo> { + static bool evaluate( T1 const& lhs, T2 const& rhs) { + return bool( opCast( lhs ) == opCast( rhs ) ); + } + }; + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsNotEqualTo> { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) != opCast( rhs ) ); + } + }; + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsLessThan> { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) < opCast( rhs ) ); + } + }; + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsGreaterThan> { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) > opCast( rhs ) ); + } + }; + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsGreaterThanOrEqualTo> { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) >= opCast( rhs ) ); + } + }; + template<typename T1, typename T2> + struct Evaluator<T1, T2, IsLessThanOrEqualTo> { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) <= opCast( rhs ) ); + } + }; + + template<Operator Op, typename T1, typename T2> + bool applyEvaluator( T1 const& lhs, T2 const& rhs ) { + return Evaluator<T1, T2, Op>::evaluate( lhs, rhs ); + } + + // This level of indirection allows us to specialise for integer types + // to avoid signed/ unsigned warnings + + // "base" overload + template<Operator Op, typename T1, typename T2> + bool compare( T1 const& lhs, T2 const& rhs ) { + return Evaluator<T1, T2, Op>::evaluate( lhs, rhs ); + } + + // unsigned X to int + template<Operator Op> bool compare( unsigned int lhs, int rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) ); + } + template<Operator Op> bool compare( unsigned long lhs, int rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) ); + } + template<Operator Op> bool compare( unsigned char lhs, int rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) ); + } + + // unsigned X to long + template<Operator Op> bool compare( unsigned int lhs, long rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) ); + } + template<Operator Op> bool compare( unsigned long lhs, long rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) ); + } + template<Operator Op> bool compare( unsigned char lhs, long rhs ) { + return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) ); + } + + // int to unsigned X + template<Operator Op> bool compare( int lhs, unsigned int rhs ) { + return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs ); + } + template<Operator Op> bool compare( int lhs, unsigned long rhs ) { + return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs ); + } + template<Operator Op> bool compare( int lhs, unsigned char rhs ) { + return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs ); + } + + // long to unsigned X + template<Operator Op> bool compare( long lhs, unsigned int rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + template<Operator Op> bool compare( long lhs, unsigned long rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + template<Operator Op> bool compare( long lhs, unsigned char rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + + // pointer to long (when comparing against NULL) + template<Operator Op, typename T> bool compare( long lhs, T* rhs ) { + return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs ); + } + template<Operator Op, typename T> bool compare( T* lhs, long rhs ) { + return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) ); + } + + // pointer to int (when comparing against NULL) + template<Operator Op, typename T> bool compare( int lhs, T* rhs ) { + return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs ); + } + template<Operator Op, typename T> bool compare( T* lhs, int rhs ) { + return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) ); + } + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG + // long long to unsigned X + template<Operator Op> bool compare( long long lhs, unsigned int rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + template<Operator Op> bool compare( long long lhs, unsigned long rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + template<Operator Op> bool compare( long long lhs, unsigned long long rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + template<Operator Op> bool compare( long long lhs, unsigned char rhs ) { + return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs ); + } + + // unsigned long long to X + template<Operator Op> bool compare( unsigned long long lhs, int rhs ) { + return applyEvaluator<Op>( static_cast<long>( lhs ), rhs ); + } + template<Operator Op> bool compare( unsigned long long lhs, long rhs ) { + return applyEvaluator<Op>( static_cast<long>( lhs ), rhs ); + } + template<Operator Op> bool compare( unsigned long long lhs, long long rhs ) { + return applyEvaluator<Op>( static_cast<long>( lhs ), rhs ); + } + template<Operator Op> bool compare( unsigned long long lhs, char rhs ) { + return applyEvaluator<Op>( static_cast<long>( lhs ), rhs ); + } + + // pointer to long long (when comparing against NULL) + template<Operator Op, typename T> bool compare( long long lhs, T* rhs ) { + return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs ); + } + template<Operator Op, typename T> bool compare( T* lhs, long long rhs ) { + return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) ); + } +#endif // CATCH_CONFIG_CPP11_LONG_LONG + +#ifdef CATCH_CONFIG_CPP11_NULLPTR + // pointer to nullptr_t (when comparing against nullptr) + template<Operator Op, typename T> bool compare( std::nullptr_t, T* rhs ) { + return Evaluator<T*, T*, Op>::evaluate( nullptr, rhs ); + } + template<Operator Op, typename T> bool compare( T* lhs, std::nullptr_t ) { + return Evaluator<T*, T*, Op>::evaluate( lhs, nullptr ); + } +#endif // CATCH_CONFIG_CPP11_NULLPTR + +} // end of namespace Internal +} // end of namespace Catch + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +// #included from: catch_tostring.h +#define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED + +#include <sstream> +#include <iomanip> +#include <limits> +#include <vector> +#include <cstddef> + +#ifdef __OBJC__ +// #included from: catch_objc_arc.hpp +#define TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED + +#import <Foundation/Foundation.h> + +#ifdef __has_feature +#define CATCH_ARC_ENABLED __has_feature(objc_arc) +#else +#define CATCH_ARC_ENABLED 0 +#endif + +void arcSafeRelease( NSObject* obj ); +id performOptionalSelector( id obj, SEL sel ); + +#if !CATCH_ARC_ENABLED +inline void arcSafeRelease( NSObject* obj ) { + [obj release]; +} +inline id performOptionalSelector( id obj, SEL sel ) { + if( [obj respondsToSelector: sel] ) + return [obj performSelector: sel]; + return nil; +} +#define CATCH_UNSAFE_UNRETAINED +#define CATCH_ARC_STRONG +#else +inline void arcSafeRelease( NSObject* ){} +inline id performOptionalSelector( id obj, SEL sel ) { +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" +#endif + if( [obj respondsToSelector: sel] ) + return [obj performSelector: sel]; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + return nil; +} +#define CATCH_UNSAFE_UNRETAINED __unsafe_unretained +#define CATCH_ARC_STRONG __strong +#endif + +#endif + +#ifdef CATCH_CONFIG_CPP11_TUPLE +#include <tuple> +#endif + +#ifdef CATCH_CONFIG_CPP11_IS_ENUM +#include <type_traits> +#endif + +namespace Catch { + +// Why we're here. +template<typename T> +std::string toString( T const& value ); + +// Built in overloads + +std::string toString( std::string const& value ); +std::string toString( std::wstring const& value ); +std::string toString( const char* const value ); +std::string toString( char* const value ); +std::string toString( const wchar_t* const value ); +std::string toString( wchar_t* const value ); +std::string toString( int value ); +std::string toString( unsigned long value ); +std::string toString( unsigned int value ); +std::string toString( const double value ); +std::string toString( const float value ); +std::string toString( bool value ); +std::string toString( char value ); +std::string toString( signed char value ); +std::string toString( unsigned char value ); + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG +std::string toString( long long value ); +std::string toString( unsigned long long value ); +#endif + +#ifdef CATCH_CONFIG_CPP11_NULLPTR +std::string toString( std::nullptr_t ); +#endif + +#ifdef __OBJC__ + std::string toString( NSString const * const& nsstring ); + std::string toString( NSString * CATCH_ARC_STRONG & nsstring ); + std::string toString( NSObject* const& nsObject ); +#endif + +namespace Detail { + + extern const std::string unprintableString; + + #if !defined(CATCH_CONFIG_CPP11_STREAM_INSERTABLE_CHECK) + struct BorgType { + template<typename T> BorgType( T const& ); + }; + + struct TrueType { char sizer[1]; }; + struct FalseType { char sizer[2]; }; + + TrueType& testStreamable( std::ostream& ); + FalseType testStreamable( FalseType ); + + FalseType operator<<( std::ostream const&, BorgType const& ); + + template<typename T> + struct IsStreamInsertable { + static std::ostream &s; + static T const&t; + enum { value = sizeof( testStreamable(s << t) ) == sizeof( TrueType ) }; + }; +#else + template<typename T> + class IsStreamInsertable { + template<typename SS, typename TT> + static auto test(int) + -> decltype( std::declval<SS&>() << std::declval<TT>(), std::true_type() ); + + template<typename, typename> + static auto test(...) -> std::false_type; + + public: + static const bool value = decltype(test<std::ostream,const T&>(0))::value; + }; +#endif + +#if defined(CATCH_CONFIG_CPP11_IS_ENUM) + template<typename T, + bool IsEnum = std::is_enum<T>::value + > + struct EnumStringMaker + { + static std::string convert( T const& ) { return unprintableString; } + }; + + template<typename T> + struct EnumStringMaker<T,true> + { + static std::string convert( T const& v ) + { + return ::Catch::toString( + static_cast<typename std::underlying_type<T>::type>(v) + ); + } + }; +#endif + template<bool C> + struct StringMakerBase { +#if defined(CATCH_CONFIG_CPP11_IS_ENUM) + template<typename T> + static std::string convert( T const& v ) + { + return EnumStringMaker<T>::convert( v ); + } +#else + template<typename T> + static std::string convert( T const& ) { return unprintableString; } +#endif + }; + + template<> + struct StringMakerBase<true> { + template<typename T> + static std::string convert( T const& _value ) { + std::ostringstream oss; + oss << _value; + return oss.str(); + } + }; + + std::string rawMemoryToString( const void *object, std::size_t size ); + + template<typename T> + inline std::string rawMemoryToString( const T& object ) { + return rawMemoryToString( &object, sizeof(object) ); + } + +} // end namespace Detail + +template<typename T> +struct StringMaker : + Detail::StringMakerBase<Detail::IsStreamInsertable<T>::value> {}; + +template<typename T> +struct StringMaker<T*> { + template<typename U> + static std::string convert( U* p ) { + if( !p ) + return "NULL"; + else + return Detail::rawMemoryToString( p ); + } +}; + +template<typename R, typename C> +struct StringMaker<R C::*> { + static std::string convert( R C::* p ) { + if( !p ) + return "NULL"; + else + return Detail::rawMemoryToString( p ); + } +}; + +namespace Detail { + template<typename InputIterator> + std::string rangeToString( InputIterator first, InputIterator last ); +} + +//template<typename T, typename Allocator> +//struct StringMaker<std::vector<T, Allocator> > { +// static std::string convert( std::vector<T,Allocator> const& v ) { +// return Detail::rangeToString( v.begin(), v.end() ); +// } +//}; + +template<typename T, typename Allocator> +std::string toString( std::vector<T,Allocator> const& v ) { + return Detail::rangeToString( v.begin(), v.end() ); +} + +#ifdef CATCH_CONFIG_CPP11_TUPLE + +// toString for tuples +namespace TupleDetail { + template< + typename Tuple, + std::size_t N = 0, + bool = (N < std::tuple_size<Tuple>::value) + > + struct ElementPrinter { + static void print( const Tuple& tuple, std::ostream& os ) + { + os << ( N ? ", " : " " ) + << Catch::toString(std::get<N>(tuple)); + ElementPrinter<Tuple,N+1>::print(tuple,os); + } + }; + + template< + typename Tuple, + std::size_t N + > + struct ElementPrinter<Tuple,N,false> { + static void print( const Tuple&, std::ostream& ) {} + }; + +} + +template<typename ...Types> +struct StringMaker<std::tuple<Types...>> { + + static std::string convert( const std::tuple<Types...>& tuple ) + { + std::ostringstream os; + os << '{'; + TupleDetail::ElementPrinter<std::tuple<Types...>>::print( tuple, os ); + os << " }"; + return os.str(); + } +}; +#endif // CATCH_CONFIG_CPP11_TUPLE + +namespace Detail { + template<typename T> + std::string makeString( T const& value ) { + return StringMaker<T>::convert( value ); + } +} // end namespace Detail + +/// \brief converts any type to a string +/// +/// The default template forwards on to ostringstream - except when an +/// ostringstream overload does not exist - in which case it attempts to detect +/// that and writes {?}. +/// Overload (not specialise) this template for custom typs that you don't want +/// to provide an ostream overload for. +template<typename T> +std::string toString( T const& value ) { + return StringMaker<T>::convert( value ); +} + + namespace Detail { + template<typename InputIterator> + std::string rangeToString( InputIterator first, InputIterator last ) { + std::ostringstream oss; + oss << "{ "; + if( first != last ) { + oss << Catch::toString( *first ); + for( ++first ; first != last ; ++first ) + oss << ", " << Catch::toString( *first ); + } + oss << " }"; + return oss.str(); + } +} + +} // end namespace Catch + +namespace Catch { + +template<typename LhsT, Internal::Operator Op, typename RhsT> +class BinaryExpression; + +template<typename ArgT, typename MatcherT> +class MatchExpression; + +// Wraps the LHS of an expression and overloads comparison operators +// for also capturing those and RHS (if any) +template<typename T> +class ExpressionLhs : public DecomposedExpression { +public: + ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ), m_truthy(false) {} + + ExpressionLhs& operator = ( const ExpressionLhs& ); + + template<typename RhsT> + BinaryExpression<T, Internal::IsEqualTo, RhsT const&> + operator == ( RhsT const& rhs ) { + return captureExpression<Internal::IsEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsNotEqualTo, RhsT const&> + operator != ( RhsT const& rhs ) { + return captureExpression<Internal::IsNotEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsLessThan, RhsT const&> + operator < ( RhsT const& rhs ) { + return captureExpression<Internal::IsLessThan>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsGreaterThan, RhsT const&> + operator > ( RhsT const& rhs ) { + return captureExpression<Internal::IsGreaterThan>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsLessThanOrEqualTo, RhsT const&> + operator <= ( RhsT const& rhs ) { + return captureExpression<Internal::IsLessThanOrEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsGreaterThanOrEqualTo, RhsT const&> + operator >= ( RhsT const& rhs ) { + return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs ); + } + + BinaryExpression<T, Internal::IsEqualTo, bool> operator == ( bool rhs ) { + return captureExpression<Internal::IsEqualTo>( rhs ); + } + + BinaryExpression<T, Internal::IsNotEqualTo, bool> operator != ( bool rhs ) { + return captureExpression<Internal::IsNotEqualTo>( rhs ); + } + + void endExpression() { + m_truthy = m_lhs ? true : false; + m_rb + .setResultType( m_truthy ) + .endExpression( *this ); + } + + virtual void reconstructExpression( std::string& dest ) const CATCH_OVERRIDE { + dest = Catch::toString( m_lhs ); + } + +private: + template<Internal::Operator Op, typename RhsT> + BinaryExpression<T, Op, RhsT&> captureExpression( RhsT& rhs ) const { + return BinaryExpression<T, Op, RhsT&>( m_rb, m_lhs, rhs ); + } + + template<Internal::Operator Op> + BinaryExpression<T, Op, bool> captureExpression( bool rhs ) const { + return BinaryExpression<T, Op, bool>( m_rb, m_lhs, rhs ); + } + +private: + ResultBuilder& m_rb; + T m_lhs; + bool m_truthy; +}; + +template<typename LhsT, Internal::Operator Op, typename RhsT> +class BinaryExpression : public DecomposedExpression { +public: + BinaryExpression( ResultBuilder& rb, LhsT lhs, RhsT rhs ) + : m_rb( rb ), m_lhs( lhs ), m_rhs( rhs ) {} + + BinaryExpression& operator = ( BinaryExpression& ); + + void endExpression() const { + m_rb + .setResultType( Internal::compare<Op>( m_lhs, m_rhs ) ) + .endExpression( *this ); + } + + virtual bool isBinaryExpression() const CATCH_OVERRIDE { + return true; + } + + virtual void reconstructExpression( std::string& dest ) const CATCH_OVERRIDE { + std::string lhs = Catch::toString( m_lhs ); + std::string rhs = Catch::toString( m_rhs ); + char delim = lhs.size() + rhs.size() < 40 && + lhs.find('\n') == std::string::npos && + rhs.find('\n') == std::string::npos ? ' ' : '\n'; + dest.reserve( 7 + lhs.size() + rhs.size() ); + // 2 for spaces around operator + // 2 for operator + // 2 for parentheses (conditionally added later) + // 1 for negation (conditionally added later) + dest = lhs; + dest += delim; + dest += Internal::OperatorTraits<Op>::getName(); + dest += delim; + dest += rhs; + } + +private: + ResultBuilder& m_rb; + LhsT m_lhs; + RhsT m_rhs; +}; + +template<typename ArgT, typename MatcherT> +class MatchExpression : public DecomposedExpression { +public: + MatchExpression( ArgT arg, MatcherT matcher, char const* matcherString ) + : m_arg( arg ), m_matcher( matcher ), m_matcherString( matcherString ) {} + + virtual bool isBinaryExpression() const CATCH_OVERRIDE { + return true; + } + + virtual void reconstructExpression( std::string& dest ) const CATCH_OVERRIDE { + std::string matcherAsString = m_matcher.toString(); + dest = Catch::toString( m_arg ); + dest += ' '; + if( matcherAsString == Detail::unprintableString ) + dest += m_matcherString; + else + dest += matcherAsString; + } + +private: + ArgT m_arg; + MatcherT m_matcher; + char const* m_matcherString; +}; + +} // end namespace Catch + + +namespace Catch { + + template<typename T> + inline ExpressionLhs<T const&> ResultBuilder::operator <= ( T const& operand ) { + return ExpressionLhs<T const&>( *this, operand ); + } + + inline ExpressionLhs<bool> ResultBuilder::operator <= ( bool value ) { + return ExpressionLhs<bool>( *this, value ); + } + + template<typename ArgT, typename MatcherT> + inline void ResultBuilder::captureMatch( ArgT const& arg, MatcherT const& matcher, + char const* matcherString ) { + MatchExpression<ArgT const&, MatcherT const&> expr( arg, matcher, matcherString ); + setResultType( matcher.match( arg ) ); + endExpression( expr ); + } + +} // namespace Catch + +// #included from: catch_message.h +#define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED + +#include <string> + +namespace Catch { + + struct MessageInfo { + MessageInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ); + + std::string macroName; + SourceLineInfo lineInfo; + ResultWas::OfType type; + std::string message; + unsigned int sequence; + + bool operator == ( MessageInfo const& other ) const { + return sequence == other.sequence; + } + bool operator < ( MessageInfo const& other ) const { + return sequence < other.sequence; + } + private: + static unsigned int globalCount; + }; + + struct MessageBuilder { + MessageBuilder( std::string const& macroName, + SourceLineInfo const& lineInfo, + ResultWas::OfType type ) + : m_info( macroName, lineInfo, type ) + {} + + template<typename T> + MessageBuilder& operator << ( T const& value ) { + m_stream << value; + return *this; + } + + MessageInfo m_info; + std::ostringstream m_stream; + }; + + class ScopedMessage { + public: + ScopedMessage( MessageBuilder const& builder ); + ScopedMessage( ScopedMessage const& other ); + ~ScopedMessage(); + + MessageInfo m_info; + }; + +} // end namespace Catch + +// #included from: catch_interfaces_capture.h +#define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED + +#include <string> + +namespace Catch { + + class TestCase; + class AssertionResult; + struct AssertionInfo; + struct SectionInfo; + struct SectionEndInfo; + struct MessageInfo; + class ScopedMessageBuilder; + struct Counts; + + struct IResultCapture { + + virtual ~IResultCapture(); + + virtual void assertionEnded( AssertionResult const& result ) = 0; + virtual bool sectionStarted( SectionInfo const& sectionInfo, + Counts& assertions ) = 0; + virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0; + virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0; + virtual void pushScopedMessage( MessageInfo const& message ) = 0; + virtual void popScopedMessage( MessageInfo const& message ) = 0; + + virtual std::string getCurrentTestName() const = 0; + virtual const AssertionResult* getLastResult() const = 0; + + virtual void exceptionEarlyReported() = 0; + + virtual void handleFatalErrorCondition( std::string const& message ) = 0; + }; + + IResultCapture& getResultCapture(); +} + +// #included from: catch_debugger.h +#define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED + +// #included from: catch_platform.h +#define TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED + +#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +# define CATCH_PLATFORM_MAC +#elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +# define CATCH_PLATFORM_IPHONE +#elif defined(linux) || defined(__linux) || defined(__linux__) +# define CATCH_PLATFORM_LINUX +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +# define CATCH_PLATFORM_WINDOWS +# if !defined(NOMINMAX) && !defined(CATCH_CONFIG_NO_NOMINMAX) +# define CATCH_DEFINES_NOMINMAX +# endif +# if !defined(WIN32_LEAN_AND_MEAN) && !defined(CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN) +# define CATCH_DEFINES_WIN32_LEAN_AND_MEAN +# endif +#endif + +#include <string> + +namespace Catch{ + + bool isDebuggerActive(); + void writeToDebugConsole( std::string const& text ); +} + +#ifdef CATCH_PLATFORM_MAC + + // The following code snippet based on: + // http://cocoawithlove.com/2008/03/break-into-debugger.html + #if defined(__ppc64__) || defined(__ppc__) + #define CATCH_TRAP() \ + __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \ + : : : "memory","r0","r3","r4" ) + #else + #define CATCH_TRAP() __asm__("int $3\n" : : ) + #endif + +#elif defined(CATCH_PLATFORM_LINUX) + // If we can use inline assembler, do it because this allows us to break + // directly at the location of the failing check instead of breaking inside + // raise() called from it, i.e. one stack frame below. + #if defined(__GNUC__) && (defined(__i386) || defined(__x86_64)) + #define CATCH_TRAP() asm volatile ("int $3") + #else // Fall back to the generic way. + #include <signal.h> + + #define CATCH_TRAP() raise(SIGTRAP) + #endif +#elif defined(_MSC_VER) + #define CATCH_TRAP() __debugbreak() +#elif defined(__MINGW32__) + extern "C" __declspec(dllimport) void __stdcall DebugBreak(); + #define CATCH_TRAP() DebugBreak() +#endif + +#ifdef CATCH_TRAP + #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { CATCH_TRAP(); } +#else + #define CATCH_BREAK_INTO_DEBUGGER() Catch::alwaysTrue(); +#endif + +// #included from: catch_interfaces_runner.h +#define TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED + +namespace Catch { + class TestCase; + + struct IRunner { + virtual ~IRunner(); + virtual bool aborting() const = 0; + }; +} + +#if defined(CATCH_CONFIG_FAST_COMPILE) +/////////////////////////////////////////////////////////////////////////////// +// We can speedup compilation significantly by breaking into debugger lower in +// the callstack, because then we don't have to expand CATCH_BREAK_INTO_DEBUGGER +// macro in each assertion +#define INTERNAL_CATCH_REACT( resultBuilder ) \ + resultBuilder.react(); + +/////////////////////////////////////////////////////////////////////////////// +// Another way to speed-up compilation is to omit local try-catch for REQUIRE* +// macros. +// This can potentially cause false negative, if the test code catches +// the exception before it propagates back up to the runner. +#define INTERNAL_CATCH_TEST_NO_TRY( macroName, resultDisposition, expr ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + __catchResult.setExceptionGuard(); \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + ( __catchResult <= expr ).endExpression(); \ + CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ + __catchResult.unsetExceptionGuard(); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::isTrue( false && static_cast<bool>( !!(expr) ) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look +// The double negation silences MSVC's C4800 warning, the static_cast forces short-circuit evaluation if the type has overloaded &&. + +#define INTERNAL_CHECK_THAT_NO_TRY( macroName, matcher, resultDisposition, arg ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ + __catchResult.setExceptionGuard(); \ + __catchResult.captureMatch( arg, matcher, #matcher ); \ + __catchResult.unsetExceptionGuard(); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +#else +/////////////////////////////////////////////////////////////////////////////// +// In the event of a failure works out if the debugger needs to be invoked +// and/or an exception thrown and takes appropriate action. +// This needs to be done as a macro so the debugger will stop in the user +// source code rather than in Catch library code +#define INTERNAL_CATCH_REACT( resultBuilder ) \ + if( resultBuilder.shouldDebugBreak() ) CATCH_BREAK_INTO_DEBUGGER(); \ + resultBuilder.react(); +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TEST( macroName, resultDisposition, expr ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + ( __catchResult <= expr ).endExpression(); \ + CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( resultDisposition ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::isTrue( false && static_cast<bool>( !!(expr) ) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look + // The double negation silences MSVC's C4800 warning, the static_cast forces short-circuit evaluation if the type has overloaded &&. + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_IF( macroName, resultDisposition, expr ) \ + INTERNAL_CATCH_TEST( macroName, resultDisposition, expr ); \ + if( Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_ELSE( macroName, resultDisposition, expr ) \ + INTERNAL_CATCH_TEST( macroName, resultDisposition, expr ); \ + if( !Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_NO_THROW( macroName, resultDisposition, expr ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + static_cast<void>(expr); \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( resultDisposition ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS( macroName, resultDisposition, matcher, expr ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \ + if( __catchResult.allowThrows() ) \ + try { \ + static_cast<void>(expr); \ + __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ + } \ + catch( ... ) { \ + __catchResult.captureExpectedException( matcher ); \ + } \ + else \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS_AS( macroName, exceptionType, resultDisposition, expr ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr ", " #exceptionType, resultDisposition ); \ + if( __catchResult.allowThrows() ) \ + try { \ + static_cast<void>(expr); \ + __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ + } \ + catch( exceptionType ) { \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( resultDisposition ); \ + } \ + else \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, ... ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ + __catchResult << __VA_ARGS__ + ::Catch::StreamEndStop(); \ + __catchResult.captureResult( messageType ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) +#else + #define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, log ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ + __catchResult << log + ::Catch::StreamEndStop(); \ + __catchResult.captureResult( messageType ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_INFO( macroName, log ) \ + Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CHECK_THAT( macroName, matcher, resultDisposition, arg ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ + try { \ + __catchResult.captureMatch( arg, matcher, #matcher ); \ + } catch( ... ) { \ + __catchResult.useActiveException( resultDisposition | Catch::ResultDisposition::ContinueOnFailure ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +// #included from: internal/catch_section.h +#define TWOBLUECUBES_CATCH_SECTION_H_INCLUDED + +// #included from: catch_section_info.h +#define TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED + +// #included from: catch_totals.hpp +#define TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED + +#include <cstddef> + +namespace Catch { + + struct Counts { + Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {} + + Counts operator - ( Counts const& other ) const { + Counts diff; + diff.passed = passed - other.passed; + diff.failed = failed - other.failed; + diff.failedButOk = failedButOk - other.failedButOk; + return diff; + } + Counts& operator += ( Counts const& other ) { + passed += other.passed; + failed += other.failed; + failedButOk += other.failedButOk; + return *this; + } + + std::size_t total() const { + return passed + failed + failedButOk; + } + bool allPassed() const { + return failed == 0 && failedButOk == 0; + } + bool allOk() const { + return failed == 0; + } + + std::size_t passed; + std::size_t failed; + std::size_t failedButOk; + }; + + struct Totals { + + Totals operator - ( Totals const& other ) const { + Totals diff; + diff.assertions = assertions - other.assertions; + diff.testCases = testCases - other.testCases; + return diff; + } + + Totals delta( Totals const& prevTotals ) const { + Totals diff = *this - prevTotals; + if( diff.assertions.failed > 0 ) + ++diff.testCases.failed; + else if( diff.assertions.failedButOk > 0 ) + ++diff.testCases.failedButOk; + else + ++diff.testCases.passed; + return diff; + } + + Totals& operator += ( Totals const& other ) { + assertions += other.assertions; + testCases += other.testCases; + return *this; + } + + Counts assertions; + Counts testCases; + }; +} + +#include <string> + +namespace Catch { + + struct SectionInfo { + SectionInfo + ( SourceLineInfo const& _lineInfo, + std::string const& _name, + std::string const& _description = std::string() ); + + std::string name; + std::string description; + SourceLineInfo lineInfo; + }; + + struct SectionEndInfo { + SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prevAssertions, double _durationInSeconds ) + : sectionInfo( _sectionInfo ), prevAssertions( _prevAssertions ), durationInSeconds( _durationInSeconds ) + {} + + SectionInfo sectionInfo; + Counts prevAssertions; + double durationInSeconds; + }; + +} // end namespace Catch + +// #included from: catch_timer.h +#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED + +#ifdef _MSC_VER + +namespace Catch { + typedef unsigned long long UInt64; +} +#else +#include <stdint.h> +namespace Catch { + typedef uint64_t UInt64; +} +#endif + +namespace Catch { + class Timer { + public: + Timer() : m_ticks( 0 ) {} + void start(); + unsigned int getElapsedMicroseconds() const; + unsigned int getElapsedMilliseconds() const; + double getElapsedSeconds() const; + + private: + UInt64 m_ticks; + }; + +} // namespace Catch + +#include <string> + +namespace Catch { + + class Section : NonCopyable { + public: + Section( SectionInfo const& info ); + ~Section(); + + // This indicates whether the section should be executed or not + operator bool() const; + + private: + SectionInfo m_info; + + std::string m_name; + Counts m_assertions; + bool m_sectionIncluded; + Timer m_timer; + }; + +} // end namespace Catch + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define INTERNAL_CATCH_SECTION( ... ) \ + if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) +#else + #define INTERNAL_CATCH_SECTION( name, desc ) \ + if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, name, desc ) ) +#endif + +// #included from: internal/catch_generators.hpp +#define TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED + +#include <vector> +#include <string> +#include <stdlib.h> + +namespace Catch { + +template<typename T> +struct IGenerator { + virtual ~IGenerator() {} + virtual T getValue( std::size_t index ) const = 0; + virtual std::size_t size () const = 0; +}; + +template<typename T> +class BetweenGenerator : public IGenerator<T> { +public: + BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){} + + virtual T getValue( std::size_t index ) const { + return m_from+static_cast<int>( index ); + } + + virtual std::size_t size() const { + return static_cast<std::size_t>( 1+m_to-m_from ); + } + +private: + + T m_from; + T m_to; +}; + +template<typename T> +class ValuesGenerator : public IGenerator<T> { +public: + ValuesGenerator(){} + + void add( T value ) { + m_values.push_back( value ); + } + + virtual T getValue( std::size_t index ) const { + return m_values[index]; + } + + virtual std::size_t size() const { + return m_values.size(); + } + +private: + std::vector<T> m_values; +}; + +template<typename T> +class CompositeGenerator { +public: + CompositeGenerator() : m_totalSize( 0 ) {} + + // *** Move semantics, similar to auto_ptr *** + CompositeGenerator( CompositeGenerator& other ) + : m_fileInfo( other.m_fileInfo ), + m_totalSize( 0 ) + { + move( other ); + } + + CompositeGenerator& setFileInfo( const char* fileInfo ) { + m_fileInfo = fileInfo; + return *this; + } + + ~CompositeGenerator() { + deleteAll( m_composed ); + } + + operator T () const { + size_t overallIndex = getCurrentContext().getGeneratorIndex( m_fileInfo, m_totalSize ); + + typename std::vector<const IGenerator<T>*>::const_iterator it = m_composed.begin(); + typename std::vector<const IGenerator<T>*>::const_iterator itEnd = m_composed.end(); + for( size_t index = 0; it != itEnd; ++it ) + { + const IGenerator<T>* generator = *it; + if( overallIndex >= index && overallIndex < index + generator->size() ) + { + return generator->getValue( overallIndex-index ); + } + index += generator->size(); + } + CATCH_INTERNAL_ERROR( "Indexed past end of generated range" ); + return T(); // Suppress spurious "not all control paths return a value" warning in Visual Studio - if you know how to fix this please do so + } + + void add( const IGenerator<T>* generator ) { + m_totalSize += generator->size(); + m_composed.push_back( generator ); + } + + CompositeGenerator& then( CompositeGenerator& other ) { + move( other ); + return *this; + } + + CompositeGenerator& then( T value ) { + ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>(); + valuesGen->add( value ); + add( valuesGen ); + return *this; + } + +private: + + void move( CompositeGenerator& other ) { + m_composed.insert( m_composed.end(), other.m_composed.begin(), other.m_composed.end() ); + m_totalSize += other.m_totalSize; + other.m_composed.clear(); + } + + std::vector<const IGenerator<T>*> m_composed; + std::string m_fileInfo; + size_t m_totalSize; +}; + +namespace Generators +{ + template<typename T> + CompositeGenerator<T> between( T from, T to ) { + CompositeGenerator<T> generators; + generators.add( new BetweenGenerator<T>( from, to ) ); + return generators; + } + + template<typename T> + CompositeGenerator<T> values( T val1, T val2 ) { + CompositeGenerator<T> generators; + ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + generators.add( valuesGen ); + return generators; + } + + template<typename T> + CompositeGenerator<T> values( T val1, T val2, T val3 ){ + CompositeGenerator<T> generators; + ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + valuesGen->add( val3 ); + generators.add( valuesGen ); + return generators; + } + + template<typename T> + CompositeGenerator<T> values( T val1, T val2, T val3, T val4 ) { + CompositeGenerator<T> generators; + ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + valuesGen->add( val3 ); + valuesGen->add( val4 ); + generators.add( valuesGen ); + return generators; + } + +} // end namespace Generators + +using namespace Generators; + +} // end namespace Catch + +#define INTERNAL_CATCH_LINESTR2( line ) #line +#define INTERNAL_CATCH_LINESTR( line ) INTERNAL_CATCH_LINESTR2( line ) + +#define INTERNAL_CATCH_GENERATE( expr ) expr.setFileInfo( __FILE__ "(" INTERNAL_CATCH_LINESTR( __LINE__ ) ")" ) + +// #included from: internal/catch_interfaces_exception.h +#define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED + +#include <string> +#include <vector> + +// #included from: catch_interfaces_registry_hub.h +#define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED + +#include <string> + +namespace Catch { + + class TestCase; + struct ITestCaseRegistry; + struct IExceptionTranslatorRegistry; + struct IExceptionTranslator; + struct IReporterRegistry; + struct IReporterFactory; + struct ITagAliasRegistry; + + struct IRegistryHub { + virtual ~IRegistryHub(); + + virtual IReporterRegistry const& getReporterRegistry() const = 0; + virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; + virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; + + virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0; + }; + + struct IMutableRegistryHub { + virtual ~IMutableRegistryHub(); + virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) = 0; + virtual void registerListener( Ptr<IReporterFactory> const& factory ) = 0; + virtual void registerTest( TestCase const& testInfo ) = 0; + virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; + virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; + }; + + IRegistryHub& getRegistryHub(); + IMutableRegistryHub& getMutableRegistryHub(); + void cleanUp(); + std::string translateActiveException(); + +} + +namespace Catch { + + typedef std::string(*exceptionTranslateFunction)(); + + struct IExceptionTranslator; + typedef std::vector<const IExceptionTranslator*> ExceptionTranslators; + + struct IExceptionTranslator { + virtual ~IExceptionTranslator(); + virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0; + }; + + struct IExceptionTranslatorRegistry { + virtual ~IExceptionTranslatorRegistry(); + + virtual std::string translateActiveException() const = 0; + }; + + class ExceptionTranslatorRegistrar { + template<typename T> + class ExceptionTranslator : public IExceptionTranslator { + public: + + ExceptionTranslator( std::string(*translateFunction)( T& ) ) + : m_translateFunction( translateFunction ) + {} + + virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const CATCH_OVERRIDE { + try { + if( it == itEnd ) + throw; + else + return (*it)->translate( it+1, itEnd ); + } + catch( T& ex ) { + return m_translateFunction( ex ); + } + } + + protected: + std::string(*m_translateFunction)( T& ); + }; + + public: + template<typename T> + ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { + getMutableRegistryHub().registerTranslator + ( new ExceptionTranslator<T>( translateFunction ) ); + } + }; +} + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \ + static std::string translatorName( signature ); \ + namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); }\ + static std::string translatorName( signature ) + +#define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature ) + +// #included from: internal/catch_approx.hpp +#define TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED + +#include <cmath> +#include <limits> + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) +#include <type_traits> +#endif + +namespace Catch { +namespace Detail { + + class Approx { + public: + explicit Approx ( double value ) + : m_epsilon( std::numeric_limits<float>::epsilon()*100 ), + m_margin( 0.0 ), + m_scale( 1.0 ), + m_value( value ) + {} + + Approx( Approx const& other ) + : m_epsilon( other.m_epsilon ), + m_margin( other.m_margin ), + m_scale( other.m_scale ), + m_value( other.m_value ) + {} + + static Approx custom() { + return Approx( 0 ); + } + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + Approx operator()( T value ) { + Approx approx( static_cast<double>(value) ); + approx.epsilon( m_epsilon ); + approx.margin( m_margin ); + approx.scale( m_scale ); + return approx; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + explicit Approx( T value ): Approx(static_cast<double>(value)) + {} + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator == ( const T& lhs, Approx const& rhs ) { + // Thanks to Richard Harris for his help refining this formula + auto lhs_v = double(lhs); + bool relativeOK = std::fabs(lhs_v - rhs.m_value) < rhs.m_epsilon * (rhs.m_scale + (std::max)(std::fabs(lhs_v), std::fabs(rhs.m_value))); + if (relativeOK) { + return true; + } + return std::fabs(lhs_v - rhs.m_value) < rhs.m_margin; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator == ( Approx const& lhs, const T& rhs ) { + return operator==( rhs, lhs ); + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator != ( T lhs, Approx const& rhs ) { + return !operator==( lhs, rhs ); + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator != ( Approx const& lhs, T rhs ) { + return !operator==( rhs, lhs ); + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator <= ( T lhs, Approx const& rhs ) { + return double(lhs) < rhs.m_value || lhs == rhs; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator <= ( Approx const& lhs, T rhs ) { + return lhs.m_value < double(rhs) || lhs == rhs; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator >= ( T lhs, Approx const& rhs ) { + return double(lhs) > rhs.m_value || lhs == rhs; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + friend bool operator >= ( Approx const& lhs, T rhs ) { + return lhs.m_value > double(rhs) || lhs == rhs; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + Approx& epsilon( T newEpsilon ) { + m_epsilon = double(newEpsilon); + return *this; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + Approx& margin( T newMargin ) { + m_margin = double(newMargin); + return *this; + } + + template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type> + Approx& scale( T newScale ) { + m_scale = double(newScale); + return *this; + } + +#else + + Approx operator()( double value ) { + Approx approx( value ); + approx.epsilon( m_epsilon ); + approx.margin( m_margin ); + approx.scale( m_scale ); + return approx; + } + + friend bool operator == ( double lhs, Approx const& rhs ) { + // Thanks to Richard Harris for his help refining this formula + bool relativeOK = std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) ); + if (relativeOK) { + return true; + } + return std::fabs(lhs - rhs.m_value) < rhs.m_margin; + } + + friend bool operator == ( Approx const& lhs, double rhs ) { + return operator==( rhs, lhs ); + } + + friend bool operator != ( double lhs, Approx const& rhs ) { + return !operator==( lhs, rhs ); + } + + friend bool operator != ( Approx const& lhs, double rhs ) { + return !operator==( rhs, lhs ); + } + + friend bool operator <= ( double lhs, Approx const& rhs ) { + return lhs < rhs.m_value || lhs == rhs; + } + + friend bool operator <= ( Approx const& lhs, double rhs ) { + return lhs.m_value < rhs || lhs == rhs; + } + + friend bool operator >= ( double lhs, Approx const& rhs ) { + return lhs > rhs.m_value || lhs == rhs; + } + + friend bool operator >= ( Approx const& lhs, double rhs ) { + return lhs.m_value > rhs || lhs == rhs; + } + + Approx& epsilon( double newEpsilon ) { + m_epsilon = newEpsilon; + return *this; + } + + Approx& margin( double newMargin ) { + m_margin = newMargin; + return *this; + } + + Approx& scale( double newScale ) { + m_scale = newScale; + return *this; + } +#endif + + std::string toString() const { + std::ostringstream oss; + oss << "Approx( " << Catch::toString( m_value ) << " )"; + return oss.str(); + } + + private: + double m_epsilon; + double m_margin; + double m_scale; + double m_value; + }; +} + +template<> +inline std::string toString<Detail::Approx>( Detail::Approx const& value ) { + return value.toString(); +} + +} // end namespace Catch + +// #included from: internal/catch_matchers_string.h +#define TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED + +namespace Catch { +namespace Matchers { + + namespace StdString { + + struct CasedString + { + CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ); + std::string adjustString( std::string const& str ) const; + std::string caseSensitivitySuffix() const; + + CaseSensitive::Choice m_caseSensitivity; + std::string m_str; + }; + + struct StringMatcherBase : MatcherBase<std::string> { + StringMatcherBase( std::string const& operation, CasedString const& comparator ); + virtual std::string describe() const CATCH_OVERRIDE; + + CasedString m_comparator; + std::string m_operation; + }; + + struct EqualsMatcher : StringMatcherBase { + EqualsMatcher( CasedString const& comparator ); + virtual bool match( std::string const& source ) const CATCH_OVERRIDE; + }; + struct ContainsMatcher : StringMatcherBase { + ContainsMatcher( CasedString const& comparator ); + virtual bool match( std::string const& source ) const CATCH_OVERRIDE; + }; + struct StartsWithMatcher : StringMatcherBase { + StartsWithMatcher( CasedString const& comparator ); + virtual bool match( std::string const& source ) const CATCH_OVERRIDE; + }; + struct EndsWithMatcher : StringMatcherBase { + EndsWithMatcher( CasedString const& comparator ); + virtual bool match( std::string const& source ) const CATCH_OVERRIDE; + }; + + } // namespace StdString + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + + StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); + StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); + StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); + StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); + +} // namespace Matchers +} // namespace Catch + +// #included from: internal/catch_matchers_vector.h +#define TWOBLUECUBES_CATCH_MATCHERS_VECTOR_H_INCLUDED + +namespace Catch { +namespace Matchers { + + namespace Vector { + + template<typename T> + struct ContainsElementMatcher : MatcherBase<std::vector<T>, T> { + + ContainsElementMatcher(T const &comparator) : m_comparator( comparator) {} + + bool match(std::vector<T> const &v) const CATCH_OVERRIDE { + return std::find(v.begin(), v.end(), m_comparator) != v.end(); + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "Contains: " + Catch::toString( m_comparator ); + } + + T const& m_comparator; + }; + + template<typename T> + struct ContainsMatcher : MatcherBase<std::vector<T>, std::vector<T> > { + + ContainsMatcher(std::vector<T> const &comparator) : m_comparator( comparator ) {} + + bool match(std::vector<T> const &v) const CATCH_OVERRIDE { + // !TBD: see note in EqualsMatcher + if (m_comparator.size() > v.size()) + return false; + for (size_t i = 0; i < m_comparator.size(); ++i) + if (std::find(v.begin(), v.end(), m_comparator[i]) == v.end()) + return false; + return true; + } + virtual std::string describe() const CATCH_OVERRIDE { + return "Contains: " + Catch::toString( m_comparator ); + } + + std::vector<T> const& m_comparator; + }; + + template<typename T> + struct EqualsMatcher : MatcherBase<std::vector<T>, std::vector<T> > { + + EqualsMatcher(std::vector<T> const &comparator) : m_comparator( comparator ) {} + + bool match(std::vector<T> const &v) const CATCH_OVERRIDE { + // !TBD: This currently works if all elements can be compared using != + // - a more general approach would be via a compare template that defaults + // to using !=. but could be specialised for, e.g. std::vector<T> etc + // - then just call that directly + if (m_comparator.size() != v.size()) + return false; + for (size_t i = 0; i < v.size(); ++i) + if (m_comparator[i] != v[i]) + return false; + return true; + } + virtual std::string describe() const CATCH_OVERRIDE { + return "Equals: " + Catch::toString( m_comparator ); + } + std::vector<T> const& m_comparator; + }; + + } // namespace Vector + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + + template<typename T> + Vector::ContainsMatcher<T> Contains( std::vector<T> const& comparator ) { + return Vector::ContainsMatcher<T>( comparator ); + } + + template<typename T> + Vector::ContainsElementMatcher<T> VectorContains( T const& comparator ) { + return Vector::ContainsElementMatcher<T>( comparator ); + } + + template<typename T> + Vector::EqualsMatcher<T> Equals( std::vector<T> const& comparator ) { + return Vector::EqualsMatcher<T>( comparator ); + } + +} // namespace Matchers +} // namespace Catch + +// #included from: internal/catch_interfaces_tag_alias_registry.h +#define TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED + +// #included from: catch_tag_alias.h +#define TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED + +#include <string> + +namespace Catch { + + struct TagAlias { + TagAlias( std::string const& _tag, SourceLineInfo _lineInfo ) : tag( _tag ), lineInfo( _lineInfo ) {} + + std::string tag; + SourceLineInfo lineInfo; + }; + + struct RegistrarForTagAliases { + RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + }; + +} // end namespace Catch + +#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } +// #included from: catch_option.hpp +#define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED + +namespace Catch { + + // An optional type + template<typename T> + class Option { + public: + Option() : nullableValue( CATCH_NULL ) {} + Option( T const& _value ) + : nullableValue( new( storage ) T( _value ) ) + {} + Option( Option const& _other ) + : nullableValue( _other ? new( storage ) T( *_other ) : CATCH_NULL ) + {} + + ~Option() { + reset(); + } + + Option& operator= ( Option const& _other ) { + if( &_other != this ) { + reset(); + if( _other ) + nullableValue = new( storage ) T( *_other ); + } + return *this; + } + Option& operator = ( T const& _value ) { + reset(); + nullableValue = new( storage ) T( _value ); + return *this; + } + + void reset() { + if( nullableValue ) + nullableValue->~T(); + nullableValue = CATCH_NULL; + } + + T& operator*() { return *nullableValue; } + T const& operator*() const { return *nullableValue; } + T* operator->() { return nullableValue; } + const T* operator->() const { return nullableValue; } + + T valueOr( T const& defaultValue ) const { + return nullableValue ? *nullableValue : defaultValue; + } + + bool some() const { return nullableValue != CATCH_NULL; } + bool none() const { return nullableValue == CATCH_NULL; } + + bool operator !() const { return nullableValue == CATCH_NULL; } + operator SafeBool::type() const { + return SafeBool::makeSafe( some() ); + } + + private: + T *nullableValue; + union { + char storage[sizeof(T)]; + + // These are here to force alignment for the storage + long double dummy1; + void (*dummy2)(); + long double dummy3; +#ifdef CATCH_CONFIG_CPP11_LONG_LONG + long long dummy4; +#endif + }; + }; + +} // end namespace Catch + +namespace Catch { + + struct ITagAliasRegistry { + virtual ~ITagAliasRegistry(); + virtual Option<TagAlias> find( std::string const& alias ) const = 0; + virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const = 0; + + static ITagAliasRegistry const& get(); + }; + +} // end namespace Catch + +// These files are included here so the single_include script doesn't put them +// in the conditionally compiled sections +// #included from: internal/catch_test_case_info.h +#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED + +#include <string> +#include <set> + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +namespace Catch { + + struct ITestCase; + + struct TestCaseInfo { + enum SpecialProperties{ + None = 0, + IsHidden = 1 << 1, + ShouldFail = 1 << 2, + MayFail = 1 << 3, + Throws = 1 << 4, + NonPortable = 1 << 5 + }; + + TestCaseInfo( std::string const& _name, + std::string const& _className, + std::string const& _description, + std::set<std::string> const& _tags, + SourceLineInfo const& _lineInfo ); + + TestCaseInfo( TestCaseInfo const& other ); + + friend void setTags( TestCaseInfo& testCaseInfo, std::set<std::string> const& tags ); + + bool isHidden() const; + bool throws() const; + bool okToFail() const; + bool expectedToFail() const; + + std::string name; + std::string className; + std::string description; + std::set<std::string> tags; + std::set<std::string> lcaseTags; + std::string tagsAsString; + SourceLineInfo lineInfo; + SpecialProperties properties; + }; + + class TestCase : public TestCaseInfo { + public: + + TestCase( ITestCase* testCase, TestCaseInfo const& info ); + TestCase( TestCase const& other ); + + TestCase withName( std::string const& _newName ) const; + + void invoke() const; + + TestCaseInfo const& getTestCaseInfo() const; + + void swap( TestCase& other ); + bool operator == ( TestCase const& other ) const; + bool operator < ( TestCase const& other ) const; + TestCase& operator = ( TestCase const& other ); + + private: + Ptr<ITestCase> test; + }; + + TestCase makeTestCase( ITestCase* testCase, + std::string const& className, + std::string const& name, + std::string const& description, + SourceLineInfo const& lineInfo ); +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + + +#ifdef __OBJC__ +// #included from: internal/catch_objc.hpp +#define TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED + +#import <objc/runtime.h> + +#include <string> + +// NB. Any general catch headers included here must be included +// in catch.hpp first to make sure they are included by the single +// header for non obj-usage + +/////////////////////////////////////////////////////////////////////////////// +// This protocol is really only here for (self) documenting purposes, since +// all its methods are optional. +@protocol OcFixture + +@optional + +-(void) setUp; +-(void) tearDown; + +@end + +namespace Catch { + + class OcMethod : public SharedImpl<ITestCase> { + + public: + OcMethod( Class cls, SEL sel ) : m_cls( cls ), m_sel( sel ) {} + + virtual void invoke() const { + id obj = [[m_cls alloc] init]; + + performOptionalSelector( obj, @selector(setUp) ); + performOptionalSelector( obj, m_sel ); + performOptionalSelector( obj, @selector(tearDown) ); + + arcSafeRelease( obj ); + } + private: + virtual ~OcMethod() {} + + Class m_cls; + SEL m_sel; + }; + + namespace Detail{ + + inline std::string getAnnotation( Class cls, + std::string const& annotationName, + std::string const& testCaseName ) { + NSString* selStr = [[NSString alloc] initWithFormat:@"Catch_%s_%s", annotationName.c_str(), testCaseName.c_str()]; + SEL sel = NSSelectorFromString( selStr ); + arcSafeRelease( selStr ); + id value = performOptionalSelector( cls, sel ); + if( value ) + return [(NSString*)value UTF8String]; + return ""; + } + } + + inline size_t registerTestMethods() { + size_t noTestMethods = 0; + int noClasses = objc_getClassList( CATCH_NULL, 0 ); + + Class* classes = (CATCH_UNSAFE_UNRETAINED Class *)malloc( sizeof(Class) * noClasses); + objc_getClassList( classes, noClasses ); + + for( int c = 0; c < noClasses; c++ ) { + Class cls = classes[c]; + { + u_int count; + Method* methods = class_copyMethodList( cls, &count ); + for( u_int m = 0; m < count ; m++ ) { + SEL selector = method_getName(methods[m]); + std::string methodName = sel_getName(selector); + if( startsWith( methodName, "Catch_TestCase_" ) ) { + std::string testCaseName = methodName.substr( 15 ); + std::string name = Detail::getAnnotation( cls, "Name", testCaseName ); + std::string desc = Detail::getAnnotation( cls, "Description", testCaseName ); + const char* className = class_getName( cls ); + + getMutableRegistryHub().registerTest( makeTestCase( new OcMethod( cls, selector ), className, name.c_str(), desc.c_str(), SourceLineInfo() ) ); + noTestMethods++; + } + } + free(methods); + } + } + return noTestMethods; + } + + namespace Matchers { + namespace Impl { + namespace NSStringMatchers { + + struct StringHolder : MatcherBase<NSString*>{ + StringHolder( NSString* substr ) : m_substr( [substr copy] ){} + StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} + StringHolder() { + arcSafeRelease( m_substr ); + } + + virtual bool match( NSString* arg ) const CATCH_OVERRIDE { + return false; + } + + NSString* m_substr; + }; + + struct Equals : StringHolder { + Equals( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( NSString* str ) const CATCH_OVERRIDE { + return (str != nil || m_substr == nil ) && + [str isEqualToString:m_substr]; + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "equals string: " + Catch::toString( m_substr ); + } + }; + + struct Contains : StringHolder { + Contains( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( NSString* str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location != NSNotFound; + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "contains string: " + Catch::toString( m_substr ); + } + }; + + struct StartsWith : StringHolder { + StartsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( NSString* str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == 0; + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "starts with: " + Catch::toString( m_substr ); + } + }; + struct EndsWith : StringHolder { + EndsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( NSString* str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == [str length] - [m_substr length]; + } + + virtual std::string describe() const CATCH_OVERRIDE { + return "ends with: " + Catch::toString( m_substr ); + } + }; + + } // namespace NSStringMatchers + } // namespace Impl + + inline Impl::NSStringMatchers::Equals + Equals( NSString* substr ){ return Impl::NSStringMatchers::Equals( substr ); } + + inline Impl::NSStringMatchers::Contains + Contains( NSString* substr ){ return Impl::NSStringMatchers::Contains( substr ); } + + inline Impl::NSStringMatchers::StartsWith + StartsWith( NSString* substr ){ return Impl::NSStringMatchers::StartsWith( substr ); } + + inline Impl::NSStringMatchers::EndsWith + EndsWith( NSString* substr ){ return Impl::NSStringMatchers::EndsWith( substr ); } + + } // namespace Matchers + + using namespace Matchers; + +} // namespace Catch + +/////////////////////////////////////////////////////////////////////////////// +#define OC_TEST_CASE( name, desc )\ ++(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Name_test ) \ +{\ +return @ name; \ +}\ ++(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Description_test ) \ +{ \ +return @ desc; \ +} \ +-(void) INTERNAL_CATCH_UNIQUE_NAME( Catch_TestCase_test ) + +#endif + +#ifdef CATCH_IMPL + +// !TBD: Move the leak detector code into a separate header +#ifdef CATCH_CONFIG_WINDOWS_CRTDBG +#include <crtdbg.h> +class LeakDetector { +public: + LeakDetector() { + int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); + flag |= _CRTDBG_LEAK_CHECK_DF; + flag |= _CRTDBG_ALLOC_MEM_DF; + _CrtSetDbgFlag(flag); + _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); + _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); + // Change this to leaking allocation's number to break there + _CrtSetBreakAlloc(-1); + } +}; +#else +class LeakDetector {}; +#endif + +LeakDetector leakDetector; + +// #included from: internal/catch_impl.hpp +#define TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED + +// Collect all the implementation files together here +// These are the equivalent of what would usually be cpp files + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wweak-vtables" +#endif + +// #included from: ../catch_session.hpp +#define TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED + +// #included from: internal/catch_commandline.hpp +#define TWOBLUECUBES_CATCH_COMMANDLINE_HPP_INCLUDED + +// #included from: catch_config.hpp +#define TWOBLUECUBES_CATCH_CONFIG_HPP_INCLUDED + +// #included from: catch_test_spec_parser.hpp +#define TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +// #included from: catch_test_spec.hpp +#define TWOBLUECUBES_CATCH_TEST_SPEC_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +// #included from: catch_wildcard_pattern.hpp +#define TWOBLUECUBES_CATCH_WILDCARD_PATTERN_HPP_INCLUDED + +#include <stdexcept> + +namespace Catch +{ + class WildcardPattern { + enum WildcardPosition { + NoWildcard = 0, + WildcardAtStart = 1, + WildcardAtEnd = 2, + WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd + }; + + public: + + WildcardPattern( std::string const& pattern, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_wildcard( NoWildcard ), + m_pattern( adjustCase( pattern ) ) + { + if( startsWith( m_pattern, '*' ) ) { + m_pattern = m_pattern.substr( 1 ); + m_wildcard = WildcardAtStart; + } + if( endsWith( m_pattern, '*' ) ) { + m_pattern = m_pattern.substr( 0, m_pattern.size()-1 ); + m_wildcard = static_cast<WildcardPosition>( m_wildcard | WildcardAtEnd ); + } + } + virtual ~WildcardPattern(); + virtual bool matches( std::string const& str ) const { + switch( m_wildcard ) { + case NoWildcard: + return m_pattern == adjustCase( str ); + case WildcardAtStart: + return endsWith( adjustCase( str ), m_pattern ); + case WildcardAtEnd: + return startsWith( adjustCase( str ), m_pattern ); + case WildcardAtBothEnds: + return contains( adjustCase( str ), m_pattern ); + } + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" +#endif + throw std::logic_error( "Unknown enum" ); +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + } + private: + std::string adjustCase( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str; + } + CaseSensitive::Choice m_caseSensitivity; + WildcardPosition m_wildcard; + std::string m_pattern; + }; +} + +#include <string> +#include <vector> + +namespace Catch { + + class TestSpec { + struct Pattern : SharedImpl<> { + virtual ~Pattern(); + virtual bool matches( TestCaseInfo const& testCase ) const = 0; + }; + class NamePattern : public Pattern { + public: + NamePattern( std::string const& name ) + : m_wildcardPattern( toLower( name ), CaseSensitive::No ) + {} + virtual ~NamePattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { + return m_wildcardPattern.matches( toLower( testCase.name ) ); + } + private: + WildcardPattern m_wildcardPattern; + }; + + class TagPattern : public Pattern { + public: + TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {} + virtual ~TagPattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { + return testCase.lcaseTags.find( m_tag ) != testCase.lcaseTags.end(); + } + private: + std::string m_tag; + }; + + class ExcludedPattern : public Pattern { + public: + ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {} + virtual ~ExcludedPattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); } + private: + Ptr<Pattern> m_underlyingPattern; + }; + + struct Filter { + std::vector<Ptr<Pattern> > m_patterns; + + bool matches( TestCaseInfo const& testCase ) const { + // All patterns in a filter must match for the filter to be a match + for( std::vector<Ptr<Pattern> >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it ) { + if( !(*it)->matches( testCase ) ) + return false; + } + return true; + } + }; + + public: + bool hasFilters() const { + return !m_filters.empty(); + } + bool matches( TestCaseInfo const& testCase ) const { + // A TestSpec matches if any filter matches + for( std::vector<Filter>::const_iterator it = m_filters.begin(), itEnd = m_filters.end(); it != itEnd; ++it ) + if( it->matches( testCase ) ) + return true; + return false; + } + + private: + std::vector<Filter> m_filters; + + friend class TestSpecParser; + }; +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +namespace Catch { + + class TestSpecParser { + enum Mode{ None, Name, QuotedName, Tag, EscapedName }; + Mode m_mode; + bool m_exclusion; + std::size_t m_start, m_pos; + std::string m_arg; + std::vector<std::size_t> m_escapeChars; + TestSpec::Filter m_currentFilter; + TestSpec m_testSpec; + ITagAliasRegistry const* m_tagAliases; + + public: + TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases( &tagAliases ) {} + + TestSpecParser& parse( std::string const& arg ) { + m_mode = None; + m_exclusion = false; + m_start = std::string::npos; + m_arg = m_tagAliases->expandAliases( arg ); + m_escapeChars.clear(); + for( m_pos = 0; m_pos < m_arg.size(); ++m_pos ) + visitChar( m_arg[m_pos] ); + if( m_mode == Name ) + addPattern<TestSpec::NamePattern>(); + return *this; + } + TestSpec testSpec() { + addFilter(); + return m_testSpec; + } + private: + void visitChar( char c ) { + if( m_mode == None ) { + switch( c ) { + case ' ': return; + case '~': m_exclusion = true; return; + case '[': return startNewMode( Tag, ++m_pos ); + case '"': return startNewMode( QuotedName, ++m_pos ); + case '\\': return escape(); + default: startNewMode( Name, m_pos ); break; + } + } + if( m_mode == Name ) { + if( c == ',' ) { + addPattern<TestSpec::NamePattern>(); + addFilter(); + } + else if( c == '[' ) { + if( subString() == "exclude:" ) + m_exclusion = true; + else + addPattern<TestSpec::NamePattern>(); + startNewMode( Tag, ++m_pos ); + } + else if( c == '\\' ) + escape(); + } + else if( m_mode == EscapedName ) + m_mode = Name; + else if( m_mode == QuotedName && c == '"' ) + addPattern<TestSpec::NamePattern>(); + else if( m_mode == Tag && c == ']' ) + addPattern<TestSpec::TagPattern>(); + } + void startNewMode( Mode mode, std::size_t start ) { + m_mode = mode; + m_start = start; + } + void escape() { + if( m_mode == None ) + m_start = m_pos; + m_mode = EscapedName; + m_escapeChars.push_back( m_pos ); + } + std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); } + template<typename T> + void addPattern() { + std::string token = subString(); + for( size_t i = 0; i < m_escapeChars.size(); ++i ) + token = token.substr( 0, m_escapeChars[i]-m_start-i ) + token.substr( m_escapeChars[i]-m_start-i+1 ); + m_escapeChars.clear(); + if( startsWith( token, "exclude:" ) ) { + m_exclusion = true; + token = token.substr( 8 ); + } + if( !token.empty() ) { + Ptr<TestSpec::Pattern> pattern = new T( token ); + if( m_exclusion ) + pattern = new TestSpec::ExcludedPattern( pattern ); + m_currentFilter.m_patterns.push_back( pattern ); + } + m_exclusion = false; + m_mode = None; + } + void addFilter() { + if( !m_currentFilter.m_patterns.empty() ) { + m_testSpec.m_filters.push_back( m_currentFilter ); + m_currentFilter = TestSpec::Filter(); + } + } + }; + inline TestSpec parseTestSpec( std::string const& arg ) { + return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec(); + } + +} // namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +// #included from: catch_interfaces_config.h +#define TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED + +#include <iosfwd> +#include <string> +#include <vector> + +namespace Catch { + + struct Verbosity { enum Level { + NoOutput = 0, + Quiet, + Normal + }; }; + + struct WarnAbout { enum What { + Nothing = 0x00, + NoAssertions = 0x01 + }; }; + + struct ShowDurations { enum OrNot { + DefaultForReporter, + Always, + Never + }; }; + struct RunTests { enum InWhatOrder { + InDeclarationOrder, + InLexicographicalOrder, + InRandomOrder + }; }; + struct UseColour { enum YesOrNo { + Auto, + Yes, + No + }; }; + + class TestSpec; + + struct IConfig : IShared { + + virtual ~IConfig(); + + virtual bool allowThrows() const = 0; + virtual std::ostream& stream() const = 0; + virtual std::string name() const = 0; + virtual bool includeSuccessfulResults() const = 0; + virtual bool shouldDebugBreak() const = 0; + virtual bool warnAboutMissingAssertions() const = 0; + virtual int abortAfter() const = 0; + virtual bool showInvisibles() const = 0; + virtual ShowDurations::OrNot showDurations() const = 0; + virtual TestSpec const& testSpec() const = 0; + virtual RunTests::InWhatOrder runOrder() const = 0; + virtual unsigned int rngSeed() const = 0; + virtual UseColour::YesOrNo useColour() const = 0; + virtual std::vector<std::string> const& getSectionsToRun() const = 0; + + }; +} + +// #included from: catch_stream.h +#define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED + +// #included from: catch_streambuf.h +#define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED + +#include <streambuf> + +namespace Catch { + + class StreamBufBase : public std::streambuf { + public: + virtual ~StreamBufBase() CATCH_NOEXCEPT; + }; +} + +#include <streambuf> +#include <ostream> +#include <fstream> +#include <memory> + +namespace Catch { + + std::ostream& cout(); + std::ostream& cerr(); + + struct IStream { + virtual ~IStream() CATCH_NOEXCEPT; + virtual std::ostream& stream() const = 0; + }; + + class FileStream : public IStream { + mutable std::ofstream m_ofs; + public: + FileStream( std::string const& filename ); + virtual ~FileStream() CATCH_NOEXCEPT; + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + class CoutStream : public IStream { + mutable std::ostream m_os; + public: + CoutStream(); + virtual ~CoutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + class DebugOutStream : public IStream { + CATCH_AUTO_PTR( StreamBufBase ) m_streamBuf; + mutable std::ostream m_os; + public: + DebugOutStream(); + virtual ~DebugOutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; +} + +#include <memory> +#include <vector> +#include <string> +#include <stdexcept> + +#ifndef CATCH_CONFIG_CONSOLE_WIDTH +#define CATCH_CONFIG_CONSOLE_WIDTH 80 +#endif + +namespace Catch { + + struct ConfigData { + + ConfigData() + : listTests( false ), + listTags( false ), + listReporters( false ), + listTestNamesOnly( false ), + listExtraInfo( false ), + showSuccessfulTests( false ), + shouldDebugBreak( false ), + noThrow( false ), + showHelp( false ), + showInvisibles( false ), + filenamesAsTags( false ), + abortAfter( -1 ), + rngSeed( 0 ), + verbosity( Verbosity::Normal ), + warnings( WarnAbout::Nothing ), + showDurations( ShowDurations::DefaultForReporter ), + runOrder( RunTests::InDeclarationOrder ), + useColour( UseColour::Auto ) + {} + + bool listTests; + bool listTags; + bool listReporters; + bool listTestNamesOnly; + bool listExtraInfo; + + bool showSuccessfulTests; + bool shouldDebugBreak; + bool noThrow; + bool showHelp; + bool showInvisibles; + bool filenamesAsTags; + + int abortAfter; + unsigned int rngSeed; + + Verbosity::Level verbosity; + WarnAbout::What warnings; + ShowDurations::OrNot showDurations; + RunTests::InWhatOrder runOrder; + UseColour::YesOrNo useColour; + + std::string outputFilename; + std::string name; + std::string processName; + + std::vector<std::string> reporterNames; + std::vector<std::string> testsOrTags; + std::vector<std::string> sectionsToRun; + }; + + class Config : public SharedImpl<IConfig> { + private: + Config( Config const& other ); + Config& operator = ( Config const& other ); + virtual void dummy(); + public: + + Config() + {} + + Config( ConfigData const& data ) + : m_data( data ), + m_stream( openStream() ) + { + if( !data.testsOrTags.empty() ) { + TestSpecParser parser( ITagAliasRegistry::get() ); + for( std::size_t i = 0; i < data.testsOrTags.size(); ++i ) + parser.parse( data.testsOrTags[i] ); + m_testSpec = parser.testSpec(); + } + } + + virtual ~Config() {} + + std::string const& getFilename() const { + return m_data.outputFilename ; + } + + bool listTests() const { return m_data.listTests; } + bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } + bool listTags() const { return m_data.listTags; } + bool listReporters() const { return m_data.listReporters; } + bool listExtraInfo() const { return m_data.listExtraInfo; } + + std::string getProcessName() const { return m_data.processName; } + + std::vector<std::string> const& getReporterNames() const { return m_data.reporterNames; } + std::vector<std::string> const& getSectionsToRun() const CATCH_OVERRIDE { return m_data.sectionsToRun; } + + virtual TestSpec const& testSpec() const CATCH_OVERRIDE { return m_testSpec; } + + bool showHelp() const { return m_data.showHelp; } + + // IConfig interface + virtual bool allowThrows() const CATCH_OVERRIDE { return !m_data.noThrow; } + virtual std::ostream& stream() const CATCH_OVERRIDE { return m_stream->stream(); } + virtual std::string name() const CATCH_OVERRIDE { return m_data.name.empty() ? m_data.processName : m_data.name; } + virtual bool includeSuccessfulResults() const CATCH_OVERRIDE { return m_data.showSuccessfulTests; } + virtual bool warnAboutMissingAssertions() const CATCH_OVERRIDE { return m_data.warnings & WarnAbout::NoAssertions; } + virtual ShowDurations::OrNot showDurations() const CATCH_OVERRIDE { return m_data.showDurations; } + virtual RunTests::InWhatOrder runOrder() const CATCH_OVERRIDE { return m_data.runOrder; } + virtual unsigned int rngSeed() const CATCH_OVERRIDE { return m_data.rngSeed; } + virtual UseColour::YesOrNo useColour() const CATCH_OVERRIDE { return m_data.useColour; } + virtual bool shouldDebugBreak() const CATCH_OVERRIDE { return m_data.shouldDebugBreak; } + virtual int abortAfter() const CATCH_OVERRIDE { return m_data.abortAfter; } + virtual bool showInvisibles() const CATCH_OVERRIDE { return m_data.showInvisibles; } + + private: + + IStream const* openStream() { + if( m_data.outputFilename.empty() ) + return new CoutStream(); + else if( m_data.outputFilename[0] == '%' ) { + if( m_data.outputFilename == "%debug" ) + return new DebugOutStream(); + else + throw std::domain_error( "Unrecognised stream: " + m_data.outputFilename ); + } + else + return new FileStream( m_data.outputFilename ); + } + ConfigData m_data; + + CATCH_AUTO_PTR( IStream const ) m_stream; + TestSpec m_testSpec; + }; + +} // end namespace Catch + +// #included from: catch_clara.h +#define TWOBLUECUBES_CATCH_CLARA_H_INCLUDED + +// Use Catch's value for console width (store Clara's off to the side, if present) +#ifdef CLARA_CONFIG_CONSOLE_WIDTH +#define CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH CLARA_CONFIG_CONSOLE_WIDTH +#undef CLARA_CONFIG_CONSOLE_WIDTH +#endif +#define CLARA_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH + +// Declare Clara inside the Catch namespace +#define STITCH_CLARA_OPEN_NAMESPACE namespace Catch { +// #included from: ../external/clara.h + +// Version 0.0.2.4 + +// Only use header guard if we are not using an outer namespace +#if !defined(TWOBLUECUBES_CLARA_H_INCLUDED) || defined(STITCH_CLARA_OPEN_NAMESPACE) + +#ifndef STITCH_CLARA_OPEN_NAMESPACE +#define TWOBLUECUBES_CLARA_H_INCLUDED +#define STITCH_CLARA_OPEN_NAMESPACE +#define STITCH_CLARA_CLOSE_NAMESPACE +#else +#define STITCH_CLARA_CLOSE_NAMESPACE } +#endif + +#define STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE STITCH_CLARA_OPEN_NAMESPACE + +// ----------- #included from tbc_text_format.h ----------- + +// Only use header guard if we are not using an outer namespace +#if !defined(TBC_TEXT_FORMAT_H_INCLUDED) || defined(STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE) +#ifndef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +#define TBC_TEXT_FORMAT_H_INCLUDED +#endif + +#include <string> +#include <vector> +#include <sstream> +#include <algorithm> +#include <cctype> + +// Use optional outer namespace +#ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +namespace STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE { +#endif + +namespace Tbc { + +#ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH + const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + struct TextAttributes { + TextAttributes() + : initialIndent( std::string::npos ), + indent( 0 ), + width( consoleWidth-1 ), + tabChar( '\t' ) + {} + + TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } + TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } + TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } + TextAttributes& setTabChar( char _value ) { tabChar = _value; return *this; } + + std::size_t initialIndent; // indent of first line, or npos + std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos + std::size_t width; // maximum width of text, including indent. Longer text will wrap + char tabChar; // If this char is seen the indent is changed to current pos + }; + + class Text { + public: + Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) + : attr( _attr ) + { + std::string wrappableChars = " [({.,/|\\-"; + std::size_t indent = _attr.initialIndent != std::string::npos + ? _attr.initialIndent + : _attr.indent; + std::string remainder = _str; + + while( !remainder.empty() ) { + if( lines.size() >= 1000 ) { + lines.push_back( "... message truncated due to excessive size" ); + return; + } + std::size_t tabPos = std::string::npos; + std::size_t width = (std::min)( remainder.size(), _attr.width - indent ); + std::size_t pos = remainder.find_first_of( '\n' ); + if( pos <= width ) { + width = pos; + } + pos = remainder.find_last_of( _attr.tabChar, width ); + if( pos != std::string::npos ) { + tabPos = pos; + if( remainder[width] == '\n' ) + width--; + remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 ); + } + + if( width == remainder.size() ) { + spliceLine( indent, remainder, width ); + } + else if( remainder[width] == '\n' ) { + spliceLine( indent, remainder, width ); + if( width <= 1 || remainder.size() != 1 ) + remainder = remainder.substr( 1 ); + indent = _attr.indent; + } + else { + pos = remainder.find_last_of( wrappableChars, width ); + if( pos != std::string::npos && pos > 0 ) { + spliceLine( indent, remainder, pos ); + if( remainder[0] == ' ' ) + remainder = remainder.substr( 1 ); + } + else { + spliceLine( indent, remainder, width-1 ); + lines.back() += "-"; + } + if( lines.size() == 1 ) + indent = _attr.indent; + if( tabPos != std::string::npos ) + indent += tabPos; + } + } + } + + void spliceLine( std::size_t _indent, std::string& _remainder, std::size_t _pos ) { + lines.push_back( std::string( _indent, ' ' ) + _remainder.substr( 0, _pos ) ); + _remainder = _remainder.substr( _pos ); + } + + typedef std::vector<std::string>::const_iterator const_iterator; + + const_iterator begin() const { return lines.begin(); } + const_iterator end() const { return lines.end(); } + std::string const& last() const { return lines.back(); } + std::size_t size() const { return lines.size(); } + std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } + std::string toString() const { + std::ostringstream oss; + oss << *this; + return oss.str(); + } + + inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { + for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); + it != itEnd; ++it ) { + if( it != _text.begin() ) + _stream << "\n"; + _stream << *it; + } + return _stream; + } + + private: + std::string str; + TextAttributes attr; + std::vector<std::string> lines; + }; + +} // end namespace Tbc + +#ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +} // end outer namespace +#endif + +#endif // TBC_TEXT_FORMAT_H_INCLUDED + +// ----------- end of #include from tbc_text_format.h ----------- +// ........... back in clara.h + +#undef STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE + +// ----------- #included from clara_compilers.h ----------- + +#ifndef TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED +#define TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + +// Detect a number of compiler features - mostly C++11/14 conformance - by compiler +// The following features are defined: +// +// CLARA_CONFIG_CPP11_NULLPTR : is nullptr supported? +// CLARA_CONFIG_CPP11_NOEXCEPT : is noexcept supported? +// CLARA_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods +// CLARA_CONFIG_CPP11_OVERRIDE : is override supported? +// CLARA_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) + +// CLARA_CONFIG_CPP11_OR_GREATER : Is C++11 supported? + +// CLARA_CONFIG_VARIADIC_MACROS : are variadic macros supported? + +// In general each macro has a _NO_<feature name> form +// (e.g. CLARA_CONFIG_CPP11_NO_NULLPTR) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + +// All the C++11 features can be disabled with CLARA_CONFIG_NO_CPP11 + +#ifdef __clang__ + +#if __has_feature(cxx_nullptr) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +#if __has_feature(cxx_noexcept) +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// GCC +#ifdef __GNUC__ + +#if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +// - otherwise more recent versions define __cplusplus >= 201103L +// and will get picked up below + +#endif // __GNUC__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#ifdef _MSC_VER + +#if (_MSC_VER >= 1600) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#endif + +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// +// C++ language feature support + +// catch all support for C++11 +#if defined(__cplusplus) && __cplusplus >= 201103L + +#define CLARA_CPP11_OR_GREATER + +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +#ifndef CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#endif + +#ifndef CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#endif + +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) +#define CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE +#endif +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) +#define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#endif // __cplusplus >= 201103L + +// Now set the actual defines based on the above + anything the user has configured +#if defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NO_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_NULLPTR +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_NOEXCEPT +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_GENERATED_METHODS +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_OVERRIDE) && !defined(CLARA_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_OVERRIDE +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_UNIQUE_PTR) && !defined(CLARA_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_UNIQUE_PTR +#endif + +// noexcept support: +#if defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_NOEXCEPT) +#define CLARA_NOEXCEPT noexcept +# define CLARA_NOEXCEPT_IS(x) noexcept(x) +#else +#define CLARA_NOEXCEPT throw() +# define CLARA_NOEXCEPT_IS(x) +#endif + +// nullptr support +#ifdef CLARA_CONFIG_CPP11_NULLPTR +#define CLARA_NULL nullptr +#else +#define CLARA_NULL NULL +#endif + +// override support +#ifdef CLARA_CONFIG_CPP11_OVERRIDE +#define CLARA_OVERRIDE override +#else +#define CLARA_OVERRIDE +#endif + +// unique_ptr support +#ifdef CLARA_CONFIG_CPP11_UNIQUE_PTR +# define CLARA_AUTO_PTR( T ) std::unique_ptr<T> +#else +# define CLARA_AUTO_PTR( T ) std::auto_ptr<T> +#endif + +#endif // TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + +// ----------- end of #include from clara_compilers.h ----------- +// ........... back in clara.h + +#include <map> +#include <stdexcept> +#include <memory> + +#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +#define CLARA_PLATFORM_WINDOWS +#endif + +// Use optional outer namespace +#ifdef STITCH_CLARA_OPEN_NAMESPACE +STITCH_CLARA_OPEN_NAMESPACE +#endif + +namespace Clara { + + struct UnpositionalTag {}; + + extern UnpositionalTag _; + +#ifdef CLARA_CONFIG_MAIN + UnpositionalTag _; +#endif + + namespace Detail { + +#ifdef CLARA_CONSOLE_WIDTH + const unsigned int consoleWidth = CLARA_CONFIG_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + using namespace Tbc; + + inline bool startsWith( std::string const& str, std::string const& prefix ) { + return str.size() >= prefix.size() && str.substr( 0, prefix.size() ) == prefix; + } + + template<typename T> struct RemoveConstRef{ typedef T type; }; + template<typename T> struct RemoveConstRef<T&>{ typedef T type; }; + template<typename T> struct RemoveConstRef<T const&>{ typedef T type; }; + template<typename T> struct RemoveConstRef<T const>{ typedef T type; }; + + template<typename T> struct IsBool { static const bool value = false; }; + template<> struct IsBool<bool> { static const bool value = true; }; + + template<typename T> + void convertInto( std::string const& _source, T& _dest ) { + std::stringstream ss; + ss << _source; + ss >> _dest; + if( ss.fail() ) + throw std::runtime_error( "Unable to convert " + _source + " to destination type" ); + } + inline void convertInto( std::string const& _source, std::string& _dest ) { + _dest = _source; + } + char toLowerCh(char c) { + return static_cast<char>( std::tolower( c ) ); + } + inline void convertInto( std::string const& _source, bool& _dest ) { + std::string sourceLC = _source; + std::transform( sourceLC.begin(), sourceLC.end(), sourceLC.begin(), toLowerCh ); + if( sourceLC == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) + _dest = true; + else if( sourceLC == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) + _dest = false; + else + throw std::runtime_error( "Expected a boolean value but did not recognise:\n '" + _source + "'" ); + } + + template<typename ConfigT> + struct IArgFunction { + virtual ~IArgFunction() {} +#ifdef CLARA_CONFIG_CPP11_GENERATED_METHODS + IArgFunction() = default; + IArgFunction( IArgFunction const& ) = default; +#endif + virtual void set( ConfigT& config, std::string const& value ) const = 0; + virtual bool takesArg() const = 0; + virtual IArgFunction* clone() const = 0; + }; + + template<typename ConfigT> + class BoundArgFunction { + public: + BoundArgFunction() : functionObj( CLARA_NULL ) {} + BoundArgFunction( IArgFunction<ConfigT>* _functionObj ) : functionObj( _functionObj ) {} + BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CLARA_NULL ) {} + BoundArgFunction& operator = ( BoundArgFunction const& other ) { + IArgFunction<ConfigT>* newFunctionObj = other.functionObj ? other.functionObj->clone() : CLARA_NULL; + delete functionObj; + functionObj = newFunctionObj; + return *this; + } + ~BoundArgFunction() { delete functionObj; } + + void set( ConfigT& config, std::string const& value ) const { + functionObj->set( config, value ); + } + bool takesArg() const { return functionObj->takesArg(); } + + bool isSet() const { + return functionObj != CLARA_NULL; + } + private: + IArgFunction<ConfigT>* functionObj; + }; + + template<typename C> + struct NullBinder : IArgFunction<C>{ + virtual void set( C&, std::string const& ) const {} + virtual bool takesArg() const { return true; } + virtual IArgFunction<C>* clone() const { return new NullBinder( *this ); } + }; + + template<typename C, typename M> + struct BoundDataMember : IArgFunction<C>{ + BoundDataMember( M C::* _member ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + convertInto( stringValue, p.*member ); + } + virtual bool takesArg() const { return !IsBool<M>::value; } + virtual IArgFunction<C>* clone() const { return new BoundDataMember( *this ); } + M C::* member; + }; + template<typename C, typename M> + struct BoundUnaryMethod : IArgFunction<C>{ + BoundUnaryMethod( void (C::*_member)( M ) ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + typename RemoveConstRef<M>::type value; + convertInto( stringValue, value ); + (p.*member)( value ); + } + virtual bool takesArg() const { return !IsBool<M>::value; } + virtual IArgFunction<C>* clone() const { return new BoundUnaryMethod( *this ); } + void (C::*member)( M ); + }; + template<typename C> + struct BoundNullaryMethod : IArgFunction<C>{ + BoundNullaryMethod( void (C::*_member)() ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + bool value; + convertInto( stringValue, value ); + if( value ) + (p.*member)(); + } + virtual bool takesArg() const { return false; } + virtual IArgFunction<C>* clone() const { return new BoundNullaryMethod( *this ); } + void (C::*member)(); + }; + + template<typename C> + struct BoundUnaryFunction : IArgFunction<C>{ + BoundUnaryFunction( void (*_function)( C& ) ) : function( _function ) {} + virtual void set( C& obj, std::string const& stringValue ) const { + bool value; + convertInto( stringValue, value ); + if( value ) + function( obj ); + } + virtual bool takesArg() const { return false; } + virtual IArgFunction<C>* clone() const { return new BoundUnaryFunction( *this ); } + void (*function)( C& ); + }; + + template<typename C, typename T> + struct BoundBinaryFunction : IArgFunction<C>{ + BoundBinaryFunction( void (*_function)( C&, T ) ) : function( _function ) {} + virtual void set( C& obj, std::string const& stringValue ) const { + typename RemoveConstRef<T>::type value; + convertInto( stringValue, value ); + function( obj, value ); + } + virtual bool takesArg() const { return !IsBool<T>::value; } + virtual IArgFunction<C>* clone() const { return new BoundBinaryFunction( *this ); } + void (*function)( C&, T ); + }; + + } // namespace Detail + + inline std::vector<std::string> argsToVector( int argc, char const* const* const argv ) { + std::vector<std::string> args( static_cast<std::size_t>( argc ) ); + for( std::size_t i = 0; i < static_cast<std::size_t>( argc ); ++i ) + args[i] = argv[i]; + + return args; + } + + class Parser { + enum Mode { None, MaybeShortOpt, SlashOpt, ShortOpt, LongOpt, Positional }; + Mode mode; + std::size_t from; + bool inQuotes; + public: + + struct Token { + enum Type { Positional, ShortOpt, LongOpt }; + Token( Type _type, std::string const& _data ) : type( _type ), data( _data ) {} + Type type; + std::string data; + }; + + Parser() : mode( None ), from( 0 ), inQuotes( false ){} + + void parseIntoTokens( std::vector<std::string> const& args, std::vector<Token>& tokens ) { + const std::string doubleDash = "--"; + for( std::size_t i = 1; i < args.size() && args[i] != doubleDash; ++i ) + parseIntoTokens( args[i], tokens); + } + + void parseIntoTokens( std::string const& arg, std::vector<Token>& tokens ) { + for( std::size_t i = 0; i < arg.size(); ++i ) { + char c = arg[i]; + if( c == '"' ) + inQuotes = !inQuotes; + mode = handleMode( i, c, arg, tokens ); + } + mode = handleMode( arg.size(), '\0', arg, tokens ); + } + Mode handleMode( std::size_t i, char c, std::string const& arg, std::vector<Token>& tokens ) { + switch( mode ) { + case None: return handleNone( i, c ); + case MaybeShortOpt: return handleMaybeShortOpt( i, c ); + case ShortOpt: + case LongOpt: + case SlashOpt: return handleOpt( i, c, arg, tokens ); + case Positional: return handlePositional( i, c, arg, tokens ); + default: throw std::logic_error( "Unknown mode" ); + } + } + + Mode handleNone( std::size_t i, char c ) { + if( inQuotes ) { + from = i; + return Positional; + } + switch( c ) { + case '-': return MaybeShortOpt; +#ifdef CLARA_PLATFORM_WINDOWS + case '/': from = i+1; return SlashOpt; +#endif + default: from = i; return Positional; + } + } + Mode handleMaybeShortOpt( std::size_t i, char c ) { + switch( c ) { + case '-': from = i+1; return LongOpt; + default: from = i; return ShortOpt; + } + } + + Mode handleOpt( std::size_t i, char c, std::string const& arg, std::vector<Token>& tokens ) { + if( std::string( ":=\0", 3 ).find( c ) == std::string::npos ) + return mode; + + std::string optName = arg.substr( from, i-from ); + if( mode == ShortOpt ) + for( std::size_t j = 0; j < optName.size(); ++j ) + tokens.push_back( Token( Token::ShortOpt, optName.substr( j, 1 ) ) ); + else if( mode == SlashOpt && optName.size() == 1 ) + tokens.push_back( Token( Token::ShortOpt, optName ) ); + else + tokens.push_back( Token( Token::LongOpt, optName ) ); + return None; + } + Mode handlePositional( std::size_t i, char c, std::string const& arg, std::vector<Token>& tokens ) { + if( inQuotes || std::string( "\0", 1 ).find( c ) == std::string::npos ) + return mode; + + std::string data = arg.substr( from, i-from ); + tokens.push_back( Token( Token::Positional, data ) ); + return None; + } + }; + + template<typename ConfigT> + struct CommonArgProperties { + CommonArgProperties() {} + CommonArgProperties( Detail::BoundArgFunction<ConfigT> const& _boundField ) : boundField( _boundField ) {} + + Detail::BoundArgFunction<ConfigT> boundField; + std::string description; + std::string detail; + std::string placeholder; // Only value if boundField takes an arg + + bool takesArg() const { + return !placeholder.empty(); + } + void validate() const { + if( !boundField.isSet() ) + throw std::logic_error( "option not bound" ); + } + }; + struct OptionArgProperties { + std::vector<std::string> shortNames; + std::string longName; + + bool hasShortName( std::string const& shortName ) const { + return std::find( shortNames.begin(), shortNames.end(), shortName ) != shortNames.end(); + } + bool hasLongName( std::string const& _longName ) const { + return _longName == longName; + } + }; + struct PositionalArgProperties { + PositionalArgProperties() : position( -1 ) {} + int position; // -1 means non-positional (floating) + + bool isFixedPositional() const { + return position != -1; + } + }; + + template<typename ConfigT> + class CommandLine { + + struct Arg : CommonArgProperties<ConfigT>, OptionArgProperties, PositionalArgProperties { + Arg() {} + Arg( Detail::BoundArgFunction<ConfigT> const& _boundField ) : CommonArgProperties<ConfigT>( _boundField ) {} + + using CommonArgProperties<ConfigT>::placeholder; // !TBD + + std::string dbgName() const { + if( !longName.empty() ) + return "--" + longName; + if( !shortNames.empty() ) + return "-" + shortNames[0]; + return "positional args"; + } + std::string commands() const { + std::ostringstream oss; + bool first = true; + std::vector<std::string>::const_iterator it = shortNames.begin(), itEnd = shortNames.end(); + for(; it != itEnd; ++it ) { + if( first ) + first = false; + else + oss << ", "; + oss << "-" << *it; + } + if( !longName.empty() ) { + if( !first ) + oss << ", "; + oss << "--" << longName; + } + if( !placeholder.empty() ) + oss << " <" << placeholder << ">"; + return oss.str(); + } + }; + + typedef CLARA_AUTO_PTR( Arg ) ArgAutoPtr; + + friend void addOptName( Arg& arg, std::string const& optName ) + { + if( optName.empty() ) + return; + if( Detail::startsWith( optName, "--" ) ) { + if( !arg.longName.empty() ) + throw std::logic_error( "Only one long opt may be specified. '" + + arg.longName + + "' already specified, now attempting to add '" + + optName + "'" ); + arg.longName = optName.substr( 2 ); + } + else if( Detail::startsWith( optName, "-" ) ) + arg.shortNames.push_back( optName.substr( 1 ) ); + else + throw std::logic_error( "option must begin with - or --. Option was: '" + optName + "'" ); + } + friend void setPositionalArg( Arg& arg, int position ) + { + arg.position = position; + } + + class ArgBuilder { + public: + ArgBuilder( Arg* arg ) : m_arg( arg ) {} + + // Bind a non-boolean data member (requires placeholder string) + template<typename C, typename M> + void bind( M C::* field, std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundDataMember<C,M>( field ); + m_arg->placeholder = placeholder; + } + // Bind a boolean data member (no placeholder required) + template<typename C> + void bind( bool C::* field ) { + m_arg->boundField = new Detail::BoundDataMember<C,bool>( field ); + } + + // Bind a method taking a single, non-boolean argument (requires a placeholder string) + template<typename C, typename M> + void bind( void (C::* unaryMethod)( M ), std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundUnaryMethod<C,M>( unaryMethod ); + m_arg->placeholder = placeholder; + } + + // Bind a method taking a single, boolean argument (no placeholder string required) + template<typename C> + void bind( void (C::* unaryMethod)( bool ) ) { + m_arg->boundField = new Detail::BoundUnaryMethod<C,bool>( unaryMethod ); + } + + // Bind a method that takes no arguments (will be called if opt is present) + template<typename C> + void bind( void (C::* nullaryMethod)() ) { + m_arg->boundField = new Detail::BoundNullaryMethod<C>( nullaryMethod ); + } + + // Bind a free function taking a single argument - the object to operate on (no placeholder string required) + template<typename C> + void bind( void (* unaryFunction)( C& ) ) { + m_arg->boundField = new Detail::BoundUnaryFunction<C>( unaryFunction ); + } + + // Bind a free function taking a single argument - the object to operate on (requires a placeholder string) + template<typename C, typename T> + void bind( void (* binaryFunction)( C&, T ), std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundBinaryFunction<C, T>( binaryFunction ); + m_arg->placeholder = placeholder; + } + + ArgBuilder& describe( std::string const& description ) { + m_arg->description = description; + return *this; + } + ArgBuilder& detail( std::string const& detail ) { + m_arg->detail = detail; + return *this; + } + + protected: + Arg* m_arg; + }; + + class OptBuilder : public ArgBuilder { + public: + OptBuilder( Arg* arg ) : ArgBuilder( arg ) {} + OptBuilder( OptBuilder& other ) : ArgBuilder( other ) {} + + OptBuilder& operator[]( std::string const& optName ) { + addOptName( *ArgBuilder::m_arg, optName ); + return *this; + } + }; + + public: + + CommandLine() + : m_boundProcessName( new Detail::NullBinder<ConfigT>() ), + m_highestSpecifiedArgPosition( 0 ), + m_throwOnUnrecognisedTokens( false ) + {} + CommandLine( CommandLine const& other ) + : m_boundProcessName( other.m_boundProcessName ), + m_options ( other.m_options ), + m_positionalArgs( other.m_positionalArgs ), + m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ), + m_throwOnUnrecognisedTokens( other.m_throwOnUnrecognisedTokens ) + { + if( other.m_floatingArg.get() ) + m_floatingArg.reset( new Arg( *other.m_floatingArg ) ); + } + + CommandLine& setThrowOnUnrecognisedTokens( bool shouldThrow = true ) { + m_throwOnUnrecognisedTokens = shouldThrow; + return *this; + } + + OptBuilder operator[]( std::string const& optName ) { + m_options.push_back( Arg() ); + addOptName( m_options.back(), optName ); + OptBuilder builder( &m_options.back() ); + return builder; + } + + ArgBuilder operator[]( int position ) { + m_positionalArgs.insert( std::make_pair( position, Arg() ) ); + if( position > m_highestSpecifiedArgPosition ) + m_highestSpecifiedArgPosition = position; + setPositionalArg( m_positionalArgs[position], position ); + ArgBuilder builder( &m_positionalArgs[position] ); + return builder; + } + + // Invoke this with the _ instance + ArgBuilder operator[]( UnpositionalTag ) { + if( m_floatingArg.get() ) + throw std::logic_error( "Only one unpositional argument can be added" ); + m_floatingArg.reset( new Arg() ); + ArgBuilder builder( m_floatingArg.get() ); + return builder; + } + + template<typename C, typename M> + void bindProcessName( M C::* field ) { + m_boundProcessName = new Detail::BoundDataMember<C,M>( field ); + } + template<typename C, typename M> + void bindProcessName( void (C::*_unaryMethod)( M ) ) { + m_boundProcessName = new Detail::BoundUnaryMethod<C,M>( _unaryMethod ); + } + + void optUsage( std::ostream& os, std::size_t indent = 0, std::size_t width = Detail::consoleWidth ) const { + typename std::vector<Arg>::const_iterator itBegin = m_options.begin(), itEnd = m_options.end(), it; + std::size_t maxWidth = 0; + for( it = itBegin; it != itEnd; ++it ) + maxWidth = (std::max)( maxWidth, it->commands().size() ); + + for( it = itBegin; it != itEnd; ++it ) { + Detail::Text usage( it->commands(), Detail::TextAttributes() + .setWidth( maxWidth+indent ) + .setIndent( indent ) ); + Detail::Text desc( it->description, Detail::TextAttributes() + .setWidth( width - maxWidth - 3 ) ); + + for( std::size_t i = 0; i < (std::max)( usage.size(), desc.size() ); ++i ) { + std::string usageCol = i < usage.size() ? usage[i] : ""; + os << usageCol; + + if( i < desc.size() && !desc[i].empty() ) + os << std::string( indent + 2 + maxWidth - usageCol.size(), ' ' ) + << desc[i]; + os << "\n"; + } + } + } + std::string optUsage() const { + std::ostringstream oss; + optUsage( oss ); + return oss.str(); + } + + void argSynopsis( std::ostream& os ) const { + for( int i = 1; i <= m_highestSpecifiedArgPosition; ++i ) { + if( i > 1 ) + os << " "; + typename std::map<int, Arg>::const_iterator it = m_positionalArgs.find( i ); + if( it != m_positionalArgs.end() ) + os << "<" << it->second.placeholder << ">"; + else if( m_floatingArg.get() ) + os << "<" << m_floatingArg->placeholder << ">"; + else + throw std::logic_error( "non consecutive positional arguments with no floating args" ); + } + // !TBD No indication of mandatory args + if( m_floatingArg.get() ) { + if( m_highestSpecifiedArgPosition > 1 ) + os << " "; + os << "[<" << m_floatingArg->placeholder << "> ...]"; + } + } + std::string argSynopsis() const { + std::ostringstream oss; + argSynopsis( oss ); + return oss.str(); + } + + void usage( std::ostream& os, std::string const& procName ) const { + validate(); + os << "usage:\n " << procName << " "; + argSynopsis( os ); + if( !m_options.empty() ) { + os << " [options]\n\nwhere options are: \n"; + optUsage( os, 2 ); + } + os << "\n"; + } + std::string usage( std::string const& procName ) const { + std::ostringstream oss; + usage( oss, procName ); + return oss.str(); + } + + ConfigT parse( std::vector<std::string> const& args ) const { + ConfigT config; + parseInto( args, config ); + return config; + } + + std::vector<Parser::Token> parseInto( std::vector<std::string> const& args, ConfigT& config ) const { + std::string processName = args.empty() ? std::string() : args[0]; + std::size_t lastSlash = processName.find_last_of( "/\\" ); + if( lastSlash != std::string::npos ) + processName = processName.substr( lastSlash+1 ); + m_boundProcessName.set( config, processName ); + std::vector<Parser::Token> tokens; + Parser parser; + parser.parseIntoTokens( args, tokens ); + return populate( tokens, config ); + } + + std::vector<Parser::Token> populate( std::vector<Parser::Token> const& tokens, ConfigT& config ) const { + validate(); + std::vector<Parser::Token> unusedTokens = populateOptions( tokens, config ); + unusedTokens = populateFixedArgs( unusedTokens, config ); + unusedTokens = populateFloatingArgs( unusedTokens, config ); + return unusedTokens; + } + + std::vector<Parser::Token> populateOptions( std::vector<Parser::Token> const& tokens, ConfigT& config ) const { + std::vector<Parser::Token> unusedTokens; + std::vector<std::string> errors; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + typename std::vector<Arg>::const_iterator it = m_options.begin(), itEnd = m_options.end(); + for(; it != itEnd; ++it ) { + Arg const& arg = *it; + + try { + if( ( token.type == Parser::Token::ShortOpt && arg.hasShortName( token.data ) ) || + ( token.type == Parser::Token::LongOpt && arg.hasLongName( token.data ) ) ) { + if( arg.takesArg() ) { + if( i == tokens.size()-1 || tokens[i+1].type != Parser::Token::Positional ) + errors.push_back( "Expected argument to option: " + token.data ); + else + arg.boundField.set( config, tokens[++i].data ); + } + else { + arg.boundField.set( config, "true" ); + } + break; + } + } + catch( std::exception& ex ) { + errors.push_back( std::string( ex.what() ) + "\n- while parsing: (" + arg.commands() + ")" ); + } + } + if( it == itEnd ) { + if( token.type == Parser::Token::Positional || !m_throwOnUnrecognisedTokens ) + unusedTokens.push_back( token ); + else if( errors.empty() && m_throwOnUnrecognisedTokens ) + errors.push_back( "unrecognised option: " + token.data ); + } + } + if( !errors.empty() ) { + std::ostringstream oss; + for( std::vector<std::string>::const_iterator it = errors.begin(), itEnd = errors.end(); + it != itEnd; + ++it ) { + if( it != errors.begin() ) + oss << "\n"; + oss << *it; + } + throw std::runtime_error( oss.str() ); + } + return unusedTokens; + } + std::vector<Parser::Token> populateFixedArgs( std::vector<Parser::Token> const& tokens, ConfigT& config ) const { + std::vector<Parser::Token> unusedTokens; + int position = 1; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + typename std::map<int, Arg>::const_iterator it = m_positionalArgs.find( position ); + if( it != m_positionalArgs.end() ) + it->second.boundField.set( config, token.data ); + else + unusedTokens.push_back( token ); + if( token.type == Parser::Token::Positional ) + position++; + } + return unusedTokens; + } + std::vector<Parser::Token> populateFloatingArgs( std::vector<Parser::Token> const& tokens, ConfigT& config ) const { + if( !m_floatingArg.get() ) + return tokens; + std::vector<Parser::Token> unusedTokens; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + if( token.type == Parser::Token::Positional ) + m_floatingArg->boundField.set( config, token.data ); + else + unusedTokens.push_back( token ); + } + return unusedTokens; + } + + void validate() const + { + if( m_options.empty() && m_positionalArgs.empty() && !m_floatingArg.get() ) + throw std::logic_error( "No options or arguments specified" ); + + for( typename std::vector<Arg>::const_iterator it = m_options.begin(), + itEnd = m_options.end(); + it != itEnd; ++it ) + it->validate(); + } + + private: + Detail::BoundArgFunction<ConfigT> m_boundProcessName; + std::vector<Arg> m_options; + std::map<int, Arg> m_positionalArgs; + ArgAutoPtr m_floatingArg; + int m_highestSpecifiedArgPosition; + bool m_throwOnUnrecognisedTokens; + }; + +} // end namespace Clara + +STITCH_CLARA_CLOSE_NAMESPACE +#undef STITCH_CLARA_OPEN_NAMESPACE +#undef STITCH_CLARA_CLOSE_NAMESPACE + +#endif // TWOBLUECUBES_CLARA_H_INCLUDED +#undef STITCH_CLARA_OPEN_NAMESPACE + +// Restore Clara's value for console width, if present +#ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#define CLARA_CONFIG_CONSOLE_WIDTH CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#undef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#endif + +#include <fstream> +#include <ctime> + +namespace Catch { + + inline void abortAfterFirst( ConfigData& config ) { config.abortAfter = 1; } + inline void abortAfterX( ConfigData& config, int x ) { + if( x < 1 ) + throw std::runtime_error( "Value after -x or --abortAfter must be greater than zero" ); + config.abortAfter = x; + } + inline void addTestOrTags( ConfigData& config, std::string const& _testSpec ) { config.testsOrTags.push_back( _testSpec ); } + inline void addSectionToRun( ConfigData& config, std::string const& sectionName ) { config.sectionsToRun.push_back( sectionName ); } + inline void addReporterName( ConfigData& config, std::string const& _reporterName ) { config.reporterNames.push_back( _reporterName ); } + + inline void addWarning( ConfigData& config, std::string const& _warning ) { + if( _warning == "NoAssertions" ) + config.warnings = static_cast<WarnAbout::What>( config.warnings | WarnAbout::NoAssertions ); + else + throw std::runtime_error( "Unrecognised warning: '" + _warning + '\'' ); + } + inline void setOrder( ConfigData& config, std::string const& order ) { + if( startsWith( "declared", order ) ) + config.runOrder = RunTests::InDeclarationOrder; + else if( startsWith( "lexical", order ) ) + config.runOrder = RunTests::InLexicographicalOrder; + else if( startsWith( "random", order ) ) + config.runOrder = RunTests::InRandomOrder; + else + throw std::runtime_error( "Unrecognised ordering: '" + order + '\'' ); + } + inline void setRngSeed( ConfigData& config, std::string const& seed ) { + if( seed == "time" ) { + config.rngSeed = static_cast<unsigned int>( std::time(0) ); + } + else { + std::stringstream ss; + ss << seed; + ss >> config.rngSeed; + if( ss.fail() ) + throw std::runtime_error( "Argument to --rng-seed should be the word 'time' or a number" ); + } + } + inline void setVerbosity( ConfigData& config, int level ) { + // !TBD: accept strings? + config.verbosity = static_cast<Verbosity::Level>( level ); + } + inline void setShowDurations( ConfigData& config, bool _showDurations ) { + config.showDurations = _showDurations + ? ShowDurations::Always + : ShowDurations::Never; + } + inline void setUseColour( ConfigData& config, std::string const& value ) { + std::string mode = toLower( value ); + + if( mode == "yes" ) + config.useColour = UseColour::Yes; + else if( mode == "no" ) + config.useColour = UseColour::No; + else if( mode == "auto" ) + config.useColour = UseColour::Auto; + else + throw std::runtime_error( "colour mode must be one of: auto, yes or no" ); + } + inline void forceColour( ConfigData& config ) { + config.useColour = UseColour::Yes; + } + inline void loadTestNamesFromFile( ConfigData& config, std::string const& _filename ) { + std::ifstream f( _filename.c_str() ); + if( !f.is_open() ) + throw std::domain_error( "Unable to load input file: " + _filename ); + + std::string line; + while( std::getline( f, line ) ) { + line = trim(line); + if( !line.empty() && !startsWith( line, '#' ) ) { + if( !startsWith( line, '"' ) ) + line = '"' + line + '"'; + addTestOrTags( config, line + ',' ); + } + } + } + + inline Clara::CommandLine<ConfigData> makeCommandLineParser() { + + using namespace Clara; + CommandLine<ConfigData> cli; + + cli.bindProcessName( &ConfigData::processName ); + + cli["-?"]["-h"]["--help"] + .describe( "display usage information" ) + .bind( &ConfigData::showHelp ); + + cli["-l"]["--list-tests"] + .describe( "list all/matching test cases" ) + .bind( &ConfigData::listTests ); + + cli["-t"]["--list-tags"] + .describe( "list all/matching tags" ) + .bind( &ConfigData::listTags ); + + cli["-s"]["--success"] + .describe( "include successful tests in output" ) + .bind( &ConfigData::showSuccessfulTests ); + + cli["-b"]["--break"] + .describe( "break into debugger on failure" ) + .bind( &ConfigData::shouldDebugBreak ); + + cli["-e"]["--nothrow"] + .describe( "skip exception tests" ) + .bind( &ConfigData::noThrow ); + + cli["-i"]["--invisibles"] + .describe( "show invisibles (tabs, newlines)" ) + .bind( &ConfigData::showInvisibles ); + + cli["-o"]["--out"] + .describe( "output filename" ) + .bind( &ConfigData::outputFilename, "filename" ); + + cli["-r"]["--reporter"] +// .placeholder( "name[:filename]" ) + .describe( "reporter to use (defaults to console)" ) + .bind( &addReporterName, "name" ); + + cli["-n"]["--name"] + .describe( "suite name" ) + .bind( &ConfigData::name, "name" ); + + cli["-a"]["--abort"] + .describe( "abort at first failure" ) + .bind( &abortAfterFirst ); + + cli["-x"]["--abortx"] + .describe( "abort after x failures" ) + .bind( &abortAfterX, "no. failures" ); + + cli["-w"]["--warn"] + .describe( "enable warnings" ) + .bind( &addWarning, "warning name" ); + +// - needs updating if reinstated +// cli.into( &setVerbosity ) +// .describe( "level of verbosity (0=no output)" ) +// .shortOpt( "v") +// .longOpt( "verbosity" ) +// .placeholder( "level" ); + + cli[_] + .describe( "which test or tests to use" ) + .bind( &addTestOrTags, "test name, pattern or tags" ); + + cli["-d"]["--durations"] + .describe( "show test durations" ) + .bind( &setShowDurations, "yes|no" ); + + cli["-f"]["--input-file"] + .describe( "load test names to run from a file" ) + .bind( &loadTestNamesFromFile, "filename" ); + + cli["-#"]["--filenames-as-tags"] + .describe( "adds a tag for the filename" ) + .bind( &ConfigData::filenamesAsTags ); + + cli["-c"]["--section"] + .describe( "specify section to run" ) + .bind( &addSectionToRun, "section name" ); + + // Less common commands which don't have a short form + cli["--list-test-names-only"] + .describe( "list all/matching test cases names only" ) + .bind( &ConfigData::listTestNamesOnly ); + + cli["--list-extra-info"] + .describe( "list all/matching test cases with more info" ) + .bind( &ConfigData::listExtraInfo ); + + cli["--list-reporters"] + .describe( "list all reporters" ) + .bind( &ConfigData::listReporters ); + + cli["--order"] + .describe( "test case order (defaults to decl)" ) + .bind( &setOrder, "decl|lex|rand" ); + + cli["--rng-seed"] + .describe( "set a specific seed for random numbers" ) + .bind( &setRngSeed, "'time'|number" ); + + cli["--force-colour"] + .describe( "force colourised output (deprecated)" ) + .bind( &forceColour ); + + cli["--use-colour"] + .describe( "should output be colourised" ) + .bind( &setUseColour, "yes|no" ); + + return cli; + } + +} // end namespace Catch + +// #included from: internal/catch_list.hpp +#define TWOBLUECUBES_CATCH_LIST_HPP_INCLUDED + +// #included from: catch_text.h +#define TWOBLUECUBES_CATCH_TEXT_H_INCLUDED + +#define TBC_TEXT_FORMAT_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH + +#define CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE Catch +// #included from: ../external/tbc_text_format.h +// Only use header guard if we are not using an outer namespace +#ifndef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +# ifdef TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED +# ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +# define TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +# endif +# else +# define TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED +# endif +#endif +#ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +#include <string> +#include <vector> +#include <sstream> + +// Use optional outer namespace +#ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +namespace CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE { +#endif + +namespace Tbc { + +#ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH + const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + struct TextAttributes { + TextAttributes() + : initialIndent( std::string::npos ), + indent( 0 ), + width( consoleWidth-1 ) + {} + + TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } + TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } + TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } + + std::size_t initialIndent; // indent of first line, or npos + std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos + std::size_t width; // maximum width of text, including indent. Longer text will wrap + }; + + class Text { + public: + Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) + : attr( _attr ) + { + const std::string wrappableBeforeChars = "[({<\t"; + const std::string wrappableAfterChars = "])}>-,./|\\"; + const std::string wrappableInsteadOfChars = " \n\r"; + std::string indent = _attr.initialIndent != std::string::npos + ? std::string( _attr.initialIndent, ' ' ) + : std::string( _attr.indent, ' ' ); + + typedef std::string::const_iterator iterator; + iterator it = _str.begin(); + const iterator strEnd = _str.end(); + + while( it != strEnd ) { + + if( lines.size() >= 1000 ) { + lines.push_back( "... message truncated due to excessive size" ); + return; + } + + std::string suffix; + std::size_t width = (std::min)( static_cast<size_t>( strEnd-it ), _attr.width-static_cast<size_t>( indent.size() ) ); + iterator itEnd = it+width; + iterator itNext = _str.end(); + + iterator itNewLine = std::find( it, itEnd, '\n' ); + if( itNewLine != itEnd ) + itEnd = itNewLine; + + if( itEnd != strEnd ) { + bool foundWrapPoint = false; + iterator findIt = itEnd; + do { + if( wrappableAfterChars.find( *findIt ) != std::string::npos && findIt != itEnd ) { + itEnd = findIt+1; + itNext = findIt+1; + foundWrapPoint = true; + } + else if( findIt > it && wrappableBeforeChars.find( *findIt ) != std::string::npos ) { + itEnd = findIt; + itNext = findIt; + foundWrapPoint = true; + } + else if( wrappableInsteadOfChars.find( *findIt ) != std::string::npos ) { + itNext = findIt+1; + itEnd = findIt; + foundWrapPoint = true; + } + if( findIt == it ) + break; + else + --findIt; + } + while( !foundWrapPoint ); + + if( !foundWrapPoint ) { + // No good wrap char, so we'll break mid word and add a hyphen + --itEnd; + itNext = itEnd; + suffix = "-"; + } + else { + while( itEnd > it && wrappableInsteadOfChars.find( *(itEnd-1) ) != std::string::npos ) + --itEnd; + } + } + lines.push_back( indent + std::string( it, itEnd ) + suffix ); + + if( indent.size() != _attr.indent ) + indent = std::string( _attr.indent, ' ' ); + it = itNext; + } + } + + typedef std::vector<std::string>::const_iterator const_iterator; + + const_iterator begin() const { return lines.begin(); } + const_iterator end() const { return lines.end(); } + std::string const& last() const { return lines.back(); } + std::size_t size() const { return lines.size(); } + std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } + std::string toString() const { + std::ostringstream oss; + oss << *this; + return oss.str(); + } + + inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { + for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); + it != itEnd; ++it ) { + if( it != _text.begin() ) + _stream << "\n"; + _stream << *it; + } + return _stream; + } + + private: + std::string str; + TextAttributes attr; + std::vector<std::string> lines; + }; + +} // end namespace Tbc + +#ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +} // end outer namespace +#endif + +#endif // TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +#undef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + +namespace Catch { + using Tbc::Text; + using Tbc::TextAttributes; +} + +// #included from: catch_console_colour.hpp +#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_HPP_INCLUDED + +namespace Catch { + + struct Colour { + enum Code { + None = 0, + + White, + Red, + Green, + Blue, + Cyan, + Yellow, + Grey, + + Bright = 0x10, + + BrightRed = Bright | Red, + BrightGreen = Bright | Green, + LightGrey = Bright | Grey, + BrightWhite = Bright | White, + + // By intention + FileName = LightGrey, + Warning = Yellow, + ResultError = BrightRed, + ResultSuccess = BrightGreen, + ResultExpectedFailure = Warning, + + Error = BrightRed, + Success = Green, + + OriginalExpression = Cyan, + ReconstructedExpression = Yellow, + + SecondaryText = LightGrey, + Headers = White + }; + + // Use constructed object for RAII guard + Colour( Code _colourCode ); + Colour( Colour const& other ); + ~Colour(); + + // Use static method for one-shot changes + static void use( Code _colourCode ); + + private: + bool m_moved; + }; + + inline std::ostream& operator << ( std::ostream& os, Colour const& ) { return os; } + +} // end namespace Catch + +// #included from: catch_interfaces_reporter.h +#define TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED + +#include <string> +#include <ostream> +#include <map> + +namespace Catch +{ + struct ReporterConfig { + explicit ReporterConfig( Ptr<IConfig const> const& _fullConfig ) + : m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {} + + ReporterConfig( Ptr<IConfig const> const& _fullConfig, std::ostream& _stream ) + : m_stream( &_stream ), m_fullConfig( _fullConfig ) {} + + std::ostream& stream() const { return *m_stream; } + Ptr<IConfig const> fullConfig() const { return m_fullConfig; } + + private: + std::ostream* m_stream; + Ptr<IConfig const> m_fullConfig; + }; + + struct ReporterPreferences { + ReporterPreferences() + : shouldRedirectStdOut( false ) + {} + + bool shouldRedirectStdOut; + }; + + template<typename T> + struct LazyStat : Option<T> { + LazyStat() : used( false ) {} + LazyStat& operator=( T const& _value ) { + Option<T>::operator=( _value ); + used = false; + return *this; + } + void reset() { + Option<T>::reset(); + used = false; + } + bool used; + }; + + struct TestRunInfo { + TestRunInfo( std::string const& _name ) : name( _name ) {} + std::string name; + }; + struct GroupInfo { + GroupInfo( std::string const& _name, + std::size_t _groupIndex, + std::size_t _groupsCount ) + : name( _name ), + groupIndex( _groupIndex ), + groupsCounts( _groupsCount ) + {} + + std::string name; + std::size_t groupIndex; + std::size_t groupsCounts; + }; + + struct AssertionStats { + AssertionStats( AssertionResult const& _assertionResult, + std::vector<MessageInfo> const& _infoMessages, + Totals const& _totals ) + : assertionResult( _assertionResult ), + infoMessages( _infoMessages ), + totals( _totals ) + { + if( assertionResult.hasMessage() ) { + // Copy message into messages list. + // !TBD This should have been done earlier, somewhere + MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() ); + builder << assertionResult.getMessage(); + builder.m_info.message = builder.m_stream.str(); + + infoMessages.push_back( builder.m_info ); + } + } + virtual ~AssertionStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + AssertionStats( AssertionStats const& ) = default; + AssertionStats( AssertionStats && ) = default; + AssertionStats& operator = ( AssertionStats const& ) = default; + AssertionStats& operator = ( AssertionStats && ) = default; +# endif + + AssertionResult assertionResult; + std::vector<MessageInfo> infoMessages; + Totals totals; + }; + + struct SectionStats { + SectionStats( SectionInfo const& _sectionInfo, + Counts const& _assertions, + double _durationInSeconds, + bool _missingAssertions ) + : sectionInfo( _sectionInfo ), + assertions( _assertions ), + durationInSeconds( _durationInSeconds ), + missingAssertions( _missingAssertions ) + {} + virtual ~SectionStats(); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + SectionStats( SectionStats const& ) = default; + SectionStats( SectionStats && ) = default; + SectionStats& operator = ( SectionStats const& ) = default; + SectionStats& operator = ( SectionStats && ) = default; +# endif + + SectionInfo sectionInfo; + Counts assertions; + double durationInSeconds; + bool missingAssertions; + }; + + struct TestCaseStats { + TestCaseStats( TestCaseInfo const& _testInfo, + Totals const& _totals, + std::string const& _stdOut, + std::string const& _stdErr, + bool _aborting ) + : testInfo( _testInfo ), + totals( _totals ), + stdOut( _stdOut ), + stdErr( _stdErr ), + aborting( _aborting ) + {} + virtual ~TestCaseStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestCaseStats( TestCaseStats const& ) = default; + TestCaseStats( TestCaseStats && ) = default; + TestCaseStats& operator = ( TestCaseStats const& ) = default; + TestCaseStats& operator = ( TestCaseStats && ) = default; +# endif + + TestCaseInfo testInfo; + Totals totals; + std::string stdOut; + std::string stdErr; + bool aborting; + }; + + struct TestGroupStats { + TestGroupStats( GroupInfo const& _groupInfo, + Totals const& _totals, + bool _aborting ) + : groupInfo( _groupInfo ), + totals( _totals ), + aborting( _aborting ) + {} + TestGroupStats( GroupInfo const& _groupInfo ) + : groupInfo( _groupInfo ), + aborting( false ) + {} + virtual ~TestGroupStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestGroupStats( TestGroupStats const& ) = default; + TestGroupStats( TestGroupStats && ) = default; + TestGroupStats& operator = ( TestGroupStats const& ) = default; + TestGroupStats& operator = ( TestGroupStats && ) = default; +# endif + + GroupInfo groupInfo; + Totals totals; + bool aborting; + }; + + struct TestRunStats { + TestRunStats( TestRunInfo const& _runInfo, + Totals const& _totals, + bool _aborting ) + : runInfo( _runInfo ), + totals( _totals ), + aborting( _aborting ) + {} + virtual ~TestRunStats(); + +# ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestRunStats( TestRunStats const& _other ) + : runInfo( _other.runInfo ), + totals( _other.totals ), + aborting( _other.aborting ) + {} +# else + TestRunStats( TestRunStats const& ) = default; + TestRunStats( TestRunStats && ) = default; + TestRunStats& operator = ( TestRunStats const& ) = default; + TestRunStats& operator = ( TestRunStats && ) = default; +# endif + + TestRunInfo runInfo; + Totals totals; + bool aborting; + }; + + class MultipleReporters; + + struct IStreamingReporter : IShared { + virtual ~IStreamingReporter(); + + // Implementing class must also provide the following static method: + // static std::string getDescription(); + + virtual ReporterPreferences getPreferences() const = 0; + + virtual void noMatchingTestCases( std::string const& spec ) = 0; + + virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0; + virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0; + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0; + virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0; + + virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0; + + // The return value indicates if the messages buffer should be cleared: + virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0; + + virtual void sectionEnded( SectionStats const& sectionStats ) = 0; + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0; + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0; + virtual void testRunEnded( TestRunStats const& testRunStats ) = 0; + + virtual void skipTest( TestCaseInfo const& testInfo ) = 0; + + virtual MultipleReporters* tryAsMulti() { return CATCH_NULL; } + }; + + struct IReporterFactory : IShared { + virtual ~IReporterFactory(); + virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0; + virtual std::string getDescription() const = 0; + }; + + struct IReporterRegistry { + typedef std::map<std::string, Ptr<IReporterFactory> > FactoryMap; + typedef std::vector<Ptr<IReporterFactory> > Listeners; + + virtual ~IReporterRegistry(); + virtual IStreamingReporter* create( std::string const& name, Ptr<IConfig const> const& config ) const = 0; + virtual FactoryMap const& getFactories() const = 0; + virtual Listeners const& getListeners() const = 0; + }; + + Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& existingReporter, Ptr<IStreamingReporter> const& additionalReporter ); + +} + +#include <limits> +#include <algorithm> + +namespace Catch { + + inline std::size_t listTests( Config const& config ) { + + TestSpec testSpec = config.testSpec(); + if( config.testSpec().hasFilters() ) + Catch::cout() << "Matching test cases:\n"; + else { + Catch::cout() << "All available test cases:\n"; + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + } + + std::size_t matchedTests = 0; + TextAttributes nameAttr, descAttr, tagsAttr; + nameAttr.setInitialIndent( 2 ).setIndent( 4 ); + descAttr.setIndent( 4 ); + tagsAttr.setIndent( 6 ); + + std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + matchedTests++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + Colour::Code colour = testCaseInfo.isHidden() + ? Colour::SecondaryText + : Colour::None; + Colour colourGuard( colour ); + + Catch::cout() << Text( testCaseInfo.name, nameAttr ) << std::endl; + if( config.listExtraInfo() ) { + Catch::cout() << " " << testCaseInfo.lineInfo << std::endl; + std::string description = testCaseInfo.description; + if( description.empty() ) + description = "(NO DESCRIPTION)"; + Catch::cout() << Text( description, descAttr ) << std::endl; + } + if( !testCaseInfo.tags.empty() ) + Catch::cout() << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl; + } + + if( !config.testSpec().hasFilters() ) + Catch::cout() << pluralise( matchedTests, "test case" ) << '\n' << std::endl; + else + Catch::cout() << pluralise( matchedTests, "matching test case" ) << '\n' << std::endl; + return matchedTests; + } + + inline std::size_t listTestsNamesOnly( Config const& config ) { + TestSpec testSpec = config.testSpec(); + if( !config.testSpec().hasFilters() ) + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + std::size_t matchedTests = 0; + std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + matchedTests++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + if( startsWith( testCaseInfo.name, '#' ) ) + Catch::cout() << '"' << testCaseInfo.name << '"'; + else + Catch::cout() << testCaseInfo.name; + if ( config.listExtraInfo() ) + Catch::cout() << "\t@" << testCaseInfo.lineInfo; + Catch::cout() << std::endl; + } + return matchedTests; + } + + struct TagInfo { + TagInfo() : count ( 0 ) {} + void add( std::string const& spelling ) { + ++count; + spellings.insert( spelling ); + } + std::string all() const { + std::string out; + for( std::set<std::string>::const_iterator it = spellings.begin(), itEnd = spellings.end(); + it != itEnd; + ++it ) + out += "[" + *it + "]"; + return out; + } + std::set<std::string> spellings; + std::size_t count; + }; + + inline std::size_t listTags( Config const& config ) { + TestSpec testSpec = config.testSpec(); + if( config.testSpec().hasFilters() ) + Catch::cout() << "Tags for matching test cases:\n"; + else { + Catch::cout() << "All available tags:\n"; + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + } + + std::map<std::string, TagInfo> tagCounts; + + std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + for( std::set<std::string>::const_iterator tagIt = it->getTestCaseInfo().tags.begin(), + tagItEnd = it->getTestCaseInfo().tags.end(); + tagIt != tagItEnd; + ++tagIt ) { + std::string tagName = *tagIt; + std::string lcaseTagName = toLower( tagName ); + std::map<std::string, TagInfo>::iterator countIt = tagCounts.find( lcaseTagName ); + if( countIt == tagCounts.end() ) + countIt = tagCounts.insert( std::make_pair( lcaseTagName, TagInfo() ) ).first; + countIt->second.add( tagName ); + } + } + + for( std::map<std::string, TagInfo>::const_iterator countIt = tagCounts.begin(), + countItEnd = tagCounts.end(); + countIt != countItEnd; + ++countIt ) { + std::ostringstream oss; + oss << " " << std::setw(2) << countIt->second.count << " "; + Text wrapper( countIt->second.all(), TextAttributes() + .setInitialIndent( 0 ) + .setIndent( oss.str().size() ) + .setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) ); + Catch::cout() << oss.str() << wrapper << '\n'; + } + Catch::cout() << pluralise( tagCounts.size(), "tag" ) << '\n' << std::endl; + return tagCounts.size(); + } + + inline std::size_t listReporters( Config const& /*config*/ ) { + Catch::cout() << "Available reporters:\n"; + IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories(); + IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it; + std::size_t maxNameLen = 0; + for(it = itBegin; it != itEnd; ++it ) + maxNameLen = (std::max)( maxNameLen, it->first.size() ); + + for(it = itBegin; it != itEnd; ++it ) { + Text wrapper( it->second->getDescription(), TextAttributes() + .setInitialIndent( 0 ) + .setIndent( 7+maxNameLen ) + .setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) ); + Catch::cout() << " " + << it->first + << ':' + << std::string( maxNameLen - it->first.size() + 2, ' ' ) + << wrapper << '\n'; + } + Catch::cout() << std::endl; + return factories.size(); + } + + inline Option<std::size_t> list( Config const& config ) { + Option<std::size_t> listedCount; + if( config.listTests() || ( config.listExtraInfo() && !config.listTestNamesOnly() ) ) + listedCount = listedCount.valueOr(0) + listTests( config ); + if( config.listTestNamesOnly() ) + listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); + if( config.listTags() ) + listedCount = listedCount.valueOr(0) + listTags( config ); + if( config.listReporters() ) + listedCount = listedCount.valueOr(0) + listReporters( config ); + return listedCount; + } + +} // end namespace Catch + +// #included from: internal/catch_run_context.hpp +#define TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED + +// #included from: catch_test_case_tracker.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED + +#include <algorithm> +#include <string> +#include <assert.h> +#include <vector> +#include <stdexcept> + +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + +namespace Catch { +namespace TestCaseTracking { + + struct NameAndLocation { + std::string name; + SourceLineInfo location; + + NameAndLocation( std::string const& _name, SourceLineInfo const& _location ) + : name( _name ), + location( _location ) + {} + }; + + struct ITracker : SharedImpl<> { + virtual ~ITracker(); + + // static queries + virtual NameAndLocation const& nameAndLocation() const = 0; + + // dynamic queries + virtual bool isComplete() const = 0; // Successfully completed or failed + virtual bool isSuccessfullyCompleted() const = 0; + virtual bool isOpen() const = 0; // Started but not complete + virtual bool hasChildren() const = 0; + + virtual ITracker& parent() = 0; + + // actions + virtual void close() = 0; // Successfully complete + virtual void fail() = 0; + virtual void markAsNeedingAnotherRun() = 0; + + virtual void addChild( Ptr<ITracker> const& child ) = 0; + virtual ITracker* findChild( NameAndLocation const& nameAndLocation ) = 0; + virtual void openChild() = 0; + + // Debug/ checking + virtual bool isSectionTracker() const = 0; + virtual bool isIndexTracker() const = 0; + }; + + class TrackerContext { + + enum RunState { + NotStarted, + Executing, + CompletedCycle + }; + + Ptr<ITracker> m_rootTracker; + ITracker* m_currentTracker; + RunState m_runState; + + public: + + static TrackerContext& instance() { + static TrackerContext s_instance; + return s_instance; + } + + TrackerContext() + : m_currentTracker( CATCH_NULL ), + m_runState( NotStarted ) + {} + + ITracker& startRun(); + + void endRun() { + m_rootTracker.reset(); + m_currentTracker = CATCH_NULL; + m_runState = NotStarted; + } + + void startCycle() { + m_currentTracker = m_rootTracker.get(); + m_runState = Executing; + } + void completeCycle() { + m_runState = CompletedCycle; + } + + bool completedCycle() const { + return m_runState == CompletedCycle; + } + ITracker& currentTracker() { + return *m_currentTracker; + } + void setCurrentTracker( ITracker* tracker ) { + m_currentTracker = tracker; + } + }; + + class TrackerBase : public ITracker { + protected: + enum CycleState { + NotStarted, + Executing, + ExecutingChildren, + NeedsAnotherRun, + CompletedSuccessfully, + Failed + }; + class TrackerHasName { + NameAndLocation m_nameAndLocation; + public: + TrackerHasName( NameAndLocation const& nameAndLocation ) : m_nameAndLocation( nameAndLocation ) {} + bool operator ()( Ptr<ITracker> const& tracker ) { + return + tracker->nameAndLocation().name == m_nameAndLocation.name && + tracker->nameAndLocation().location == m_nameAndLocation.location; + } + }; + typedef std::vector<Ptr<ITracker> > Children; + NameAndLocation m_nameAndLocation; + TrackerContext& m_ctx; + ITracker* m_parent; + Children m_children; + CycleState m_runState; + public: + TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ) + : m_nameAndLocation( nameAndLocation ), + m_ctx( ctx ), + m_parent( parent ), + m_runState( NotStarted ) + {} + virtual ~TrackerBase(); + + virtual NameAndLocation const& nameAndLocation() const CATCH_OVERRIDE { + return m_nameAndLocation; + } + virtual bool isComplete() const CATCH_OVERRIDE { + return m_runState == CompletedSuccessfully || m_runState == Failed; + } + virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE { + return m_runState == CompletedSuccessfully; + } + virtual bool isOpen() const CATCH_OVERRIDE { + return m_runState != NotStarted && !isComplete(); + } + virtual bool hasChildren() const CATCH_OVERRIDE { + return !m_children.empty(); + } + + virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE { + m_children.push_back( child ); + } + + virtual ITracker* findChild( NameAndLocation const& nameAndLocation ) CATCH_OVERRIDE { + Children::const_iterator it = std::find_if( m_children.begin(), m_children.end(), TrackerHasName( nameAndLocation ) ); + return( it != m_children.end() ) + ? it->get() + : CATCH_NULL; + } + virtual ITracker& parent() CATCH_OVERRIDE { + assert( m_parent ); // Should always be non-null except for root + return *m_parent; + } + + virtual void openChild() CATCH_OVERRIDE { + if( m_runState != ExecutingChildren ) { + m_runState = ExecutingChildren; + if( m_parent ) + m_parent->openChild(); + } + } + + virtual bool isSectionTracker() const CATCH_OVERRIDE { return false; } + virtual bool isIndexTracker() const CATCH_OVERRIDE { return false; } + + void open() { + m_runState = Executing; + moveToThis(); + if( m_parent ) + m_parent->openChild(); + } + + virtual void close() CATCH_OVERRIDE { + + // Close any still open children (e.g. generators) + while( &m_ctx.currentTracker() != this ) + m_ctx.currentTracker().close(); + + switch( m_runState ) { + case NotStarted: + case CompletedSuccessfully: + case Failed: + throw std::logic_error( "Illogical state" ); + + case NeedsAnotherRun: + break;; + + case Executing: + m_runState = CompletedSuccessfully; + break; + case ExecutingChildren: + if( m_children.empty() || m_children.back()->isComplete() ) + m_runState = CompletedSuccessfully; + break; + + default: + throw std::logic_error( "Unexpected state" ); + } + moveToParent(); + m_ctx.completeCycle(); + } + virtual void fail() CATCH_OVERRIDE { + m_runState = Failed; + if( m_parent ) + m_parent->markAsNeedingAnotherRun(); + moveToParent(); + m_ctx.completeCycle(); + } + virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE { + m_runState = NeedsAnotherRun; + } + private: + void moveToParent() { + assert( m_parent ); + m_ctx.setCurrentTracker( m_parent ); + } + void moveToThis() { + m_ctx.setCurrentTracker( this ); + } + }; + + class SectionTracker : public TrackerBase { + std::vector<std::string> m_filters; + public: + SectionTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ) + : TrackerBase( nameAndLocation, ctx, parent ) + { + if( parent ) { + while( !parent->isSectionTracker() ) + parent = &parent->parent(); + + SectionTracker& parentSection = static_cast<SectionTracker&>( *parent ); + addNextFilters( parentSection.m_filters ); + } + } + virtual ~SectionTracker(); + + virtual bool isSectionTracker() const CATCH_OVERRIDE { return true; } + + static SectionTracker& acquire( TrackerContext& ctx, NameAndLocation const& nameAndLocation ) { + SectionTracker* section = CATCH_NULL; + + ITracker& currentTracker = ctx.currentTracker(); + if( ITracker* childTracker = currentTracker.findChild( nameAndLocation ) ) { + assert( childTracker ); + assert( childTracker->isSectionTracker() ); + section = static_cast<SectionTracker*>( childTracker ); + } + else { + section = new SectionTracker( nameAndLocation, ctx, ¤tTracker ); + currentTracker.addChild( section ); + } + if( !ctx.completedCycle() ) + section->tryOpen(); + return *section; + } + + void tryOpen() { + if( !isComplete() && (m_filters.empty() || m_filters[0].empty() || m_filters[0] == m_nameAndLocation.name ) ) + open(); + } + + void addInitialFilters( std::vector<std::string> const& filters ) { + if( !filters.empty() ) { + m_filters.push_back(""); // Root - should never be consulted + m_filters.push_back(""); // Test Case - not a section filter + m_filters.insert( m_filters.end(), filters.begin(), filters.end() ); + } + } + void addNextFilters( std::vector<std::string> const& filters ) { + if( filters.size() > 1 ) + m_filters.insert( m_filters.end(), ++filters.begin(), filters.end() ); + } + }; + + class IndexTracker : public TrackerBase { + int m_size; + int m_index; + public: + IndexTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent, int size ) + : TrackerBase( nameAndLocation, ctx, parent ), + m_size( size ), + m_index( -1 ) + {} + virtual ~IndexTracker(); + + virtual bool isIndexTracker() const CATCH_OVERRIDE { return true; } + + static IndexTracker& acquire( TrackerContext& ctx, NameAndLocation const& nameAndLocation, int size ) { + IndexTracker* tracker = CATCH_NULL; + + ITracker& currentTracker = ctx.currentTracker(); + if( ITracker* childTracker = currentTracker.findChild( nameAndLocation ) ) { + assert( childTracker ); + assert( childTracker->isIndexTracker() ); + tracker = static_cast<IndexTracker*>( childTracker ); + } + else { + tracker = new IndexTracker( nameAndLocation, ctx, ¤tTracker, size ); + currentTracker.addChild( tracker ); + } + + if( !ctx.completedCycle() && !tracker->isComplete() ) { + if( tracker->m_runState != ExecutingChildren && tracker->m_runState != NeedsAnotherRun ) + tracker->moveNext(); + tracker->open(); + } + + return *tracker; + } + + int index() const { return m_index; } + + void moveNext() { + m_index++; + m_children.clear(); + } + + virtual void close() CATCH_OVERRIDE { + TrackerBase::close(); + if( m_runState == CompletedSuccessfully && m_index < m_size-1 ) + m_runState = Executing; + } + }; + + inline ITracker& TrackerContext::startRun() { + m_rootTracker = new SectionTracker( NameAndLocation( "{root}", CATCH_INTERNAL_LINEINFO ), *this, CATCH_NULL ); + m_currentTracker = CATCH_NULL; + m_runState = Executing; + return *m_rootTracker; + } + +} // namespace TestCaseTracking + +using TestCaseTracking::ITracker; +using TestCaseTracking::TrackerContext; +using TestCaseTracking::SectionTracker; +using TestCaseTracking::IndexTracker; + +} // namespace Catch + +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + +// #included from: catch_fatal_condition.hpp +#define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED + +namespace Catch { + + // Report the error condition + inline void reportFatal( std::string const& message ) { + IContext& context = Catch::getCurrentContext(); + IResultCapture* resultCapture = context.getResultCapture(); + resultCapture->handleFatalErrorCondition( message ); + } + +} // namespace Catch + +#if defined ( CATCH_PLATFORM_WINDOWS ) ///////////////////////////////////////// +// #included from: catch_windows_h_proxy.h + +#define TWOBLUECUBES_CATCH_WINDOWS_H_PROXY_H_INCLUDED + +#ifdef CATCH_DEFINES_NOMINMAX +# define NOMINMAX +#endif +#ifdef CATCH_DEFINES_WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif + +#ifdef __AFXDLL +#include <AfxWin.h> +#else +#include <windows.h> +#endif + +#ifdef CATCH_DEFINES_NOMINMAX +# undef NOMINMAX +#endif +#ifdef CATCH_DEFINES_WIN32_LEAN_AND_MEAN +# undef WIN32_LEAN_AND_MEAN +#endif + + +# if !defined ( CATCH_CONFIG_WINDOWS_SEH ) + +namespace Catch { + struct FatalConditionHandler { + void reset() {} + }; +} + +# else // CATCH_CONFIG_WINDOWS_SEH is defined + +namespace Catch { + + struct SignalDefs { DWORD id; const char* name; }; + extern SignalDefs signalDefs[]; + // There is no 1-1 mapping between signals and windows exceptions. + // Windows can easily distinguish between SO and SigSegV, + // but SigInt, SigTerm, etc are handled differently. + SignalDefs signalDefs[] = { + { EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" }, + { EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" }, + { EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" }, + { EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error" }, + }; + + struct FatalConditionHandler { + + static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) { + for (int i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) { + if (ExceptionInfo->ExceptionRecord->ExceptionCode == signalDefs[i].id) { + reportFatal(signalDefs[i].name); + } + } + // If its not an exception we care about, pass it along. + // This stops us from eating debugger breaks etc. + return EXCEPTION_CONTINUE_SEARCH; + } + + FatalConditionHandler() { + isSet = true; + // 32k seems enough for Catch to handle stack overflow, + // but the value was found experimentally, so there is no strong guarantee + guaranteeSize = 32 * 1024; + exceptionHandlerHandle = CATCH_NULL; + // Register as first handler in current chain + exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException); + // Pass in guarantee size to be filled + SetThreadStackGuarantee(&guaranteeSize); + } + + static void reset() { + if (isSet) { + // Unregister handler and restore the old guarantee + RemoveVectoredExceptionHandler(exceptionHandlerHandle); + SetThreadStackGuarantee(&guaranteeSize); + exceptionHandlerHandle = CATCH_NULL; + isSet = false; + } + } + + ~FatalConditionHandler() { + reset(); + } + private: + static bool isSet; + static ULONG guaranteeSize; + static PVOID exceptionHandlerHandle; + }; + + bool FatalConditionHandler::isSet = false; + ULONG FatalConditionHandler::guaranteeSize = 0; + PVOID FatalConditionHandler::exceptionHandlerHandle = CATCH_NULL; + +} // namespace Catch + +# endif // CATCH_CONFIG_WINDOWS_SEH + +#else // Not Windows - assumed to be POSIX compatible ////////////////////////// + +# if !defined(CATCH_CONFIG_POSIX_SIGNALS) + +namespace Catch { + struct FatalConditionHandler { + void reset() {} + }; +} + +# else // CATCH_CONFIG_POSIX_SIGNALS is defined + +#include <signal.h> + +namespace Catch { + + struct SignalDefs { + int id; + const char* name; + }; + extern SignalDefs signalDefs[]; + SignalDefs signalDefs[] = { + { SIGINT, "SIGINT - Terminal interrupt signal" }, + { SIGILL, "SIGILL - Illegal instruction signal" }, + { SIGFPE, "SIGFPE - Floating point error signal" }, + { SIGSEGV, "SIGSEGV - Segmentation violation signal" }, + { SIGTERM, "SIGTERM - Termination request signal" }, + { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" } + }; + + struct FatalConditionHandler { + + static bool isSet; + static struct sigaction oldSigActions [sizeof(signalDefs)/sizeof(SignalDefs)]; + static stack_t oldSigStack; + static char altStackMem[SIGSTKSZ]; + + static void handleSignal( int sig ) { + std::string name = "<unknown signal>"; + for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) { + SignalDefs &def = signalDefs[i]; + if (sig == def.id) { + name = def.name; + break; + } + } + reset(); + reportFatal(name); + raise( sig ); + } + + FatalConditionHandler() { + isSet = true; + stack_t sigStack; + sigStack.ss_sp = altStackMem; + sigStack.ss_size = SIGSTKSZ; + sigStack.ss_flags = 0; + sigaltstack(&sigStack, &oldSigStack); + struct sigaction sa = { 0 }; + + sa.sa_handler = handleSignal; + sa.sa_flags = SA_ONSTACK; + for (std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i) { + sigaction(signalDefs[i].id, &sa, &oldSigActions[i]); + } + } + + ~FatalConditionHandler() { + reset(); + } + static void reset() { + if( isSet ) { + // Set signals back to previous values -- hopefully nobody overwrote them in the meantime + for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) { + sigaction(signalDefs[i].id, &oldSigActions[i], CATCH_NULL); + } + // Return the old stack + sigaltstack(&oldSigStack, CATCH_NULL); + isSet = false; + } + } + }; + + bool FatalConditionHandler::isSet = false; + struct sigaction FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = {}; + stack_t FatalConditionHandler::oldSigStack = {}; + char FatalConditionHandler::altStackMem[SIGSTKSZ] = {}; + +} // namespace Catch + +# endif // CATCH_CONFIG_POSIX_SIGNALS + +#endif // not Windows + +#include <set> +#include <string> + +namespace Catch { + + class StreamRedirect { + + public: + StreamRedirect( std::ostream& stream, std::string& targetString ) + : m_stream( stream ), + m_prevBuf( stream.rdbuf() ), + m_targetString( targetString ) + { + stream.rdbuf( m_oss.rdbuf() ); + } + + ~StreamRedirect() { + m_targetString += m_oss.str(); + m_stream.rdbuf( m_prevBuf ); + } + + private: + std::ostream& m_stream; + std::streambuf* m_prevBuf; + std::ostringstream m_oss; + std::string& m_targetString; + }; + + /////////////////////////////////////////////////////////////////////////// + + class RunContext : public IResultCapture, public IRunner { + + RunContext( RunContext const& ); + void operator =( RunContext const& ); + + public: + + explicit RunContext( Ptr<IConfig const> const& _config, Ptr<IStreamingReporter> const& reporter ) + : m_runInfo( _config->name() ), + m_context( getCurrentMutableContext() ), + m_activeTestCase( CATCH_NULL ), + m_config( _config ), + m_reporter( reporter ), + m_shouldReportUnexpected ( true ) + { + m_context.setRunner( this ); + m_context.setConfig( m_config ); + m_context.setResultCapture( this ); + m_reporter->testRunStarting( m_runInfo ); + } + + virtual ~RunContext() { + m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, aborting() ) ); + } + + void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount ) { + m_reporter->testGroupStarting( GroupInfo( testSpec, groupIndex, groupsCount ) ); + } + void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount ) { + m_reporter->testGroupEnded( TestGroupStats( GroupInfo( testSpec, groupIndex, groupsCount ), totals, aborting() ) ); + } + + Totals runTest( TestCase const& testCase ) { + Totals prevTotals = m_totals; + + std::string redirectedCout; + std::string redirectedCerr; + + TestCaseInfo testInfo = testCase.getTestCaseInfo(); + + m_reporter->testCaseStarting( testInfo ); + + m_activeTestCase = &testCase; + + do { + ITracker& rootTracker = m_trackerContext.startRun(); + assert( rootTracker.isSectionTracker() ); + static_cast<SectionTracker&>( rootTracker ).addInitialFilters( m_config->getSectionsToRun() ); + do { + m_trackerContext.startCycle(); + m_testCaseTracker = &SectionTracker::acquire( m_trackerContext, TestCaseTracking::NameAndLocation( testInfo.name, testInfo.lineInfo ) ); + runCurrentTest( redirectedCout, redirectedCerr ); + } + while( !m_testCaseTracker->isSuccessfullyCompleted() && !aborting() ); + } + // !TBD: deprecated - this will be replaced by indexed trackers + while( getCurrentContext().advanceGeneratorsForCurrentTest() && !aborting() ); + + Totals deltaTotals = m_totals.delta( prevTotals ); + if( testInfo.expectedToFail() && deltaTotals.testCases.passed > 0 ) { + deltaTotals.assertions.failed++; + deltaTotals.testCases.passed--; + deltaTotals.testCases.failed++; + } + m_totals.testCases += deltaTotals.testCases; + m_reporter->testCaseEnded( TestCaseStats( testInfo, + deltaTotals, + redirectedCout, + redirectedCerr, + aborting() ) ); + + m_activeTestCase = CATCH_NULL; + m_testCaseTracker = CATCH_NULL; + + return deltaTotals; + } + + Ptr<IConfig const> config() const { + return m_config; + } + + private: // IResultCapture + + virtual void assertionEnded( AssertionResult const& result ) { + if( result.getResultType() == ResultWas::Ok ) { + m_totals.assertions.passed++; + } + else if( !result.isOk() ) { + m_totals.assertions.failed++; + } + + // We have no use for the return value (whether messages should be cleared), because messages were made scoped + // and should be let to clear themselves out. + static_cast<void>(m_reporter->assertionEnded(AssertionStats(result, m_messages, m_totals))); + + // Reset working state + m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after the reported line}" , m_lastAssertionInfo.resultDisposition ); + m_lastResult = result; + } + + virtual bool sectionStarted ( + SectionInfo const& sectionInfo, + Counts& assertions + ) + { + ITracker& sectionTracker = SectionTracker::acquire( m_trackerContext, TestCaseTracking::NameAndLocation( sectionInfo.name, sectionInfo.lineInfo ) ); + if( !sectionTracker.isOpen() ) + return false; + m_activeSections.push_back( §ionTracker ); + + m_lastAssertionInfo.lineInfo = sectionInfo.lineInfo; + + m_reporter->sectionStarting( sectionInfo ); + + assertions = m_totals.assertions; + + return true; + } + bool testForMissingAssertions( Counts& assertions ) { + if( assertions.total() != 0 ) + return false; + if( !m_config->warnAboutMissingAssertions() ) + return false; + if( m_trackerContext.currentTracker().hasChildren() ) + return false; + m_totals.assertions.failed++; + assertions.failed++; + return true; + } + + virtual void sectionEnded( SectionEndInfo const& endInfo ) { + Counts assertions = m_totals.assertions - endInfo.prevAssertions; + bool missingAssertions = testForMissingAssertions( assertions ); + + if( !m_activeSections.empty() ) { + m_activeSections.back()->close(); + m_activeSections.pop_back(); + } + + m_reporter->sectionEnded( SectionStats( endInfo.sectionInfo, assertions, endInfo.durationInSeconds, missingAssertions ) ); + m_messages.clear(); + } + + virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) { + if( m_unfinishedSections.empty() ) + m_activeSections.back()->fail(); + else + m_activeSections.back()->close(); + m_activeSections.pop_back(); + + m_unfinishedSections.push_back( endInfo ); + } + + virtual void pushScopedMessage( MessageInfo const& message ) { + m_messages.push_back( message ); + } + + virtual void popScopedMessage( MessageInfo const& message ) { + m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), message ), m_messages.end() ); + } + + virtual std::string getCurrentTestName() const { + return m_activeTestCase + ? m_activeTestCase->getTestCaseInfo().name + : std::string(); + } + + virtual const AssertionResult* getLastResult() const { + return &m_lastResult; + } + + virtual void exceptionEarlyReported() { + m_shouldReportUnexpected = false; + } + + virtual void handleFatalErrorCondition( std::string const& message ) { + // Don't rebuild the result -- the stringification itself can cause more fatal errors + // Instead, fake a result data. + AssertionResultData tempResult; + tempResult.resultType = ResultWas::FatalErrorCondition; + tempResult.message = message; + AssertionResult result(m_lastAssertionInfo, tempResult); + + getResultCapture().assertionEnded(result); + + handleUnfinishedSections(); + + // Recreate section for test case (as we will lose the one that was in scope) + TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); + + Counts assertions; + assertions.failed = 1; + SectionStats testCaseSectionStats( testCaseSection, assertions, 0, false ); + m_reporter->sectionEnded( testCaseSectionStats ); + + TestCaseInfo testInfo = m_activeTestCase->getTestCaseInfo(); + + Totals deltaTotals; + deltaTotals.testCases.failed = 1; + m_reporter->testCaseEnded( TestCaseStats( testInfo, + deltaTotals, + std::string(), + std::string(), + false ) ); + m_totals.testCases.failed++; + testGroupEnded( std::string(), m_totals, 1, 1 ); + m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, false ) ); + } + + public: + // !TBD We need to do this another way! + bool aborting() const { + return m_totals.assertions.failed == static_cast<std::size_t>( m_config->abortAfter() ); + } + + private: + + void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ) { + TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); + m_reporter->sectionStarting( testCaseSection ); + Counts prevAssertions = m_totals.assertions; + double duration = 0; + m_shouldReportUnexpected = true; + try { + m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal ); + + seedRng( *m_config ); + + Timer timer; + timer.start(); + if( m_reporter->getPreferences().shouldRedirectStdOut ) { + StreamRedirect coutRedir( Catch::cout(), redirectedCout ); + StreamRedirect cerrRedir( Catch::cerr(), redirectedCerr ); + invokeActiveTestCase(); + } + else { + invokeActiveTestCase(); + } + duration = timer.getElapsedSeconds(); + } + catch( TestFailureException& ) { + // This just means the test was aborted due to failure + } + catch(...) { + // Under CATCH_CONFIG_FAST_COMPILE, unexpected exceptions under REQUIRE assertions + // are reported without translation at the point of origin. + if (m_shouldReportUnexpected) { + makeUnexpectedResultBuilder().useActiveException(); + } + } + m_testCaseTracker->close(); + handleUnfinishedSections(); + m_messages.clear(); + + Counts assertions = m_totals.assertions - prevAssertions; + bool missingAssertions = testForMissingAssertions( assertions ); + + if( testCaseInfo.okToFail() ) { + std::swap( assertions.failedButOk, assertions.failed ); + m_totals.assertions.failed -= assertions.failedButOk; + m_totals.assertions.failedButOk += assertions.failedButOk; + } + + SectionStats testCaseSectionStats( testCaseSection, assertions, duration, missingAssertions ); + m_reporter->sectionEnded( testCaseSectionStats ); + } + + void invokeActiveTestCase() { + FatalConditionHandler fatalConditionHandler; // Handle signals + m_activeTestCase->invoke(); + fatalConditionHandler.reset(); + } + + private: + + ResultBuilder makeUnexpectedResultBuilder() const { + return ResultBuilder( m_lastAssertionInfo.macroName, + m_lastAssertionInfo.lineInfo, + m_lastAssertionInfo.capturedExpression, + m_lastAssertionInfo.resultDisposition ); + } + + void handleUnfinishedSections() { + // If sections ended prematurely due to an exception we stored their + // infos here so we can tear them down outside the unwind process. + for( std::vector<SectionEndInfo>::const_reverse_iterator it = m_unfinishedSections.rbegin(), + itEnd = m_unfinishedSections.rend(); + it != itEnd; + ++it ) + sectionEnded( *it ); + m_unfinishedSections.clear(); + } + + TestRunInfo m_runInfo; + IMutableContext& m_context; + TestCase const* m_activeTestCase; + ITracker* m_testCaseTracker; + ITracker* m_currentSectionTracker; + AssertionResult m_lastResult; + + Ptr<IConfig const> m_config; + Totals m_totals; + Ptr<IStreamingReporter> m_reporter; + std::vector<MessageInfo> m_messages; + AssertionInfo m_lastAssertionInfo; + std::vector<SectionEndInfo> m_unfinishedSections; + std::vector<ITracker*> m_activeSections; + TrackerContext m_trackerContext; + bool m_shouldReportUnexpected; + }; + + IResultCapture& getResultCapture() { + if( IResultCapture* capture = getCurrentContext().getResultCapture() ) + return *capture; + else + throw std::logic_error( "No result capture instance" ); + } + +} // end namespace Catch + +// #included from: internal/catch_version.h +#define TWOBLUECUBES_CATCH_VERSION_H_INCLUDED + +namespace Catch { + + // Versioning information + struct Version { + Version( unsigned int _majorVersion, + unsigned int _minorVersion, + unsigned int _patchNumber, + char const * const _branchName, + unsigned int _buildNumber ); + + unsigned int const majorVersion; + unsigned int const minorVersion; + unsigned int const patchNumber; + + // buildNumber is only used if branchName is not null + char const * const branchName; + unsigned int const buildNumber; + + friend std::ostream& operator << ( std::ostream& os, Version const& version ); + + private: + void operator=( Version const& ); + }; + + inline Version libraryVersion(); +} + +#include <fstream> +#include <stdlib.h> +#include <limits> + +namespace Catch { + + Ptr<IStreamingReporter> createReporter( std::string const& reporterName, Ptr<Config> const& config ) { + Ptr<IStreamingReporter> reporter = getRegistryHub().getReporterRegistry().create( reporterName, config.get() ); + if( !reporter ) { + std::ostringstream oss; + oss << "No reporter registered with name: '" << reporterName << "'"; + throw std::domain_error( oss.str() ); + } + return reporter; + } + + Ptr<IStreamingReporter> makeReporter( Ptr<Config> const& config ) { + std::vector<std::string> reporters = config->getReporterNames(); + if( reporters.empty() ) + reporters.push_back( "console" ); + + Ptr<IStreamingReporter> reporter; + for( std::vector<std::string>::const_iterator it = reporters.begin(), itEnd = reporters.end(); + it != itEnd; + ++it ) + reporter = addReporter( reporter, createReporter( *it, config ) ); + return reporter; + } + Ptr<IStreamingReporter> addListeners( Ptr<IConfig const> const& config, Ptr<IStreamingReporter> reporters ) { + IReporterRegistry::Listeners listeners = getRegistryHub().getReporterRegistry().getListeners(); + for( IReporterRegistry::Listeners::const_iterator it = listeners.begin(), itEnd = listeners.end(); + it != itEnd; + ++it ) + reporters = addReporter(reporters, (*it)->create( ReporterConfig( config ) ) ); + return reporters; + } + + Totals runTests( Ptr<Config> const& config ) { + + Ptr<IConfig const> iconfig = config.get(); + + Ptr<IStreamingReporter> reporter = makeReporter( config ); + reporter = addListeners( iconfig, reporter ); + + RunContext context( iconfig, reporter ); + + Totals totals; + + context.testGroupStarting( config->name(), 1, 1 ); + + TestSpec testSpec = config->testSpec(); + if( !testSpec.hasFilters() ) + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "~[.]" ).testSpec(); // All not hidden tests + + std::vector<TestCase> const& allTestCases = getAllTestCasesSorted( *iconfig ); + for( std::vector<TestCase>::const_iterator it = allTestCases.begin(), itEnd = allTestCases.end(); + it != itEnd; + ++it ) { + if( !context.aborting() && matchTest( *it, testSpec, *iconfig ) ) + totals += context.runTest( *it ); + else + reporter->skipTest( *it ); + } + + context.testGroupEnded( iconfig->name(), totals, 1, 1 ); + return totals; + } + + void applyFilenamesAsTags( IConfig const& config ) { + std::vector<TestCase> const& tests = getAllTestCasesSorted( config ); + for(std::size_t i = 0; i < tests.size(); ++i ) { + TestCase& test = const_cast<TestCase&>( tests[i] ); + std::set<std::string> tags = test.tags; + + std::string filename = test.lineInfo.file; + std::string::size_type lastSlash = filename.find_last_of( "\\/" ); + if( lastSlash != std::string::npos ) + filename = filename.substr( lastSlash+1 ); + + std::string::size_type lastDot = filename.find_last_of( "." ); + if( lastDot != std::string::npos ) + filename = filename.substr( 0, lastDot ); + + tags.insert( "#" + filename ); + setTags( test, tags ); + } + } + + class Session : NonCopyable { + static bool alreadyInstantiated; + + public: + + struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }; + + Session() + : m_cli( makeCommandLineParser() ) { + if( alreadyInstantiated ) { + std::string msg = "Only one instance of Catch::Session can ever be used"; + Catch::cerr() << msg << std::endl; + throw std::logic_error( msg ); + } + alreadyInstantiated = true; + } + ~Session() { + Catch::cleanUp(); + } + + void showHelp( std::string const& processName ) { + Catch::cout() << "\nCatch v" << libraryVersion() << "\n"; + + m_cli.usage( Catch::cout(), processName ); + Catch::cout() << "For more detail usage please see the project docs\n" << std::endl; + } + + int applyCommandLine( int argc, char const* const* const argv, OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { + try { + m_cli.setThrowOnUnrecognisedTokens( unusedOptionBehaviour == OnUnusedOptions::Fail ); + m_unusedTokens = m_cli.parseInto( Clara::argsToVector( argc, argv ), m_configData ); + if( m_configData.showHelp ) + showHelp( m_configData.processName ); + m_config.reset(); + } + catch( std::exception& ex ) { + { + Colour colourGuard( Colour::Red ); + Catch::cerr() + << "\nError(s) in input:\n" + << Text( ex.what(), TextAttributes().setIndent(2) ) + << "\n\n"; + } + m_cli.usage( Catch::cout(), m_configData.processName ); + return (std::numeric_limits<int>::max)(); + } + return 0; + } + + void useConfigData( ConfigData const& _configData ) { + m_configData = _configData; + m_config.reset(); + } + + int run( int argc, char const* const* const argv ) { + + int returnCode = applyCommandLine( argc, argv ); + if( returnCode == 0 ) + returnCode = run(); + return returnCode; + } + + #if defined(WIN32) && defined(UNICODE) + int run( int argc, wchar_t const* const* const argv ) { + + char **utf8Argv = new char *[ argc ]; + + for ( int i = 0; i < argc; ++i ) { + int bufSize = WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, NULL, 0, NULL, NULL ); + + utf8Argv[ i ] = new char[ bufSize ]; + + WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL ); + } + + int returnCode = applyCommandLine( argc, utf8Argv ); + if( returnCode == 0 ) + returnCode = run(); + + for ( int i = 0; i < argc; ++i ) + delete [] utf8Argv[ i ]; + + delete [] utf8Argv; + + return returnCode; + } + #endif + + int run() { + if( m_configData.showHelp ) + return 0; + + try + { + config(); // Force config to be constructed + + seedRng( *m_config ); + + if( m_configData.filenamesAsTags ) + applyFilenamesAsTags( *m_config ); + + // Handle list request + if( Option<std::size_t> listed = list( config() ) ) + return static_cast<int>( *listed ); + + return static_cast<int>( runTests( m_config ).assertions.failed ); + } + catch( std::exception& ex ) { + Catch::cerr() << ex.what() << std::endl; + return (std::numeric_limits<int>::max)(); + } + } + + Clara::CommandLine<ConfigData> const& cli() const { + return m_cli; + } + std::vector<Clara::Parser::Token> const& unusedTokens() const { + return m_unusedTokens; + } + ConfigData& configData() { + return m_configData; + } + Config& config() { + if( !m_config ) + m_config = new Config( m_configData ); + return *m_config; + } + private: + Clara::CommandLine<ConfigData> m_cli; + std::vector<Clara::Parser::Token> m_unusedTokens; + ConfigData m_configData; + Ptr<Config> m_config; + }; + + bool Session::alreadyInstantiated = false; + +} // end namespace Catch + +// #included from: catch_registry_hub.hpp +#define TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED + +// #included from: catch_test_case_registry_impl.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED + +#include <vector> +#include <set> +#include <sstream> +#include <algorithm> + +namespace Catch { + + struct RandomNumberGenerator { + typedef std::ptrdiff_t result_type; + + result_type operator()( result_type n ) const { return std::rand() % n; } + +#ifdef CATCH_CONFIG_CPP11_SHUFFLE + static constexpr result_type min() { return 0; } + static constexpr result_type max() { return 1000000; } + result_type operator()() const { return std::rand() % max(); } +#endif + template<typename V> + static void shuffle( V& vector ) { + RandomNumberGenerator rng; +#ifdef CATCH_CONFIG_CPP11_SHUFFLE + std::shuffle( vector.begin(), vector.end(), rng ); +#else + std::random_shuffle( vector.begin(), vector.end(), rng ); +#endif + } + }; + + inline std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases ) { + + std::vector<TestCase> sorted = unsortedTestCases; + + switch( config.runOrder() ) { + case RunTests::InLexicographicalOrder: + std::sort( sorted.begin(), sorted.end() ); + break; + case RunTests::InRandomOrder: + { + seedRng( config ); + RandomNumberGenerator::shuffle( sorted ); + } + break; + case RunTests::InDeclarationOrder: + // already in declaration order + break; + } + return sorted; + } + bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) { + return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() ); + } + + void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) { + std::set<TestCase> seenFunctions; + for( std::vector<TestCase>::const_iterator it = functions.begin(), itEnd = functions.end(); + it != itEnd; + ++it ) { + std::pair<std::set<TestCase>::const_iterator, bool> prev = seenFunctions.insert( *it ); + if( !prev.second ) { + std::ostringstream ss; + + ss << Colour( Colour::Red ) + << "error: TEST_CASE( \"" << it->name << "\" ) already defined.\n" + << "\tFirst seen at " << prev.first->getTestCaseInfo().lineInfo << '\n' + << "\tRedefined at " << it->getTestCaseInfo().lineInfo << std::endl; + + throw std::runtime_error(ss.str()); + } + } + } + + std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) { + std::vector<TestCase> filtered; + filtered.reserve( testCases.size() ); + for( std::vector<TestCase>::const_iterator it = testCases.begin(), itEnd = testCases.end(); + it != itEnd; + ++it ) + if( matchTest( *it, testSpec, config ) ) + filtered.push_back( *it ); + return filtered; + } + std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) { + return getRegistryHub().getTestCaseRegistry().getAllTestsSorted( config ); + } + + class TestRegistry : public ITestCaseRegistry { + public: + TestRegistry() + : m_currentSortOrder( RunTests::InDeclarationOrder ), + m_unnamedCount( 0 ) + {} + virtual ~TestRegistry(); + + virtual void registerTest( TestCase const& testCase ) { + std::string name = testCase.getTestCaseInfo().name; + if( name.empty() ) { + std::ostringstream oss; + oss << "Anonymous test case " << ++m_unnamedCount; + return registerTest( testCase.withName( oss.str() ) ); + } + m_functions.push_back( testCase ); + } + + virtual std::vector<TestCase> const& getAllTests() const { + return m_functions; + } + virtual std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const { + if( m_sortedFunctions.empty() ) + enforceNoDuplicateTestCases( m_functions ); + + if( m_currentSortOrder != config.runOrder() || m_sortedFunctions.empty() ) { + m_sortedFunctions = sortTests( config, m_functions ); + m_currentSortOrder = config.runOrder(); + } + return m_sortedFunctions; + } + + private: + std::vector<TestCase> m_functions; + mutable RunTests::InWhatOrder m_currentSortOrder; + mutable std::vector<TestCase> m_sortedFunctions; + size_t m_unnamedCount; + std::ios_base::Init m_ostreamInit; // Forces cout/ cerr to be initialised + }; + + /////////////////////////////////////////////////////////////////////////// + + class FreeFunctionTestCase : public SharedImpl<ITestCase> { + public: + + FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {} + + virtual void invoke() const { + m_fun(); + } + + private: + virtual ~FreeFunctionTestCase(); + + TestFunction m_fun; + }; + + inline std::string extractClassName( std::string const& classOrQualifiedMethodName ) { + std::string className = classOrQualifiedMethodName; + if( startsWith( className, '&' ) ) + { + std::size_t lastColons = className.rfind( "::" ); + std::size_t penultimateColons = className.rfind( "::", lastColons-1 ); + if( penultimateColons == std::string::npos ) + penultimateColons = 1; + className = className.substr( penultimateColons, lastColons-penultimateColons ); + } + return className; + } + + void registerTestCase + ( ITestCase* testCase, + char const* classOrQualifiedMethodName, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ) { + + getMutableRegistryHub().registerTest + ( makeTestCase + ( testCase, + extractClassName( classOrQualifiedMethodName ), + nameAndDesc.name, + nameAndDesc.description, + lineInfo ) ); + } + void registerTestCaseFunction + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ) { + registerTestCase( new FreeFunctionTestCase( function ), "", nameAndDesc, lineInfo ); + } + + /////////////////////////////////////////////////////////////////////////// + + AutoReg::AutoReg + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ) { + registerTestCaseFunction( function, lineInfo, nameAndDesc ); + } + + AutoReg::~AutoReg() {} + +} // end namespace Catch + +// #included from: catch_reporter_registry.hpp +#define TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED + +#include <map> + +namespace Catch { + + class ReporterRegistry : public IReporterRegistry { + + public: + + virtual ~ReporterRegistry() CATCH_OVERRIDE {} + + virtual IStreamingReporter* create( std::string const& name, Ptr<IConfig const> const& config ) const CATCH_OVERRIDE { + FactoryMap::const_iterator it = m_factories.find( name ); + if( it == m_factories.end() ) + return CATCH_NULL; + return it->second->create( ReporterConfig( config ) ); + } + + void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) { + m_factories.insert( std::make_pair( name, factory ) ); + } + void registerListener( Ptr<IReporterFactory> const& factory ) { + m_listeners.push_back( factory ); + } + + virtual FactoryMap const& getFactories() const CATCH_OVERRIDE { + return m_factories; + } + virtual Listeners const& getListeners() const CATCH_OVERRIDE { + return m_listeners; + } + + private: + FactoryMap m_factories; + Listeners m_listeners; + }; +} + +// #included from: catch_exception_translator_registry.hpp +#define TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_REGISTRY_HPP_INCLUDED + +#ifdef __OBJC__ +#import "Foundation/Foundation.h" +#endif + +namespace Catch { + + class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry { + public: + ~ExceptionTranslatorRegistry() { + deleteAll( m_translators ); + } + + virtual void registerTranslator( const IExceptionTranslator* translator ) { + m_translators.push_back( translator ); + } + + virtual std::string translateActiveException() const { + try { +#ifdef __OBJC__ + // In Objective-C try objective-c exceptions first + @try { + return tryTranslators(); + } + @catch (NSException *exception) { + return Catch::toString( [exception description] ); + } +#else + return tryTranslators(); +#endif + } + catch( TestFailureException& ) { + throw; + } + catch( std::exception& ex ) { + return ex.what(); + } + catch( std::string& msg ) { + return msg; + } + catch( const char* msg ) { + return msg; + } + catch(...) { + return "Unknown exception"; + } + } + + std::string tryTranslators() const { + if( m_translators.empty() ) + throw; + else + return m_translators[0]->translate( m_translators.begin()+1, m_translators.end() ); + } + + private: + std::vector<const IExceptionTranslator*> m_translators; + }; +} + +// #included from: catch_tag_alias_registry.h +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_H_INCLUDED + +#include <map> + +namespace Catch { + + class TagAliasRegistry : public ITagAliasRegistry { + public: + virtual ~TagAliasRegistry(); + virtual Option<TagAlias> find( std::string const& alias ) const; + virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const; + void add( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ); + + private: + std::map<std::string, TagAlias> m_registry; + }; + +} // end namespace Catch + +namespace Catch { + + namespace { + + class RegistryHub : public IRegistryHub, public IMutableRegistryHub { + + RegistryHub( RegistryHub const& ); + void operator=( RegistryHub const& ); + + public: // IRegistryHub + RegistryHub() { + } + virtual IReporterRegistry const& getReporterRegistry() const CATCH_OVERRIDE { + return m_reporterRegistry; + } + virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_OVERRIDE { + return m_testCaseRegistry; + } + virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() CATCH_OVERRIDE { + return m_exceptionTranslatorRegistry; + } + virtual ITagAliasRegistry const& getTagAliasRegistry() const CATCH_OVERRIDE { + return m_tagAliasRegistry; + } + + public: // IMutableRegistryHub + virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) CATCH_OVERRIDE { + m_reporterRegistry.registerReporter( name, factory ); + } + virtual void registerListener( Ptr<IReporterFactory> const& factory ) CATCH_OVERRIDE { + m_reporterRegistry.registerListener( factory ); + } + virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE { + m_testCaseRegistry.registerTest( testInfo ); + } + virtual void registerTranslator( const IExceptionTranslator* translator ) CATCH_OVERRIDE { + m_exceptionTranslatorRegistry.registerTranslator( translator ); + } + virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) CATCH_OVERRIDE { + m_tagAliasRegistry.add( alias, tag, lineInfo ); + } + + private: + TestRegistry m_testCaseRegistry; + ReporterRegistry m_reporterRegistry; + ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; + TagAliasRegistry m_tagAliasRegistry; + }; + + // Single, global, instance + inline RegistryHub*& getTheRegistryHub() { + static RegistryHub* theRegistryHub = CATCH_NULL; + if( !theRegistryHub ) + theRegistryHub = new RegistryHub(); + return theRegistryHub; + } + } + + IRegistryHub& getRegistryHub() { + return *getTheRegistryHub(); + } + IMutableRegistryHub& getMutableRegistryHub() { + return *getTheRegistryHub(); + } + void cleanUp() { + delete getTheRegistryHub(); + getTheRegistryHub() = CATCH_NULL; + cleanUpContext(); + } + std::string translateActiveException() { + return getRegistryHub().getExceptionTranslatorRegistry().translateActiveException(); + } + +} // end namespace Catch + +// #included from: catch_notimplemented_exception.hpp +#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED + +#include <sstream> + +namespace Catch { + + NotImplementedException::NotImplementedException( SourceLineInfo const& lineInfo ) + : m_lineInfo( lineInfo ) { + std::ostringstream oss; + oss << lineInfo << ": function "; + oss << "not implemented"; + m_what = oss.str(); + } + + const char* NotImplementedException::what() const CATCH_NOEXCEPT { + return m_what.c_str(); + } + +} // end namespace Catch + +// #included from: catch_context_impl.hpp +#define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED + +// #included from: catch_stream.hpp +#define TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED + +#include <stdexcept> +#include <cstdio> +#include <iostream> + +namespace Catch { + + template<typename WriterF, size_t bufferSize=256> + class StreamBufImpl : public StreamBufBase { + char data[bufferSize]; + WriterF m_writer; + + public: + StreamBufImpl() { + setp( data, data + sizeof(data) ); + } + + ~StreamBufImpl() CATCH_NOEXCEPT { + sync(); + } + + private: + int overflow( int c ) { + sync(); + + if( c != EOF ) { + if( pbase() == epptr() ) + m_writer( std::string( 1, static_cast<char>( c ) ) ); + else + sputc( static_cast<char>( c ) ); + } + return 0; + } + + int sync() { + if( pbase() != pptr() ) { + m_writer( std::string( pbase(), static_cast<std::string::size_type>( pptr() - pbase() ) ) ); + setp( pbase(), epptr() ); + } + return 0; + } + }; + + /////////////////////////////////////////////////////////////////////////// + + FileStream::FileStream( std::string const& filename ) { + m_ofs.open( filename.c_str() ); + if( m_ofs.fail() ) { + std::ostringstream oss; + oss << "Unable to open file: '" << filename << '\''; + throw std::domain_error( oss.str() ); + } + } + + std::ostream& FileStream::stream() const { + return m_ofs; + } + + struct OutputDebugWriter { + + void operator()( std::string const&str ) { + writeToDebugConsole( str ); + } + }; + + DebugOutStream::DebugOutStream() + : m_streamBuf( new StreamBufImpl<OutputDebugWriter>() ), + m_os( m_streamBuf.get() ) + {} + + std::ostream& DebugOutStream::stream() const { + return m_os; + } + + // Store the streambuf from cout up-front because + // cout may get redirected when running tests + CoutStream::CoutStream() + : m_os( Catch::cout().rdbuf() ) + {} + + std::ostream& CoutStream::stream() const { + return m_os; + } + +#ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement these functions + std::ostream& cout() { + return std::cout; + } + std::ostream& cerr() { + return std::cerr; + } +#endif +} + +namespace Catch { + + class Context : public IMutableContext { + + Context() : m_config( CATCH_NULL ), m_runner( CATCH_NULL ), m_resultCapture( CATCH_NULL ) {} + Context( Context const& ); + void operator=( Context const& ); + + public: + virtual ~Context() { + deleteAllValues( m_generatorsByTestName ); + } + + public: // IContext + virtual IResultCapture* getResultCapture() { + return m_resultCapture; + } + virtual IRunner* getRunner() { + return m_runner; + } + virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) { + return getGeneratorsForCurrentTest() + .getGeneratorInfo( fileInfo, totalSize ) + .getCurrentIndex(); + } + virtual bool advanceGeneratorsForCurrentTest() { + IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); + return generators && generators->moveNext(); + } + + virtual Ptr<IConfig const> getConfig() const { + return m_config; + } + + public: // IMutableContext + virtual void setResultCapture( IResultCapture* resultCapture ) { + m_resultCapture = resultCapture; + } + virtual void setRunner( IRunner* runner ) { + m_runner = runner; + } + virtual void setConfig( Ptr<IConfig const> const& config ) { + m_config = config; + } + + friend IMutableContext& getCurrentMutableContext(); + + private: + IGeneratorsForTest* findGeneratorsForCurrentTest() { + std::string testName = getResultCapture()->getCurrentTestName(); + + std::map<std::string, IGeneratorsForTest*>::const_iterator it = + m_generatorsByTestName.find( testName ); + return it != m_generatorsByTestName.end() + ? it->second + : CATCH_NULL; + } + + IGeneratorsForTest& getGeneratorsForCurrentTest() { + IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); + if( !generators ) { + std::string testName = getResultCapture()->getCurrentTestName(); + generators = createGeneratorsForTest(); + m_generatorsByTestName.insert( std::make_pair( testName, generators ) ); + } + return *generators; + } + + private: + Ptr<IConfig const> m_config; + IRunner* m_runner; + IResultCapture* m_resultCapture; + std::map<std::string, IGeneratorsForTest*> m_generatorsByTestName; + }; + + namespace { + Context* currentContext = CATCH_NULL; + } + IMutableContext& getCurrentMutableContext() { + if( !currentContext ) + currentContext = new Context(); + return *currentContext; + } + IContext& getCurrentContext() { + return getCurrentMutableContext(); + } + + void cleanUpContext() { + delete currentContext; + currentContext = CATCH_NULL; + } +} + +// #included from: catch_console_colour_impl.hpp +#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED + +// #included from: catch_errno_guard.hpp +#define TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED + +#include <cerrno> + +namespace Catch { + + class ErrnoGuard { + public: + ErrnoGuard():m_oldErrno(errno){} + ~ErrnoGuard() { errno = m_oldErrno; } + private: + int m_oldErrno; + }; + +} + +namespace Catch { + namespace { + + struct IColourImpl { + virtual ~IColourImpl() {} + virtual void use( Colour::Code _colourCode ) = 0; + }; + + struct NoColourImpl : IColourImpl { + void use( Colour::Code ) {} + + static IColourImpl* instance() { + static NoColourImpl s_instance; + return &s_instance; + } + }; + + } // anon namespace +} // namespace Catch + +#if !defined( CATCH_CONFIG_COLOUR_NONE ) && !defined( CATCH_CONFIG_COLOUR_WINDOWS ) && !defined( CATCH_CONFIG_COLOUR_ANSI ) +# ifdef CATCH_PLATFORM_WINDOWS +# define CATCH_CONFIG_COLOUR_WINDOWS +# else +# define CATCH_CONFIG_COLOUR_ANSI +# endif +#endif + +#if defined ( CATCH_CONFIG_COLOUR_WINDOWS ) ///////////////////////////////////////// + +namespace Catch { +namespace { + + class Win32ColourImpl : public IColourImpl { + public: + Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) ) + { + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + GetConsoleScreenBufferInfo( stdoutHandle, &csbiInfo ); + originalForegroundAttributes = csbiInfo.wAttributes & ~( BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY ); + originalBackgroundAttributes = csbiInfo.wAttributes & ~( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY ); + } + + virtual void use( Colour::Code _colourCode ) { + switch( _colourCode ) { + case Colour::None: return setTextAttribute( originalForegroundAttributes ); + case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + case Colour::Red: return setTextAttribute( FOREGROUND_RED ); + case Colour::Green: return setTextAttribute( FOREGROUND_GREEN ); + case Colour::Blue: return setTextAttribute( FOREGROUND_BLUE ); + case Colour::Cyan: return setTextAttribute( FOREGROUND_BLUE | FOREGROUND_GREEN ); + case Colour::Yellow: return setTextAttribute( FOREGROUND_RED | FOREGROUND_GREEN ); + case Colour::Grey: return setTextAttribute( 0 ); + + case Colour::LightGrey: return setTextAttribute( FOREGROUND_INTENSITY ); + case Colour::BrightRed: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED ); + case Colour::BrightGreen: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN ); + case Colour::BrightWhite: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + + case Colour::Bright: throw std::logic_error( "not a colour" ); + } + } + + private: + void setTextAttribute( WORD _textAttribute ) { + SetConsoleTextAttribute( stdoutHandle, _textAttribute | originalBackgroundAttributes ); + } + HANDLE stdoutHandle; + WORD originalForegroundAttributes; + WORD originalBackgroundAttributes; + }; + + IColourImpl* platformColourInstance() { + static Win32ColourImpl s_instance; + + Ptr<IConfig const> config = getCurrentContext().getConfig(); + UseColour::YesOrNo colourMode = config + ? config->useColour() + : UseColour::Auto; + if( colourMode == UseColour::Auto ) + colourMode = !isDebuggerActive() + ? UseColour::Yes + : UseColour::No; + return colourMode == UseColour::Yes + ? &s_instance + : NoColourImpl::instance(); + } + +} // end anon namespace +} // end namespace Catch + +#elif defined( CATCH_CONFIG_COLOUR_ANSI ) ////////////////////////////////////// + +#include <unistd.h> + +namespace Catch { +namespace { + + // use POSIX/ ANSI console terminal codes + // Thanks to Adam Strzelecki for original contribution + // (http://github.com/nanoant) + // https://github.com/philsquared/Catch/pull/131 + class PosixColourImpl : public IColourImpl { + public: + virtual void use( Colour::Code _colourCode ) { + switch( _colourCode ) { + case Colour::None: + case Colour::White: return setColour( "[0m" ); + case Colour::Red: return setColour( "[0;31m" ); + case Colour::Green: return setColour( "[0;32m" ); + case Colour::Blue: return setColour( "[0;34m" ); + case Colour::Cyan: return setColour( "[0;36m" ); + case Colour::Yellow: return setColour( "[0;33m" ); + case Colour::Grey: return setColour( "[1;30m" ); + + case Colour::LightGrey: return setColour( "[0;37m" ); + case Colour::BrightRed: return setColour( "[1;31m" ); + case Colour::BrightGreen: return setColour( "[1;32m" ); + case Colour::BrightWhite: return setColour( "[1;37m" ); + + case Colour::Bright: throw std::logic_error( "not a colour" ); + } + } + static IColourImpl* instance() { + static PosixColourImpl s_instance; + return &s_instance; + } + + private: + void setColour( const char* _escapeCode ) { + Catch::cout() << '\033' << _escapeCode; + } + }; + + IColourImpl* platformColourInstance() { + ErrnoGuard guard; + Ptr<IConfig const> config = getCurrentContext().getConfig(); + UseColour::YesOrNo colourMode = config + ? config->useColour() + : UseColour::Auto; + if( colourMode == UseColour::Auto ) + colourMode = (!isDebuggerActive() && isatty(STDOUT_FILENO) ) + ? UseColour::Yes + : UseColour::No; + return colourMode == UseColour::Yes + ? PosixColourImpl::instance() + : NoColourImpl::instance(); + } + +} // end anon namespace +} // end namespace Catch + +#else // not Windows or ANSI /////////////////////////////////////////////// + +namespace Catch { + + static IColourImpl* platformColourInstance() { return NoColourImpl::instance(); } + +} // end namespace Catch + +#endif // Windows/ ANSI/ None + +namespace Catch { + + Colour::Colour( Code _colourCode ) : m_moved( false ) { use( _colourCode ); } + Colour::Colour( Colour const& _other ) : m_moved( false ) { const_cast<Colour&>( _other ).m_moved = true; } + Colour::~Colour(){ if( !m_moved ) use( None ); } + + void Colour::use( Code _colourCode ) { + static IColourImpl* impl = platformColourInstance(); + impl->use( _colourCode ); + } + +} // end namespace Catch + +// #included from: catch_generators_impl.hpp +#define TWOBLUECUBES_CATCH_GENERATORS_IMPL_HPP_INCLUDED + +#include <vector> +#include <string> +#include <map> + +namespace Catch { + + struct GeneratorInfo : IGeneratorInfo { + + GeneratorInfo( std::size_t size ) + : m_size( size ), + m_currentIndex( 0 ) + {} + + bool moveNext() { + if( ++m_currentIndex == m_size ) { + m_currentIndex = 0; + return false; + } + return true; + } + + std::size_t getCurrentIndex() const { + return m_currentIndex; + } + + std::size_t m_size; + std::size_t m_currentIndex; + }; + + /////////////////////////////////////////////////////////////////////////// + + class GeneratorsForTest : public IGeneratorsForTest { + + public: + ~GeneratorsForTest() { + deleteAll( m_generatorsInOrder ); + } + + IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) { + std::map<std::string, IGeneratorInfo*>::const_iterator it = m_generatorsByName.find( fileInfo ); + if( it == m_generatorsByName.end() ) { + IGeneratorInfo* info = new GeneratorInfo( size ); + m_generatorsByName.insert( std::make_pair( fileInfo, info ) ); + m_generatorsInOrder.push_back( info ); + return *info; + } + return *it->second; + } + + bool moveNext() { + std::vector<IGeneratorInfo*>::const_iterator it = m_generatorsInOrder.begin(); + std::vector<IGeneratorInfo*>::const_iterator itEnd = m_generatorsInOrder.end(); + for(; it != itEnd; ++it ) { + if( (*it)->moveNext() ) + return true; + } + return false; + } + + private: + std::map<std::string, IGeneratorInfo*> m_generatorsByName; + std::vector<IGeneratorInfo*> m_generatorsInOrder; + }; + + IGeneratorsForTest* createGeneratorsForTest() + { + return new GeneratorsForTest(); + } + +} // end namespace Catch + +// #included from: catch_assertionresult.hpp +#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED + +namespace Catch { + + AssertionInfo::AssertionInfo( char const * _macroName, + SourceLineInfo const& _lineInfo, + char const * _capturedExpression, + ResultDisposition::Flags _resultDisposition, + char const * _secondArg) + : macroName( _macroName ), + lineInfo( _lineInfo ), + capturedExpression( _capturedExpression ), + resultDisposition( _resultDisposition ), + secondArg( _secondArg ) + {} + + AssertionResult::AssertionResult() {} + + AssertionResult::AssertionResult( AssertionInfo const& info, AssertionResultData const& data ) + : m_info( info ), + m_resultData( data ) + {} + + AssertionResult::~AssertionResult() {} + + // Result was a success + bool AssertionResult::succeeded() const { + return Catch::isOk( m_resultData.resultType ); + } + + // Result was a success, or failure is suppressed + bool AssertionResult::isOk() const { + return Catch::isOk( m_resultData.resultType ) || shouldSuppressFailure( m_info.resultDisposition ); + } + + ResultWas::OfType AssertionResult::getResultType() const { + return m_resultData.resultType; + } + + bool AssertionResult::hasExpression() const { + return m_info.capturedExpression[0] != 0; + } + + bool AssertionResult::hasMessage() const { + return !m_resultData.message.empty(); + } + + std::string capturedExpressionWithSecondArgument( char const * capturedExpression, char const * secondArg ) { + return (secondArg[0] == 0 || secondArg[0] == '"' && secondArg[1] == '"') + ? capturedExpression + : std::string(capturedExpression) + ", " + secondArg; + } + + std::string AssertionResult::getExpression() const { + if( isFalseTest( m_info.resultDisposition ) ) + return '!' + capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg); + else + return capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg); + } + std::string AssertionResult::getExpressionInMacro() const { + if( m_info.macroName[0] == 0 ) + return capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg); + else + return std::string(m_info.macroName) + "( " + capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg) + " )"; + } + + bool AssertionResult::hasExpandedExpression() const { + return hasExpression() && getExpandedExpression() != getExpression(); + } + + std::string AssertionResult::getExpandedExpression() const { + return m_resultData.reconstructExpression(); + } + + std::string AssertionResult::getMessage() const { + return m_resultData.message; + } + SourceLineInfo AssertionResult::getSourceInfo() const { + return m_info.lineInfo; + } + + std::string AssertionResult::getTestMacroName() const { + return m_info.macroName; + } + + void AssertionResult::discardDecomposedExpression() const { + m_resultData.decomposedExpression = CATCH_NULL; + } + + void AssertionResult::expandDecomposedExpression() const { + m_resultData.reconstructExpression(); + } + +} // end namespace Catch + +// #included from: catch_test_case_info.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED + +#include <cctype> + +namespace Catch { + + inline TestCaseInfo::SpecialProperties parseSpecialTag( std::string const& tag ) { + if( startsWith( tag, '.' ) || + tag == "hide" || + tag == "!hide" ) + return TestCaseInfo::IsHidden; + else if( tag == "!throws" ) + return TestCaseInfo::Throws; + else if( tag == "!shouldfail" ) + return TestCaseInfo::ShouldFail; + else if( tag == "!mayfail" ) + return TestCaseInfo::MayFail; + else if( tag == "!nonportable" ) + return TestCaseInfo::NonPortable; + else + return TestCaseInfo::None; + } + inline bool isReservedTag( std::string const& tag ) { + return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !std::isalnum( tag[0] ); + } + inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { + if( isReservedTag( tag ) ) { + std::ostringstream ss; + ss << Colour(Colour::Red) + << "Tag name [" << tag << "] not allowed.\n" + << "Tag names starting with non alpha-numeric characters are reserved\n" + << Colour(Colour::FileName) + << _lineInfo << '\n'; + throw std::runtime_error(ss.str()); + } + } + + TestCase makeTestCase( ITestCase* _testCase, + std::string const& _className, + std::string const& _name, + std::string const& _descOrTags, + SourceLineInfo const& _lineInfo ) + { + bool isHidden( startsWith( _name, "./" ) ); // Legacy support + + // Parse out tags + std::set<std::string> tags; + std::string desc, tag; + bool inTag = false; + for( std::size_t i = 0; i < _descOrTags.size(); ++i ) { + char c = _descOrTags[i]; + if( !inTag ) { + if( c == '[' ) + inTag = true; + else + desc += c; + } + else { + if( c == ']' ) { + TestCaseInfo::SpecialProperties prop = parseSpecialTag( tag ); + if( prop == TestCaseInfo::IsHidden ) + isHidden = true; + else if( prop == TestCaseInfo::None ) + enforceNotReservedTag( tag, _lineInfo ); + + tags.insert( tag ); + tag.clear(); + inTag = false; + } + else + tag += c; + } + } + if( isHidden ) { + tags.insert( "hide" ); + tags.insert( "." ); + } + + TestCaseInfo info( _name, _className, desc, tags, _lineInfo ); + return TestCase( _testCase, info ); + } + + void setTags( TestCaseInfo& testCaseInfo, std::set<std::string> const& tags ) + { + testCaseInfo.tags = tags; + testCaseInfo.lcaseTags.clear(); + + std::ostringstream oss; + for( std::set<std::string>::const_iterator it = tags.begin(), itEnd = tags.end(); it != itEnd; ++it ) { + oss << '[' << *it << ']'; + std::string lcaseTag = toLower( *it ); + testCaseInfo.properties = static_cast<TestCaseInfo::SpecialProperties>( testCaseInfo.properties | parseSpecialTag( lcaseTag ) ); + testCaseInfo.lcaseTags.insert( lcaseTag ); + } + testCaseInfo.tagsAsString = oss.str(); + } + + TestCaseInfo::TestCaseInfo( std::string const& _name, + std::string const& _className, + std::string const& _description, + std::set<std::string> const& _tags, + SourceLineInfo const& _lineInfo ) + : name( _name ), + className( _className ), + description( _description ), + lineInfo( _lineInfo ), + properties( None ) + { + setTags( *this, _tags ); + } + + TestCaseInfo::TestCaseInfo( TestCaseInfo const& other ) + : name( other.name ), + className( other.className ), + description( other.description ), + tags( other.tags ), + lcaseTags( other.lcaseTags ), + tagsAsString( other.tagsAsString ), + lineInfo( other.lineInfo ), + properties( other.properties ) + {} + + bool TestCaseInfo::isHidden() const { + return ( properties & IsHidden ) != 0; + } + bool TestCaseInfo::throws() const { + return ( properties & Throws ) != 0; + } + bool TestCaseInfo::okToFail() const { + return ( properties & (ShouldFail | MayFail ) ) != 0; + } + bool TestCaseInfo::expectedToFail() const { + return ( properties & (ShouldFail ) ) != 0; + } + + TestCase::TestCase( ITestCase* testCase, TestCaseInfo const& info ) : TestCaseInfo( info ), test( testCase ) {} + + TestCase::TestCase( TestCase const& other ) + : TestCaseInfo( other ), + test( other.test ) + {} + + TestCase TestCase::withName( std::string const& _newName ) const { + TestCase other( *this ); + other.name = _newName; + return other; + } + + void TestCase::swap( TestCase& other ) { + test.swap( other.test ); + name.swap( other.name ); + className.swap( other.className ); + description.swap( other.description ); + tags.swap( other.tags ); + lcaseTags.swap( other.lcaseTags ); + tagsAsString.swap( other.tagsAsString ); + std::swap( TestCaseInfo::properties, static_cast<TestCaseInfo&>( other ).properties ); + std::swap( lineInfo, other.lineInfo ); + } + + void TestCase::invoke() const { + test->invoke(); + } + + bool TestCase::operator == ( TestCase const& other ) const { + return test.get() == other.test.get() && + name == other.name && + className == other.className; + } + + bool TestCase::operator < ( TestCase const& other ) const { + return name < other.name; + } + TestCase& TestCase::operator = ( TestCase const& other ) { + TestCase temp( other ); + swap( temp ); + return *this; + } + + TestCaseInfo const& TestCase::getTestCaseInfo() const + { + return *this; + } + +} // end namespace Catch + +// #included from: catch_version.hpp +#define TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED + +namespace Catch { + + Version::Version + ( unsigned int _majorVersion, + unsigned int _minorVersion, + unsigned int _patchNumber, + char const * const _branchName, + unsigned int _buildNumber ) + : majorVersion( _majorVersion ), + minorVersion( _minorVersion ), + patchNumber( _patchNumber ), + branchName( _branchName ), + buildNumber( _buildNumber ) + {} + + std::ostream& operator << ( std::ostream& os, Version const& version ) { + os << version.majorVersion << '.' + << version.minorVersion << '.' + << version.patchNumber; + // branchName is never null -> 0th char is \0 if it is empty + if (version.branchName[0]) { + os << '-' << version.branchName + << '.' << version.buildNumber; + } + return os; + } + + inline Version libraryVersion() { + static Version version( 1, 9, 6, "", 0 ); + return version; + } + +} + +// #included from: catch_message.hpp +#define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED + +namespace Catch { + + MessageInfo::MessageInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + type( _type ), + sequence( ++globalCount ) + {} + + // This may need protecting if threading support is added + unsigned int MessageInfo::globalCount = 0; + + //////////////////////////////////////////////////////////////////////////// + + ScopedMessage::ScopedMessage( MessageBuilder const& builder ) + : m_info( builder.m_info ) + { + m_info.message = builder.m_stream.str(); + getResultCapture().pushScopedMessage( m_info ); + } + ScopedMessage::ScopedMessage( ScopedMessage const& other ) + : m_info( other.m_info ) + {} + + ScopedMessage::~ScopedMessage() { + if ( !std::uncaught_exception() ){ + getResultCapture().popScopedMessage(m_info); + } + } + +} // end namespace Catch + +// #included from: catch_legacy_reporter_adapter.hpp +#define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_HPP_INCLUDED + +// #included from: catch_legacy_reporter_adapter.h +#define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_H_INCLUDED + +namespace Catch +{ + // Deprecated + struct IReporter : IShared { + virtual ~IReporter(); + + virtual bool shouldRedirectStdout() const = 0; + + virtual void StartTesting() = 0; + virtual void EndTesting( Totals const& totals ) = 0; + virtual void StartGroup( std::string const& groupName ) = 0; + virtual void EndGroup( std::string const& groupName, Totals const& totals ) = 0; + virtual void StartTestCase( TestCaseInfo const& testInfo ) = 0; + virtual void EndTestCase( TestCaseInfo const& testInfo, Totals const& totals, std::string const& stdOut, std::string const& stdErr ) = 0; + virtual void StartSection( std::string const& sectionName, std::string const& description ) = 0; + virtual void EndSection( std::string const& sectionName, Counts const& assertions ) = 0; + virtual void NoAssertionsInSection( std::string const& sectionName ) = 0; + virtual void NoAssertionsInTestCase( std::string const& testName ) = 0; + virtual void Aborted() = 0; + virtual void Result( AssertionResult const& result ) = 0; + }; + + class LegacyReporterAdapter : public SharedImpl<IStreamingReporter> + { + public: + LegacyReporterAdapter( Ptr<IReporter> const& legacyReporter ); + virtual ~LegacyReporterAdapter(); + + virtual ReporterPreferences getPreferences() const; + virtual void noMatchingTestCases( std::string const& ); + virtual void testRunStarting( TestRunInfo const& ); + virtual void testGroupStarting( GroupInfo const& groupInfo ); + virtual void testCaseStarting( TestCaseInfo const& testInfo ); + virtual void sectionStarting( SectionInfo const& sectionInfo ); + virtual void assertionStarting( AssertionInfo const& ); + virtual bool assertionEnded( AssertionStats const& assertionStats ); + virtual void sectionEnded( SectionStats const& sectionStats ); + virtual void testCaseEnded( TestCaseStats const& testCaseStats ); + virtual void testGroupEnded( TestGroupStats const& testGroupStats ); + virtual void testRunEnded( TestRunStats const& testRunStats ); + virtual void skipTest( TestCaseInfo const& ); + + private: + Ptr<IReporter> m_legacyReporter; + }; +} + +namespace Catch +{ + LegacyReporterAdapter::LegacyReporterAdapter( Ptr<IReporter> const& legacyReporter ) + : m_legacyReporter( legacyReporter ) + {} + LegacyReporterAdapter::~LegacyReporterAdapter() {} + + ReporterPreferences LegacyReporterAdapter::getPreferences() const { + ReporterPreferences prefs; + prefs.shouldRedirectStdOut = m_legacyReporter->shouldRedirectStdout(); + return prefs; + } + + void LegacyReporterAdapter::noMatchingTestCases( std::string const& ) {} + void LegacyReporterAdapter::testRunStarting( TestRunInfo const& ) { + m_legacyReporter->StartTesting(); + } + void LegacyReporterAdapter::testGroupStarting( GroupInfo const& groupInfo ) { + m_legacyReporter->StartGroup( groupInfo.name ); + } + void LegacyReporterAdapter::testCaseStarting( TestCaseInfo const& testInfo ) { + m_legacyReporter->StartTestCase( testInfo ); + } + void LegacyReporterAdapter::sectionStarting( SectionInfo const& sectionInfo ) { + m_legacyReporter->StartSection( sectionInfo.name, sectionInfo.description ); + } + void LegacyReporterAdapter::assertionStarting( AssertionInfo const& ) { + // Not on legacy interface + } + + bool LegacyReporterAdapter::assertionEnded( AssertionStats const& assertionStats ) { + if( assertionStats.assertionResult.getResultType() != ResultWas::Ok ) { + for( std::vector<MessageInfo>::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); + it != itEnd; + ++it ) { + if( it->type == ResultWas::Info ) { + ResultBuilder rb( it->macroName.c_str(), it->lineInfo, "", ResultDisposition::Normal ); + rb << it->message; + rb.setResultType( ResultWas::Info ); + AssertionResult result = rb.build(); + m_legacyReporter->Result( result ); + } + } + } + m_legacyReporter->Result( assertionStats.assertionResult ); + return true; + } + void LegacyReporterAdapter::sectionEnded( SectionStats const& sectionStats ) { + if( sectionStats.missingAssertions ) + m_legacyReporter->NoAssertionsInSection( sectionStats.sectionInfo.name ); + m_legacyReporter->EndSection( sectionStats.sectionInfo.name, sectionStats.assertions ); + } + void LegacyReporterAdapter::testCaseEnded( TestCaseStats const& testCaseStats ) { + m_legacyReporter->EndTestCase + ( testCaseStats.testInfo, + testCaseStats.totals, + testCaseStats.stdOut, + testCaseStats.stdErr ); + } + void LegacyReporterAdapter::testGroupEnded( TestGroupStats const& testGroupStats ) { + if( testGroupStats.aborting ) + m_legacyReporter->Aborted(); + m_legacyReporter->EndGroup( testGroupStats.groupInfo.name, testGroupStats.totals ); + } + void LegacyReporterAdapter::testRunEnded( TestRunStats const& testRunStats ) { + m_legacyReporter->EndTesting( testRunStats.totals ); + } + void LegacyReporterAdapter::skipTest( TestCaseInfo const& ) { + } +} + +// #included from: catch_timer.hpp + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" +#endif + +#ifdef CATCH_PLATFORM_WINDOWS + +#else + +#include <sys/time.h> + +#endif + +namespace Catch { + + namespace { +#ifdef CATCH_PLATFORM_WINDOWS + UInt64 getCurrentTicks() { + static UInt64 hz=0, hzo=0; + if (!hz) { + QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) ); + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) ); + } + UInt64 t; + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) ); + return ((t-hzo)*1000000)/hz; + } +#else + UInt64 getCurrentTicks() { + timeval t; + gettimeofday(&t,CATCH_NULL); + return static_cast<UInt64>( t.tv_sec ) * 1000000ull + static_cast<UInt64>( t.tv_usec ); + } +#endif + } + + void Timer::start() { + m_ticks = getCurrentTicks(); + } + unsigned int Timer::getElapsedMicroseconds() const { + return static_cast<unsigned int>(getCurrentTicks() - m_ticks); + } + unsigned int Timer::getElapsedMilliseconds() const { + return static_cast<unsigned int>(getElapsedMicroseconds()/1000); + } + double Timer::getElapsedSeconds() const { + return getElapsedMicroseconds()/1000000.0; + } + +} // namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif +// #included from: catch_common.hpp +#define TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED + +#include <cstring> +#include <cctype> + +namespace Catch { + + bool startsWith( std::string const& s, std::string const& prefix ) { + return s.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), s.begin()); + } + bool startsWith( std::string const& s, char prefix ) { + return !s.empty() && s[0] == prefix; + } + bool endsWith( std::string const& s, std::string const& suffix ) { + return s.size() >= suffix.size() && std::equal(suffix.rbegin(), suffix.rend(), s.rbegin()); + } + bool endsWith( std::string const& s, char suffix ) { + return !s.empty() && s[s.size()-1] == suffix; + } + bool contains( std::string const& s, std::string const& infix ) { + return s.find( infix ) != std::string::npos; + } + char toLowerCh(char c) { + return static_cast<char>( std::tolower( c ) ); + } + void toLowerInPlace( std::string& s ) { + std::transform( s.begin(), s.end(), s.begin(), toLowerCh ); + } + std::string toLower( std::string const& s ) { + std::string lc = s; + toLowerInPlace( lc ); + return lc; + } + std::string trim( std::string const& str ) { + static char const* whitespaceChars = "\n\r\t "; + std::string::size_type start = str.find_first_not_of( whitespaceChars ); + std::string::size_type end = str.find_last_not_of( whitespaceChars ); + + return start != std::string::npos ? str.substr( start, 1+end-start ) : std::string(); + } + + bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) { + bool replaced = false; + std::size_t i = str.find( replaceThis ); + while( i != std::string::npos ) { + replaced = true; + str = str.substr( 0, i ) + withThis + str.substr( i+replaceThis.size() ); + if( i < str.size()-withThis.size() ) + i = str.find( replaceThis, i+withThis.size() ); + else + i = std::string::npos; + } + return replaced; + } + + pluralise::pluralise( std::size_t count, std::string const& label ) + : m_count( count ), + m_label( label ) + {} + + std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ) { + os << pluraliser.m_count << ' ' << pluraliser.m_label; + if( pluraliser.m_count != 1 ) + os << 's'; + return os; + } + + SourceLineInfo::SourceLineInfo() : file(""), line( 0 ){} + SourceLineInfo::SourceLineInfo( char const* _file, std::size_t _line ) + : file( _file ), + line( _line ) + {} + bool SourceLineInfo::empty() const { + return file[0] == '\0'; + } + bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const { + return line == other.line && (file == other.file || std::strcmp(file, other.file) == 0); + } + bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const { + return line < other.line || ( line == other.line && (std::strcmp(file, other.file) < 0)); + } + + void seedRng( IConfig const& config ) { + if( config.rngSeed() != 0 ) + std::srand( config.rngSeed() ); + } + unsigned int rngSeed() { + return getCurrentContext().getConfig()->rngSeed(); + } + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ) { +#ifndef __GNUG__ + os << info.file << '(' << info.line << ')'; +#else + os << info.file << ':' << info.line; +#endif + return os; + } + + void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ) { + std::ostringstream oss; + oss << locationInfo << ": Internal Catch error: '" << message << '\''; + if( alwaysTrue() ) + throw std::logic_error( oss.str() ); + } +} + +// #included from: catch_section.hpp +#define TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED + +namespace Catch { + + SectionInfo::SectionInfo + ( SourceLineInfo const& _lineInfo, + std::string const& _name, + std::string const& _description ) + : name( _name ), + description( _description ), + lineInfo( _lineInfo ) + {} + + Section::Section( SectionInfo const& info ) + : m_info( info ), + m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) ) + { + m_timer.start(); + } + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4996) // std::uncaught_exception is deprecated in C++17 +#endif + Section::~Section() { + if( m_sectionIncluded ) { + SectionEndInfo endInfo( m_info, m_assertions, m_timer.getElapsedSeconds() ); + if( std::uncaught_exception() ) + getResultCapture().sectionEndedEarly( endInfo ); + else + getResultCapture().sectionEnded( endInfo ); + } + } +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + + // This indicates whether the section should be executed or not + Section::operator bool() const { + return m_sectionIncluded; + } + +} // end namespace Catch + +// #included from: catch_debugger.hpp +#define TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED + +#ifdef CATCH_PLATFORM_MAC + + #include <assert.h> + #include <stdbool.h> + #include <sys/types.h> + #include <unistd.h> + #include <sys/sysctl.h> + + namespace Catch{ + + // The following function is taken directly from the following technical note: + // http://developer.apple.com/library/mac/#qa/qa2004/qa1361.html + + // Returns true if the current process is being debugged (either + // running under the debugger or has a debugger attached post facto). + bool isDebuggerActive(){ + + int mib[4]; + struct kinfo_proc info; + size_t size; + + // Initialize the flags so that, if sysctl fails for some bizarre + // reason, we get a predictable result. + + info.kp_proc.p_flag = 0; + + // Initialize mib, which tells sysctl the info we want, in this case + // we're looking for information about a specific process ID. + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + + // Call sysctl. + + size = sizeof(info); + if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, CATCH_NULL, 0) != 0 ) { + Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl; + return false; + } + + // We're being debugged if the P_TRACED flag is set. + + return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); + } + } // namespace Catch + +#elif defined(CATCH_PLATFORM_LINUX) + #include <fstream> + #include <string> + + namespace Catch{ + // The standard POSIX way of detecting a debugger is to attempt to + // ptrace() the process, but this needs to be done from a child and not + // this process itself to still allow attaching to this process later + // if wanted, so is rather heavy. Under Linux we have the PID of the + // "debugger" (which doesn't need to be gdb, of course, it could also + // be strace, for example) in /proc/$PID/status, so just get it from + // there instead. + bool isDebuggerActive(){ + // Libstdc++ has a bug, where std::ifstream sets errno to 0 + // This way our users can properly assert over errno values + ErrnoGuard guard; + std::ifstream in("/proc/self/status"); + for( std::string line; std::getline(in, line); ) { + static const int PREFIX_LEN = 11; + if( line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0 ) { + // We're traced if the PID is not 0 and no other PID starts + // with 0 digit, so it's enough to check for just a single + // character. + return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0'; + } + } + + return false; + } + } // namespace Catch +#elif defined(_MSC_VER) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#elif defined(__MINGW32__) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#else + namespace Catch { + inline bool isDebuggerActive() { return false; } + } +#endif // Platform + +#ifdef CATCH_PLATFORM_WINDOWS + + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + ::OutputDebugStringA( text.c_str() ); + } + } +#else + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + // !TBD: Need a version for Mac/ XCode and other IDEs + Catch::cout() << text; + } + } +#endif // Platform + +// #included from: catch_tostring.hpp +#define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED + +namespace Catch { + +namespace Detail { + + const std::string unprintableString = "{?}"; + + namespace { + const int hexThreshold = 255; + + struct Endianness { + enum Arch { Big, Little }; + + static Arch which() { + union _{ + int asInt; + char asChar[sizeof (int)]; + } u; + + u.asInt = 1; + return ( u.asChar[sizeof(int)-1] == 1 ) ? Big : Little; + } + }; + } + + std::string rawMemoryToString( const void *object, std::size_t size ) + { + // Reverse order for little endian architectures + int i = 0, end = static_cast<int>( size ), inc = 1; + if( Endianness::which() == Endianness::Little ) { + i = end-1; + end = inc = -1; + } + + unsigned char const *bytes = static_cast<unsigned char const *>(object); + std::ostringstream os; + os << "0x" << std::setfill('0') << std::hex; + for( ; i != end; i += inc ) + os << std::setw(2) << static_cast<unsigned>(bytes[i]); + return os.str(); + } +} + +std::string toString( std::string const& value ) { + std::string s = value; + if( getCurrentContext().getConfig()->showInvisibles() ) { + for(size_t i = 0; i < s.size(); ++i ) { + std::string subs; + switch( s[i] ) { + case '\n': subs = "\\n"; break; + case '\t': subs = "\\t"; break; + default: break; + } + if( !subs.empty() ) { + s = s.substr( 0, i ) + subs + s.substr( i+1 ); + ++i; + } + } + } + return '"' + s + '"'; +} +std::string toString( std::wstring const& value ) { + + std::string s; + s.reserve( value.size() ); + for(size_t i = 0; i < value.size(); ++i ) + s += value[i] <= 0xff ? static_cast<char>( value[i] ) : '?'; + return Catch::toString( s ); +} + +std::string toString( const char* const value ) { + return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" ); +} + +std::string toString( char* const value ) { + return Catch::toString( static_cast<const char*>( value ) ); +} + +std::string toString( const wchar_t* const value ) +{ + return value ? Catch::toString( std::wstring(value) ) : std::string( "{null string}" ); +} + +std::string toString( wchar_t* const value ) +{ + return Catch::toString( static_cast<const wchar_t*>( value ) ); +} + +std::string toString( int value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ')'; + return oss.str(); +} + +std::string toString( unsigned long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ')'; + return oss.str(); +} + +std::string toString( unsigned int value ) { + return Catch::toString( static_cast<unsigned long>( value ) ); +} + +template<typename T> +std::string fpToString( T value, int precision ) { + std::ostringstream oss; + oss << std::setprecision( precision ) + << std::fixed + << value; + std::string d = oss.str(); + std::size_t i = d.find_last_not_of( '0' ); + if( i != std::string::npos && i != d.size()-1 ) { + if( d[i] == '.' ) + i++; + d = d.substr( 0, i+1 ); + } + return d; +} + +std::string toString( const double value ) { + return fpToString( value, 10 ); +} +std::string toString( const float value ) { + return fpToString( value, 5 ) + 'f'; +} + +std::string toString( bool value ) { + return value ? "true" : "false"; +} + +std::string toString( char value ) { + if ( value == '\r' ) + return "'\\r'"; + if ( value == '\f' ) + return "'\\f'"; + if ( value == '\n' ) + return "'\\n'"; + if ( value == '\t' ) + return "'\\t'"; + if ( '\0' <= value && value < ' ' ) + return toString( static_cast<unsigned int>( value ) ); + char chstr[] = "' '"; + chstr[1] = value; + return chstr; +} + +std::string toString( signed char value ) { + return toString( static_cast<char>( value ) ); +} + +std::string toString( unsigned char value ) { + return toString( static_cast<char>( value ) ); +} + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG +std::string toString( long long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ')'; + return oss.str(); +} +std::string toString( unsigned long long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ')'; + return oss.str(); +} +#endif + +#ifdef CATCH_CONFIG_CPP11_NULLPTR +std::string toString( std::nullptr_t ) { + return "nullptr"; +} +#endif + +#ifdef __OBJC__ + std::string toString( NSString const * const& nsstring ) { + if( !nsstring ) + return "nil"; + return "@" + toString([nsstring UTF8String]); + } + std::string toString( NSString * CATCH_ARC_STRONG & nsstring ) { + if( !nsstring ) + return "nil"; + return "@" + toString([nsstring UTF8String]); + } + std::string toString( NSObject* const& nsObject ) { + return toString( [nsObject description] ); + } +#endif + +} // end namespace Catch + +// #included from: catch_result_builder.hpp +#define TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED + +namespace Catch { + + ResultBuilder::ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg ) + : m_assertionInfo( macroName, lineInfo, capturedExpression, resultDisposition, secondArg ), + m_shouldDebugBreak( false ), + m_shouldThrow( false ), + m_guardException( false ) + { + m_stream().oss.str(""); + } + + ResultBuilder::~ResultBuilder() { +#if defined(CATCH_CONFIG_FAST_COMPILE) + if ( m_guardException ) { + m_stream().oss << "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE"; + captureResult( ResultWas::ThrewException ); + getCurrentContext().getResultCapture()->exceptionEarlyReported(); + } +#endif + } + + ResultBuilder& ResultBuilder::setResultType( ResultWas::OfType result ) { + m_data.resultType = result; + return *this; + } + ResultBuilder& ResultBuilder::setResultType( bool result ) { + m_data.resultType = result ? ResultWas::Ok : ResultWas::ExpressionFailed; + return *this; + } + + void ResultBuilder::endExpression( DecomposedExpression const& expr ) { + AssertionResult result = build( expr ); + handleResult( result ); + } + + void ResultBuilder::useActiveException( ResultDisposition::Flags resultDisposition ) { + m_assertionInfo.resultDisposition = resultDisposition; + m_stream().oss << Catch::translateActiveException(); + captureResult( ResultWas::ThrewException ); + } + + void ResultBuilder::captureResult( ResultWas::OfType resultType ) { + setResultType( resultType ); + captureExpression(); + } + + void ResultBuilder::captureExpectedException( std::string const& expectedMessage ) { + if( expectedMessage.empty() ) + captureExpectedException( Matchers::Impl::MatchAllOf<std::string>() ); + else + captureExpectedException( Matchers::Equals( expectedMessage ) ); + } + + void ResultBuilder::captureExpectedException( Matchers::Impl::MatcherBase<std::string> const& matcher ) { + + assert( !isFalseTest( m_assertionInfo.resultDisposition ) ); + AssertionResultData data = m_data; + data.resultType = ResultWas::Ok; + data.reconstructedExpression = capturedExpressionWithSecondArgument(m_assertionInfo.capturedExpression, m_assertionInfo.secondArg); + + std::string actualMessage = Catch::translateActiveException(); + if( !matcher.match( actualMessage ) ) { + data.resultType = ResultWas::ExpressionFailed; + data.reconstructedExpression = actualMessage; + } + AssertionResult result( m_assertionInfo, data ); + handleResult( result ); + } + + void ResultBuilder::captureExpression() { + AssertionResult result = build(); + handleResult( result ); + } + + void ResultBuilder::handleResult( AssertionResult const& result ) + { + getResultCapture().assertionEnded( result ); + + if( !result.isOk() ) { + if( getCurrentContext().getConfig()->shouldDebugBreak() ) + m_shouldDebugBreak = true; + if( getCurrentContext().getRunner()->aborting() || (m_assertionInfo.resultDisposition & ResultDisposition::Normal) ) + m_shouldThrow = true; + } + } + + void ResultBuilder::react() { +#if defined(CATCH_CONFIG_FAST_COMPILE) + if (m_shouldDebugBreak) { + /////////////////////////////////////////////////////////////////// + // To inspect the state during test, you need to go one level up the callstack + // To go back to the test and change execution, jump over the throw statement + /////////////////////////////////////////////////////////////////// + CATCH_BREAK_INTO_DEBUGGER(); + } +#endif + if( m_shouldThrow ) + throw Catch::TestFailureException(); + } + + bool ResultBuilder::shouldDebugBreak() const { return m_shouldDebugBreak; } + bool ResultBuilder::allowThrows() const { return getCurrentContext().getConfig()->allowThrows(); } + + AssertionResult ResultBuilder::build() const + { + return build( *this ); + } + + // CAVEAT: The returned AssertionResult stores a pointer to the argument expr, + // a temporary DecomposedExpression, which in turn holds references to + // operands, possibly temporary as well. + // It should immediately be passed to handleResult; if the expression + // needs to be reported, its string expansion must be composed before + // the temporaries are destroyed. + AssertionResult ResultBuilder::build( DecomposedExpression const& expr ) const + { + assert( m_data.resultType != ResultWas::Unknown ); + AssertionResultData data = m_data; + + // Flip bool results if FalseTest flag is set + if( isFalseTest( m_assertionInfo.resultDisposition ) ) { + data.negate( expr.isBinaryExpression() ); + } + + data.message = m_stream().oss.str(); + data.decomposedExpression = &expr; // for lazy reconstruction + return AssertionResult( m_assertionInfo, data ); + } + + void ResultBuilder::reconstructExpression( std::string& dest ) const { + dest = capturedExpressionWithSecondArgument(m_assertionInfo.capturedExpression, m_assertionInfo.secondArg); + } + + void ResultBuilder::setExceptionGuard() { + m_guardException = true; + } + void ResultBuilder::unsetExceptionGuard() { + m_guardException = false; + } + +} // end namespace Catch + +// #included from: catch_tag_alias_registry.hpp +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED + +namespace Catch { + + TagAliasRegistry::~TagAliasRegistry() {} + + Option<TagAlias> TagAliasRegistry::find( std::string const& alias ) const { + std::map<std::string, TagAlias>::const_iterator it = m_registry.find( alias ); + if( it != m_registry.end() ) + return it->second; + else + return Option<TagAlias>(); + } + + std::string TagAliasRegistry::expandAliases( std::string const& unexpandedTestSpec ) const { + std::string expandedTestSpec = unexpandedTestSpec; + for( std::map<std::string, TagAlias>::const_iterator it = m_registry.begin(), itEnd = m_registry.end(); + it != itEnd; + ++it ) { + std::size_t pos = expandedTestSpec.find( it->first ); + if( pos != std::string::npos ) { + expandedTestSpec = expandedTestSpec.substr( 0, pos ) + + it->second.tag + + expandedTestSpec.substr( pos + it->first.size() ); + } + } + return expandedTestSpec; + } + + void TagAliasRegistry::add( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) { + + if( !startsWith( alias, "[@" ) || !endsWith( alias, ']' ) ) { + std::ostringstream oss; + oss << Colour( Colour::Red ) + << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" + << Colour( Colour::FileName ) + << lineInfo << '\n'; + throw std::domain_error( oss.str().c_str() ); + } + if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { + std::ostringstream oss; + oss << Colour( Colour::Red ) + << "error: tag alias, \"" << alias << "\" already registered.\n" + << "\tFirst seen at " + << Colour( Colour::Red ) << find(alias)->lineInfo << '\n' + << Colour( Colour::Red ) << "\tRedefined at " + << Colour( Colour::FileName) << lineInfo << '\n'; + throw std::domain_error( oss.str().c_str() ); + } + } + + ITagAliasRegistry::~ITagAliasRegistry() {} + + ITagAliasRegistry const& ITagAliasRegistry::get() { + return getRegistryHub().getTagAliasRegistry(); + } + + RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + getMutableRegistryHub().registerTagAlias( alias, tag, lineInfo ); + } + +} // end namespace Catch + +// #included from: catch_matchers_string.hpp + +namespace Catch { +namespace Matchers { + + namespace StdString { + + CasedString::CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_str( adjustString( str ) ) + {} + std::string CasedString::adjustString( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No + ? toLower( str ) + : str; + } + std::string CasedString::caseSensitivitySuffix() const { + return m_caseSensitivity == CaseSensitive::No + ? " (case insensitive)" + : std::string(); + } + + StringMatcherBase::StringMatcherBase( std::string const& operation, CasedString const& comparator ) + : m_comparator( comparator ), + m_operation( operation ) { + } + + std::string StringMatcherBase::describe() const { + std::string description; + description.reserve(5 + m_operation.size() + m_comparator.m_str.size() + + m_comparator.caseSensitivitySuffix().size()); + description += m_operation; + description += ": \""; + description += m_comparator.m_str; + description += "\""; + description += m_comparator.caseSensitivitySuffix(); + return description; + } + + EqualsMatcher::EqualsMatcher( CasedString const& comparator ) : StringMatcherBase( "equals", comparator ) {} + + bool EqualsMatcher::match( std::string const& source ) const { + return m_comparator.adjustString( source ) == m_comparator.m_str; + } + + ContainsMatcher::ContainsMatcher( CasedString const& comparator ) : StringMatcherBase( "contains", comparator ) {} + + bool ContainsMatcher::match( std::string const& source ) const { + return contains( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + StartsWithMatcher::StartsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "starts with", comparator ) {} + + bool StartsWithMatcher::match( std::string const& source ) const { + return startsWith( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + EndsWithMatcher::EndsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "ends with", comparator ) {} + + bool EndsWithMatcher::match( std::string const& source ) const { + return endsWith( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + } // namespace StdString + + StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity ) { + return StdString::EqualsMatcher( StdString::CasedString( str, caseSensitivity) ); + } + StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity ) { + return StdString::ContainsMatcher( StdString::CasedString( str, caseSensitivity) ); + } + StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity ) { + return StdString::EndsWithMatcher( StdString::CasedString( str, caseSensitivity) ); + } + StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity ) { + return StdString::StartsWithMatcher( StdString::CasedString( str, caseSensitivity) ); + } + +} // namespace Matchers +} // namespace Catch +// #included from: ../reporters/catch_reporter_multi.hpp +#define TWOBLUECUBES_CATCH_REPORTER_MULTI_HPP_INCLUDED + +namespace Catch { + +class MultipleReporters : public SharedImpl<IStreamingReporter> { + typedef std::vector<Ptr<IStreamingReporter> > Reporters; + Reporters m_reporters; + +public: + void add( Ptr<IStreamingReporter> const& reporter ) { + m_reporters.push_back( reporter ); + } + +public: // IStreamingReporter + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporters[0]->getPreferences(); + } + + virtual void noMatchingTestCases( std::string const& spec ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->noMatchingTestCases( spec ); + } + + virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testRunStarting( testRunInfo ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testGroupStarting( groupInfo ); + } + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testCaseStarting( testInfo ); + } + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->sectionStarting( sectionInfo ); + } + + virtual void assertionStarting( AssertionInfo const& assertionInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->assertionStarting( assertionInfo ); + } + + // The return value indicates if the messages buffer should be cleared: + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + bool clearBuffer = false; + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + clearBuffer |= (*it)->assertionEnded( assertionStats ); + return clearBuffer; + } + + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->sectionEnded( sectionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testCaseEnded( testCaseStats ); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testGroupEnded( testGroupStats ); + } + + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testRunEnded( testRunStats ); + } + + virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->skipTest( testInfo ); + } + + virtual MultipleReporters* tryAsMulti() CATCH_OVERRIDE { + return this; + } + +}; + +Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& existingReporter, Ptr<IStreamingReporter> const& additionalReporter ) { + Ptr<IStreamingReporter> resultingReporter; + + if( existingReporter ) { + MultipleReporters* multi = existingReporter->tryAsMulti(); + if( !multi ) { + multi = new MultipleReporters; + resultingReporter = Ptr<IStreamingReporter>( multi ); + if( existingReporter ) + multi->add( existingReporter ); + } + else + resultingReporter = existingReporter; + multi->add( additionalReporter ); + } + else + resultingReporter = additionalReporter; + + return resultingReporter; +} + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_xml.hpp +#define TWOBLUECUBES_CATCH_REPORTER_XML_HPP_INCLUDED + +// #included from: catch_reporter_bases.hpp +#define TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED + +#include <cstring> +#include <cfloat> +#include <cstdio> +#include <assert.h> + +namespace Catch { + + namespace { + // Because formatting using c++ streams is stateful, drop down to C is required + // Alternatively we could use stringstream, but its performance is... not good. + std::string getFormattedDuration( double duration ) { + // Max exponent + 1 is required to represent the whole part + // + 1 for decimal point + // + 3 for the 3 decimal places + // + 1 for null terminator + const size_t maxDoubleSize = DBL_MAX_10_EXP + 1 + 1 + 3 + 1; + char buffer[maxDoubleSize]; + + // Save previous errno, to prevent sprintf from overwriting it + ErrnoGuard guard; +#ifdef _MSC_VER + sprintf_s(buffer, "%.3f", duration); +#else + sprintf(buffer, "%.3f", duration); +#endif + return std::string(buffer); + } + } + + struct StreamingReporterBase : SharedImpl<IStreamingReporter> { + + StreamingReporterBase( ReporterConfig const& _config ) + : m_config( _config.fullConfig() ), + stream( _config.stream() ) + { + m_reporterPrefs.shouldRedirectStdOut = false; + } + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporterPrefs; + } + + virtual ~StreamingReporterBase() CATCH_OVERRIDE; + + virtual void noMatchingTestCases( std::string const& ) CATCH_OVERRIDE {} + + virtual void testRunStarting( TestRunInfo const& _testRunInfo ) CATCH_OVERRIDE { + currentTestRunInfo = _testRunInfo; + } + virtual void testGroupStarting( GroupInfo const& _groupInfo ) CATCH_OVERRIDE { + currentGroupInfo = _groupInfo; + } + + virtual void testCaseStarting( TestCaseInfo const& _testInfo ) CATCH_OVERRIDE { + currentTestCaseInfo = _testInfo; + } + virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATCH_OVERRIDE { + m_sectionStack.push_back( _sectionInfo ); + } + + virtual void sectionEnded( SectionStats const& /* _sectionStats */ ) CATCH_OVERRIDE { + m_sectionStack.pop_back(); + } + virtual void testCaseEnded( TestCaseStats const& /* _testCaseStats */ ) CATCH_OVERRIDE { + currentTestCaseInfo.reset(); + } + virtual void testGroupEnded( TestGroupStats const& /* _testGroupStats */ ) CATCH_OVERRIDE { + currentGroupInfo.reset(); + } + virtual void testRunEnded( TestRunStats const& /* _testRunStats */ ) CATCH_OVERRIDE { + currentTestCaseInfo.reset(); + currentGroupInfo.reset(); + currentTestRunInfo.reset(); + } + + virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE { + // Don't do anything with this by default. + // It can optionally be overridden in the derived class. + } + + Ptr<IConfig const> m_config; + std::ostream& stream; + + LazyStat<TestRunInfo> currentTestRunInfo; + LazyStat<GroupInfo> currentGroupInfo; + LazyStat<TestCaseInfo> currentTestCaseInfo; + + std::vector<SectionInfo> m_sectionStack; + ReporterPreferences m_reporterPrefs; + }; + + struct CumulativeReporterBase : SharedImpl<IStreamingReporter> { + template<typename T, typename ChildNodeT> + struct Node : SharedImpl<> { + explicit Node( T const& _value ) : value( _value ) {} + virtual ~Node() {} + + typedef std::vector<Ptr<ChildNodeT> > ChildNodes; + T value; + ChildNodes children; + }; + struct SectionNode : SharedImpl<> { + explicit SectionNode( SectionStats const& _stats ) : stats( _stats ) {} + virtual ~SectionNode(); + + bool operator == ( SectionNode const& other ) const { + return stats.sectionInfo.lineInfo == other.stats.sectionInfo.lineInfo; + } + bool operator == ( Ptr<SectionNode> const& other ) const { + return operator==( *other ); + } + + SectionStats stats; + typedef std::vector<Ptr<SectionNode> > ChildSections; + typedef std::vector<AssertionStats> Assertions; + ChildSections childSections; + Assertions assertions; + std::string stdOut; + std::string stdErr; + }; + + struct BySectionInfo { + BySectionInfo( SectionInfo const& other ) : m_other( other ) {} + BySectionInfo( BySectionInfo const& other ) : m_other( other.m_other ) {} + bool operator() ( Ptr<SectionNode> const& node ) const { + return node->stats.sectionInfo.lineInfo == m_other.lineInfo; + } + private: + void operator=( BySectionInfo const& ); + SectionInfo const& m_other; + }; + + typedef Node<TestCaseStats, SectionNode> TestCaseNode; + typedef Node<TestGroupStats, TestCaseNode> TestGroupNode; + typedef Node<TestRunStats, TestGroupNode> TestRunNode; + + CumulativeReporterBase( ReporterConfig const& _config ) + : m_config( _config.fullConfig() ), + stream( _config.stream() ) + { + m_reporterPrefs.shouldRedirectStdOut = false; + } + ~CumulativeReporterBase(); + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporterPrefs; + } + + virtual void testRunStarting( TestRunInfo const& ) CATCH_OVERRIDE {} + virtual void testGroupStarting( GroupInfo const& ) CATCH_OVERRIDE {} + + virtual void testCaseStarting( TestCaseInfo const& ) CATCH_OVERRIDE {} + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + SectionStats incompleteStats( sectionInfo, Counts(), 0, false ); + Ptr<SectionNode> node; + if( m_sectionStack.empty() ) { + if( !m_rootSection ) + m_rootSection = new SectionNode( incompleteStats ); + node = m_rootSection; + } + else { + SectionNode& parentNode = *m_sectionStack.back(); + SectionNode::ChildSections::const_iterator it = + std::find_if( parentNode.childSections.begin(), + parentNode.childSections.end(), + BySectionInfo( sectionInfo ) ); + if( it == parentNode.childSections.end() ) { + node = new SectionNode( incompleteStats ); + parentNode.childSections.push_back( node ); + } + else + node = *it; + } + m_sectionStack.push_back( node ); + m_deepestSection = node; + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE {} + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + assert( !m_sectionStack.empty() ); + SectionNode& sectionNode = *m_sectionStack.back(); + sectionNode.assertions.push_back( assertionStats ); + // AssertionResult holds a pointer to a temporary DecomposedExpression, + // which getExpandedExpression() calls to build the expression string. + // Our section stack copy of the assertionResult will likely outlive the + // temporary, so it must be expanded or discarded now to avoid calling + // a destroyed object later. + prepareExpandedExpression( sectionNode.assertions.back().assertionResult ); + return true; + } + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + assert( !m_sectionStack.empty() ); + SectionNode& node = *m_sectionStack.back(); + node.stats = sectionStats; + m_sectionStack.pop_back(); + } + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + Ptr<TestCaseNode> node = new TestCaseNode( testCaseStats ); + assert( m_sectionStack.size() == 0 ); + node->children.push_back( m_rootSection ); + m_testCases.push_back( node ); + m_rootSection.reset(); + + assert( m_deepestSection ); + m_deepestSection->stdOut = testCaseStats.stdOut; + m_deepestSection->stdErr = testCaseStats.stdErr; + } + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + Ptr<TestGroupNode> node = new TestGroupNode( testGroupStats ); + node->children.swap( m_testCases ); + m_testGroups.push_back( node ); + } + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + Ptr<TestRunNode> node = new TestRunNode( testRunStats ); + node->children.swap( m_testGroups ); + m_testRuns.push_back( node ); + testRunEndedCumulative(); + } + virtual void testRunEndedCumulative() = 0; + + virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {} + + virtual void prepareExpandedExpression( AssertionResult& result ) const { + if( result.isOk() ) + result.discardDecomposedExpression(); + else + result.expandDecomposedExpression(); + } + + Ptr<IConfig const> m_config; + std::ostream& stream; + std::vector<AssertionStats> m_assertions; + std::vector<std::vector<Ptr<SectionNode> > > m_sections; + std::vector<Ptr<TestCaseNode> > m_testCases; + std::vector<Ptr<TestGroupNode> > m_testGroups; + + std::vector<Ptr<TestRunNode> > m_testRuns; + + Ptr<SectionNode> m_rootSection; + Ptr<SectionNode> m_deepestSection; + std::vector<Ptr<SectionNode> > m_sectionStack; + ReporterPreferences m_reporterPrefs; + + }; + + template<char C> + char const* getLineOfChars() { + static char line[CATCH_CONFIG_CONSOLE_WIDTH] = {0}; + if( !*line ) { + std::memset( line, C, CATCH_CONFIG_CONSOLE_WIDTH-1 ); + line[CATCH_CONFIG_CONSOLE_WIDTH-1] = 0; + } + return line; + } + + struct TestEventListenerBase : StreamingReporterBase { + TestEventListenerBase( ReporterConfig const& _config ) + : StreamingReporterBase( _config ) + {} + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE {} + virtual bool assertionEnded( AssertionStats const& ) CATCH_OVERRIDE { + return false; + } + }; + +} // end namespace Catch + +// #included from: ../internal/catch_reporter_registrars.hpp +#define TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED + +namespace Catch { + + template<typename T> + class LegacyReporterRegistrar { + + class ReporterFactory : public IReporterFactory { + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new LegacyReporterAdapter( new T( config ) ); + } + + virtual std::string getDescription() const { + return T::getDescription(); + } + }; + + public: + + LegacyReporterRegistrar( std::string const& name ) { + getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); + } + }; + + template<typename T> + class ReporterRegistrar { + + class ReporterFactory : public SharedImpl<IReporterFactory> { + + // *** Please Note ***: + // - If you end up here looking at a compiler error because it's trying to register + // your custom reporter class be aware that the native reporter interface has changed + // to IStreamingReporter. The "legacy" interface, IReporter, is still supported via + // an adapter. Just use REGISTER_LEGACY_REPORTER to take advantage of the adapter. + // However please consider updating to the new interface as the old one is now + // deprecated and will probably be removed quite soon! + // Please contact me via github if you have any questions at all about this. + // In fact, ideally, please contact me anyway to let me know you've hit this - as I have + // no idea who is actually using custom reporters at all (possibly no-one!). + // The new interface is designed to minimise exposure to interface changes in the future. + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new T( config ); + } + + virtual std::string getDescription() const { + return T::getDescription(); + } + }; + + public: + + ReporterRegistrar( std::string const& name ) { + getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); + } + }; + + template<typename T> + class ListenerRegistrar { + + class ListenerFactory : public SharedImpl<IReporterFactory> { + + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new T( config ); + } + virtual std::string getDescription() const { + return std::string(); + } + }; + + public: + + ListenerRegistrar() { + getMutableRegistryHub().registerListener( new ListenerFactory() ); + } + }; +} + +#define INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) \ + namespace{ Catch::LegacyReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } + +#define INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) \ + namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } + +// Deprecated - use the form without INTERNAL_ +#define INTERNAL_CATCH_REGISTER_LISTENER( listenerType ) \ + namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } + +#define CATCH_REGISTER_LISTENER( listenerType ) \ + namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } + +// #included from: ../internal/catch_xmlwriter.hpp +#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED + +#include <sstream> +#include <string> +#include <vector> +#include <iomanip> + +namespace Catch { + + class XmlEncode { + public: + enum ForWhat { ForTextNodes, ForAttributes }; + + XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes ) + : m_str( str ), + m_forWhat( forWhat ) + {} + + void encodeTo( std::ostream& os ) const { + + // Apostrophe escaping not necessary if we always use " to write attributes + // (see: http://www.w3.org/TR/xml/#syntax) + + for( std::size_t i = 0; i < m_str.size(); ++ i ) { + char c = m_str[i]; + switch( c ) { + case '<': os << "<"; break; + case '&': os << "&"; break; + + case '>': + // See: http://www.w3.org/TR/xml/#syntax + if( i > 2 && m_str[i-1] == ']' && m_str[i-2] == ']' ) + os << ">"; + else + os << c; + break; + + case '\"': + if( m_forWhat == ForAttributes ) + os << """; + else + os << c; + break; + + default: + // Escape control chars - based on contribution by @espenalb in PR #465 and + // by @mrpi PR #588 + if ( ( c >= 0 && c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) { + // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 + os << "\\x" << std::uppercase << std::hex << std::setfill('0') << std::setw(2) + << static_cast<int>( c ); + } + else + os << c; + } + } + } + + friend std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) { + xmlEncode.encodeTo( os ); + return os; + } + + private: + std::string m_str; + ForWhat m_forWhat; + }; + + class XmlWriter { + public: + + class ScopedElement { + public: + ScopedElement( XmlWriter* writer ) + : m_writer( writer ) + {} + + ScopedElement( ScopedElement const& other ) + : m_writer( other.m_writer ){ + other.m_writer = CATCH_NULL; + } + + ~ScopedElement() { + if( m_writer ) + m_writer->endElement(); + } + + ScopedElement& writeText( std::string const& text, bool indent = true ) { + m_writer->writeText( text, indent ); + return *this; + } + + template<typename T> + ScopedElement& writeAttribute( std::string const& name, T const& attribute ) { + m_writer->writeAttribute( name, attribute ); + return *this; + } + + private: + mutable XmlWriter* m_writer; + }; + + XmlWriter() + : m_tagIsOpen( false ), + m_needsNewline( false ), + m_os( Catch::cout() ) + { + writeDeclaration(); + } + + XmlWriter( std::ostream& os ) + : m_tagIsOpen( false ), + m_needsNewline( false ), + m_os( os ) + { + writeDeclaration(); + } + + ~XmlWriter() { + while( !m_tags.empty() ) + endElement(); + } + + XmlWriter& startElement( std::string const& name ) { + ensureTagClosed(); + newlineIfNecessary(); + m_os << m_indent << '<' << name; + m_tags.push_back( name ); + m_indent += " "; + m_tagIsOpen = true; + return *this; + } + + ScopedElement scopedElement( std::string const& name ) { + ScopedElement scoped( this ); + startElement( name ); + return scoped; + } + + XmlWriter& endElement() { + newlineIfNecessary(); + m_indent = m_indent.substr( 0, m_indent.size()-2 ); + if( m_tagIsOpen ) { + m_os << "/>"; + m_tagIsOpen = false; + } + else { + m_os << m_indent << "</" << m_tags.back() << ">"; + } + m_os << std::endl; + m_tags.pop_back(); + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { + if( !name.empty() && !attribute.empty() ) + m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, bool attribute ) { + m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"'; + return *this; + } + + template<typename T> + XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { + std::ostringstream oss; + oss << attribute; + return writeAttribute( name, oss.str() ); + } + + XmlWriter& writeText( std::string const& text, bool indent = true ) { + if( !text.empty() ){ + bool tagWasOpen = m_tagIsOpen; + ensureTagClosed(); + if( tagWasOpen && indent ) + m_os << m_indent; + m_os << XmlEncode( text ); + m_needsNewline = true; + } + return *this; + } + + XmlWriter& writeComment( std::string const& text ) { + ensureTagClosed(); + m_os << m_indent << "<!--" << text << "-->"; + m_needsNewline = true; + return *this; + } + + void writeStylesheetRef( std::string const& url ) { + m_os << "<?xml-stylesheet type=\"text/xsl\" href=\"" << url << "\"?>\n"; + } + + XmlWriter& writeBlankLine() { + ensureTagClosed(); + m_os << '\n'; + return *this; + } + + void ensureTagClosed() { + if( m_tagIsOpen ) { + m_os << ">" << std::endl; + m_tagIsOpen = false; + } + } + + private: + XmlWriter( XmlWriter const& ); + void operator=( XmlWriter const& ); + + void writeDeclaration() { + m_os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + } + + void newlineIfNecessary() { + if( m_needsNewline ) { + m_os << std::endl; + m_needsNewline = false; + } + } + + bool m_tagIsOpen; + bool m_needsNewline; + std::vector<std::string> m_tags; + std::string m_indent; + std::ostream& m_os; + }; + +} + +namespace Catch { + class XmlReporter : public StreamingReporterBase { + public: + XmlReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ), + m_xml(_config.stream()), + m_sectionDepth( 0 ) + { + m_reporterPrefs.shouldRedirectStdOut = true; + } + + virtual ~XmlReporter() CATCH_OVERRIDE; + + static std::string getDescription() { + return "Reports test results as an XML document"; + } + + virtual std::string getStylesheetRef() const { + return std::string(); + } + + void writeSourceInfo( SourceLineInfo const& sourceInfo ) { + m_xml + .writeAttribute( "filename", sourceInfo.file ) + .writeAttribute( "line", sourceInfo.line ); + } + + public: // StreamingReporterBase + + virtual void noMatchingTestCases( std::string const& s ) CATCH_OVERRIDE { + StreamingReporterBase::noMatchingTestCases( s ); + } + + virtual void testRunStarting( TestRunInfo const& testInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testRunStarting( testInfo ); + std::string stylesheetRef = getStylesheetRef(); + if( !stylesheetRef.empty() ) + m_xml.writeStylesheetRef( stylesheetRef ); + m_xml.startElement( "Catch" ); + if( !m_config->name().empty() ) + m_xml.writeAttribute( "name", m_config->name() ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testGroupStarting( groupInfo ); + m_xml.startElement( "Group" ) + .writeAttribute( "name", groupInfo.name ); + } + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseStarting(testInfo); + m_xml.startElement( "TestCase" ) + .writeAttribute( "name", trim( testInfo.name ) ) + .writeAttribute( "description", testInfo.description ) + .writeAttribute( "tags", testInfo.tagsAsString ); + + writeSourceInfo( testInfo.lineInfo ); + + if ( m_config->showDurations() == ShowDurations::Always ) + m_testCaseTimer.start(); + m_xml.ensureTagClosed(); + } + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + StreamingReporterBase::sectionStarting( sectionInfo ); + if( m_sectionDepth++ > 0 ) { + m_xml.startElement( "Section" ) + .writeAttribute( "name", trim( sectionInfo.name ) ) + .writeAttribute( "description", sectionInfo.description ); + writeSourceInfo( sectionInfo.lineInfo ); + m_xml.ensureTagClosed(); + } + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + + AssertionResult const& result = assertionStats.assertionResult; + + bool includeResults = m_config->includeSuccessfulResults() || !result.isOk(); + + if( includeResults ) { + // Print any info messages in <Info> tags. + for( std::vector<MessageInfo>::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); + it != itEnd; + ++it ) { + if( it->type == ResultWas::Info ) { + m_xml.scopedElement( "Info" ) + .writeText( it->message ); + } else if ( it->type == ResultWas::Warning ) { + m_xml.scopedElement( "Warning" ) + .writeText( it->message ); + } + } + } + + // Drop out if result was successful but we're not printing them. + if( !includeResults && result.getResultType() != ResultWas::Warning ) + return true; + + // Print the expression if there is one. + if( result.hasExpression() ) { + m_xml.startElement( "Expression" ) + .writeAttribute( "success", result.succeeded() ) + .writeAttribute( "type", result.getTestMacroName() ); + + writeSourceInfo( result.getSourceInfo() ); + + m_xml.scopedElement( "Original" ) + .writeText( result.getExpression() ); + m_xml.scopedElement( "Expanded" ) + .writeText( result.getExpandedExpression() ); + } + + // And... Print a result applicable to each result type. + switch( result.getResultType() ) { + case ResultWas::ThrewException: + m_xml.startElement( "Exception" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + case ResultWas::FatalErrorCondition: + m_xml.startElement( "FatalErrorCondition" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + case ResultWas::Info: + m_xml.scopedElement( "Info" ) + .writeText( result.getMessage() ); + break; + case ResultWas::Warning: + // Warning will already have been written + break; + case ResultWas::ExplicitFailure: + m_xml.startElement( "Failure" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + default: + break; + } + + if( result.hasExpression() ) + m_xml.endElement(); + + return true; + } + + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + StreamingReporterBase::sectionEnded( sectionStats ); + if( --m_sectionDepth > 0 ) { + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResults" ); + e.writeAttribute( "successes", sectionStats.assertions.passed ); + e.writeAttribute( "failures", sectionStats.assertions.failed ); + e.writeAttribute( "expectedFailures", sectionStats.assertions.failedButOk ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds", sectionStats.durationInSeconds ); + + m_xml.endElement(); + } + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseEnded( testCaseStats ); + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" ); + e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() ); + + if( !testCaseStats.stdOut.empty() ) + m_xml.scopedElement( "StdOut" ).writeText( trim( testCaseStats.stdOut ), false ); + if( !testCaseStats.stdErr.empty() ) + m_xml.scopedElement( "StdErr" ).writeText( trim( testCaseStats.stdErr ), false ); + + m_xml.endElement(); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + StreamingReporterBase::testGroupEnded( testGroupStats ); + // TODO: Check testGroupStats.aborting and act accordingly. + m_xml.scopedElement( "OverallResults" ) + .writeAttribute( "successes", testGroupStats.totals.assertions.passed ) + .writeAttribute( "failures", testGroupStats.totals.assertions.failed ) + .writeAttribute( "expectedFailures", testGroupStats.totals.assertions.failedButOk ); + m_xml.endElement(); + } + + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + StreamingReporterBase::testRunEnded( testRunStats ); + m_xml.scopedElement( "OverallResults" ) + .writeAttribute( "successes", testRunStats.totals.assertions.passed ) + .writeAttribute( "failures", testRunStats.totals.assertions.failed ) + .writeAttribute( "expectedFailures", testRunStats.totals.assertions.failedButOk ); + m_xml.endElement(); + } + + private: + Timer m_testCaseTimer; + XmlWriter m_xml; + int m_sectionDepth; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "xml", XmlReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_junit.hpp +#define TWOBLUECUBES_CATCH_REPORTER_JUNIT_HPP_INCLUDED + +#include <assert.h> + +namespace Catch { + + namespace { + std::string getCurrentTimestamp() { + // Beware, this is not reentrant because of backward compatibility issues + // Also, UTC only, again because of backward compatibility (%z is C++11) + time_t rawtime; + std::time(&rawtime); + const size_t timeStampSize = sizeof("2017-01-16T17:06:45Z"); + +#ifdef _MSC_VER + std::tm timeInfo = {}; + gmtime_s(&timeInfo, &rawtime); +#else + std::tm* timeInfo; + timeInfo = std::gmtime(&rawtime); +#endif + + char timeStamp[timeStampSize]; + const char * const fmt = "%Y-%m-%dT%H:%M:%SZ"; + +#ifdef _MSC_VER + std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); +#else + std::strftime(timeStamp, timeStampSize, fmt, timeInfo); +#endif + return std::string(timeStamp); + } + + } + + class JunitReporter : public CumulativeReporterBase { + public: + JunitReporter( ReporterConfig const& _config ) + : CumulativeReporterBase( _config ), + xml( _config.stream() ), + m_okToFail( false ) + { + m_reporterPrefs.shouldRedirectStdOut = true; + } + + virtual ~JunitReporter() CATCH_OVERRIDE; + + static std::string getDescription() { + return "Reports test results in an XML format that looks like Ant's junitreport target"; + } + + virtual void noMatchingTestCases( std::string const& /*spec*/ ) CATCH_OVERRIDE {} + + virtual void testRunStarting( TestRunInfo const& runInfo ) CATCH_OVERRIDE { + CumulativeReporterBase::testRunStarting( runInfo ); + xml.startElement( "testsuites" ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + suiteTimer.start(); + stdOutForSuite.str(""); + stdErrForSuite.str(""); + unexpectedExceptions = 0; + CumulativeReporterBase::testGroupStarting( groupInfo ); + } + + virtual void testCaseStarting( TestCaseInfo const& testCaseInfo ) CATCH_OVERRIDE { + m_okToFail = testCaseInfo.okToFail(); + } + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException && !m_okToFail ) + unexpectedExceptions++; + return CumulativeReporterBase::assertionEnded( assertionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + stdOutForSuite << testCaseStats.stdOut; + stdErrForSuite << testCaseStats.stdErr; + CumulativeReporterBase::testCaseEnded( testCaseStats ); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + double suiteTime = suiteTimer.getElapsedSeconds(); + CumulativeReporterBase::testGroupEnded( testGroupStats ); + writeGroup( *m_testGroups.back(), suiteTime ); + } + + virtual void testRunEndedCumulative() CATCH_OVERRIDE { + xml.endElement(); + } + + void writeGroup( TestGroupNode const& groupNode, double suiteTime ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" ); + TestGroupStats const& stats = groupNode.value; + xml.writeAttribute( "name", stats.groupInfo.name ); + xml.writeAttribute( "errors", unexpectedExceptions ); + xml.writeAttribute( "failures", stats.totals.assertions.failed-unexpectedExceptions ); + xml.writeAttribute( "tests", stats.totals.assertions.total() ); + xml.writeAttribute( "hostname", "tbd" ); // !TBD + if( m_config->showDurations() == ShowDurations::Never ) + xml.writeAttribute( "time", "" ); + else + xml.writeAttribute( "time", suiteTime ); + xml.writeAttribute( "timestamp", getCurrentTimestamp() ); + + // Write test cases + for( TestGroupNode::ChildNodes::const_iterator + it = groupNode.children.begin(), itEnd = groupNode.children.end(); + it != itEnd; + ++it ) + writeTestCase( **it ); + + xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite.str() ), false ); + xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite.str() ), false ); + } + + void writeTestCase( TestCaseNode const& testCaseNode ) { + TestCaseStats const& stats = testCaseNode.value; + + // All test cases have exactly one section - which represents the + // test case itself. That section may have 0-n nested sections + assert( testCaseNode.children.size() == 1 ); + SectionNode const& rootSection = *testCaseNode.children.front(); + + std::string className = stats.testInfo.className; + + if( className.empty() ) { + if( rootSection.childSections.empty() ) + className = "global"; + } + writeSection( className, "", rootSection ); + } + + void writeSection( std::string const& className, + std::string const& rootName, + SectionNode const& sectionNode ) { + std::string name = trim( sectionNode.stats.sectionInfo.name ); + if( !rootName.empty() ) + name = rootName + '/' + name; + + if( !sectionNode.assertions.empty() || + !sectionNode.stdOut.empty() || + !sectionNode.stdErr.empty() ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testcase" ); + if( className.empty() ) { + xml.writeAttribute( "classname", name ); + xml.writeAttribute( "name", "root" ); + } + else { + xml.writeAttribute( "classname", className ); + xml.writeAttribute( "name", name ); + } + xml.writeAttribute( "time", Catch::toString( sectionNode.stats.durationInSeconds ) ); + + writeAssertions( sectionNode ); + + if( !sectionNode.stdOut.empty() ) + xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), false ); + if( !sectionNode.stdErr.empty() ) + xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), false ); + } + for( SectionNode::ChildSections::const_iterator + it = sectionNode.childSections.begin(), + itEnd = sectionNode.childSections.end(); + it != itEnd; + ++it ) + if( className.empty() ) + writeSection( name, "", **it ); + else + writeSection( className, name, **it ); + } + + void writeAssertions( SectionNode const& sectionNode ) { + for( SectionNode::Assertions::const_iterator + it = sectionNode.assertions.begin(), itEnd = sectionNode.assertions.end(); + it != itEnd; + ++it ) + writeAssertion( *it ); + } + void writeAssertion( AssertionStats const& stats ) { + AssertionResult const& result = stats.assertionResult; + if( !result.isOk() ) { + std::string elementName; + switch( result.getResultType() ) { + case ResultWas::ThrewException: + case ResultWas::FatalErrorCondition: + elementName = "error"; + break; + case ResultWas::ExplicitFailure: + elementName = "failure"; + break; + case ResultWas::ExpressionFailed: + elementName = "failure"; + break; + case ResultWas::DidntThrowException: + elementName = "failure"; + break; + + // We should never see these here: + case ResultWas::Info: + case ResultWas::Warning: + case ResultWas::Ok: + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + elementName = "internalError"; + break; + } + + XmlWriter::ScopedElement e = xml.scopedElement( elementName ); + + xml.writeAttribute( "message", result.getExpandedExpression() ); + xml.writeAttribute( "type", result.getTestMacroName() ); + + std::ostringstream oss; + if( !result.getMessage().empty() ) + oss << result.getMessage() << '\n'; + for( std::vector<MessageInfo>::const_iterator + it = stats.infoMessages.begin(), + itEnd = stats.infoMessages.end(); + it != itEnd; + ++it ) + if( it->type == ResultWas::Info ) + oss << it->message << '\n'; + + oss << "at " << result.getSourceInfo(); + xml.writeText( oss.str(), false ); + } + } + + XmlWriter xml; + Timer suiteTimer; + std::ostringstream stdOutForSuite; + std::ostringstream stdErrForSuite; + unsigned int unexpectedExceptions; + bool m_okToFail; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_console.hpp +#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED + +#include <cfloat> +#include <cstdio> + +namespace Catch { + + struct ConsoleReporter : StreamingReporterBase { + ConsoleReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ), + m_headerPrinted( false ) + {} + + virtual ~ConsoleReporter() CATCH_OVERRIDE; + static std::string getDescription() { + return "Reports test results as plain lines of text"; + } + + virtual void noMatchingTestCases( std::string const& spec ) CATCH_OVERRIDE { + stream << "No test cases matched '" << spec << '\'' << std::endl; + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { + } + + virtual bool assertionEnded( AssertionStats const& _assertionStats ) CATCH_OVERRIDE { + AssertionResult const& result = _assertionStats.assertionResult; + + bool includeResults = m_config->includeSuccessfulResults() || !result.isOk(); + + // Drop out if result was successful but we're not printing them. + if( !includeResults && result.getResultType() != ResultWas::Warning ) + return false; + + lazyPrint(); + + AssertionPrinter printer( stream, _assertionStats, includeResults ); + printer.print(); + stream << std::endl; + return true; + } + + virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATCH_OVERRIDE { + m_headerPrinted = false; + StreamingReporterBase::sectionStarting( _sectionInfo ); + } + virtual void sectionEnded( SectionStats const& _sectionStats ) CATCH_OVERRIDE { + if( _sectionStats.missingAssertions ) { + lazyPrint(); + Colour colour( Colour::ResultError ); + if( m_sectionStack.size() > 1 ) + stream << "\nNo assertions in section"; + else + stream << "\nNo assertions in test case"; + stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl; + } + if( m_config->showDurations() == ShowDurations::Always ) { + stream << getFormattedDuration(_sectionStats.durationInSeconds) << " s: " << _sectionStats.sectionInfo.name << std::endl; + } + if( m_headerPrinted ) { + m_headerPrinted = false; + } + StreamingReporterBase::sectionEnded( _sectionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& _testCaseStats ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseEnded( _testCaseStats ); + m_headerPrinted = false; + } + virtual void testGroupEnded( TestGroupStats const& _testGroupStats ) CATCH_OVERRIDE { + if( currentGroupInfo.used ) { + printSummaryDivider(); + stream << "Summary for group '" << _testGroupStats.groupInfo.name << "':\n"; + printTotals( _testGroupStats.totals ); + stream << '\n' << std::endl; + } + StreamingReporterBase::testGroupEnded( _testGroupStats ); + } + virtual void testRunEnded( TestRunStats const& _testRunStats ) CATCH_OVERRIDE { + printTotalsDivider( _testRunStats.totals ); + printTotals( _testRunStats.totals ); + stream << std::endl; + StreamingReporterBase::testRunEnded( _testRunStats ); + } + + private: + + class AssertionPrinter { + void operator= ( AssertionPrinter const& ); + public: + AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) + : stream( _stream ), + stats( _stats ), + result( _stats.assertionResult ), + colour( Colour::None ), + message( result.getMessage() ), + messages( _stats.infoMessages ), + printInfoMessages( _printInfoMessages ) + { + switch( result.getResultType() ) { + case ResultWas::Ok: + colour = Colour::Success; + passOrFail = "PASSED"; + //if( result.hasMessage() ) + if( _stats.infoMessages.size() == 1 ) + messageLabel = "with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "with messages"; + break; + case ResultWas::ExpressionFailed: + if( result.isOk() ) { + colour = Colour::Success; + passOrFail = "FAILED - but was ok"; + } + else { + colour = Colour::Error; + passOrFail = "FAILED"; + } + if( _stats.infoMessages.size() == 1 ) + messageLabel = "with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "with messages"; + break; + case ResultWas::ThrewException: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "due to unexpected exception with "; + if (_stats.infoMessages.size() == 1) + messageLabel += "message"; + if (_stats.infoMessages.size() > 1) + messageLabel += "messages"; + break; + case ResultWas::FatalErrorCondition: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "due to a fatal error condition"; + break; + case ResultWas::DidntThrowException: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "because no exception was thrown where one was expected"; + break; + case ResultWas::Info: + messageLabel = "info"; + break; + case ResultWas::Warning: + messageLabel = "warning"; + break; + case ResultWas::ExplicitFailure: + passOrFail = "FAILED"; + colour = Colour::Error; + if( _stats.infoMessages.size() == 1 ) + messageLabel = "explicitly with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "explicitly with messages"; + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + passOrFail = "** internal error **"; + colour = Colour::Error; + break; + } + } + + void print() const { + printSourceInfo(); + if( stats.totals.assertions.total() > 0 ) { + if( result.isOk() ) + stream << '\n'; + printResultType(); + printOriginalExpression(); + printReconstructedExpression(); + } + else { + stream << '\n'; + } + printMessage(); + } + + private: + void printResultType() const { + if( !passOrFail.empty() ) { + Colour colourGuard( colour ); + stream << passOrFail << ":\n"; + } + } + void printOriginalExpression() const { + if( result.hasExpression() ) { + Colour colourGuard( Colour::OriginalExpression ); + stream << " "; + stream << result.getExpressionInMacro(); + stream << '\n'; + } + } + void printReconstructedExpression() const { + if( result.hasExpandedExpression() ) { + stream << "with expansion:\n"; + Colour colourGuard( Colour::ReconstructedExpression ); + stream << Text( result.getExpandedExpression(), TextAttributes().setIndent(2) ) << '\n'; + } + } + void printMessage() const { + if( !messageLabel.empty() ) + stream << messageLabel << ':' << '\n'; + for( std::vector<MessageInfo>::const_iterator it = messages.begin(), itEnd = messages.end(); + it != itEnd; + ++it ) { + // If this assertion is a warning ignore any INFO messages + if( printInfoMessages || it->type != ResultWas::Info ) + stream << Text( it->message, TextAttributes().setIndent(2) ) << '\n'; + } + } + void printSourceInfo() const { + Colour colourGuard( Colour::FileName ); + stream << result.getSourceInfo() << ": "; + } + + std::ostream& stream; + AssertionStats const& stats; + AssertionResult const& result; + Colour::Code colour; + std::string passOrFail; + std::string messageLabel; + std::string message; + std::vector<MessageInfo> messages; + bool printInfoMessages; + }; + + void lazyPrint() { + + if( !currentTestRunInfo.used ) + lazyPrintRunInfo(); + if( !currentGroupInfo.used ) + lazyPrintGroupInfo(); + + if( !m_headerPrinted ) { + printTestCaseAndSectionHeader(); + m_headerPrinted = true; + } + } + void lazyPrintRunInfo() { + stream << '\n' << getLineOfChars<'~'>() << '\n'; + Colour colour( Colour::SecondaryText ); + stream << currentTestRunInfo->name + << " is a Catch v" << libraryVersion() << " host application.\n" + << "Run with -? for options\n\n"; + + if( m_config->rngSeed() != 0 ) + stream << "Randomness seeded to: " << m_config->rngSeed() << "\n\n"; + + currentTestRunInfo.used = true; + } + void lazyPrintGroupInfo() { + if( !currentGroupInfo->name.empty() && currentGroupInfo->groupsCounts > 1 ) { + printClosedHeader( "Group: " + currentGroupInfo->name ); + currentGroupInfo.used = true; + } + } + void printTestCaseAndSectionHeader() { + assert( !m_sectionStack.empty() ); + printOpenHeader( currentTestCaseInfo->name ); + + if( m_sectionStack.size() > 1 ) { + Colour colourGuard( Colour::Headers ); + + std::vector<SectionInfo>::const_iterator + it = m_sectionStack.begin()+1, // Skip first section (test case) + itEnd = m_sectionStack.end(); + for( ; it != itEnd; ++it ) + printHeaderString( it->name, 2 ); + } + + SourceLineInfo lineInfo = m_sectionStack.back().lineInfo; + + if( !lineInfo.empty() ){ + stream << getLineOfChars<'-'>() << '\n'; + Colour colourGuard( Colour::FileName ); + stream << lineInfo << '\n'; + } + stream << getLineOfChars<'.'>() << '\n' << std::endl; + } + + void printClosedHeader( std::string const& _name ) { + printOpenHeader( _name ); + stream << getLineOfChars<'.'>() << '\n'; + } + void printOpenHeader( std::string const& _name ) { + stream << getLineOfChars<'-'>() << '\n'; + { + Colour colourGuard( Colour::Headers ); + printHeaderString( _name ); + } + } + + // if string has a : in first line will set indent to follow it on + // subsequent lines + void printHeaderString( std::string const& _string, std::size_t indent = 0 ) { + std::size_t i = _string.find( ": " ); + if( i != std::string::npos ) + i+=2; + else + i = 0; + stream << Text( _string, TextAttributes() + .setIndent( indent+i) + .setInitialIndent( indent ) ) << '\n'; + } + + struct SummaryColumn { + + SummaryColumn( std::string const& _label, Colour::Code _colour ) + : label( _label ), + colour( _colour ) + {} + SummaryColumn addRow( std::size_t count ) { + std::ostringstream oss; + oss << count; + std::string row = oss.str(); + for( std::vector<std::string>::iterator it = rows.begin(); it != rows.end(); ++it ) { + while( it->size() < row.size() ) + *it = ' ' + *it; + while( it->size() > row.size() ) + row = ' ' + row; + } + rows.push_back( row ); + return *this; + } + + std::string label; + Colour::Code colour; + std::vector<std::string> rows; + + }; + + void printTotals( Totals const& totals ) { + if( totals.testCases.total() == 0 ) { + stream << Colour( Colour::Warning ) << "No tests ran\n"; + } + else if( totals.assertions.total() > 0 && totals.testCases.allPassed() ) { + stream << Colour( Colour::ResultSuccess ) << "All tests passed"; + stream << " (" + << pluralise( totals.assertions.passed, "assertion" ) << " in " + << pluralise( totals.testCases.passed, "test case" ) << ')' + << '\n'; + } + else { + + std::vector<SummaryColumn> columns; + columns.push_back( SummaryColumn( "", Colour::None ) + .addRow( totals.testCases.total() ) + .addRow( totals.assertions.total() ) ); + columns.push_back( SummaryColumn( "passed", Colour::Success ) + .addRow( totals.testCases.passed ) + .addRow( totals.assertions.passed ) ); + columns.push_back( SummaryColumn( "failed", Colour::ResultError ) + .addRow( totals.testCases.failed ) + .addRow( totals.assertions.failed ) ); + columns.push_back( SummaryColumn( "failed as expected", Colour::ResultExpectedFailure ) + .addRow( totals.testCases.failedButOk ) + .addRow( totals.assertions.failedButOk ) ); + + printSummaryRow( "test cases", columns, 0 ); + printSummaryRow( "assertions", columns, 1 ); + } + } + void printSummaryRow( std::string const& label, std::vector<SummaryColumn> const& cols, std::size_t row ) { + for( std::vector<SummaryColumn>::const_iterator it = cols.begin(); it != cols.end(); ++it ) { + std::string value = it->rows[row]; + if( it->label.empty() ) { + stream << label << ": "; + if( value != "0" ) + stream << value; + else + stream << Colour( Colour::Warning ) << "- none -"; + } + else if( value != "0" ) { + stream << Colour( Colour::LightGrey ) << " | "; + stream << Colour( it->colour ) + << value << ' ' << it->label; + } + } + stream << '\n'; + } + + static std::size_t makeRatio( std::size_t number, std::size_t total ) { + std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number/ total : 0; + return ( ratio == 0 && number > 0 ) ? 1 : ratio; + } + static std::size_t& findMax( std::size_t& i, std::size_t& j, std::size_t& k ) { + if( i > j && i > k ) + return i; + else if( j > k ) + return j; + else + return k; + } + + void printTotalsDivider( Totals const& totals ) { + if( totals.testCases.total() > 0 ) { + std::size_t failedRatio = makeRatio( totals.testCases.failed, totals.testCases.total() ); + std::size_t failedButOkRatio = makeRatio( totals.testCases.failedButOk, totals.testCases.total() ); + std::size_t passedRatio = makeRatio( totals.testCases.passed, totals.testCases.total() ); + while( failedRatio + failedButOkRatio + passedRatio < CATCH_CONFIG_CONSOLE_WIDTH-1 ) + findMax( failedRatio, failedButOkRatio, passedRatio )++; + while( failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH-1 ) + findMax( failedRatio, failedButOkRatio, passedRatio )--; + + stream << Colour( Colour::Error ) << std::string( failedRatio, '=' ); + stream << Colour( Colour::ResultExpectedFailure ) << std::string( failedButOkRatio, '=' ); + if( totals.testCases.allPassed() ) + stream << Colour( Colour::ResultSuccess ) << std::string( passedRatio, '=' ); + else + stream << Colour( Colour::Success ) << std::string( passedRatio, '=' ); + } + else { + stream << Colour( Colour::Warning ) << std::string( CATCH_CONFIG_CONSOLE_WIDTH-1, '=' ); + } + stream << '\n'; + } + void printSummaryDivider() { + stream << getLineOfChars<'-'>() << '\n'; + } + + private: + bool m_headerPrinted; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "console", ConsoleReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_compact.hpp +#define TWOBLUECUBES_CATCH_REPORTER_COMPACT_HPP_INCLUDED + +namespace Catch { + + struct CompactReporter : StreamingReporterBase { + + CompactReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ) + {} + + virtual ~CompactReporter(); + + static std::string getDescription() { + return "Reports test results on a single line, suitable for IDEs"; + } + + virtual ReporterPreferences getPreferences() const { + ReporterPreferences prefs; + prefs.shouldRedirectStdOut = false; + return prefs; + } + + virtual void noMatchingTestCases( std::string const& spec ) { + stream << "No test cases matched '" << spec << '\'' << std::endl; + } + + virtual void assertionStarting( AssertionInfo const& ) {} + + virtual bool assertionEnded( AssertionStats const& _assertionStats ) { + AssertionResult const& result = _assertionStats.assertionResult; + + bool printInfoMessages = true; + + // Drop out if result was successful and we're not printing those + if( !m_config->includeSuccessfulResults() && result.isOk() ) { + if( result.getResultType() != ResultWas::Warning ) + return false; + printInfoMessages = false; + } + + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); + printer.print(); + + stream << std::endl; + return true; + } + + virtual void sectionEnded(SectionStats const& _sectionStats) CATCH_OVERRIDE { + if (m_config->showDurations() == ShowDurations::Always) { + stream << getFormattedDuration(_sectionStats.durationInSeconds) << " s: " << _sectionStats.sectionInfo.name << std::endl; + } + } + + virtual void testRunEnded( TestRunStats const& _testRunStats ) { + printTotals( _testRunStats.totals ); + stream << '\n' << std::endl; + StreamingReporterBase::testRunEnded( _testRunStats ); + } + + private: + class AssertionPrinter { + void operator= ( AssertionPrinter const& ); + public: + AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) + : stream( _stream ) + , stats( _stats ) + , result( _stats.assertionResult ) + , messages( _stats.infoMessages ) + , itMessage( _stats.infoMessages.begin() ) + , printInfoMessages( _printInfoMessages ) + {} + + void print() { + printSourceInfo(); + + itMessage = messages.begin(); + + switch( result.getResultType() ) { + case ResultWas::Ok: + printResultType( Colour::ResultSuccess, passedString() ); + printOriginalExpression(); + printReconstructedExpression(); + if ( ! result.hasExpression() ) + printRemainingMessages( Colour::None ); + else + printRemainingMessages(); + break; + case ResultWas::ExpressionFailed: + if( result.isOk() ) + printResultType( Colour::ResultSuccess, failedString() + std::string( " - but was ok" ) ); + else + printResultType( Colour::Error, failedString() ); + printOriginalExpression(); + printReconstructedExpression(); + printRemainingMessages(); + break; + case ResultWas::ThrewException: + printResultType( Colour::Error, failedString() ); + printIssue( "unexpected exception with message:" ); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::FatalErrorCondition: + printResultType( Colour::Error, failedString() ); + printIssue( "fatal error condition with message:" ); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::DidntThrowException: + printResultType( Colour::Error, failedString() ); + printIssue( "expected exception, got none" ); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::Info: + printResultType( Colour::None, "info" ); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::Warning: + printResultType( Colour::None, "warning" ); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::ExplicitFailure: + printResultType( Colour::Error, failedString() ); + printIssue( "explicitly" ); + printRemainingMessages( Colour::None ); + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + printResultType( Colour::Error, "** internal error **" ); + break; + } + } + + private: + // Colour::LightGrey + + static Colour::Code dimColour() { return Colour::FileName; } + +#ifdef CATCH_PLATFORM_MAC + static const char* failedString() { return "FAILED"; } + static const char* passedString() { return "PASSED"; } +#else + static const char* failedString() { return "failed"; } + static const char* passedString() { return "passed"; } +#endif + + void printSourceInfo() const { + Colour colourGuard( Colour::FileName ); + stream << result.getSourceInfo() << ':'; + } + + void printResultType( Colour::Code colour, std::string const& passOrFail ) const { + if( !passOrFail.empty() ) { + { + Colour colourGuard( colour ); + stream << ' ' << passOrFail; + } + stream << ':'; + } + } + + void printIssue( std::string const& issue ) const { + stream << ' ' << issue; + } + + void printExpressionWas() { + if( result.hasExpression() ) { + stream << ';'; + { + Colour colour( dimColour() ); + stream << " expression was:"; + } + printOriginalExpression(); + } + } + + void printOriginalExpression() const { + if( result.hasExpression() ) { + stream << ' ' << result.getExpression(); + } + } + + void printReconstructedExpression() const { + if( result.hasExpandedExpression() ) { + { + Colour colour( dimColour() ); + stream << " for: "; + } + stream << result.getExpandedExpression(); + } + } + + void printMessage() { + if ( itMessage != messages.end() ) { + stream << " '" << itMessage->message << '\''; + ++itMessage; + } + } + + void printRemainingMessages( Colour::Code colour = dimColour() ) { + if ( itMessage == messages.end() ) + return; + + // using messages.end() directly yields compilation error: + std::vector<MessageInfo>::const_iterator itEnd = messages.end(); + const std::size_t N = static_cast<std::size_t>( std::distance( itMessage, itEnd ) ); + + { + Colour colourGuard( colour ); + stream << " with " << pluralise( N, "message" ) << ':'; + } + + for(; itMessage != itEnd; ) { + // If this assertion is a warning ignore any INFO messages + if( printInfoMessages || itMessage->type != ResultWas::Info ) { + stream << " '" << itMessage->message << '\''; + if ( ++itMessage != itEnd ) { + Colour colourGuard( dimColour() ); + stream << " and"; + } + } + } + } + + private: + std::ostream& stream; + AssertionStats const& stats; + AssertionResult const& result; + std::vector<MessageInfo> messages; + std::vector<MessageInfo>::const_iterator itMessage; + bool printInfoMessages; + }; + + // Colour, message variants: + // - white: No tests ran. + // - red: Failed [both/all] N test cases, failed [both/all] M assertions. + // - white: Passed [both/all] N test cases (no assertions). + // - red: Failed N tests cases, failed M assertions. + // - green: Passed [both/all] N tests cases with M assertions. + + std::string bothOrAll( std::size_t count ) const { + return count == 1 ? std::string() : count == 2 ? "both " : "all " ; + } + + void printTotals( const Totals& totals ) const { + if( totals.testCases.total() == 0 ) { + stream << "No tests ran."; + } + else if( totals.testCases.failed == totals.testCases.total() ) { + Colour colour( Colour::ResultError ); + const std::string qualify_assertions_failed = + totals.assertions.failed == totals.assertions.total() ? + bothOrAll( totals.assertions.failed ) : std::string(); + stream << + "Failed " << bothOrAll( totals.testCases.failed ) + << pluralise( totals.testCases.failed, "test case" ) << ", " + "failed " << qualify_assertions_failed << + pluralise( totals.assertions.failed, "assertion" ) << '.'; + } + else if( totals.assertions.total() == 0 ) { + stream << + "Passed " << bothOrAll( totals.testCases.total() ) + << pluralise( totals.testCases.total(), "test case" ) + << " (no assertions)."; + } + else if( totals.assertions.failed ) { + Colour colour( Colour::ResultError ); + stream << + "Failed " << pluralise( totals.testCases.failed, "test case" ) << ", " + "failed " << pluralise( totals.assertions.failed, "assertion" ) << '.'; + } + else { + Colour colour( Colour::ResultSuccess ); + stream << + "Passed " << bothOrAll( totals.testCases.passed ) + << pluralise( totals.testCases.passed, "test case" ) << + " with " << pluralise( totals.assertions.passed, "assertion" ) << '.'; + } + } + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "compact", CompactReporter ) + +} // end namespace Catch + +namespace Catch { + // These are all here to avoid warnings about not having any out of line + // virtual methods + NonCopyable::~NonCopyable() {} + IShared::~IShared() {} + IStream::~IStream() CATCH_NOEXCEPT {} + FileStream::~FileStream() CATCH_NOEXCEPT {} + CoutStream::~CoutStream() CATCH_NOEXCEPT {} + DebugOutStream::~DebugOutStream() CATCH_NOEXCEPT {} + StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {} + IContext::~IContext() {} + IResultCapture::~IResultCapture() {} + ITestCase::~ITestCase() {} + ITestCaseRegistry::~ITestCaseRegistry() {} + IRegistryHub::~IRegistryHub() {} + IMutableRegistryHub::~IMutableRegistryHub() {} + IExceptionTranslator::~IExceptionTranslator() {} + IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() {} + IReporter::~IReporter() {} + IReporterFactory::~IReporterFactory() {} + IReporterRegistry::~IReporterRegistry() {} + IStreamingReporter::~IStreamingReporter() {} + AssertionStats::~AssertionStats() {} + SectionStats::~SectionStats() {} + TestCaseStats::~TestCaseStats() {} + TestGroupStats::~TestGroupStats() {} + TestRunStats::~TestRunStats() {} + CumulativeReporterBase::SectionNode::~SectionNode() {} + CumulativeReporterBase::~CumulativeReporterBase() {} + + StreamingReporterBase::~StreamingReporterBase() {} + ConsoleReporter::~ConsoleReporter() {} + CompactReporter::~CompactReporter() {} + IRunner::~IRunner() {} + IMutableContext::~IMutableContext() {} + IConfig::~IConfig() {} + XmlReporter::~XmlReporter() {} + JunitReporter::~JunitReporter() {} + TestRegistry::~TestRegistry() {} + FreeFunctionTestCase::~FreeFunctionTestCase() {} + IGeneratorInfo::~IGeneratorInfo() {} + IGeneratorsForTest::~IGeneratorsForTest() {} + WildcardPattern::~WildcardPattern() {} + TestSpec::Pattern::~Pattern() {} + TestSpec::NamePattern::~NamePattern() {} + TestSpec::TagPattern::~TagPattern() {} + TestSpec::ExcludedPattern::~ExcludedPattern() {} + Matchers::Impl::MatcherUntypedBase::~MatcherUntypedBase() {} + + void Config::dummy() {} + + namespace TestCaseTracking { + ITracker::~ITracker() {} + TrackerBase::~TrackerBase() {} + SectionTracker::~SectionTracker() {} + IndexTracker::~IndexTracker() {} + } +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#endif + +#ifdef CATCH_CONFIG_MAIN +// #included from: internal/catch_default_main.hpp +#define TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED + +#ifndef __OBJC__ + +#if defined(WIN32) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN) +// Standard C/C++ Win32 Unicode wmain entry point +extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) { +#else +// Standard C/C++ main entry point +int main (int argc, char * argv[]) { +#endif + + int result = Catch::Session().run( argc, argv ); + return ( result < 0xff ? result : 0xff ); +} + +#else // __OBJC__ + +// Objective-C entry point +int main (int argc, char * const argv[]) { +#if !CATCH_ARC_ENABLED + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; +#endif + + Catch::registerTestMethods(); + int result = Catch::Session().run( argc, (char* const*)argv ); + +#if !CATCH_ARC_ENABLED + [pool drain]; +#endif + + return ( result < 0xff ? result : 0xff ); +} + +#endif // __OBJC__ + +#endif + +#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED +# undef CLARA_CONFIG_MAIN +#endif + +////// + +// If this config identifier is defined then all CATCH macros are prefixed with CATCH_ +#ifdef CATCH_CONFIG_PREFIX_ALL + +#if defined(CATCH_CONFIG_FAST_COMPILE) +#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST_NO_TRY( "CATCH_REQUIRE", Catch::ResultDisposition::Normal, expr ) +#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST_NO_TRY( "CATCH_REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, expr ) +#else +#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE", Catch::ResultDisposition::Normal, expr ) +#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, expr ) +#endif + +#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( "CATCH_REQUIRE_THROWS", Catch::ResultDisposition::Normal, "", expr ) +#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr ) +#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( "CATCH_REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr ) +#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( "CATCH_REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, expr ) + +#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( "CATCH_CHECK", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( "CATCH_CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, expr ) +#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( "CATCH_CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( "CATCH_CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( "CATCH_CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, expr ) + +#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( "CATCH_CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, "", expr ) +#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( "CATCH_CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr ) +#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( "CATCH_CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, expr ) + +#define CATCH_CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CATCH_CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg ) + +#if defined(CATCH_CONFIG_FAST_COMPILE) +#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT_NO_TRY( "CATCH_REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg ) +#else +#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CATCH_REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg ) +#endif + +#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg ) +#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) +#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg ) +#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( "CATCH_CAPTURE", #msg " := " << Catch::toString(msg) ) +#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( "CATCH_CAPTURE", #msg " := " << Catch::toString(msg) ) + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) + #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) + #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) + #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) + #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) + #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define CATCH_FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( "CATCH_SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) +#else + #define CATCH_TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) + #define CATCH_TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) + #define CATCH_METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) + #define CATCH_REGISTER_TEST_CASE( function, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( function, name, description ) + #define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) + #define CATCH_FAIL( msg ) INTERNAL_CATCH_MSG( "CATCH_FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, msg ) + #define CATCH_FAIL_CHECK( msg ) INTERNAL_CATCH_MSG( "CATCH_FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, msg ) + #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( "CATCH_SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, msg ) +#endif +#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) + +#define CATCH_REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) +#define CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) + +#define CATCH_GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) + +// "BDD-style" convenience wrappers +#ifdef CATCH_CONFIG_VARIADIC_MACROS +#define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ ) +#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) +#else +#define CATCH_SCENARIO( name, tags ) CATCH_TEST_CASE( "Scenario: " name, tags ) +#define CATCH_SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) +#endif +#define CATCH_GIVEN( desc ) CATCH_SECTION( std::string( "Given: ") + desc, "" ) +#define CATCH_WHEN( desc ) CATCH_SECTION( std::string( " When: ") + desc, "" ) +#define CATCH_AND_WHEN( desc ) CATCH_SECTION( std::string( " And: ") + desc, "" ) +#define CATCH_THEN( desc ) CATCH_SECTION( std::string( " Then: ") + desc, "" ) +#define CATCH_AND_THEN( desc ) CATCH_SECTION( std::string( " And: ") + desc, "" ) + +// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required +#else + +#if defined(CATCH_CONFIG_FAST_COMPILE) +#define REQUIRE( expr ) INTERNAL_CATCH_TEST_NO_TRY( "REQUIRE", Catch::ResultDisposition::Normal, expr ) +#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST_NO_TRY( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, expr ) + +#else +#define REQUIRE( expr ) INTERNAL_CATCH_TEST( "REQUIRE", Catch::ResultDisposition::Normal, expr ) +#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, expr ) +#endif + +#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( "REQUIRE_THROWS", Catch::ResultDisposition::Normal, "", expr ) +#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr ) +#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( "REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr ) +#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( "REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, expr ) + +#define CHECK( expr ) INTERNAL_CATCH_TEST( "CHECK", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( "CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, expr ) +#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( "CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( "CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( "CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, expr ) + +#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( "CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, "", expr ) +#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) +#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( "CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr ) +#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, expr ) + +#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg ) + +#if defined(CATCH_CONFIG_FAST_COMPILE) +#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT_NO_TRY( "REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg ) +#else +#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg ) +#endif + +#define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg ) +#define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) +#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg ) +#define CAPTURE( msg ) INTERNAL_CATCH_INFO( "CAPTURE", #msg " := " << Catch::toString(msg) ) +#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( "CAPTURE", #msg " := " << Catch::toString(msg) ) + +#ifdef CATCH_CONFIG_VARIADIC_MACROS +#define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) +#define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) +#define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) +#define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) +#define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) +#define FAIL( ... ) INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) +#define FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) +#define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) +#else +#define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) + #define TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) + #define METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) + #define REGISTER_TEST_CASE( method, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( method, name, description ) + #define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) + #define FAIL( msg ) INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, msg ) + #define FAIL_CHECK( msg ) INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, msg ) + #define SUCCEED( msg ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, msg ) +#endif +#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) + +#define REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) +#define REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) + +#define GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) + +#endif + +#define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) + +// "BDD-style" convenience wrappers +#ifdef CATCH_CONFIG_VARIADIC_MACROS +#define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ ) +#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) +#else +#define SCENARIO( name, tags ) TEST_CASE( "Scenario: " name, tags ) +#define SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) +#endif +#define GIVEN( desc ) SECTION( std::string(" Given: ") + desc, "" ) +#define WHEN( desc ) SECTION( std::string(" When: ") + desc, "" ) +#define AND_WHEN( desc ) SECTION( std::string("And when: ") + desc, "" ) +#define THEN( desc ) SECTION( std::string(" Then: ") + desc, "" ) +#define AND_THEN( desc ) SECTION( std::string(" And: ") + desc, "" ) + +using Catch::Detail::Approx; + +// #included from: internal/catch_reenable_warnings.h + +#define TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED + +#ifdef __clang__ +# ifdef __ICC // icpc defines the __clang__ macro +# pragma warning(pop) +# else +# pragma clang diagnostic pop +# endif +#elif defined __GNUC__ +# pragma GCC diagnostic pop +#endif + +#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + diff --git a/geom_bottleneck/include/diagram_reader.h b/geom_bottleneck/include/diagram_reader.h index 5bf106d..08d9e2b 100644 --- a/geom_bottleneck/include/diagram_reader.h +++ b/geom_bottleneck/include/diagram_reader.h @@ -1,5 +1,4 @@ /* - Copyright (c) 2015, M. Kerber, D. Morozov, A. Nigmetov All rights reserved. @@ -39,101 +38,159 @@ derivative works thereof, in binary and source code form. #include <cctype> namespace hera { + +// cannot choose stod, stof or stold based on RealType, +// lazy solution: partial specialization + template<class RealType = double> + inline RealType parse_real_from_str(const std::string& s); + + template <> + inline double parse_real_from_str<double>(const std::string& s) + { + return std::stod(s); + } + + + template <> + inline long double parse_real_from_str<long double>(const std::string& s) + { + return std::stold(s); + } + + + template <> + inline float parse_real_from_str<float>(const std::string& s) + { + return std::stof(s); + } + + + template<class RealType> + inline RealType parse_real_from_str(const std::string& s) + { + static_assert(sizeof(RealType) != sizeof(RealType), "Must be specialized for each type you want to use, see above"); + } + // fill in result with points from file fname // return false if file can't be opened // or error occurred while reading // decPrecision is the maximal decimal precision in the input, // it is zero if all coordinates in the input are integers -template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> -bool readDiagramPointSet(const char* fname, ContType_& result, int& decPrecision) -{ - size_t lineNumber { 0 }; - result.clear(); - std::ifstream f(fname); - if (!f.good()) { + + template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> + inline bool readDiagramPointSet(const char* fname, ContType_& result, int& decPrecision) + { + using RealType = RealType_; + + size_t lineNumber { 0 }; + result.clear(); + std::ifstream f(fname); + if (!f.good()) { #ifndef FOR_R_TDA - std::cerr << "Cannot open file " << fname << std::endl; + std::cerr << "Cannot open file " << fname << std::endl; #endif - return false; - } - std::string line; - while(std::getline(f, line)) { - lineNumber++; - // process comments: remove everything after hash - auto hashPos = line.find_first_of("#", 0); - if( std::string::npos != hashPos) { - line = std::string(line.begin(), line.begin() + hashPos); - } - if (line.empty()) { - continue; - } - // trim whitespaces - auto whiteSpaceFront = std::find_if_not(line.begin(),line.end(),isspace); - auto whiteSpaceBack = std::find_if_not(line.rbegin(),line.rend(),isspace).base(); - if (whiteSpaceBack <= whiteSpaceFront) { - // line consists of spaces only - move to the next line - continue; + return false; } - line = std::string(whiteSpaceFront,whiteSpaceBack); - bool fracPart = false; - int currDecPrecision = 0; - for(auto c : line) { - if (c == '.') { - fracPart = true; - } else if (fracPart) { - if (isdigit(c)) { - currDecPrecision++; + std::locale loc; + std::string line; + while(std::getline(f, line)) { + lineNumber++; + // process comments: remove everything after hash + auto hashPos = line.find_first_of("#", 0); + if( std::string::npos != hashPos) { + line = std::string(line.begin(), line.begin() + hashPos); + } + if (line.empty()) { + continue; + } + // trim whitespaces + auto whiteSpaceFront = std::find_if_not(line.begin(),line.end(),isspace); + auto whiteSpaceBack = std::find_if_not(line.rbegin(),line.rend(),isspace).base(); + if (whiteSpaceBack <= whiteSpaceFront) { + // line consists of spaces only - move to the next line + continue; + } + line = std::string(whiteSpaceFront,whiteSpaceBack); + + // transform line to lower case + // to parse Infinity + for(auto& c : line) { + c = std::tolower(c, loc); + } + + bool fracPart = false; + int currDecPrecision = 0; + for(auto c : line) { + if (c == '.') { + fracPart = true; + } else if (fracPart) { + if (isdigit(c)) { + currDecPrecision++; + } else { + fracPart = false; + if (currDecPrecision > decPrecision) + decPrecision = currDecPrecision; + currDecPrecision = 0; + } + } + } + + RealType x, y; + std::string str_x, str_y; + std::istringstream iss(line); + try { + iss >> str_x >> str_y; + + x = parse_real_from_str<RealType>(str_x); + y = parse_real_from_str<RealType>(str_y); + + if (x != y) { + result.push_back(std::make_pair(x, y)); } else { - fracPart = false; - if (currDecPrecision > decPrecision) - decPrecision = currDecPrecision; - currDecPrecision = 0; +#ifndef FOR_R_TDA + std::cerr << "Warning: point with 0 persistence ignored in " << fname << ":" << lineNumber << "\n"; +#endif } } - } - RealType_ x, y; - std::istringstream iss(line); - if (not(iss >> x >> y)) { + catch (const std::invalid_argument& e) { #ifndef FOR_R_TDA - std::cerr << "Error in file " << fname << ", line number " << lineNumber << ": cannot parse \"" << line << "\"" << std::endl; + std::cerr << "Error in file " << fname << ", line number " << lineNumber << ": cannot parse \"" << line << "\"" << std::endl; #endif - return false; - } - if ( x != y ) { - result.push_back(std::make_pair(x,y)); - } else { -#ifdef VERBOSE_BOTTLENECK - std::cerr << "Warning: in file " << fname << ", line number " << lineNumber << ", zero persistence point ignored: \"" << line << "\"" << std::endl; + return false; + } + catch (const std::out_of_range&) { +#ifndef FOR_R_TDA + std::cerr << "Error while reading file " << fname << ", line number " << lineNumber << ": value too large in \"" << line << "\"" << std::endl; #endif + return false; + } } + f.close(); + return true; + } + + // wrappers + template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> + inline bool readDiagramPointSet(const std::string& fname, ContType_& result, int& decPrecision) + { + return readDiagramPointSet<RealType_, ContType_>(fname.c_str(), result, decPrecision); + } + + // these two functions are now just wrappers for the previous ones, + // in case someone needs them; decPrecision is ignored + template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> + inline bool readDiagramPointSet(const char* fname, ContType_& result) + { + int decPrecision; + return readDiagramPointSet<RealType_, ContType_>(fname, result, decPrecision); + } + + template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> + inline bool readDiagramPointSet(const std::string& fname, ContType_& result) + { + int decPrecision; + return readDiagramPointSet<RealType_, ContType_>(fname.c_str(), result, decPrecision); } - f.close(); - return true; -} - - -// wrappers -template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> -bool readDiagramPointSet(const std::string& fname, ContType_& result, int& decPrecision) -{ - return readDiagramPointSet<RealType_, ContType_>(fname.c_str(), result, decPrecision); -} - -// these two functions are now just wrappers for the previous ones, -// in case someone needs them; decPrecision is ignored -template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> -bool readDiagramPointSet(const char* fname, ContType_& result) -{ - int decPrecision; - return readDiagramPointSet<RealType_, ContType_>(fname, result, decPrecision); -} - -template<class RealType_ = double, class ContType_ = std::vector<std::pair<RealType_, RealType_>>> -bool readDiagramPointSet(const std::string& fname, ContType_& result) -{ - int decPrecision; - return readDiagramPointSet<RealType_, ContType_>(fname.c_str(), result, decPrecision); -} } // end namespace hera #endif // HERA_DIAGRAM_READER_H diff --git a/geom_bottleneck/include/dnn/local/kd-tree.hpp b/geom_bottleneck/include/dnn/local/kd-tree.hpp index 249fa55..5b84eb0 100644 --- a/geom_bottleneck/include/dnn/local/kd-tree.hpp +++ b/geom_bottleneck/include/dnn/local/kd-tree.hpp @@ -106,11 +106,11 @@ hera::bt::dnn::KDTree<T>::OrderTree size_t next_i = (i + 1) % traits.dimension(); // Replace with a size condition instead? - if (b < m - 1) + if (m - b > 1) q.push(KDTreeNode(b, m, im, next_i)); else if (b < m) tree->parents_[im - 1] = im; - if (e > m + 2) + if (e - m > 2) q.push(KDTreeNode(m+1, e, im, next_i)); else if (e > m + 1) tree->parents_[im + 1] = im; @@ -210,7 +210,7 @@ void hera::bt::dnn::KDTree<T>::search(PointHandle q, ResultsFunctor& rf) const DistanceType diffToWasserPower = (diff > 0 ? 1.0 : -1.0) * fabs(diff); size_t lm = m + 1 + (e - (m+1))/2 - tree_.begin(); - if ( subtree_n_elems[lm] > 0 ) { + if ( e > m + 1 and subtree_n_elems[lm] > 0 ) { if (e > m + 1 && diffToWasserPower >= -D) { nodes.push(KDTreeNode(m+1, e, i)); } diff --git a/geom_bottleneck/include/neighb_oracle.h b/geom_bottleneck/include/neighb_oracle.h index c3751b3..91ebc0e 100644 --- a/geom_bottleneck/include/neighb_oracle.h +++ b/geom_bottleneck/include/neighb_oracle.h @@ -179,7 +179,7 @@ public: // store normal items in kd-tree for(const auto& g : allPoints) { if (true) { - kdtreeItems[trueIdx] = dnnItemIdx; + kdtreeItems.push_back(dnnItemIdx); // index of items is id of dnn-point DnnPoint p(trueIdx); p[0] = g.getRealX(); diff --git a/geom_bottleneck/tests/data/test_001_A b/geom_bottleneck/tests/data/test_001_A new file mode 100644 index 0000000..8d04f96 --- /dev/null +++ b/geom_bottleneck/tests/data/test_001_A @@ -0,0 +1 @@ +1 2 diff --git a/geom_bottleneck/tests/data/test_001_B b/geom_bottleneck/tests/data/test_001_B new file mode 100644 index 0000000..9290688 --- /dev/null +++ b/geom_bottleneck/tests/data/test_001_B @@ -0,0 +1 @@ +4 6 diff --git a/geom_bottleneck/tests/data/test_002_A b/geom_bottleneck/tests/data/test_002_A new file mode 100644 index 0000000..8d04f96 --- /dev/null +++ b/geom_bottleneck/tests/data/test_002_A @@ -0,0 +1 @@ +1 2 diff --git a/geom_bottleneck/tests/data/test_002_B b/geom_bottleneck/tests/data/test_002_B new file mode 100644 index 0000000..a4cec9b --- /dev/null +++ b/geom_bottleneck/tests/data/test_002_B @@ -0,0 +1 @@ +1.1 2.2 diff --git a/geom_bottleneck/tests/data/test_003_A b/geom_bottleneck/tests/data/test_003_A new file mode 100644 index 0000000..fdf0acd --- /dev/null +++ b/geom_bottleneck/tests/data/test_003_A @@ -0,0 +1,2 @@ +1 2 +2 inf diff --git a/geom_bottleneck/tests/data/test_003_B b/geom_bottleneck/tests/data/test_003_B new file mode 100644 index 0000000..ac429f9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_003_B @@ -0,0 +1,2 @@ +1.1 2.2 +4 inf diff --git a/geom_bottleneck/tests/data/test_004_A b/geom_bottleneck/tests/data/test_004_A new file mode 100644 index 0000000..fdf0acd --- /dev/null +++ b/geom_bottleneck/tests/data/test_004_A @@ -0,0 +1,2 @@ +1 2 +2 inf diff --git a/geom_bottleneck/tests/data/test_004_B b/geom_bottleneck/tests/data/test_004_B new file mode 100644 index 0000000..5769823 --- /dev/null +++ b/geom_bottleneck/tests/data/test_004_B @@ -0,0 +1,3 @@ +1.1 2.2 +4 inf +4 inf diff --git a/geom_bottleneck/tests/data/test_005_A b/geom_bottleneck/tests/data/test_005_A new file mode 100644 index 0000000..e28367d --- /dev/null +++ b/geom_bottleneck/tests/data/test_005_A @@ -0,0 +1,6 @@ +1 2 +2 inf +3 inf +10 inf +inf 21 +inf 44 diff --git a/geom_bottleneck/tests/data/test_005_B b/geom_bottleneck/tests/data/test_005_B new file mode 100644 index 0000000..7f6032b --- /dev/null +++ b/geom_bottleneck/tests/data/test_005_B @@ -0,0 +1,6 @@ +1.1 2.2 +4 inf +4 inf +12 inf +inf 20 +inf 40 diff --git a/geom_bottleneck/tests/data/test_006_A b/geom_bottleneck/tests/data/test_006_A new file mode 100644 index 0000000..b5184a5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_006_A @@ -0,0 +1,7 @@ +1 2 +2 inf +3 inf +10 inf +inf 21 +inf 44 +1 34 diff --git a/geom_bottleneck/tests/data/test_006_B b/geom_bottleneck/tests/data/test_006_B new file mode 100644 index 0000000..0d07369 --- /dev/null +++ b/geom_bottleneck/tests/data/test_006_B @@ -0,0 +1,7 @@ +2 40 +1.1 2.2 +4 inf +4 inf +12 inf +inf 20 +inf 40 diff --git a/geom_bottleneck/tests/data/test_007_A b/geom_bottleneck/tests/data/test_007_A new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/geom_bottleneck/tests/data/test_007_A diff --git a/geom_bottleneck/tests/data/test_007_B b/geom_bottleneck/tests/data/test_007_B new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/geom_bottleneck/tests/data/test_007_B diff --git a/geom_bottleneck/tests/data/test_008_A b/geom_bottleneck/tests/data/test_008_A new file mode 100644 index 0000000..50b3df6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_008_A @@ -0,0 +1 @@ +0 1.1 diff --git a/geom_bottleneck/tests/data/test_008_B b/geom_bottleneck/tests/data/test_008_B new file mode 100644 index 0000000..1935b11 --- /dev/null +++ b/geom_bottleneck/tests/data/test_008_B @@ -0,0 +1 @@ +0 0.1 diff --git a/geom_bottleneck/tests/data/test_009_A b/geom_bottleneck/tests/data/test_009_A new file mode 100644 index 0000000..a1b859e --- /dev/null +++ b/geom_bottleneck/tests/data/test_009_A @@ -0,0 +1 @@ +1.1 0 diff --git a/geom_bottleneck/tests/data/test_009_B b/geom_bottleneck/tests/data/test_009_B new file mode 100644 index 0000000..b5befbc --- /dev/null +++ b/geom_bottleneck/tests/data/test_009_B @@ -0,0 +1 @@ +0.1 0 diff --git a/geom_bottleneck/tests/data/test_010_A b/geom_bottleneck/tests/data/test_010_A new file mode 100644 index 0000000..8d126f0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_010_A @@ -0,0 +1,100 @@ +7.50638 7.78005 +0.991758 2.12178 +5.18481 6.61702 +6.14703 7.08581 +4.09936 4.83024 +3.79915 4.51283 +3.17645 3.75321 +0.61305 0.998622 +0.445643 1.13781 +6.38205 6.53669 +5.96392 6.44093 +7.21047 7.26005 +0.6703 1.26593 +0.529933 1.7027 +7.92495 8.83023 +2.1382 2.71695 +3.79209 4.5197 +5.23354 5.82214 +-0.395097 2.18831 +3.22028 3.88648 +5.56262 5.79949 +8.39623 9.37185 +2.7452 3.84539 +9.5022 10.2414 +1.01374 1.40504 +3.2029 3.89559 +7.61236 8.28485 +6.4371 6.909 +4.45616 5.35067 +1.57802 1.77895 +6.5991 7.76339 +6.66729 6.71714 +6.11898 6.57121 +2.60663 4.36396 +-0.259613 1.17683 +7.72857 9.48862 +4.68398 5.51521 +4.87447 5.4233 +6.86301 6.88244 +4.17814 4.25886 +8.70558 9.72902 +4.40873 4.57389 +6.1824 7.05049 +7.97557 8.79739 +8.52591 8.6985 +5.15336 5.27796 +9.70144 9.77031 +0.561778 1.39045 +9.32553 10.2456 +7.01495 7.74521 +6.83355 7.28255 +1.96721 3.01504 +5.78411 7.59464 +5.64012 6.10721 +3.7249 5.17086 +4.33297 5.91657 +7.11793 7.2545 +5.109 6.76878 +3.02787 3.04077 +0.999365 2.05566 +8.81392 8.9086 +6.20106 6.78943 +6.7987 7.05794 +0.438805 0.449602 +8.71793 9.79853 +-0.150282 0.51997 +5.72257 5.93156 +5.71098 6.09535 +9.0378 9.45942 +0.534987 0.872885 +7.72276 8.57754 +9.26069 9.40289 +4.148 4.80519 +1.04579 3.18109 +0.259767 0.93215 +0.250608 0.511569 +4.88108 5.62239 +4.6731 5.3348 +7.84979 7.93545 +0.912521 1.48142 +4.82553 5.38108 +6.02179 7.61665 +3.85848 6.39418 +5.10754 6.02118 +1.71956 1.86238 +6.47336 6.74034 +-0.0371018 0.212738 +3.97259 4.15465 +2.17413 3.20188 +4.49098 6.09812 +6.62445 7.84196 +6.57541 7.432 +6.81052 9.6653 +3.67502 4.69734 +3.92378 4.14743 +5.93127 6.46154 +0.63424 0.705454 +7.60129 9.23263 +4.23064 4.74575 +0.397705 1.24458 diff --git a/geom_bottleneck/tests/data/test_010_B b/geom_bottleneck/tests/data/test_010_B new file mode 100644 index 0000000..852799d --- /dev/null +++ b/geom_bottleneck/tests/data/test_010_B @@ -0,0 +1,100 @@ +5.8232 6.36308 +2.16066 2.48668 +2.38754 4.91418 +4.77403 5.43982 +0.291412 1.11147 +3.77337 5.2686 +8.31344 9.05384 +0.734064 1.14844 +7.57606 7.8521 +3.16719 3.86953 +2.55072 2.64932 +9.51707 9.6071 +0.304643 2.41784 +2.79925 3.28234 +5.32901 7.7576 +5.19903 6.30449 +1.87819 2.99454 +8.92272 9.67105 +4.62414 5.05592 +4.0079 4.64148 +2.26369 3.44573 +2.69335 3.13426 +1.90706 2.42652 +2.68113 2.79133 +1.41065 1.56018 +6.55282 7.18725 +5.72986 6.37151 +7.26968 8.22623 +3.32643 3.73606 +3.77325 4.63115 +1.05457 1.83651 +8.6815 8.85251 +3.91285 4.17139 +0.380936 0.842109 +7.33227 7.69334 +8.45635 8.923 +4.1769 5.08373 +0.501374 2.23328 +-0.161782 1.28908 +3.44716 3.4662 +3.15394 4.30243 +8.71416 9.3781 +6.3034 8.62893 +6.53824 7.04611 +0.6386 1.35269 +0.862088 0.960371 +5.12963 5.20203 +1.58695 2.0452 +6.57698 6.63228 +3.87747 4.45669 +1.51273 3.25669 +-0.0992804 0.667302 +4.7489 4.80059 +0.0280559 1.90471 +6.7462 8.27612 +0.915652 1.30007 +2.79556 3.77404 +9.87989 10.0722 +9.39105 9.84229 +7.57235 9.37122 +5.09426 6.44266 +6.3994 6.72037 +5.73441 6.99341 +6.9079 7.88049 +4.2003 4.41933 +-1.72447 2.25877 +9.04907 9.64323 +4.40473 5.3593 +9.31201 9.96079 +7.28343 8.74163 +3.0172 6.23779 +8.08422 8.56069 +6.83038 6.99863 +2.32038 3.1289 +7.42302 8.26286 +6.66905 7.18496 +0.730748 1.61335 +4.00564 5.73993 +2.81231 3.67489 +2.33178 2.37845 +9.03302 9.68681 +0.567816 0.755485 +7.89783 8.7621 +0.177662 0.332833 +-0.181569 1.36821 +6.22158 6.55787 +4.67115 5.16995 +0.806432 0.820738 +7.69636 7.87402 +4.40933 4.54995 +9.1329 9.15037 +8.87416 9.04329 +1.14349 1.8993 +3.29756 4.7172 +6.67873 8.31364 +6.91238 7.1654 +0.483084 1.55006 +2.66058 3.86294 +5.93347 6.06085 +7.40514 9.05071 diff --git a/geom_bottleneck/tests/data/test_011_A b/geom_bottleneck/tests/data/test_011_A new file mode 100644 index 0000000..164b71d --- /dev/null +++ b/geom_bottleneck/tests/data/test_011_A @@ -0,0 +1,200 @@ +0.471299 1.89241 +2.82136 3.97846 +8.81923 9.20678 +1.42474 1.65425 +8.36963 9.16097 +-0.236476 0.692489 +7.57182 8.06148 +2.89878 3.21958 +7.1285 7.51707 +5.75496 7.09461 +6.00081 6.10914 +9.60869 9.64676 +7.42889 8.97174 +7.26061 8.55944 +2.41226 2.5146 +8.5616 9.44847 +7.4946 8.86962 +5.42244 6.98028 +9.62386 9.96039 +7.70591 9.92849 +1.34119 3.2048 +3.92169 5.15228 +8.82955 9.60318 +7.94213 9.39997 +2.6716 4.02057 +0.375206 0.497663 +1.94572 3.65599 +1.03366 1.46356 +8.91855 10.1838 +7.11087 8.64425 +2.63266 2.78706 +8.93611 10.2943 +8.51999 9.28356 +1.31436 3.13725 +1.92871 4.00178 +8.30503 8.45555 +2.58739 2.82076 +3.20419 5.29453 +7.4015 8.13225 +9.07991 9.74729 +0.822366 0.938371 +2.90508 4.29367 +4.32385 5.4787 +3.63054 4.6918 +8.52962 9.87004 +1.16994 2.39465 +2.61903 3.33772 +4.15505 4.52942 +8.7068 9.66579 +8.10373 9.31351 +0.7954 1.23001 +7.82253 8.69505 +4.59616 5.91996 +1.02032 1.93931 +6.98421 8.46017 +8.42263 11.3447 +2.63444 3.7158 +7.49059 9.1137 +-0.122109 1.41074 +8.29578 8.81161 +6.24793 6.32368 +4.07212 4.39695 +5.32453 7.457 +8.3892 9.82048 +4.35981 4.78063 +5.49932 6.08321 +1.0107 1.53369 +2.48759 2.94139 +4.24977 5.52034 +1.93104 3.35207 +-0.733247 1.22412 +-0.354283 2.36812 +6.34728 6.44213 +5.98172 7.8753 +5.47963 6.82986 +6.01986 6.6588 +4.62793 5.22134 +7.73923 8.29761 +8.85565 9.51494 +5.55307 6.15804 +6.30963 7.17248 +9.4775 10.2636 +7.45333 7.74006 +1.79317 2.33273 +7.73056 8.44999 +3.94172 5.02778 +8.36177 9.85172 +5.91765 8.12935 +7.95436 8.97583 +5.06238 5.37907 +4.56153 4.97175 +9.47572 9.65038 +9.54745 9.922 +7.82271 8.66299 +4.19056 4.75156 +4.15657 5.72352 +0.213845 0.312444 +2.30944 2.6806 +2.42391 3.41888 +6.00512 6.88274 +6.64546 7.61145 +-0.204229 2.78228 +-0.417104 0.667252 +8.18696 8.67785 +9.27818 9.67924 +-0.0174685 0.21355 +5.91137 6.39606 +9.49268 10.1457 +2.11362 4.36526 +6.51084 7.82167 +6.07066 6.44843 +-0.653518 1.08588 +7.46736 7.87137 +5.26045 7.92188 +6.4171 6.8133 +6.73709 7.70383 +3.46451 4.23679 +0.122365 0.809853 +7.98627 8.0505 +1.71192 2.63047 +1.20624 2.12087 +4.6812 5.51566 +2.62672 2.67648 +4.203 5.1052 +5.26482 6.5186 +3.68166 3.74701 +2.72011 3.98338 +3.41652 3.71477 +2.26211 2.90374 +0.930209 1.43211 +1.98603 3.36662 +4.55838 5.9933 +5.66292 6.59838 +3.12432 3.87457 +6.54384 8.38959 +0.205059 0.331022 +8.70617 9.34121 +7.02182 7.38679 +2.36908 2.84197 +9.13221 9.76563 +7.50113 9.49245 +8.15671 8.45093 +1.9517 2.20923 +3.23368 3.43695 +2.97273 4.10133 +7.36338 8.96733 +4.77525 5.18347 +9.47774 10.3537 +1.75218 1.97051 +5.42544 6.18939 +9.75801 10.0151 +6.31285 6.38327 +8.43389 8.721 +7.6108 7.81113 +8.72029 10.3153 +5.18655 7.1101 +7.96243 8.43151 +0.798103 0.860125 +1.1289 2.77549 +5.91084 6.03085 +4.95884 5.46913 +5.88125 6.49667 +7.9394 8.9545 +5.07492 5.55063 +5.92251 6.08548 +3.88602 5.41487 +1.40122 2.15276 +8.74244 8.83223 +4.75577 6.60338 +0.921272 1.44873 +3.77361 3.90348 +8.8999 9.8518 +3.11077 4.85674 +8.56185 10.6345 +8.76335 9.00169 +6.8734 8.60197 +4.54408 4.93892 +5.57849 6.31727 +7.95161 8.30843 +1.55798 2.4957 +3.86082 3.97131 +6.45433 7.17065 +0.96021 2.32897 +6.84576 6.89531 +8.59095 8.70199 +3.57754 4.26457 +5.27979 5.74385 +2.06602 2.90525 +3.0856 4.18179 +2.76214 3.9982 +2.11943 5.4285 +3.1197 3.24389 +0.495798 1.23632 +3.18253 3.99433 +7.02072 8.37949 +2.77905 3.42643 +1.57093 2.30655 +7.10979 7.14006 +6.20994 6.72092 +8.15136 8.33899 diff --git a/geom_bottleneck/tests/data/test_011_B b/geom_bottleneck/tests/data/test_011_B new file mode 100644 index 0000000..761943d --- /dev/null +++ b/geom_bottleneck/tests/data/test_011_B @@ -0,0 +1,200 @@ +1.17434 1.46837 +2.58198 4.16589 +0.234041 0.968658 +1.52703 1.59579 +6.7103 7.44033 +3.19227 4.41539 +5.42556 5.57369 +3.45417 4.86089 +3.82256 4.1092 +7.82551 7.90784 +3.9384 4.71796 +5.60335 5.9054 +7.96663 9.8987 +6.30305 6.64853 +7.33246 10.5316 +0.623312 1.09008 +2.63041 2.64616 +5.36028 6.28956 +4.64202 5.91858 +7.55219 7.96304 +7.73736 9.18221 +1.67114 1.84851 +5.07514 5.12159 +7.03732 7.05228 +7.5006 7.59212 +0.244947 1.55875 +0.0170454 1.10485 +1.95394 3.53669 +5.66015 6.01949 +5.88211 7.64639 +7.46698 9.27085 +6.37429 7.10154 +4.54535 4.81932 +8.21203 9.35896 +4.89933 6.20802 +3.68683 4.17831 +0.477467 0.828394 +6.17871 6.77834 +9.77523 9.92676 +0.854808 2.38709 +7.93326 8.3553 +2.10917 2.27771 +4.07045 4.72793 +8.2016 8.8011 +2.9205 3.95746 +2.89806 4.39725 +5.5654 5.78669 +9.5219 9.98543 +7.08591 7.19588 +8.35359 9.57893 +9.81348 10.0345 +8.5994 9.71835 +5.43903 7.25234 +1.82768 2.92724 +4.44952 6.79754 +5.66747 7.34386 +5.88153 6.39253 +3.34008 4.22032 +2.46068 2.76051 +0.370778 2.61681 +6.02508 6.26809 +4.32654 4.93262 +7.41536 7.99616 +8.84229 9.87911 +3.8551 5.84353 +1.56832 2.34694 +6.96099 7.42028 +8.15753 8.72014 +9.23141 10.3815 +7.4484 7.80228 +0.473671 0.874895 +3.15689 3.50687 +3.58122 4.09945 +3.55022 3.74767 +4.42708 5.80211 +4.40956 4.68699 +3.80576 4.61856 +7.29965 8.28614 +7.40582 8.15308 +1.69789 1.77669 +1.66419 3.44308 +0.473997 0.872506 +7.83959 8.52898 +6.22416 6.36949 +-0.187159 0.871822 +0.232336 0.585965 +9.29905 9.44357 +1.4459 2.40589 +2.83008 3.19758 +1.15291 2.12112 +2.58686 3.33896 +6.79362 7.88068 +0.228178 1.48318 +5.60001 6.20258 +4.97803 7.10992 +1.70429 1.962 +2.72659 3.13886 +9.22714 9.25889 +3.84694 3.88778 +-0.282077 1.48155 +9.28756 9.58517 +4.34069 5.59751 +8.63909 8.76839 +8.86236 10.7642 +6.77597 8.41888 +7.30621 8.64164 +0.685607 1.22755 +2.91514 3.22638 +2.72098 3.66837 +8.17528 8.32638 +5.19632 5.7506 +7.34177 8.70639 +5.74082 6.35524 +5.95975 6.69284 +9.40187 10.4488 +2.92761 3.36735 +0.399531 3.13082 +4.83399 4.92635 +7.74539 8.56852 +1.76322 3.5086 +6.54479 6.72963 +7.64362 8.12404 +1.35542 1.45313 +0.214385 0.718085 +1.7006 3.21962 +5.91009 6.47862 +2.21093 2.34636 +5.96919 6.79365 +6.59951 8.22203 +1.54571 1.59397 +3.27012 3.79128 +0.32455 0.622995 +1.73926 2.78017 +9.81035 9.84077 +7.38441 7.85171 +8.90372 9.34186 +7.26323 8.41174 +5.7363 5.97348 +8.25473 10.1281 +2.3981 2.52096 +8.53783 9.63442 +8.51755 9.2735 +6.48614 6.773 +3.40182 3.65137 +2.1353 3.04852 +2.95397 3.73285 +6.98063 7.4963 +4.50189 5.26384 +0.21416 1.49363 +0.632196 1.36307 +6.57833 6.60481 +8.0634 9.33903 +2.79759 2.94462 +4.43747 4.58861 +6.48733 6.86569 +2.28008 3.47037 +6.87452 7.77431 +-0.156821 2.71557 +0.72595 1.78862 +1.97586 2.38196 +8.61839 9.1468 +4.55496 5.68986 +0.26923 1.15728 +9.63757 9.7236 +1.39497 1.96698 +4.8643 5.04172 +6.64675 7.66435 +2.56256 2.6015 +-0.381989 0.611211 +0.676336 1.26896 +8.95304 9.03243 +5.62058 6.07997 +3.36522 4.04276 +8.64868 10.5024 +4.75813 5.19834 +1.96608 2.05864 +9.01449 9.10397 +3.72786 4.51921 +5.6938 6.96584 +1.73499 2.9314 +2.73099 3.41409 +8.77171 9.07665 +4.63865 4.67649 +8.6698 9.30782 +-0.168259 2.09581 +9.29672 9.56 +0.372544 2.60567 +0.450487 1.32919 +6.95341 7.6399 +3.4403 5.24993 +5.53469 6.97831 +-0.79664 1.21306 +5.68831 6.14413 +8.85601 8.95444 +3.83309 5.211 +5.51573 6.5114 +3.64009 3.99648 +4.40759 4.99283 +1.85198 2.6457 +2.72645 3.74803 diff --git a/geom_bottleneck/tests/data/test_012_A b/geom_bottleneck/tests/data/test_012_A new file mode 100644 index 0000000..094c6e0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_012_A @@ -0,0 +1,5000 @@ +0.471299 1.89241 +2.82136 3.97846 +8.81923 9.20678 +1.42474 1.65425 +8.36963 9.16097 +-0.236476 0.692489 +7.57182 8.06148 +2.89878 3.21958 +7.1285 7.51707 +5.75496 7.09461 +6.00081 6.10914 +9.60869 9.64676 +7.42889 8.97174 +7.26061 8.55944 +2.41226 2.5146 +8.5616 9.44847 +7.4946 8.86962 +5.42244 6.98028 +9.62386 9.96039 +7.70591 9.92849 +1.34119 3.2048 +3.92169 5.15228 +8.82955 9.60318 +7.94213 9.39997 +2.6716 4.02057 +0.375206 0.497663 +1.94572 3.65599 +1.03366 1.46356 +8.91855 10.1838 +7.11087 8.64425 +2.63266 2.78706 +8.93611 10.2943 +8.51999 9.28356 +1.31436 3.13725 +1.92871 4.00178 +8.30503 8.45555 +2.58739 2.82076 +3.20419 5.29453 +7.4015 8.13225 +9.07991 9.74729 +0.822366 0.938371 +2.90508 4.29367 +4.32385 5.4787 +3.63054 4.6918 +8.52962 9.87004 +1.16994 2.39465 +2.61903 3.33772 +4.15505 4.52942 +8.7068 9.66579 +8.10373 9.31351 +0.7954 1.23001 +7.82253 8.69505 +4.59616 5.91996 +1.02032 1.93931 +6.98421 8.46017 +8.42263 11.3447 +2.63444 3.7158 +7.49059 9.1137 +-0.122109 1.41074 +8.29578 8.81161 +6.24793 6.32368 +4.07212 4.39695 +5.32453 7.457 +8.3892 9.82048 +4.35981 4.78063 +5.49932 6.08321 +1.0107 1.53369 +2.48759 2.94139 +4.24977 5.52034 +1.93104 3.35207 +-0.733247 1.22412 +-0.354283 2.36812 +6.34728 6.44213 +5.98172 7.8753 +5.47963 6.82986 +6.01986 6.6588 +4.62793 5.22134 +7.73923 8.29761 +8.85565 9.51494 +5.55307 6.15804 +6.30963 7.17248 +9.4775 10.2636 +7.45333 7.74006 +1.79317 2.33273 +7.73056 8.44999 +3.94172 5.02778 +8.36177 9.85172 +5.91765 8.12935 +7.95436 8.97583 +5.06238 5.37907 +4.56153 4.97175 +9.47572 9.65038 +9.54745 9.922 +7.82271 8.66299 +4.19056 4.75156 +4.15657 5.72352 +0.213845 0.312444 +2.30944 2.6806 +2.42391 3.41888 +6.00512 6.88274 +6.64546 7.61145 +-0.204229 2.78228 +-0.417104 0.667252 +8.18696 8.67785 +9.27818 9.67924 +-0.0174685 0.21355 +5.91137 6.39606 +9.49268 10.1457 +2.11362 4.36526 +6.51084 7.82167 +6.07066 6.44843 +-0.653518 1.08588 +7.46736 7.87137 +5.26045 7.92188 +6.4171 6.8133 +6.73709 7.70383 +3.46451 4.23679 +0.122365 0.809853 +7.98627 8.0505 +1.71192 2.63047 +1.20624 2.12087 +4.6812 5.51566 +2.62672 2.67648 +4.203 5.1052 +5.26482 6.5186 +3.68166 3.74701 +2.72011 3.98338 +3.41652 3.71477 +2.26211 2.90374 +0.930209 1.43211 +1.98603 3.36662 +4.55838 5.9933 +5.66292 6.59838 +3.12432 3.87457 +6.54384 8.38959 +0.205059 0.331022 +8.70617 9.34121 +7.02182 7.38679 +2.36908 2.84197 +9.13221 9.76563 +7.50113 9.49245 +8.15671 8.45093 +1.9517 2.20923 +3.23368 3.43695 +2.97273 4.10133 +7.36338 8.96733 +4.77525 5.18347 +9.47774 10.3537 +1.75218 1.97051 +5.42544 6.18939 +9.75801 10.0151 +6.31285 6.38327 +8.43389 8.721 +7.6108 7.81113 +8.72029 10.3153 +5.18655 7.1101 +7.96243 8.43151 +0.798103 0.860125 +1.1289 2.77549 +5.91084 6.03085 +4.95884 5.46913 +5.88125 6.49667 +7.9394 8.9545 +5.07492 5.55063 +5.92251 6.08548 +3.88602 5.41487 +1.40122 2.15276 +8.74244 8.83223 +4.75577 6.60338 +0.921272 1.44873 +3.77361 3.90348 +8.8999 9.8518 +3.11077 4.85674 +8.56185 10.6345 +8.76335 9.00169 +6.8734 8.60197 +4.54408 4.93892 +5.57849 6.31727 +7.95161 8.30843 +1.55798 2.4957 +3.86082 3.97131 +6.45433 7.17065 +0.96021 2.32897 +6.84576 6.89531 +8.59095 8.70199 +3.57754 4.26457 +5.27979 5.74385 +2.06602 2.90525 +3.0856 4.18179 +2.76214 3.9982 +2.11943 5.4285 +3.1197 3.24389 +0.495798 1.23632 +3.18253 3.99433 +7.02072 8.37949 +2.77905 3.42643 +1.57093 2.30655 +7.10979 7.14006 +6.20994 6.72092 +8.15136 8.33899 +0.903753 1.57921 +0.380744 1.88053 +1.3164 1.79885 +0.199366 0.576639 +5.53683 6.49433 +8.8705 9.14396 +3.1401 3.98761 +4.82675 6.69396 +7.28593 8.08916 +8.11312 9.92914 +3.25737 3.42109 +2.58413 4.57223 +2.65202 2.77196 +-0.31616 1.51568 +4.1621 5.29563 +4.49155 5.21037 +7.28481 7.31722 +9.70568 10.0406 +2.39057 2.85874 +2.30626 3.16244 +1.15896 2.09616 +5.91343 7.33024 +-0.172181 0.177363 +5.08934 6.10928 +7.15508 7.55315 +4.43036 4.68093 +6.00772 6.49566 +7.9247 8.43809 +1.57028 2.52328 +3.45458 4.43692 +3.18257 4.83824 +1.48243 1.91225 +2.59025 2.99596 +6.93059 8.34359 +4.53752 7.51216 +6.42857 6.51513 +5.5663 6.13877 +7.54367 7.56485 +9.01229 9.19913 +2.84158 3.23347 +0.42959 0.620618 +8.77033 9.33787 +8.06103 8.30989 +6.48425 7.83668 +4.66949 6.00205 +4.46683 4.66247 +8.96738 9.07714 +0.463093 0.514808 +7.72986 9.44537 +6.31391 6.8289 +0.883295 1.70946 +3.73278 3.98015 +6.73453 6.92514 +3.58434 4.43262 +0.236286 1.4601 +2.00505 2.38684 +3.845 4.20708 +1.18852 3.04911 +0.766784 1.00641 +7.38781 8.11216 +8.9396 9.27589 +0.369822 1.53322 +8.76527 9.23987 +0.663408 0.803445 +9.69209 10.1455 +9.73379 10.234 +3.47602 4.89968 +4.12754 5.45249 +7.31984 8.57369 +0.989101 1.47678 +5.57662 5.83292 +4.99092 6.85044 +4.35272 4.3683 +0.0517815 1.92227 +7.2694 7.80634 +1.35565 1.42783 +8.5638 8.91707 +1.74557 2.74123 +2.18226 2.19664 +-0.901334 1.32691 +0.866613 1.03788 +5.30895 6.31774 +7.70178 8.5675 +4.06894 4.16071 +2.59697 3.53162 +4.30201 5.34212 +4.08762 4.19091 +-0.516192 0.848397 +9.85911 10.1066 +0.472991 1.40069 +6.26012 7.0054 +0.707801 2.15445 +1.73825 1.87193 +0.206301 0.831746 +7.77872 7.92715 +4.94477 5.60361 +3.86216 5.16839 +1.35166 1.54482 +2.91721 3.56193 +4.57242 4.75913 +7.09303 8.29678 +8.18431 8.92151 +6.80303 10.87 +1.29208 1.72027 +1.22224 1.31693 +5.26756 6.26459 +2.55221 3.94397 +6.58902 6.78354 +7.85917 8.89791 +6.59279 7.63115 +4.45787 7.26828 +3.48759 5.33991 +2.13838 3.86589 +1.53368 3.57313 +1.41722 3.19336 +3.48388 4.11958 +1.53756 2.98451 +7.29083 8.22109 +1.2713 2.16915 +6.94685 7.31029 +6.2494 7.04676 +3.00376 3.02028 +1.25232 1.43301 +1.50413 2.25 +2.89098 4.77198 +4.50766 5.89294 +5.5403 6.07893 +-0.101858 0.409209 +3.87963 6.1053 +-0.19564 1.46589 +-0.342077 0.694623 +6.63875 7.42223 +7.89982 9.05857 +4.91121 5.48031 +5.90743 8.35815 +7.13881 8.21597 +4.11493 5.08147 +3.59673 3.77176 +8.08236 8.3237 +1.35842 1.48934 +5.42963 5.85906 +4.60778 4.9734 +-0.607198 0.91225 +5.40263 5.7017 +5.08624 5.63236 +7.34529 9.02233 +7.30013 8.12907 +6.56106 6.75585 +6.82576 7.25434 +2.96037 3.56454 +3.60283 4.09137 +6.35408 6.71888 +-0.688103 0.84579 +8.45128 8.69771 +6.31749 7.3294 +5.82223 6.04761 +1.72983 2.38205 +6.94974 7.76985 +9.681 10.0141 +8.65394 9.2456 +2.52904 3.39548 +6.66609 7.35785 +4.18963 4.5473 +3.58643 3.80513 +2.88796 3.82413 +0.992066 1.1477 +4.57942 5.15419 +3.02826 4.32268 +5.91565 6.82087 +4.13694 5.13393 +6.28717 6.53257 +1.3149 2.36944 +0.488974 0.981461 +4.32763 4.98272 +-0.420836 0.63619 +7.13406 7.31362 +0.367782 1.91138 +6.14763 6.16713 +0.837933 1.92794 +9.3781 10.0609 +3.22887 5.44584 +5.91554 6.65974 +5.68608 6.02435 +7.99715 8.55953 +5.37106 5.38574 +0.254544 0.374268 +0.184701 0.917061 +9.38005 9.54042 +6.86741 7.35628 +0.87398 1.69093 +7.75845 8.53773 +0.370425 1.35335 +0.699837 0.810893 +3.73223 4.32089 +3.81804 3.85752 +4.85936 5.10097 +2.70381 3.10519 +3.82523 5.27699 +9.13422 10.3317 +4.62775 4.77988 +7.91139 7.95504 +2.72614 4.79958 +0.863357 1.88643 +4.14155 5.02327 +2.49683 4.11585 +1.06741 1.11516 +6.20979 8.38443 +0.936362 2.46703 +6.58231 7.85063 +1.89469 2.31422 +8.70668 9.14006 +5.76486 6.1122 +3.15778 3.76679 +0.248282 2.19881 +1.25317 1.92694 +7.81837 9.53067 +-0.582906 0.818904 +8.34194 8.37845 +4.4913 5.10164 +3.86376 5.5453 +6.94054 7.68699 +2.07462 2.5811 +0.518698 2.1529 +3.51773 4.60946 +8.39915 8.98446 +1.63685 2.19755 +6.60737 9.05917 +2.06667 3.23994 +3.18822 3.31219 +2.44332 3.22088 +4.755 4.87118 +4.34245 4.91565 +4.64562 4.8104 +2.73282 3.35646 +9.48057 9.86441 +0.640899 1.03356 +0.789475 0.925731 +1.4247 1.58347 +1.47747 2.25408 +8.8612 9.81597 +8.44147 10.6885 +9.07046 10.0877 +0.350125 1.15765 +4.45375 5.73964 +4.06526 4.26457 +7.50776 8.23491 +1.55452 1.63786 +2.8399 4.52559 +1.34319 1.47951 +5.21572 5.65702 +5.85695 6.75574 +8.21826 10.657 +-0.0479956 1.79162 +1.72905 1.78113 +3.35685 4.03797 +3.7123 5.82296 +8.56751 10.2992 +4.07987 4.25273 +5.8347 6.07253 +3.25283 3.99065 +9.31995 10.3647 +0.649025 1.14496 +1.06966 2.04182 +7.59831 7.85826 +3.35263 3.84374 +4.91371 5.10148 +8.0875 9.23421 +3.00484 5.14282 +8.60448 9.09442 +5.61429 6.24037 +3.4729 4.17907 +7.18702 7.26274 +0.729966 0.928899 +2.27264 2.81241 +2.67248 3.91661 +3.98443 4.64406 +5.50463 6.92435 +-0.257961 0.905736 +5.71363 6.67387 +4.12643 4.66467 +3.97623 4.64917 +9.71227 9.8243 +8.66674 8.97634 +7.94673 8.73904 +7.45228 8.14466 +3.78405 4.81189 +4.05505 5.00011 +2.84957 3.15451 +6.93785 7.58172 +1.85006 1.96814 +6.82256 7.00166 +2.42727 2.68161 +8.06129 8.76308 +1.53758 3.67482 +2.5057 4.18495 +7.09618 7.79664 +1.12843 1.46228 +1.61447 2.2668 +5.58639 5.70776 +8.15398 8.34959 +2.49733 2.57643 +5.18817 5.32462 +5.62963 5.86377 +1.95215 2.26641 +7.22129 7.23255 +5.99833 6.18639 +6.20875 7.13868 +6.814 7.6597 +7.41314 9.49798 +5.48819 6.31634 +4.81318 5.08156 +9.15434 9.42787 +4.83201 5.43295 +1.44477 2.6455 +8.8907 10.4727 +3.19487 3.21255 +1.47291 3.13113 +4.14796 5.10058 +5.85016 8.41212 +7.58183 8.53659 +9.5978 10.2877 +1.5954 2.58394 +2.65561 4.0975 +-0.157024 0.16627 +7.04379 7.75368 +2.39896 2.7728 +2.42376 3.58085 +0.158653 0.857045 +7.82101 9.01833 +6.80499 7.35261 +6.62833 6.66255 +4.90229 5.45681 +8.50205 8.69236 +2.01845 2.06924 +8.2503 9.04222 +4.58265 5.52758 +8.6176 9.74887 +1.28468 1.77019 +5.40424 6.20705 +0.943905 1.98023 +4.2702 4.41287 +3.89454 4.4814 +0.585132 1.56351 +9.45354 10.5374 +3.7501 5.07553 +7.53248 8.14004 +4.60026 4.78921 +1.61073 4.22368 +6.22591 7.40966 +0.57866 1.0522 +5.877 6.55882 +3.54573 3.7731 +7.64294 7.66103 +8.2399 9.14032 +0.307808 0.571367 +7.89791 9.25734 +5.2852 5.84332 +0.45713 2.42223 +7.73426 8.48158 +8.0058 9.46405 +8.03189 8.41868 +1.54624 1.98914 +7.24167 7.27699 +8.61226 8.83199 +5.38365 6.52599 +0.827018 1.51428 +7.19285 7.48372 +-0.0969552 2.16007 +4.08084 6.32563 +9.16026 10.2604 +0.206147 0.717435 +4.00643 4.8093 +2.16139 3.14759 +1.73359 3.13485 +9.1103 9.36052 +7.05621 7.43901 +4.83509 6.07581 +5.67164 7.89488 +7.93353 8.18454 +2.59566 3.1842 +3.62521 4.95121 +3.0297 3.18649 +1.08515 2.69289 +3.77063 5.7789 +0.106035 1.27409 +0.601099 2.13481 +6.98837 7.58833 +9.22955 9.79149 +1.6398 1.78726 +2.30423 3.34814 +2.3912 2.81842 +4.71724 6.16966 +5.13553 5.5016 +5.34117 5.45075 +9.32776 10.0676 +4.54244 5.29058 +4.01337 5.73188 +8.17427 8.39652 +1.96122 2.6921 +0.594267 1.00176 +-0.136973 0.977133 +6.41362 6.78056 +1.68388 2.39891 +9.50795 10.2315 +-0.262703 1.15557 +8.72229 9.683 +5.41821 5.67519 +4.93514 7.15867 +4.07046 4.26702 +-0.00866106 0.252353 +8.65877 10.1527 +2.10958 3.40353 +2.94947 3.43201 +6.32014 7.06279 +2.55034 2.89646 +3.87777 5.68044 +2.05325 3.00968 +5.11855 6.55784 +8.99618 9.22608 +3.36303 3.84902 +2.6234 3.70832 +7.35189 8.30856 +6.43777 7.28495 +5.33954 5.48055 +0.15999 0.391114 +3.4492 5.07088 +2.38503 2.42742 +3.88912 4.93246 +2.76303 4.54991 +6.56261 7.60381 +3.64198 3.72471 +1.70542 1.78806 +9.71115 9.88315 +0.471586 1.82377 +9.27611 10.5725 +0.486889 0.851587 +4.39234 5.10637 +9.54209 9.8955 +6.99602 7.42461 +2.98797 3.74623 +5.89424 6.4498 +9.63845 9.86333 +4.39828 5.18646 +2.30118 3.5758 +8.68128 9.56011 +9.00505 10.4304 +-0.22184 0.233296 +6.48492 7.60283 +1.54156 2.60693 +4.06808 6.39369 +5.52361 6.26241 +-0.698727 0.745524 +2.30742 2.41924 +0.655833 1.65752 +6.94733 7.81866 +7.83136 9.10651 +6.45284 7.1931 +6.09683 6.66159 +9.03299 9.4163 +1.86392 3.26189 +0.54863 2.07194 +0.364026 1.38376 +0.706954 1.0736 +-0.111015 0.584367 +1.54265 2.1413 +0.501172 0.57928 +2.09411 2.28902 +1.89894 4.09104 +8.72895 8.87045 +5.27709 5.72545 +0.164581 1.64188 +8.39203 8.73608 +8.21523 8.45002 +9.62006 10.1665 +4.79076 6.26442 +3.44189 3.68669 +8.93789 9.38343 +7.07036 7.64194 +8.34396 9.56445 +8.29992 8.64954 +5.82566 7.83287 +2.43008 3.4476 +1.81121 2.12203 +4.36108 4.3842 +6.28756 6.95939 +3.8698 5.79519 +0.644581 0.699162 +9.71982 10.2422 +4.86545 5.00544 +8.3808 9.29356 +1.34495 1.40972 +1.03641 2.01838 +8.55609 9.99958 +1.40813 3.46097 +3.20928 4.08838 +8.24345 9.11587 +1.27604 2.03462 +8.28298 8.46252 +2.20644 3.19585 +1.91396 2.30108 +4.2553 5.66006 +7.34925 8.38275 +6.28319 7.22199 +8.42171 9.62596 +1.12059 1.18262 +1.37555 1.84196 +4.39663 4.93639 +9.28044 9.58437 +5.47407 6.88593 +8.36529 8.49813 +9.40208 10.5922 +-0.451389 1.92404 +2.89431 3.19453 +6.51433 8.02158 +5.52163 6.06786 +7.63525 9.86457 +4.13898 5.05845 +0.136662 0.503748 +6.13492 6.74997 +8.37416 9.18971 +8.64164 8.82663 +0.941173 1.16158 +6.9073 8.26916 +8.37278 8.44326 +8.8951 9.20427 +8.40149 9.17577 +3.60361 4.57183 +8.67263 10.1127 +5.89716 6.45412 +1.97285 2.35593 +7.22973 8.13467 +9.55645 9.92529 +0.261578 0.836274 +9.04414 9.45485 +6.18043 6.54229 +8.88579 9.54087 +1.82613 2.93849 +5.7599 5.96366 +5.23105 5.5541 +0.425229 1.44436 +0.32065 2.60892 +7.83655 9.48786 +2.3168 3.45972 +2.35466 3.23342 +8.24494 8.27258 +7.32678 7.74264 +8.37275 10.0741 +4.17337 4.98348 +-0.162009 0.724431 +9.49757 9.76377 +8.69435 9.08089 +4.13841 4.7514 +7.26358 7.55514 +6.91912 6.93 +6.7883 7.18296 +-0.614315 1.1857 +6.05907 7.33557 +4.86704 4.87705 +8.50012 9.14836 +1.83683 3.09895 +6.16389 8.39248 +3.03556 4.41004 +4.72416 5.05782 +1.98183 3.19183 +2.77103 5.71501 +4.90002 4.9817 +0.269258 0.725628 +5.59551 7.05038 +2.95416 3.09633 +2.17662 3.18385 +6.67536 7.56762 +7.31678 7.39321 +3.84158 3.85359 +4.38203 5.10149 +0.816784 1.09918 +0.70131 0.739502 +0.276631 2.32633 +9.15839 9.49433 +0.721295 1.97673 +2.63875 2.75437 +5.00344 5.5645 +2.24555 2.81234 +7.74465 9.07646 +2.35244 4.90632 +0.812093 0.954419 +3.97904 5.2071 +4.19177 4.83646 +0.853012 1.331 +2.64112 3.25613 +0.0894716 1.61954 +3.39617 3.40859 +1.56906 2.28518 +2.37258 4.36515 +1.60997 1.7561 +5.15275 5.33281 +6.47824 7.47529 +2.51145 3.29949 +2.71094 2.77785 +8.84653 9.48398 +1.3246 1.66664 +7.43718 7.5546 +3.68985 4.24649 +4.50553 4.51669 +4.15617 4.54887 +8.55319 10.2136 +2.1448 3.55805 +4.64594 4.71505 +1.71763 1.99977 +4.98066 5.46709 +7.7779 8.36497 +-0.0604997 0.301294 +5.11873 7.32867 +4.94567 5.5986 +5.32645 6.26835 +2.5768 3.13511 +3.31604 3.87555 +1.60834 2.68762 +3.30552 3.85211 +4.26741 4.98636 +0.820475 1.18854 +7.91501 10.7203 +5.17391 5.30351 +4.00452 5.75141 +2.37722 3.4602 +2.2373 2.94837 +1.62462 3.48264 +7.98507 9.2566 +5.32504 5.56388 +0.760614 0.7802 +0.855659 1.01522 +3.11231 4.43223 +5.62821 6.21564 +4.96845 5.35921 +8.10559 9.11106 +1.02533 1.13103 +6.99976 7.0788 +1.87628 2.58801 +1.11023 2.24655 +5.23343 5.45086 +0.95875 2.25343 +7.45917 8.23614 +2.72245 3.04663 +8.66816 8.70698 +5.55734 7.12262 +1.01935 1.88271 +0.804417 1.76187 +7.82703 8.78426 +4.77321 6.15199 +2.91503 3.69352 +0.776735 1.08883 +5.19981 5.46442 +9.06483 10.4008 +7.72082 8.26398 +2.9854 3.26573 +0.584028 2.60443 +0.700994 1.10379 +5.47612 5.94502 +-0.318442 0.986786 +5.0704 5.08055 +3.83732 4.4826 +5.60843 6.59005 +8.81432 9.7851 +6.28792 6.65284 +1.16812 2.27701 +7.15234 9.66795 +9.02188 9.15339 +1.76112 2.04839 +7.49419 7.6204 +5.1765 5.497 +1.45855 1.94969 +1.35003 1.55822 +2.50453 2.86815 +7.10451 8.51352 +3.87727 4.1124 +1.84876 2.79351 +3.01661 4.05396 +-0.16814 0.366484 +-0.538895 0.608786 +7.59933 9.00744 +0.938648 2.38471 +5.76934 6.16572 +8.20416 8.62505 +8.64542 8.7264 +2.75784 2.7828 +0.794451 1.97817 +9.21331 10.5156 +8.46671 8.80572 +3.94814 5.16845 +6.73654 6.97397 +4.05301 4.93008 +6.37833 6.77985 +7.21161 8.15994 +3.74993 4.61029 +-0.127938 1.09853 +2.82957 4.28816 +6.50564 6.59445 +8.37926 8.48332 +0.757443 1.74585 +0.232438 0.972293 +6.99187 8.7098 +7.20368 8.44301 +4.4801 6.07501 +4.34015 6.1495 +2.19394 3.22334 +7.29817 8.41021 +1.16627 2.68901 +4.62423 5.08039 +0.955655 2.22882 +1.45862 3.07065 +1.69815 2.56291 +4.01179 4.36587 +7.135 7.75829 +6.6823 7.27765 +5.44745 5.67195 +4.94594 5.42067 +0.267772 0.301939 +0.676432 1.6296 +1.37335 1.91645 +1.89051 2.38631 +4.84386 6.30539 +8.95613 10.944 +2.18119 2.41821 +5.74901 6.16952 +7.5431 7.88071 +9.05278 9.8128 +0.201334 1.65323 +2.82787 3.82083 +3.07073 3.08475 +8.99671 10.1766 +5.43261 6.12137 +4.83693 4.86848 +6.31804 7.21544 +2.34491 3.2562 +6.05941 6.53725 +-0.483381 1.17347 +5.53777 5.72651 +3.28875 3.47472 +3.94609 4.9418 +7.45585 8.6871 +1.50066 2.57215 +8.10112 8.67954 +6.24737 6.42635 +0.64413 1.05759 +7.1741 8.21476 +0.502722 1.77462 +0.783663 1.74174 +9.52704 9.9109 +-0.473873 2.01013 +7.07946 7.11474 +0.857335 1.6501 +4.00225 4.84453 +5.40598 6.30573 +8.18802 8.30067 +9.00412 10.9588 +9.8362 10.1517 +7.62735 8.37572 +3.41477 4.63099 +2.51254 2.81559 +6.36702 6.56061 +5.11842 5.35515 +5.21873 5.73296 +5.73528 7.77276 +3.64993 4.66826 +7.12664 8.46553 +8.7257 9.16851 +1.27615 2.20376 +7.46188 8.20752 +2.64939 2.66373 +4.94147 6.0509 +6.3805 7.48841 +6.25197 7.12327 +0.0885331 1.2682 +4.97356 6.58488 +4.11917 4.27267 +9.08793 9.70385 +0.897277 1.31702 +6.87538 8.25544 +1.55565 1.59492 +2.62483 3.54274 +1.49631 2.92263 +9.45305 9.97728 +6.24087 6.4577 +3.94636 5.13669 +-0.000956745 1.08235 +1.46134 1.83767 +9.18517 10.6601 +-0.740186 1.81269 +5.81977 6.15818 +7.0529 7.99421 +6.17753 7.49749 +8.63091 9.04205 +9.65219 10.1558 +3.12839 4.99211 +2.97262 4.07384 +4.28605 4.33171 +4.15906 5.6805 +1.35165 1.50732 +0.524207 2.12307 +5.32468 7.01472 +3.16982 4.87893 +6.88786 8.34191 +3.81703 5.22335 +3.86772 4.37359 +8.19386 10.0705 +1.73155 3.16695 +4.31685 4.62261 +9.40618 9.89612 +4.41215 5.19659 +2.35595 2.63543 +7.88481 8.14203 +7.17062 10.3534 +9.41379 10.389 +7.99867 9.01239 +3.31382 4.04915 +5.39222 6.07657 +8.5187 8.65976 +9.30132 10.6131 +7.17351 7.93596 +4.80134 6.72724 +3.59756 4.65182 +1.08248 1.17479 +1.03124 1.06871 +6.43154 6.95098 +-0.102199 0.59801 +4.94795 5.18081 +6.39126 7.30258 +1.52738 2.04271 +1.80373 2.33093 +2.72251 3.01677 +0.296722 1.10844 +6.39104 6.51567 +8.70965 8.78714 +2.07858 4.41695 +1.91027 2.9718 +1.42944 2.01864 +1.96347 2.73397 +4.0701 4.22456 +4.02859 4.05107 +7.10977 7.98092 +8.21148 9.54287 +6.59231 7.65109 +0.144191 0.830665 +2.0192 2.23704 +8.03482 8.39591 +8.90473 9.98543 +2.18284 2.70166 +3.05569 3.54238 +8.35319 9.39539 +2.00803 2.42866 +2.35282 3.13763 +2.20155 2.79377 +1.76531 2.94892 +7.52749 7.72567 +3.02266 3.24778 +4.01741 4.22521 +9.75263 9.91571 +6.45502 6.67838 +2.24912 3.47262 +1.84372 2.26517 +4.09559 5.71188 +1.43811 2.33732 +3.89171 4.16905 +3.01506 3.9725 +0.0273168 1.51766 +5.04118 5.80507 +3.08517 4.17316 +8.81637 8.8332 +8.74055 9.50143 +2.36904 2.69008 +6.39733 6.44221 +8.53272 9.51114 +9.48423 9.55002 +8.65645 9.04872 +6.66352 7.48009 +5.64389 7.88656 +5.75301 6.6759 +3.28645 4.22757 +4.99482 5.82988 +3.00004 4.0273 +1.45249 1.56662 +4.96263 5.32195 +7.91351 8.1437 +1.02034 1.56249 +0.71376 1.73319 +0.709968 1.44651 +9.01414 9.54799 +4.02116 4.68005 +7.10903 7.27075 +7.21322 8.71031 +1.6644 2.27186 +3.71304 4.68764 +9.66257 10.1452 +5.34477 5.46136 +9.27722 10.583 +3.82328 4.83316 +4.77019 5.07928 +9.07112 9.23836 +6.99091 7.25634 +2.11871 2.3054 +7.88242 7.98572 +0.570809 0.714073 +8.51532 9.49151 +0.329247 2.48897 +4.78202 5.36476 +1.47969 2.78867 +6.75011 7.36769 +2.31162 2.39533 +3.50434 4.48026 +5.84603 6.28861 +7.5337 7.62538 +1.09955 2.85741 +6.09915 7.20381 +0.933825 2.37925 +0.576363 2.0182 +3.12126 3.22507 +2.85313 3.02656 +3.25724 3.92077 +5.48575 6.58011 +1.02824 1.65415 +8.68703 9.06219 +3.28389 3.86349 +5.80264 6.12775 +7.11846 7.47444 +1.29638 3.38601 +6.37908 7.05986 +-0.592438 0.854361 +0.39233 1.17768 +2.1497 3.94423 +2.42336 2.43441 +6.94806 8.30626 +0.79865 1.4173 +1.41455 1.43684 +0.240074 1.16712 +4.18593 5.9929 +6.161 6.564 +0.726091 1.90706 +0.375606 0.694866 +4.09349 4.26452 +2.01652 2.68038 +8.99301 9.90549 +8.93909 9.17673 +1.10427 2.01247 +9.12668 9.15282 +1.08098 1.55374 +0.377836 0.414809 +7.28611 8.86318 +8.3542 8.53251 +3.86353 4.12875 +6.7631 7.40068 +4.61679 4.78182 +2.12935 3.45492 +3.68233 4.0457 +6.68131 8.22111 +8.79197 8.80474 +1.8915 2.26287 +0.387586 3.073 +6.46798 7.57381 +7.79742 9.34526 +-1.21538 1.67303 +2.07845 2.66028 +3.14148 4.46647 +1.66789 2.73375 +8.49821 10.0574 +8.42537 8.89906 +0.618349 2.72887 +6.8229 7.54501 +6.99343 7.35322 +7.34223 8.68781 +3.18834 3.98274 +8.86908 10.2535 +3.39839 3.76171 +0.188168 0.392276 +1.68187 3.53401 +6.50423 6.71714 +7.61191 8.89715 +1.68463 2.09275 +5.94627 7.6003 +2.15865 3.24126 +7.93639 8.53826 +2.99626 3.43273 +7.71028 8.41172 +3.19472 4.60878 +8.36123 8.92549 +8.92975 9.02783 +2.87187 3.49672 +6.76949 7.71139 +8.09121 9.31151 +6.84199 7.44009 +0.730655 0.800873 +7.5208 7.54109 +6.75992 7.55017 +6.09818 6.17399 +0.639209 1.27283 +3.01917 3.22327 +1.69181 2.60614 +9.49245 9.5842 +-0.418034 1.08035 +5.77705 6.4705 +6.79362 8.51993 +9.73155 9.81609 +3.71503 3.92022 +6.18589 6.77634 +3.94124 4.23942 +7.59911 8.05275 +3.68865 5.10948 +7.63926 8.63019 +-0.049855 0.0844425 +-0.41188 0.807786 +1.35962 1.81039 +5.40579 6.15098 +1.38594 2.0059 +6.93444 8.71958 +7.01229 9.38008 +-0.0974976 0.962679 +4.74131 6.59152 +1.02343 1.59245 +1.55629 1.9128 +6.28353 8.38021 +5.66349 5.79644 +1.72629 2.28563 +1.64539 2.82654 +0.359466 1.05106 +4.37569 4.82703 +5.87657 6.37853 +1.46316 1.65333 +7.44494 7.5985 +1.16846 1.98579 +4.43371 4.93234 +2.31838 2.47777 +7.52687 8.44423 +6.08056 7.42253 +9.16144 9.94783 +4.74382 4.95616 +0.248344 1.05335 +6.12345 7.43941 +9.45647 9.99799 +3.77124 4.75199 +3.31315 3.44873 +-0.0909828 1.51271 +7.03234 8.02546 +8.11403 9.11461 +6.734 7.34799 +1.08903 1.18319 +2.72871 4.31607 +6.53688 7.52754 +1.07868 1.27792 +6.28409 6.56795 +4.89866 5.79458 +9.06994 9.1221 +2.54989 3.14338 +3.69971 5.71717 +3.7113 4.55076 +8.91864 9.64522 +8.75634 8.82359 +9.02242 9.03869 +3.59945 4.20169 +4.98557 5.07401 +4.81526 5.74009 +7.264 8.63749 +2.79579 4.43389 +2.87204 4.66432 +2.32487 3.72127 +3.99704 4.72567 +8.17229 9.0158 +-0.72926 0.823658 +2.52355 3.32725 +5.3446 6.63868 +4.48935 7.37833 +3.08173 3.0968 +2.41585 3.23026 +9.23187 10.5413 +5.50099 5.51888 +1.29634 1.88846 +-0.0113225 1.41526 +6.34508 7.53417 +0.383019 2.25144 +5.0649 5.40222 +3.08221 3.76296 +9.29111 10.6833 +2.19714 2.94735 +8.75711 9.48583 +8.61564 8.69349 +1.9362 3.96191 +3.7962 4.44382 +7.78501 9.03843 +5.79649 7.29675 +6.03048 7.4316 +1.31105 4.36446 +6.5882 7.03622 +4.88148 7.12474 +6.62305 6.90973 +2.27488 2.73731 +8.42703 9.28888 +7.72928 8.53989 +7.27021 8.63879 +0.992908 1.92001 +-0.282737 0.511292 +7.88963 8.03117 +6.93371 8.26148 +-0.0346633 0.403617 +8.7827 8.82558 +5.16876 5.59742 +8.61275 8.73843 +5.70578 6.02783 +9.08706 9.35903 +9.32728 9.83021 +9.20058 10.2497 +6.79824 7.3024 +7.17979 7.51783 +0.918555 2.67878 +7.9662 8.63241 +8.85903 10.3145 +9.34614 10.1964 +9.05027 9.79872 +8.28959 8.45837 +1.32518 2.04557 +8.72848 9.16742 +5.92126 6.77277 +8.31504 8.78631 +1.02487 1.70172 +4.45204 4.72842 +8.20636 10.4724 +5.86211 6.25457 +6.15754 7.71303 +8.37832 8.82577 +4.25233 4.59417 +9.41451 9.95324 +9.372 10.4461 +1.8346 2.7144 +8.00681 8.14717 +7.03997 7.06753 +7.16892 7.70102 +7.01781 7.46799 +1.78526 1.7969 +1.63304 2.2011 +8.59718 8.61083 +9.43498 10.3636 +4.98718 5.32487 +3.65451 4.89601 +8.82368 9.11333 +-0.104862 0.598773 +4.97756 5.62342 +1.99876 3.24686 +2.32242 4.01096 +4.04914 4.77892 +3.81545 4.32583 +3.30153 3.46783 +3.14287 4.04718 +8.65711 8.76768 +9.09385 10.6898 +4.82771 5.64405 +5.98783 6.36785 +7.93397 9.6543 +4.89726 5.65486 +5.08717 5.22314 +6.59377 7.23748 +3.58289 3.98597 +0.177884 0.397629 +5.30856 5.79257 +2.53943 3.98007 +6.51217 6.59644 +0.196888 1.99904 +3.8709 4.1901 +2.37646 2.50997 +7.03837 8.13287 +6.8674 6.89535 +0.576964 2.08851 +0.902928 2.86981 +8.59261 9.20279 +5.96621 7.49899 +0.617602 1.83267 +2.29189 2.6361 +4.34207 4.61026 +6.19963 6.76443 +1.15955 1.44068 +5.25852 6.33905 +6.37306 7.53103 +9.13334 10.039 +8.67743 9.93959 +5.62973 6.04375 +8.32286 8.77042 +3.28772 6.1722 +4.97902 5.47249 +3.37765 5.07238 +4.58025 4.84341 +2.76807 3.18817 +4.27581 4.43023 +6.92572 7.68461 +0.279247 1.0561 +1.10903 2.61106 +6.71708 6.73132 +2.66415 3.75702 +8.0513 9.80334 +4.82466 6.04232 +2.59971 2.85768 +9.04689 9.73945 +3.48338 5.16622 +7.90925 8.92774 +7.30264 8.06247 +7.59087 8.26476 +0.150315 0.423068 +8.62726 9.74636 +9.01983 9.71707 +6.84007 7.40541 +8.87829 9.48342 +2.69214 3.71481 +0.580036 0.77289 +9.474 9.83397 +5.80151 6.08527 +3.63837 5.27137 +8.5848 8.65779 +7.88338 8.13276 +3.27992 4.20963 +6.21244 7.28079 +-0.348924 1.38478 +5.26688 5.93787 +3.78941 5.01009 +6.41929 8.38529 +1.41724 1.67733 +0.212821 1.58246 +0.0697189 0.160497 +9.57839 10.2377 +9.03332 9.70645 +4.94572 5.15163 +3.16999 4.536 +5.77494 6.68359 +5.89258 6.11852 +7.72257 8.21668 +8.42501 8.44905 +8.7196 8.86465 +4.392 5.1076 +1.88249 2.54422 +1.38092 1.60326 +5.04142 6.37374 +4.31795 5.91152 +1.79399 2.09314 +6.65405 8.32262 +1.36356 1.58538 +5.45456 6.55824 +4.95807 6.22848 +8.72077 10.2825 +0.745968 2.01546 +6.85041 7.11076 +4.82028 5.34442 +5.77673 8.01294 +8.58582 9.33714 +8.49884 9.21533 +9.05574 9.4096 +3.19932 3.27024 +9.50227 9.96685 +0.771636 1.0617 +9.00621 9.36397 +-0.097167 1.39463 +7.79622 8.43537 +8.05228 10.1504 +2.21685 4.17072 +1.82476 2.45381 +4.34408 4.56578 +9.27538 9.54701 +6.80153 7.44115 +7.38884 7.84448 +7.17526 8.00165 +5.85812 7.67326 +5.25545 6.30791 +5.68518 5.94055 +3.77685 4.1545 +0.530928 0.737248 +3.9772 4.59563 +8.96322 9.45618 +7.98322 8.44165 +3.42929 4.22329 +3.66445 4.7583 +-0.183652 0.434842 +3.16492 3.95726 +6.87407 7.89944 +5.08921 5.7745 +2.85466 3.04505 +7.12685 7.41248 +0.715419 0.876676 +3.47441 5.21753 +9.13594 9.87799 +5.52459 6.35691 +5.12544 6.12935 +2.44296 2.91543 +2.75148 4.19886 +1.43478 4.3919 +6.6352 7.07768 +4.72283 5.11506 +6.36434 7.69268 +2.32643 2.75289 +5.46566 6.22854 +6.37995 6.76989 +1.52564 3.55871 +1.05807 2.19393 +1.95374 4.08727 +8.11273 8.12767 +2.85955 4.71355 +4.89009 6.88516 +2.06859 2.25512 +7.50556 8.77923 +4.43353 5.11915 +5.16308 5.9695 +1.12072 1.69277 +3.96494 4.38143 +7.06931 7.89524 +0.514522 1.51265 +6.56389 7.01146 +1.51362 1.8541 +4.90339 5.51209 +2.11422 3.15457 +2.50094 3.92557 +8.24319 8.62826 +-0.0843505 0.710377 +6.35956 7.89457 +-0.790954 1.2964 +4.02253 5.19193 +2.7425 3.46763 +9.41469 10.1367 +1.57636 2.25105 +3.18647 3.38738 +8.36644 9.66791 +0.180846 0.461221 +7.07675 7.71881 +0.265366 1.19275 +5.43007 6.4854 +9.13912 9.23294 +9.52905 10.4029 +1.18712 2.66227 +5.22714 5.62601 +1.87413 2.8716 +5.71882 6.16374 +5.38169 6.13948 +-0.196005 0.236738 +5.36803 6.4395 +8.27713 8.71262 +8.82031 8.8598 +-0.53845 0.564783 +1.80716 1.94173 +5.67905 7.47291 +2.37779 3.64893 +0.574727 0.766424 +4.60701 4.86591 +3.17989 4.37738 +1.36777 3.15112 +1.48092 3.06573 +3.37009 4.06028 +4.17179 6.2073 +6.47953 6.88994 +5.74431 6.5253 +4.88827 5.49049 +5.44148 5.59239 +1.66153 2.63132 +7.69387 7.82267 +5.20911 5.48488 +-0.103218 0.497402 +7.18003 7.33324 +6.54305 8.81732 +0.278108 1.27452 +2.38323 2.94772 +1.2461 2.03246 +5.47052 5.75781 +7.31505 7.35895 +2.22248 4.23589 +0.0305319 0.430773 +8.32043 10.1222 +6.11732 7.09764 +5.08797 5.74991 +6.62491 7.34164 +5.55795 5.66083 +3.27549 4.13145 +1.0113 3.24631 +0.0717186 0.519738 +7.82905 9.30839 +9.90251 9.98691 +0.841457 0.952276 +-0.133927 0.510174 +1.14614 2.82218 +2.59767 4.19742 +3.41095 3.95265 +3.38951 3.75838 +8.86766 9.19437 +9.27927 10.261 +2.33249 2.79402 +5.69681 5.93469 +4.02502 5.38732 +0.797157 1.22845 +7.23558 7.8651 +1.1253 1.99184 +8.58296 8.64267 +-0.400141 0.74698 +3.46677 3.50526 +6.03252 6.64842 +5.8493 6.68938 +3.53209 3.84014 +7.22078 8.98106 +6.21943 7.69944 +0.887198 2.07323 +3.36591 4.57442 +4.30143 6.41179 +4.07556 4.54276 +8.77552 10.0615 +6.7247 7.04044 +9.05494 10.1126 +7.46604 7.80632 +3.38601 3.8043 +5.60475 7.02788 +9.09811 9.4654 +9.33447 9.80012 +8.66499 10.1002 +3.87007 3.88281 +2.87624 3.11359 +5.92385 6.80801 +4.49711 5.01863 +8.84524 9.36225 +6.40944 6.82093 +2.90915 3.68288 +3.96801 4.82534 +5.51744 5.84233 +3.2959 3.44409 +0.18526 0.207322 +5.49717 5.72648 +6.9522 7.1952 +0.769572 1.79343 +5.95522 6.03918 +6.54327 7.7475 +2.13516 3.83957 +-0.388892 0.775076 +1.30128 2.29414 +9.76761 10.1604 +7.38731 8.66002 +7.09229 7.43495 +9.1379 9.52432 +6.75942 7.88717 +7.42824 8.82063 +6.93078 8.19884 +2.307 2.93836 +8.38254 8.84691 +3.90159 5.37938 +0.0413204 0.112203 +0.638217 1.53943 +0.88678 2.49435 +1.99104 2.60847 +6.61595 7.65064 +2.37641 4.71719 +7.94945 9.21404 +5.44594 7.13646 +5.45737 6.12335 +7.39207 8.02885 +5.51588 7.39341 +8.1581 10.0632 +0.197869 1.44516 +-0.0161139 0.73487 +4.24155 4.7304 +0.00374564 1.26481 +8.1878 8.20011 +-0.115544 1.74771 +0.912347 2.52922 +2.72234 4.83268 +6.45577 7.07776 +9.74201 10.1772 +7.11008 8.72914 +4.41921 4.8673 +7.97673 8.36658 +0.438659 0.647061 +4.35086 5.44482 +8.22919 9.34379 +3.53242 5.65576 +1.126 2.32177 +5.95118 6.51364 +3.10519 3.9447 +1.28889 2.26267 +7.04255 7.67791 +3.12614 3.17626 +8.09968 8.49162 +6.07924 7.219 +5.99554 6.52549 +9.14378 9.5773 +5.82872 6.53112 +9.3361 10.1704 +4.3751 6.51675 +3.288 3.98328 +4.56342 4.80185 +7.16574 7.43901 +7.7638 8.47758 +7.31514 7.78499 +7.98942 9.50252 +4.31211 4.70724 +2.9094 3.33304 +0.108736 0.668815 +8.08409 9.11098 +-0.0053985 0.589992 +1.31926 2.72153 +2.28664 2.38813 +7.95237 8.26388 +-0.0283047 0.452099 +7.50295 8.71708 +7.72356 8.63468 +3.48953 3.89579 +7.73814 8.73456 +4.54487 5.45817 +6.45109 7.00312 +3.99915 5.41716 +6.81436 8.5682 +6.86726 7.55999 +2.67863 3.7053 +2.6837 3.39567 +2.84347 2.91724 +5.79383 5.80493 +2.41217 3.0619 +8.78163 9.0998 +1.43456 2.50854 +6.73393 8.53005 +3.02563 3.56456 +3.34628 4.2934 +2.44985 2.92819 +1.38262 2.89341 +4.56337 5.75702 +0.275735 1.16604 +1.39763 2.8108 +9.69128 9.90361 +8.54868 9.66756 +3.01838 3.72831 +8.34017 10.5262 +1.82721 3.0476 +5.9732 6.83307 +2.77874 4.25603 +1.71987 3.1227 +6.33773 7.89103 +1.31982 2.82992 +4.21601 4.9627 +6.68166 6.72653 +0.87708 1.06828 +1.03483 1.26625 +2.996 4.03087 +1.54718 1.57452 +2.33087 2.38226 +2.29464 3.36496 +2.03064 3.41867 +5.8456 6.10406 +7.54614 8.2874 +1.42938 2.89154 +2.65935 3.53883 +3.98845 4.42049 +6.85632 7.15487 +8.12038 9.34993 +0.873558 1.32129 +6.61595 8.00766 +9.49147 9.81947 +-0.0225601 0.328769 +-0.481519 1.37204 +6.31457 7.45251 +4.59738 5.81395 +4.83304 5.63008 +1.95746 2.78657 +2.97889 3.74408 +9.08327 10.702 +3.58219 4.93634 +7.87068 9.77851 +0.330978 1.36031 +4.78145 5.36918 +4.94672 5.56644 +7.66806 8.08613 +4.78512 6.35461 +5.17367 5.74386 +8.65884 9.97088 +9.22053 9.60447 +6.15061 6.58817 +0.0875971 0.541643 +6.45597 7.92002 +0.636824 1.05267 +5.31677 6.12838 +6.51127 6.6731 +0.459551 1.69382 +5.75106 6.41377 +3.68438 4.67415 +9.36302 9.78281 +5.46195 7.99215 +2.55471 2.59231 +-0.0640245 1.33755 +9.36027 10.6198 +2.67955 2.77882 +3.51443 4.10619 +6.83904 7.23692 +2.59553 2.81418 +7.74628 8.95169 +3.86464 3.90067 +3.32377 3.992 +1.43737 2.52191 +3.83927 3.99402 +5.24426 5.35179 +0.833857 1.05277 +8.4062 8.51964 +9.62299 9.66254 +3.55427 5.19048 +1.7003 2.62107 +6.8059 7.49246 +-0.761104 0.773528 +1.37137 1.95048 +2.1222 2.59387 +0.633505 2.04796 +0.605156 1.04336 +7.22842 8.3365 +4.28716 5.28921 +8.14286 9.52015 +7.62467 9.18603 +1.11029 1.81278 +5.05654 5.13597 +0.862653 0.97827 +7.24766 7.92167 +8.80103 8.91467 +3.05841 4.82292 +1.28204 1.55969 +1.58886 2.57874 +0.0537678 1.28837 +8.09303 9.71678 +8.37599 8.85705 +3.18107 4.01971 +6.67019 7.75848 +6.29836 8.21603 +0.86271 1.30358 +3.86126 6.49694 +5.84446 6.24913 +0.475025 0.598151 +6.3477 7.08327 +3.60161 4.51824 +7.13317 8.13858 +4.89052 6.23701 +5.69441 5.99027 +7.18735 8.34853 +9.30182 9.34894 +6.06589 6.15141 +8.05917 8.89642 +5.6136 7.14058 +0.838337 0.959487 +0.56421 2.00841 +6.46876 6.63629 +2.4434 3.92184 +7.97216 9.45372 +8.17926 8.66756 +1.86522 2.01888 +0.983342 1.89079 +2.07322 2.09765 +3.52974 4.73717 +3.24973 4.88691 +5.47789 5.95384 +4.11218 4.57076 +6.61174 7.47165 +8.09302 8.36193 +1.67911 1.69022 +4.436 6.17515 +5.6544 5.74951 +1.50354 1.76043 +4.41433 4.83589 +1.82528 3.53979 +3.98749 4.65527 +6.42503 7.5787 +8.69554 10.1767 +8.39215 8.56999 +8.71646 9.66209 +1.59091 3.39622 +6.12574 6.94955 +7.92527 8.25049 +9.19858 9.49137 +2.73382 2.97747 +4.56558 5.94738 +8.33983 8.58548 +9.00798 9.01838 +4.93268 5.28383 +3.15356 3.58606 +8.28171 8.79351 +1.47358 1.9581 +0.891797 2.05345 +1.56032 2.38159 +2.5152 3.80485 +8.0963 9.88138 +1.1262 1.89279 +7.99336 8.2352 +5.25067 5.41251 +4.57532 5.20101 +1.87911 4.59415 +4.25142 4.70467 +8.18782 8.76989 +9.20478 9.3612 +7.70898 9.7752 +0.655865 0.958924 +4.8883 5.77477 +3.03279 3.47456 +1.01979 1.41661 +8.94219 10.6987 +2.49348 4.58195 +2.44003 3.29005 +3.4725 3.55572 +9.3917 9.95851 +7.08658 7.47686 +3.56413 4.44089 +-0.47868 1.11453 +6.82615 8.00596 +3.49451 3.74705 +8.13286 8.47976 +7.01732 8.82556 +1.19064 1.48887 +5.28851 6.88637 +8.83175 9.49879 +0.939903 1.17024 +7.49124 9.01906 +2.9285 4.23224 +5.68296 6.86273 +8.53897 8.77886 +2.9107 5.01232 +0.748655 1.10265 +4.77258 5.12626 +3.995 4.75289 +2.71467 4.26926 +6.21665 7.16233 +4.53883 5.75731 +4.37153 4.76125 +7.47635 8.75777 +4.82013 6.4699 +9.36015 9.58451 +4.43054 5.86752 +2.10934 2.34705 +3.00306 3.06539 +7.81957 8.44081 +1.97221 3.06916 +0.153393 0.503956 +5.05611 5.27536 +5.73277 5.89001 +3.64807 4.85582 +6.13416 6.1528 +3.85511 4.14045 +0.411725 1.36529 +2.26932 2.5447 +3.51164 4.93266 +2.50955 4.34201 +8.74663 9.39268 +6.2229 6.39303 +4.38059 4.91592 +7.29109 8.62318 +6.31801 6.99532 +9.75036 10.0514 +1.69019 2.41527 +4.20462 5.27729 +6.32944 6.94729 +3.5736 5.21496 +4.48316 4.61828 +1.76915 2.43263 +2.42026 4.09159 +2.08762 2.43074 +5.48161 6.02473 +5.51826 7.47042 +2.78026 3.1552 +7.89469 9.49867 +3.09084 4.54697 +7.20417 7.42408 +5.36528 5.74851 +1.86239 2.41988 +1.55994 2.85743 +4.40182 4.6638 +7.91619 9.01242 +3.08119 3.74714 +1.54108 2.08538 +3.61461 3.64631 +8.76851 9.66257 +-0.645571 1.3366 +-0.707083 1.21005 +7.19571 8.23405 +5.42865 5.89329 +2.12897 2.59222 +0.603102 0.930391 +3.75025 4.63181 +6.14867 6.4526 +7.30947 7.51461 +7.83183 8.79802 +6.06658 8.53246 +1.67895 2.50063 +1.14179 2.04478 +8.59583 8.90112 +-0.918885 1.30717 +0.182607 0.613593 +3.3335 3.77196 +0.783053 2.4368 +6.49331 7.60104 +2.85101 3.28637 +7.42273 7.66905 +3.96433 5.02573 +8.26262 8.40749 +9.24451 9.32783 +4.89036 7.07214 +6.45431 6.96815 +5.20701 6.58747 +7.40142 7.98615 +4.19768 4.9831 +3.32546 3.88811 +-0.471996 0.967855 +9.36172 9.63532 +1.96831 3.00632 +7.537 9.72671 +4.67746 4.81135 +3.10782 4.93642 +4.94809 6.54855 +4.16763 5.25628 +9.04992 10.316 +0.668935 0.680886 +4.02935 4.84503 +5.32499 5.76636 +5.32267 7.15457 +5.18886 5.23491 +4.37053 5.36801 +2.39955 2.74657 +8.19764 8.86645 +4.24706 5.69703 +1.87851 2.36988 +0.886553 1.05064 +7.27428 7.90224 +9.08417 9.44879 +3.11534 4.02019 +6.3284 7.39925 +4.96029 5.59076 +2.58248 3.11741 +7.76513 8.13505 +4.93613 6.51523 +0.565355 1.70512 +2.12366 3.0319 +5.32422 6.84146 +-0.135396 1.08591 +3.7901 4.86303 +4.49677 5.41847 +0.615748 0.834712 +0.64784 1.81859 +6.65505 7.13894 +-1.12744 1.61017 +0.550814 1.24316 +6.66639 6.89866 +6.19271 8.17468 +3.09382 3.78684 +4.41221 4.95889 +7.96091 8.48824 +8.32129 10.2917 +2.13168 2.19835 +1.4635 2.38989 +5.78102 6.42215 +1.70153 3.20616 +5.35068 5.71016 +4.27702 4.37203 +5.13888 6.04764 +4.79644 5.37927 +6.75314 7.66368 +6.04484 6.84064 +4.34947 4.45643 +9.08755 10.396 +0.88804 2.17441 +6.86788 7.88301 +7.94296 8.61664 +8.02387 8.79591 +1.79024 2.40559 +5.50404 6.01044 +7.76772 8.1932 +1.174 1.23693 +6.20571 6.9224 +4.20863 4.48702 +4.16743 4.39075 +-0.11965 0.120778 +7.01234 7.52619 +5.91415 6.46151 +5.28713 5.72354 +6.26981 6.31237 +0.643056 1.43864 +1.62562 1.99875 +0.544992 0.721386 +6.92522 7.09165 +-0.107048 1.12273 +0.644674 0.91244 +8.56904 9.01883 +2.23079 2.56598 +9.79034 10.1123 +8.13788 8.4131 +1.86753 1.95236 +2.97577 3.33272 +8.57454 10.0193 +1.20043 1.53408 +3.43515 3.86571 +5.79075 6.41293 +1.71558 2.52845 +2.39907 3.46652 +9.08289 9.91182 +0.859644 1.07475 +5.30144 5.42157 +-0.441497 0.890794 +3.55044 4.14918 +-0.340115 1.19239 +6.5534 6.76908 +0.836514 2.09196 +8.15747 8.96484 +4.80087 5.14227 +7.72071 8.88223 +5.11901 5.65559 +4.44996 4.63562 +-0.328404 1.3002 +0.90759 1.34556 +5.94839 6.35058 +1.76504 1.78344 +1.32585 2.08994 +7.18641 8.20945 +0.62657 1.06025 +6.28086 6.40975 +5.05525 5.16143 +5.82694 8.07685 +6.23677 7.55394 +-0.226265 0.661443 +1.42599 2.36325 +9.04445 9.92971 +-0.169286 0.185741 +8.34636 10.9042 +9.52494 10.0475 +8.39989 10.1377 +3.89956 4.70428 +3.98673 4.97185 +5.43008 5.67936 +7.76475 7.98591 +4.46895 4.73188 +0.584662 1.54474 +2.12622 2.79994 +1.40578 2.2461 +1.45171 2.02105 +2.05665 3.04611 +2.29818 2.68118 +1.77344 2.98698 +4.92092 5.55302 +7.18758 8.37525 +8.83407 10.0565 +2.91182 4.71932 +6.47293 6.74664 +2.49238 3.69749 +0.487234 0.541003 +4.703 4.92744 +9.8867 9.94918 +1.7713 1.9792 +5.68316 6.90242 +5.62485 6.70656 +7.24837 9.60197 +7.71147 7.76519 +5.22324 5.30661 +9.11258 9.28071 +8.2827 8.90115 +8.90865 9.42138 +7.47233 8.72308 +4.89712 5.65153 +4.12392 4.20239 +5.65325 6.55887 +8.65945 9.05845 +7.9165 8.36489 +1.4952 2.43991 +5.49665 5.80793 +1.67206 2.55302 +0.943544 1.58521 +0.47 0.860959 +6.47638 7.43101 +4.38434 5.97278 +8.12782 9.10574 +5.78143 6.6539 +9.23616 9.40513 +1.6845 2.00736 +6.56955 7.37847 +7.42993 9.04718 +-0.179632 0.450904 +8.65819 9.07724 +7.86567 8.80824 +1.85428 2.7755 +2.29222 2.65374 +4.03614 4.51729 +6.9326 7.07635 +5.50807 6.498 +6.17637 7.26432 +8.7688 9.16308 +7.65 8.88604 +3.74495 4.29991 +8.5671 10.5661 +7.41964 8.21083 +8.04302 9.78783 +0.269663 0.317601 +8.29804 9.40991 +3.90673 4.22298 +8.82384 10.9441 +7.27081 8.19548 +1.30184 1.98993 +8.13028 8.92385 +7.21224 7.35137 +5.02122 5.69666 +0.817219 0.974073 +-0.128067 0.589359 +2.12137 2.74019 +5.24657 5.44714 +1.55805 3.10332 +9.91031 10.0748 +7.13941 7.9143 +-0.183908 0.934079 +3.987 4.11053 +3.26678 3.67608 +9.75921 10.1121 +0.755391 1.06346 +7.28479 7.49982 +1.37522 3.80623 +0.944351 1.46531 +9.49278 10.2372 +8.28946 8.67597 +9.43537 9.58003 +7.73357 8.756 +2.64043 2.8687 +4.70448 6.99929 +3.82199 3.89343 +3.43825 4.10908 +4.42362 5.69086 +8.08536 8.60142 +8.43208 9.31272 +7.5889 8.39208 +7.90112 7.9734 +6.10381 6.80568 +8.76283 8.80151 +1.46728 2.53288 +1.68884 2.47102 +7.63343 8.29838 +9.18852 9.5558 +0.977174 1.4792 +4.7577 5.74873 +4.66433 6.37375 +-0.0952277 0.378184 +5.30929 6.07469 +4.98811 5.16146 +3.0744 5.59799 +0.944909 1.25222 +1.38561 2.51277 +3.77811 4.23459 +2.11604 3.32458 +0.920929 1.17187 +5.23496 6.34905 +6.9953 7.65745 +4.81803 4.89553 +4.69301 5.36777 +-0.208926 2.6111 +7.97334 9.83269 +-0.396673 0.779988 +5.91367 6.47682 +6.27249 6.83533 +5.58931 6.89679 +2.03394 2.67025 +-0.197752 0.383167 +4.69751 7.695 +4.5989 6.07875 +3.7285 4.27396 +7.9807 8.27693 +-0.00248985 1.30934 +2.68016 3.916 +0.881558 1.14567 +4.77066 5.05302 +0.552268 0.919467 +2.46862 2.65199 +1.4009 2.51701 +-0.171185 1.28252 +9.27842 9.90243 +3.51778 3.57728 +6.10071 6.92163 +9.05387 10.0894 +5.52995 5.89082 +8.40216 9.0272 +9.02911 10.1602 +4.85818 7.38829 +1.6762 2.32334 +6.45416 8.62337 +5.44592 6.0245 +3.45876 3.94274 +9.07144 9.16725 +6.51885 7.6363 +7.92593 9.01986 +0.270702 1.57395 +6.11245 6.70173 +1.37658 2.19068 +2.42668 3.43827 +7.98226 8.43306 +3.72269 4.74654 +8.16252 8.58873 +8.81456 9.5363 +-0.338386 0.864811 +1.90693 2.25796 +3.5305 4.17475 +6.07997 7.67393 +0.53347 1.68815 +7.31182 8.44458 +7.77462 8.33613 +3.79975 4.15552 +9.08822 9.9771 +-0.101698 1.05442 +8.44869 9.95724 +-0.0318759 0.532673 +8.09238 9.51356 +5.51514 6.60799 +8.66528 10.3297 +8.25556 9.97893 +-0.220428 0.247563 +0.00453913 0.540444 +1.53599 1.61735 +3.77213 5.06896 +2.65332 2.75864 +6.05811 6.43112 +0.302534 0.803651 +0.393766 1.11611 +9.31035 9.62387 +0.568281 1.7765 +-0.721118 1.27387 +1.83573 2.62578 +1.39953 1.91158 +6.51883 8.52813 +2.60154 2.95054 +6.58322 9.37818 +5.61178 5.67661 +9.56511 10.2767 +9.09174 10.0697 +2.55846 3.39943 +8.38146 9.06138 +7.97019 8.18074 +6.1426 6.42787 +1.15876 1.55463 +2.93483 2.96376 +7.23883 7.29158 +9.64606 10.0674 +4.89825 6.70366 +7.35635 7.96328 +2.2702 2.36797 +-0.0464389 0.395244 +1.14883 2.10411 +4.7309 5.10593 +6.07946 7.37741 +5.50202 6.28822 +3.66574 3.96271 +1.9944 2.3862 +7.58159 7.59275 +1.98712 3.30587 +2.10317 2.89161 +9.66889 9.97287 +1.57327 2.15421 +8.14125 8.30983 +3.77185 4.12658 +8.51624 9.51485 +9.25211 9.722 +2.06312 3.0453 +9.34954 9.91254 +7.31475 8.89322 +7.85044 9.20242 +0.226243 1.28465 +0.0260868 0.575177 +9.40743 10.1655 +4.04324 5.05341 +1.02626 1.48332 +3.33074 3.72025 +9.2005 9.61387 +6.68317 7.14109 +6.82083 8.6312 +4.34816 4.50329 +-0.48874 0.975608 +4.26651 5.68526 +4.89731 5.57569 +2.68984 3.5661 +0.499714 1.01055 +9.01902 9.36142 +3.22067 4.59054 +0.65132 0.860512 +1.6791 2.36642 +8.28222 8.7579 +2.84349 3.24134 +5.64949 6.09512 +3.44026 4.43245 +2.60889 2.6248 +-0.00849234 0.984046 +7.5745 8.65675 +2.07464 2.6488 +2.59747 2.65772 +6.36828 7.42208 +3.83342 4.50127 +5.41167 5.7011 +6.53606 7.53796 +8.21975 9.56176 +1.90113 3.08684 +7.74402 7.82057 +4.26515 5.11327 +5.42743 5.59215 +8.69709 10.0912 +2.87019 3.94798 +9.27013 9.54627 +9.30568 10.2136 +9.02985 9.62917 +3.7589 4.59642 +6.59359 6.86939 +3.26574 4.83488 +5.14545 7.70086 +7.43163 8.05103 +5.72972 5.74457 +0.490113 1.31151 +7.018 7.42627 +6.22976 6.27589 +9.07732 9.30419 +4.3917 4.42663 +8.50298 10.3728 +6.18671 7.53619 +3.51053 4.097 +2.17172 3.56595 +6.08046 6.23691 +9.07361 10.9129 +3.95757 4.11333 +-0.136516 0.78995 +1.34923 3.47002 +0.0562579 0.686502 +9.10943 10.2731 +5.80174 6.16971 +7.86011 7.87649 +5.34384 5.51645 +6.32167 6.76387 +7.70566 8.28038 +-0.319903 0.867682 +-0.372564 0.570014 +8.83696 10.8439 +7.78947 9.38211 +9.25815 10.1092 +5.59721 5.67148 +0.234719 2.42489 +1.06314 2.87416 +1.75391 2.69799 +5.4536 6.66068 +1.35696 1.87102 +2.17418 3.1459 +7.61817 7.98287 +2.92194 3.18393 +7.68243 7.83261 +9.33163 10.5531 +1.14227 2.50228 +5.47911 5.70857 +9.88123 10.0758 +8.81249 8.83145 +6.02747 6.43183 +4.81158 5.79178 +6.65666 7.5047 +4.89085 5.56569 +0.935564 1.71547 +-0.0452879 1.16222 +4.03524 4.6206 +5.88518 6.02658 +2.06227 2.9581 +0.207246 2.2404 +2.81757 3.70318 +0.704257 1.98403 +2.38486 3.30039 +3.57073 4.78358 +1.53721 3.00546 +8.37852 8.39527 +1.54619 1.59789 +1.00447 1.40778 +5.31977 6.43861 +3.82175 3.83209 +3.37738 4.44002 +5.46644 5.97254 +3.88191 5.00688 +4.88046 5.39031 +4.15092 4.93679 +1.75182 2.07399 +1.16434 1.76541 +3.37032 4.29676 +3.1685 3.98533 +1.28787 1.59775 +5.86338 6.17993 +3.8645 4.25757 +1.83947 2.48092 +0.184795 0.586724 +3.13752 3.76447 +2.14264 3.03248 +5.78182 5.9029 +2.47969 3.8088 +2.59206 3.08362 +-0.354871 1.03627 +7.94041 8.05947 +9.48014 9.93817 +0.992727 1.48877 +6.1525 7.51387 +5.00071 6.15665 +7.42074 8.27606 +9.6539 9.83042 +1.08984 1.46387 +5.46282 6.95907 +4.74506 5.13968 +0.357565 1.91464 +9.07652 9.65474 +0.201095 0.646211 +7.04306 7.69131 +1.17728 1.2237 +5.92183 6.29165 +-0.41356 0.491524 +8.38339 10.4509 +8.08648 8.11344 +3.32474 3.39522 +5.762 5.83732 +2.26778 2.55548 +4.86127 5.92868 +3.75949 5.16608 +4.83431 5.88632 +2.65122 3.31344 +9.30295 9.38948 +6.03391 6.32749 +5.12035 5.59414 +5.68785 5.979 +7.89553 9.15202 +2.54445 2.74715 +2.36337 2.49709 +4.71661 6.12198 +3.72447 4.68735 +1.0541 1.53187 +3.45178 4.80929 +7.90773 8.26212 +8.1816 9.18627 +0.322569 0.871041 +7.24823 7.32699 +1.7003 2.78087 +9.70927 10.2515 +3.75922 4.01081 +1.06949 1.40253 +1.21774 1.4734 +6.02123 6.32973 +2.76396 3.09484 +2.80358 3.00026 +5.25666 6.31369 +4.71714 5.30669 +4.37906 4.50557 +7.40824 7.44969 +7.89081 9.18263 +8.8136 10.3074 +9.1757 9.37261 +7.1938 8.51137 +0.580081 2.32678 +2.02497 2.95434 +6.01446 6.78851 +8.54365 9.21454 +3.03567 3.27089 +0.650657 1.5716 +5.05518 6.36521 +1.64301 2.76399 +4.15989 4.34183 +3.72791 3.98156 +3.91372 4.06182 +3.04507 3.88871 +3.82596 4.25694 +3.36492 5.00402 +6.50019 8.17974 +3.54621 3.81009 +0.546921 2.09811 +5.1789 5.9826 +4.98983 6.31221 +2.47557 2.63878 +4.64568 4.81101 +9.1462 9.21888 +7.37417 7.5276 +2.21604 2.50113 +8.29804 10.2722 +5.1282 6.06353 +8.58281 10.1589 +6.47084 7.04085 +6.27806 6.72674 +7.11554 7.85687 +6.01085 6.02773 +5.46694 7.52872 +9.51078 9.85387 +3.36627 4.06552 +2.96126 5.12635 +3.09314 3.40691 +5.05456 6.62548 +7.56469 8.97053 +1.33727 2.87482 +5.6572 6.28169 +0.120924 0.296475 +7.09139 7.41322 +2.10076 3.28507 +8.74998 10.1094 +7.45072 9.50796 +7.75294 8.59218 +0.740374 2.44897 +7.63001 8.91562 +4.30743 4.81716 +6.40813 7.29159 +6.30213 7.35987 +6.44392 7.32584 +8.41155 9.4466 +-0.377892 0.689618 +5.88857 6.70983 +6.67779 7.70668 +4.831 5.17464 +2.62342 3.82764 +8.57453 9.29283 +7.32648 7.96725 +9.32937 9.9726 +7.30774 7.65754 +3.97456 4.59876 +5.73092 7.20962 +1.958 2.10551 +3.2115 3.81482 +5.76497 7.42425 +2.77219 3.29692 +4.95297 5.14843 +5.96367 6.3619 +2.49872 4.61736 +8.21817 8.23425 +2.13615 2.61877 +7.84121 9.55011 +8.63416 10.2773 +5.61084 6.32053 +4.86002 5.79944 +9.07858 10.688 +5.95829 6.42504 +3.3289 4.17849 +3.27989 4.91625 +8.28046 9.23021 +2.18691 2.6072 +1.3962 1.75013 +2.13627 3.73117 +2.11128 2.57303 +7.22357 7.50136 +7.43862 8.03136 +2.80578 3.02886 +0.176906 0.761142 +5.99314 6.6075 +1.90398 3.3925 +5.48264 6.73579 +7.18447 7.49811 +3.24434 5.05219 +5.53263 6.04178 +1.71172 2.45682 +0.297266 0.481632 +2.62582 3.36142 +0.243865 1.49321 +8.86142 10.169 +3.93193 4.39404 +4.98182 5.15675 +7.99209 9.73159 +8.18033 9.45596 +4.25235 4.41546 +1.59603 2.15581 +6.47724 8.69649 +5.24138 7.93131 +3.4267 3.49003 +0.0439912 0.316407 +1.99983 3.87206 +-0.103124 0.568771 +4.62451 4.80117 +2.89065 4.16315 +5.82817 7.43232 +6.89255 7.82189 +5.71037 6.81241 +4.34551 5.24905 +7.33931 7.3741 +-0.855192 1.27129 +8.94842 9.10813 +9.19877 9.68412 +6.42658 7.77968 +-0.0669636 0.430107 +6.40366 7.40701 +8.91175 9.24059 +3.21388 4.21676 +3.38557 3.79509 +4.24411 4.97032 +7.259 7.34896 +2.55995 3.18361 +8.77438 10.5503 +8.18685 9.79378 +2.78397 4.4563 +8.6891 9.38337 +6.51749 7.59374 +2.52346 3.46101 +8.40526 9.35647 +5.26942 6.33572 +4.15094 5.00668 +0.471666 1.53842 +7.63441 7.96745 +2.39974 3.7814 +2.71989 3.02994 +8.12085 8.33493 +6.19474 6.84381 +6.6133 8.31417 +5.1758 6.94983 +8.66241 8.79095 +6.10878 8.22083 +8.81883 9.08031 +8.28969 8.45176 +7.19851 8.37836 +1.5722 1.6836 +4.57814 6.95063 +7.66128 8.10631 +0.742483 3.08515 +1.15026 1.98074 +3.90133 4.12003 +7.61145 7.73433 +8.32187 10.2933 +0.407205 1.08089 +1.26545 2.60796 +2.70646 3.92753 +-0.196551 1.83536 +-0.413063 1.23838 +0.264484 0.556192 +6.30158 6.96097 +-0.66246 0.809062 +9.34243 10.3521 +8.70093 8.79679 +0.745195 1.92911 +9.12892 9.68193 +7.98533 8.30538 +6.23671 7.04296 +6.5603 6.95483 +7.08133 7.10563 +2.15769 2.41541 +8.24752 8.73978 +5.27693 5.61904 +0.317419 1.48404 +3.48029 5.46979 +7.38901 8.56554 +1.06587 1.62384 +5.54926 6.04924 +4.46577 6.48749 +5.349 6.15584 +8.04249 8.17359 +3.37651 3.56179 +3.64706 5.57403 +4.49844 5.26404 +3.93361 4.92128 +5.82184 6.29881 +0.984273 1.70318 +1.12773 1.80726 +3.11675 3.17451 +5.07913 5.46291 +0.615591 1.81465 +1.08948 2.77847 +7.97412 8.07365 +5.05207 5.82497 +0.0407709 0.558817 +6.11142 6.48205 +3.4461 3.57315 +8.6547 8.80553 +8.18965 9.64194 +5.55564 7.9703 +4.01776 4.16989 +2.4668 2.82018 +0.911925 2.56662 +4.68814 5.03614 +7.4899 8.49036 +8.40912 9.14001 +2.32725 3.16377 +0.0723972 1.42049 +6.6441 6.6953 +3.65586 4.38222 +6.35844 6.57833 +4.44435 5.73077 +1.81779 2.57257 +4.17692 4.59722 +8.54682 9.38058 +1.61135 1.81629 +3.91926 5.00536 +9.78302 9.85143 +1.25632 3.10345 +5.53191 6.08174 +-0.231868 0.676811 +1.03054 2.58105 +0.0402172 0.690608 +0.974571 1.25234 +5.22227 5.92302 +8.05843 10.1439 +8.48938 8.50755 +0.0965782 1.24008 +6.53821 7.47765 +0.189991 0.475204 +8.48963 8.54995 +9.68363 10.0534 +1.49381 2.71302 +6.75552 7.41283 +7.91075 9.15302 +0.520922 1.40928 +1.17957 2.11221 +4.00122 4.40686 +7.32467 7.9273 +6.39126 7.90248 +6.50534 8.19308 +7.19888 7.22234 +-0.136797 0.731889 +0.870318 1.25614 +2.07126 2.28297 +6.10995 7.60408 +3.02174 3.90102 +-0.657541 1.57517 +0.993121 2.66255 +7.27232 7.50832 +2.16079 3.75428 +9.27397 9.75098 +8.36865 8.5545 +4.56641 4.97607 +3.60746 4.34616 +6.31304 7.70611 +2.91442 3.7602 +4.85814 6.70407 +4.45876 5.67661 +8.06749 8.82229 +2.02826 3.59873 +1.92922 2.50088 +2.63867 3.48117 +2.17665 2.54826 +8.62674 9.10675 +0.96648 1.47671 +8.86336 9.53978 +5.52747 5.80829 +0.77099 3.06106 +2.2307 2.53877 +6.29165 6.63018 +4.44717 5.04651 +3.80894 4.63054 +7.47519 7.87072 +0.933668 1.9949 +-0.712945 1.21558 +7.30206 8.38376 +5.80281 7.00022 +7.96578 8.6558 +0.24063 0.706466 +4.41893 4.58472 +4.0132 4.92768 +5.29626 6.09397 +3.43602 4.00728 +0.780945 1.66499 +8.83861 9.15168 +9.06411 9.75544 +3.45618 3.62529 +9.51413 10.0148 +0.842106 1.75695 +1.06485 1.44192 +6.89987 8.05314 +7.89154 8.73313 +8.71675 9.79526 +2.40574 2.58062 +8.55952 8.78132 +5.61716 6.06282 +3.71059 3.77929 +2.50187 2.99137 +6.92852 7.23184 +7.00442 7.93869 +8.82232 8.8756 +4.10389 4.53702 +7.6907 7.77577 +9.31554 10.2674 +8.51082 8.70339 +4.83332 6.70311 +4.6904 5.42892 +4.71407 5.67695 +4.12047 4.44089 +7.51845 8.26858 +1.31781 1.9397 +6.26854 8.02093 +6.92072 7.77774 +0.438156 2.18909 +0.898035 1.72074 +3.81121 3.8643 +1.01676 1.34308 +9.28445 9.42801 +2.43133 4.43516 +4.33664 5.9904 +2.19178 2.37244 +1.5457 1.79785 +2.23781 2.6481 +6.8365 6.87073 +0.82568 2.74775 +9.59404 9.89262 +8.48394 9.15107 +6.16085 6.42224 +3.5667 5.97689 +4.16931 7.41638 +6.95636 7.0982 +6.87987 7.09233 +3.12619 3.14821 +7.76636 7.98459 +4.60371 5.59136 +3.92189 4.88302 +6.90694 8.19858 +3.85132 5.19015 +8.05045 8.32483 +4.8338 6.05032 +1.93576 3.18873 +2.4182 3.55039 +5.56905 5.8172 +4.18436 6.01283 +3.04944 3.85936 +7.83585 8.95233 +1.76281 3.0558 +3.44143 3.6317 +8.69887 9.40371 +5.67867 5.73236 +0.859809 1.76578 +6.92284 7.13601 +8.27495 9.13414 +5.44385 6.42599 +-0.941603 1.8215 +7.88161 8.79447 +0.965018 1.17732 +5.56442 5.79546 +8.79032 10.9909 +5.28632 5.79175 +4.80998 6.07002 +8.4021 9.81107 +3.16415 5.08682 +-0.212163 1.2052 +5.683 5.83625 +0.738527 1.31842 +2.03835 2.52756 +7.4543 8.91243 +-0.568869 1.44659 +3.58855 4.42371 +6.33058 7.18779 +-0.645579 1.94313 +2.18149 2.24157 +3.80281 4.67323 +5.14628 5.97452 +2.55239 3.45685 +3.56586 6.23355 +6.74752 7.19693 +8.99006 10.5533 +0.259833 0.99882 +8.9005 9.75401 +7.28058 8.41075 +4.57803 5.70104 +9.82823 9.90251 +6.94375 7.42033 +7.8878 8.81951 +5.01137 5.52693 +2.25503 2.28817 +6.65772 7.11107 +0.647512 2.04416 +4.34796 4.5706 +4.5395 4.91529 +2.65423 3.49531 +7.97384 8.78377 +5.53873 5.76806 +9.78641 10.1351 +6.01664 6.44407 +3.47406 3.75187 +4.59421 4.81804 +1.20641 2.00488 +2.48904 2.80768 +5.77372 6.10692 +2.49363 3.24499 +1.8483 2.62965 +2.28556 3.22209 +3.17819 4.51426 +3.5548 4.23276 +3.25239 3.57895 +0.613317 2.44862 +3.82234 4.78976 +4.72809 6.46528 +9.54107 10.4426 +9.20052 10.1921 +8.24152 9.89817 +5.17594 6.19462 +7.83364 8.17082 +5.67992 6.36464 +8.9943 10.1426 +2.20598 3.0081 +3.38199 5.16464 +0.599928 1.35804 +0.841211 1.60761 +5.29338 5.89919 +1.11061 2.29219 +3.41512 3.95907 +7.9375 10.0203 +8.73852 9.66917 +9.95092 10.0162 +4.02544 4.30219 +4.1461 5.37827 +1.08089 1.59196 +7.87513 8.21121 +7.85673 8.0973 +0.96237 1.56519 +2.45532 2.61678 +6.1829 6.23637 +0.135135 0.613518 +3.18324 3.78587 +5.64796 7.20194 +0.861169 1.71661 +9.66005 10.1169 +0.880774 1.12452 +1.29389 1.57658 +5.60299 5.89759 +5.53642 7.07306 +0.540268 1.31836 +6.60244 7.98105 +4.21877 4.57159 +3.15367 4.75356 +7.81055 8.40378 +8.00942 8.10861 +5.78071 6.35646 +3.15993 4.99293 +2.36526 2.78444 +8.1361 8.76071 +1.40066 2.96474 +-0.17906 1.05877 +5.94933 6.6808 +3.43187 4.05553 +3.02912 4.68942 +2.1506 2.29413 +2.3516 2.38305 +2.87496 3.0851 +6.71294 8.99858 +3.76177 5.52545 +1.58417 2.57063 +2.74646 4.27445 +5.48407 6.60696 +-0.133321 0.716559 +3.53886 3.58196 +2.28729 2.40198 +-0.209646 1.21263 +6.62795 7.32318 +0.714781 0.880466 +2.96831 4.05932 +6.00935 6.38896 +5.39798 6.11983 +8.47679 9.70468 +1.4339 1.74845 +2.35223 4.75732 +4.31357 4.9642 +5.26493 7.70538 +7.91888 8.94851 +6.51439 7.69469 +7.69015 7.85411 +3.94274 5.15373 +6.25852 7.32402 +2.73567 3.43236 +7.09564 8.42242 +2.55932 4.29066 +1.79489 1.84559 +8.86427 9.35669 +7.23854 8.27062 +7.8488 7.98307 +0.710888 2.22424 +0.0413624 1.10578 +1.54302 1.97696 +1.64924 3.01081 +8.15535 10.2397 +0.305662 1.63835 +8.20375 9.03123 +1.66617 2.08748 +4.01691 4.88505 +3.32856 4.10709 +5.15342 5.44616 +5.80751 7.38872 +0.485341 1.07648 +3.98267 4.20211 +6.96867 9.37655 +9.48055 9.85181 +8.39277 9.50424 +2.47589 2.79873 +3.48046 5.37417 +4.98279 6.01686 +1.29845 2.31199 +-0.204348 2.50289 +0.23488 1.00378 +6.26899 7.14823 +4.62903 5.49672 +0.199052 0.822066 +6.97297 7.69083 +4.23783 4.65198 +0.530497 0.839143 +6.61355 8.22831 +-0.0103941 2.16307 +0.148601 1.20044 +0.314438 0.67632 +3.43415 4.06208 +1.95498 3.25728 +4.23094 4.84942 +9.5493 10.0057 +2.64964 3.52073 +8.21388 9.1622 +-0.112496 0.47622 +7.97551 8.19546 +2.16155 2.6289 +0.38442 1.46032 +3.85675 3.91557 +1.00605 1.42016 +2.4853 3.53086 +-0.0765625 0.504366 +8.11302 8.46334 +7.18135 7.80218 +6.46466 8.12336 +3.75968 5.33954 +9.08789 9.73677 +6.47459 7.49454 +0.90148 1.47681 +3.44733 3.54163 +7.32968 7.909 +1.30055 2.75407 +8.78735 8.92461 +8.21764 8.59414 +0.888162 1.08404 +5.65195 6.26421 +6.23881 7.33284 +8.69731 9.88088 +3.55695 5.36909 +6.49248 7.02755 +2.31407 3.01952 +5.7803 6.1286 +6.30415 8.01577 +7.73864 8.27496 +0.741078 1.69184 +4.94671 5.68254 +3.28226 5.02894 +1.97446 2.60413 +3.26555 5.54754 +2.56179 3.41897 +3.20058 3.32486 +6.96915 7.69055 +6.89302 7.39856 +1.9659 2.61404 +1.31107 1.36867 +6.23573 6.33677 +0.17616 0.517772 +8.55548 8.79155 +9.61632 10.2651 +2.20331 2.34017 +6.93195 7.42939 +1.25398 2.23119 +1.06577 1.41048 +5.99156 7.09818 +3.34821 4.1271 +4.61618 6.90956 +2.30853 3.52875 +0.0518063 0.113732 +5.38513 6.09734 +1.73468 2.64838 +7.24679 7.63999 +4.18175 5.06728 +7.09602 7.13414 +9.06191 9.11605 +6.2309 7.67675 +3.96576 4.63237 +-0.552645 1.37948 +5.76964 6.89903 +4.9272 7.5832 +4.59003 6.49719 +4.12281 6.9664 +5.12256 5.58387 +1.78859 2.76954 +4.36808 5.05712 +8.41165 9.54483 +8.11513 8.43405 +8.42016 9.52715 +8.50598 9.34564 +1.80028 1.83558 +8.08502 8.43726 +6.96667 8.12021 +5.4726 6.26772 +7.1141 9.29989 +7.83324 8.1744 +8.74368 9.16491 +2.5515 3.01706 +5.92375 6.44495 +7.45628 8.41582 +9.04829 9.71503 +4.58856 4.75356 +7.26064 7.32462 +1.81695 2.40529 +6.88067 7.95052 +1.91408 2.02663 +1.32005 1.45025 +7.47733 8.42004 +4.99403 5.85297 +0.95744 2.28875 +-0.089503 0.536888 +1.09978 2.48865 +1.9959 3.098 +0.376116 0.448329 +3.98908 6.49684 +9.10178 9.51012 +5.41394 7.31529 +6.60708 7.59071 +4.38466 5.76203 +1.84355 2.60304 +0.658705 0.933522 +6.98725 7.05509 +5.60064 6.98804 +1.0603 1.1521 +4.06192 4.46156 +0.351018 1.00807 +9.17113 10.2192 +6.71641 6.74659 +8.85392 10.5272 +4.50816 5.22908 +1.13934 2.43196 +3.3746 3.57576 +7.62137 9.3234 +6.93482 7.16058 +5.66506 6.44324 +5.13364 5.86068 +1.97257 2.03803 +2.69746 2.73067 +0.989591 1.38342 +4.18819 4.69676 +4.31608 5.12265 +2.79556 4.87763 +3.55387 5.34421 +-0.112466 0.585639 +2.43156 2.70221 +5.88314 7.08322 +-0.450332 1.29858 +1.22202 2.46588 +6.74433 7.32925 +5.14596 5.37435 +6.76754 7.41799 +1.48762 2.45958 +4.57241 5.3382 +4.17465 5.02296 +6.48856 7.5576 +0.383566 0.823394 +8.50875 9.08734 +1.79393 2.24548 +5.06812 6.49508 +3.55364 3.61502 +5.58973 6.58885 +0.631097 2.10041 +0.323995 0.941782 +8.8798 10.1036 +6.37114 6.88202 +6.9393 7.83288 +3.09503 3.41759 +3.65269 3.70305 +5.61676 5.8924 +1.90199 2.38446 +4.23683 5.35609 +9.18649 9.88878 +8.28736 8.37734 +3.04805 5.03593 +8.02926 8.38975 +3.58161 4.01331 +3.20923 3.48207 +6.85118 8.78281 +5.06518 7.49843 +1.57456 3.05552 +3.0154 4.23782 +2.83557 3.24854 +1.29358 1.89328 +1.42911 2.72661 +3.17067 3.96651 +0.353554 1.48472 +3.46227 4.25611 +6.17639 7.24657 +5.60878 7.13562 +4.11129 5.52476 +9.17596 9.4123 +3.08339 3.65766 +4.083 4.63013 +0.628465 1.92141 +7.81989 8.39386 +3.35589 3.87531 +5.35974 5.41743 +4.48321 4.64376 +0.888177 1.37343 +8.49061 8.50063 +5.09078 6.01801 +9.65314 9.99342 +1.60502 3.0115 +1.37928 2.77642 +6.60322 8.94046 +6.74573 7.45157 +-0.291156 0.325249 +6.1518 6.66827 +5.38199 6.46959 +3.50128 5.22692 +1.31774 1.70159 +0.550546 1.48845 +7.51187 7.85496 +4.2014 5.23193 +3.88255 3.97209 +2.60555 2.84958 +5.15706 6.00036 +2.99284 3.27867 +0.395077 0.768383 +3.30863 3.60594 +0.0325231 0.379208 +6.55183 7.33346 +1.44554 2.95846 +0.245421 1.29751 +3.98808 5.41226 +5.90242 6.266 +4.11097 5.02597 +0.134753 0.929866 +0.609287 1.16311 +0.231832 1.06825 +6.22093 7.05584 +9.18429 9.80637 +0.544139 1.30185 +1.69143 2.90306 +6.75109 8.67893 +5.49641 6.76104 +8.91712 10.0271 +7.09126 8.12404 +8.82958 10.2847 +0.569249 0.69421 +3.59288 5.8053 +9.25068 9.4226 +8.51607 9.26259 +5.00906 5.17068 +1.83467 2.99102 +7.32006 7.64842 +0.405532 0.603773 +6.41882 6.60495 +0.721592 1.44375 +2.78393 4.46732 +7.14806 7.16117 +5.12868 5.27918 +2.74138 3.1737 +2.95394 4.26547 +7.82827 8.21028 +9.06982 10.7279 +0.108376 0.290131 +6.34574 6.97141 +4.39022 5.50801 +7.98339 8.79674 +3.80026 4.71831 +5.43594 5.66916 +1.6743 2.61476 +4.29763 5.47402 +7.95714 8.69311 +3.4152 3.7387 +8.01715 8.8941 +6.53723 7.44437 +-0.0222108 1.04503 +4.96242 6.01648 +1.70885 1.75511 +7.62434 8.53526 +6.82863 7.39782 +8.19967 9.22283 +1.99719 2.11323 +-0.0124079 0.240201 +4.48577 4.87935 +2.586 4.41666 +6.37848 6.67092 +4.39606 5.67983 +9.39761 10.1095 +7.10866 7.15796 +3.91993 4.52129 +5.10552 5.36997 +7.08963 8.32694 +9.12669 9.58509 +9.26894 10.1974 +0.737413 1.26523 +2.77833 5.28516 +3.19039 4.36857 +4.32954 5.45614 +4.98069 5.49295 +7.54745 8.76142 +5.70425 7.05749 +-0.250513 0.36578 +4.76997 5.89607 +2.03075 2.32111 +6.54141 6.55896 +4.19799 4.45091 +8.7796 9.11915 +5.75014 6.05646 +5.36885 5.42775 +-0.00433056 0.865304 +3.65169 5.4751 +0.23625 0.872926 +0.0386337 0.792214 +4.40245 4.56789 +6.44567 7.42162 +5.51394 5.98005 +3.50146 3.83147 +8.47573 9.85647 +7.91378 8.47044 +9.44297 9.90241 +5.962 6.68782 +4.49034 4.86927 +2.17774 3.47061 +8.80614 9.26595 +7.92096 8.13838 +7.80209 7.93317 +7.78915 8.29735 +6.98111 7.162 +0.491059 1.14901 +8.97965 9.38792 +3.30207 3.53207 +3.17127 4.43581 +3.97564 4.43746 +6.79008 7.17877 +5.61669 7.51263 +4.0853 5.38748 +4.42181 6.32041 +8.08599 8.9095 +2.46938 2.55499 +1.20692 2.06351 +1.98995 2.35216 +8.17116 9.17158 +7.53414 8.37086 +3.7744 4.46197 +3.29464 4.38 +7.33246 7.81959 +4.89572 6.2831 +-0.152496 1.56427 +0.636242 0.938556 +5.62066 6.06096 +9.42994 10.473 +8.95446 9.46311 +0.277891 2.80311 +6.92968 7.29845 +2.75677 3.02975 +2.2859 2.51308 +2.96683 3.03857 +6.44584 6.49518 +8.33607 8.60407 +7.20303 7.7616 +7.07205 7.46849 +2.35677 2.7904 +5.86404 6.12906 +2.42371 4.62735 +3.27237 4.11016 +0.0668578 0.644021 +6.77371 7.45187 +3.66596 5.21874 +0.718034 0.755944 +6.06162 7.05 +6.91473 7.09753 +5.0749 6.08914 +0.759874 1.11978 +8.54591 9.64997 +3.97266 4.70679 +1.51133 3.17164 +7.21772 7.69877 +8.00719 8.37052 +0.284003 0.38001 +4.08842 4.16227 +5.04461 5.79973 +4.60604 5.31979 +2.2461 2.28157 +6.25631 7.69766 +9.12404 9.67586 +7.73134 8.98923 +1.0513 1.46408 +9.17225 9.42567 +3.66795 4.29168 +8.84403 9.28497 +9.93613 9.94729 +3.16615 5.09374 +-0.149675 1.43397 +2.30855 2.48392 +0.843172 0.951801 +8.32945 8.8506 +8.97012 9.94697 +2.8559 2.92359 +-0.321715 0.89173 +7.48565 7.71775 +1.44301 1.47795 +6.6649 6.76187 +9.10721 9.93599 +1.82207 3.03935 +3.61893 4.5306 +2.53746 3.81243 +0.424528 1.29026 +9.51874 9.68841 +7.94954 8.14396 +7.49282 7.52655 +3.04604 3.69656 +9.45461 9.47212 +7.69209 8.16412 +0.607135 1.16564 +0.150291 0.450632 +3.28914 4.01085 +5.45597 6.02921 +8.16157 8.36605 +9.76573 10.2325 +0.151994 1.07074 +1.3748 1.68548 +2.29854 2.63593 +7.92162 8.68895 +1.28795 1.61949 +7.85469 8.26683 +4.32268 6.33174 +6.13964 6.3596 +1.25714 1.88002 +2.05006 2.28294 +8.31864 8.34151 +9.0613 10.0715 +-0.041568 0.25139 +6.79984 6.81686 +5.10674 5.70583 +5.92937 7.01652 +7.57649 8.05834 +0.937157 2.25362 +7.48567 7.59746 +2.33403 2.88942 +7.3805 7.73421 +5.586 5.75327 +0.828854 2.12988 +8.22741 8.59954 +9.69214 10.1207 +6.55359 7.08114 +1.85342 2.634 +6.08756 7.28893 +6.34993 6.93474 +8.93548 10.1463 +5.49445 5.8338 +1.47951 2.14646 +2.62089 2.75888 +2.35352 3.10539 +4.98774 5.28931 +4.92239 5.40697 +7.52674 8.78948 +4.52451 4.83819 +5.45854 5.75838 +5.51553 6.3901 +4.82905 6.44407 +6.20655 6.4483 +5.68116 7.06109 +7.97301 9.15827 +8.8854 9.91623 +9.60198 10.2449 +1.93322 2.67684 +0.441852 1.87646 +5.19981 5.71385 +2.54799 2.5809 +4.34591 5.02655 +7.54678 8.75202 +6.1496 7.19033 +1.13658 1.30756 +1.38724 2.08252 +2.13624 2.30419 +8.49196 9.41369 +-0.21387 0.685093 +2.47875 4.19982 +3.69093 4.00543 +5.70643 6.50331 +7.07443 8.83588 +6.85756 7.68937 +1.69241 1.83242 +0.140565 0.502156 +2.15007 3.23784 +4.97403 5.69757 +5.08315 6.25554 +3.45026 4.01942 +3.37482 4.73009 +7.4154 8.34013 +6.95399 7.59768 +8.07995 9.86199 +8.43993 8.88645 +7.66844 8.12742 +-0.0200687 0.435846 +4.47984 5.9416 +7.66804 10.0801 +4.14578 5.98717 +0.256533 0.89254 +6.43216 7.4474 +3.60295 4.79419 +3.90129 4.29812 +5.30606 5.58674 +9.11552 9.79229 +5.60702 5.85299 +2.39514 2.64865 +4.51164 4.60227 +6.31154 6.77441 +3.12239 3.13505 +7.50962 7.89478 +3.90928 4.88831 +9.64625 10.0629 +5.9465 6.02877 +2.08554 2.10477 +0.087547 0.34748 +2.34295 2.53703 +6.846 7.3043 +1.37869 2.11446 +4.03371 4.26278 +5.38623 6.40917 +4.75848 6.25417 +6.03478 6.15991 +-0.585543 1.2091 +2.52824 3.57712 +3.95687 5.40914 +4.42955 4.71909 +2.9328 3.98848 +5.40471 6.97056 +7.64789 9.30279 +6.19595 7.07492 +8.27328 9.41596 +8.29855 9.13665 +2.54035 3.10488 +8.25038 8.87903 +5.66599 5.88701 +7.40067 8.71195 +6.63762 6.67694 +-0.0163105 1.72666 +4.77743 6.60356 +0.567991 1.14977 +5.96841 6.42987 +3.02266 4.58424 +6.72121 7.35492 +7.51477 8.65223 +8.55055 8.81014 +5.59759 5.82816 +0.218944 1.82542 +1.03197 2.36652 +7.84302 9.1594 +2.11542 4.7332 +6.37618 6.92981 +1.34963 1.59353 +0.516281 1.08859 +-0.0151152 0.0624718 +6.45603 7.23063 +4.76865 5.46588 +7.5893 8.42021 +1.04534 1.99034 +2.62638 3.04997 +5.00254 5.98512 +7.7588 9.44547 +6.82186 7.34321 +8.7629 9.82272 +-0.309554 0.54858 +4.19843 4.92981 +5.62327 6.80846 +6.40599 7.6073 +6.1547 6.53898 +3.93941 4.44985 +3.28342 3.72778 +7.17256 7.23035 +2.31269 3.05437 +7.99132 8.20926 +7.19338 8.08381 +7.29139 7.96441 +4.25818 4.4208 +0.802894 0.81938 +0.990115 1.04066 +0.443898 0.490936 +3.44459 3.95977 +9.07812 10.3145 +7.86709 8.26338 +-0.230114 0.390748 +7.50905 8.49199 +-0.715424 1.97535 +2.92248 3.12903 +5.44209 6.62431 +0.991914 1.99037 +5.92275 6.7724 +9.10818 9.2797 +4.46434 4.83462 +4.21122 5.48353 +1.8721 3.40764 +7.04713 7.60526 +3.76581 4.76317 +7.00667 7.36475 +6.87244 7.39431 +7.6349 8.46695 +-0.0728922 0.351194 +5.02925 5.6834 +1.45779 2.83702 +0.339175 1.46574 +6.40414 6.9165 +6.30401 6.91007 +5.6392 5.78172 +5.63288 6.44639 +7.45285 8.89031 +4.09741 4.57929 +8.76728 9.06448 +1.62324 1.84552 +5.72509 6.54553 +8.65273 10.3652 +7.3362 7.8953 +8.96224 10.3113 +0.217316 1.7827 +1.28523 2.90127 +8.78746 9.11602 +8.6075 9.9606 +-0.647788 0.779976 +4.9702 5.47602 +4.15553 4.57497 +1.08174 2.80993 +4.01011 4.8145 +6.79603 7.2317 +4.3711 4.43566 +9.65087 9.79922 +8.19407 9.21784 +3.04008 4.94094 +6.0883 7.23919 +6.88708 6.97172 +0.438073 2.00665 +8.53083 8.83004 +4.22258 4.65233 +6.72856 7.61085 +3.17591 3.18978 +5.07955 5.6938 +2.09043 2.55351 +3.28085 4.43556 +7.29225 8.03925 +7.78034 7.82608 +6.59677 7.67719 +5.56032 6.38139 +8.72663 8.82535 +2.96505 3.11983 +1.67192 2.11727 +7.85386 8.49025 +6.30965 6.72799 +8.53082 9.3801 +2.8976 3.39972 +8.90427 9.44661 +-0.0665785 0.410254 +4.58099 5.81135 +1.88015 2.21838 +3.38693 4.10149 +7.46378 7.68246 +8.80985 9.72212 +6.54877 7.25642 +7.18249 7.71509 +7.41978 8.64805 +1.00839 1.78626 +0.39421 0.526751 +7.13516 7.28317 +7.28011 7.80573 +1.90158 2.49032 +1.66181 4.17994 +8.81106 9.21133 +9.46151 10.5007 +0.52585 0.575082 +7.66495 8.64072 +7.72794 8.50991 +4.92409 6.23879 +2.28769 3.21774 +3.62671 4.40932 +5.77688 7.31314 +8.94253 10.0664 +0.416618 0.635111 +1.81377 2.41356 +7.91755 8.83363 +1.62715 1.82626 +8.22065 9.51656 +0.020228 0.724724 +8.81119 9.95764 +8.66509 9.61079 +5.28201 5.32152 +3.95724 4.22138 +7.09339 7.77685 +9.63428 10.1514 +3.69117 3.779 +3.82195 4.76757 +5.75824 6.62265 +3.69984 4.75163 +3.58259 4.8788 +8.32635 8.85873 +5.81959 7.32506 +8.11265 9.14304 +2.20118 3.32511 +7.79582 8.52691 +6.5891 7.13584 +0.385393 0.440656 +1.13414 1.9951 +1.76482 2.69977 +4.76194 5.82757 +6.33633 7.5348 +4.7663 5.65083 +1.98298 3.01285 +0.956973 2.38629 +5.60955 7.65827 +9.11064 9.14351 +2.99933 3.37975 +3.36304 4.57437 +3.89886 4.50733 +8.73838 9.3514 +9.11824 9.66042 +1.47961 2.93909 +0.615297 1.13217 +1.70646 2.32478 +4.35168 4.99362 +0.986601 1.18332 +4.01551 4.92342 +7.68944 9.86838 +4.47611 4.85316 +0.051839 0.86288 +3.59624 5.5628 +7.08729 8.90374 +9.53464 9.9196 +4.69871 5.74189 +8.43146 10.6889 +3.23774 3.77777 +9.35399 9.62741 +1.15259 2.69451 +6.6368 7.33773 +5.26395 6.09857 +6.87415 7.21717 +-0.925645 1.06118 +8.49641 8.67659 +2.31486 3.25354 +2.51057 2.58303 +0.921997 1.48762 +6.29777 6.74738 +4.03945 4.27305 +7.1668 7.3471 +8.44572 8.80343 +7.16937 7.84526 +8.89008 9.4332 +7.01815 7.66319 +-0.420804 0.982878 +1.59755 1.64672 +0.700814 0.72579 +6.3138 7.37379 +8.49276 9.93522 +-0.795656 0.819657 +0.772253 1.05926 +0.917593 1.3917 +3.30076 4.12274 +-0.0237176 0.260552 +6.82385 7.49119 +6.98638 7.52012 +8.24915 9.08397 +4.17486 4.25908 +3.08435 4.64404 +8.17114 9.91412 +8.95923 9.3751 +0.596707 1.89462 +0.982917 1.40236 +6.79552 7.36657 +8.2599 9.69551 +8.85126 10.4342 +7.98967 9.14514 +0.766355 1.63286 +7.76211 7.99247 +5.23163 5.89338 +4.4707 5.50457 +9.257 9.27862 +2.11049 2.59654 +1.65501 2.06238 +0.551768 2.10873 +0.0285582 0.194421 +3.66153 3.85615 +5.07097 5.55806 +5.29145 5.80735 +2.03499 3.0863 +0.73171 2.29494 +2.63023 3.6417 +6.17478 6.25997 +5.79646 6.46363 +9.10633 10.5516 +7.23415 7.84823 +6.49951 7.1506 +9.94647 10.0242 +7.91236 8.09097 +7.8127 7.97662 +3.34238 3.42907 +8.50796 9.8311 +8.75792 8.98028 +9.34125 10.4441 +2.84413 3.71602 +1.49884 2.35652 +7.52317 9.18955 +9.5587 10.3525 +4.85436 6.1181 +5.91369 6.12194 +6.88463 8.34471 +1.51952 2.99156 +4.29022 5.12674 +8.0229 8.41246 +2.44841 3.04779 +7.59975 7.91485 +2.74491 3.62575 +0.0169968 0.240919 +5.85351 6.29039 +4.99825 5.93439 +2.153 3.35304 +1.19032 1.41763 +6.13337 7.80615 +7.05013 7.89364 +8.38056 9.92 +6.35525 6.64521 +3.93342 5.15885 +2.87656 3.47116 +3.56176 4.41159 +6.72084 7.9171 +8.03801 9.12442 +1.03329 2.56255 +7.64542 8.61709 +2.85627 2.89437 +8.8303 9.79838 +1.08032 2.34573 +7.51366 8.39169 +9.09685 10.3677 +6.753 7.41904 +-0.217662 1.42059 +6.72492 7.97553 +7.99325 8.8976 +0.765372 1.10894 +4.37958 6.04671 +8.72027 9.58928 +6.00234 7.29277 +8.43912 9.25356 +2.98816 3.17389 +0.4292 0.552167 +1.69827 2.80318 +5.99904 7.09981 +4.68367 5.87791 +-0.203208 1.09587 +2.65367 3.28472 +3.87051 3.88111 +6.36178 7.18853 +-0.0815935 0.200848 +6.82255 7.18488 +4.99295 5.08405 +2.67155 3.08447 +5.82099 6.77145 +8.76434 9.01086 +5.94982 6.18665 +3.23369 3.71743 +0.934129 2.73456 +1.13233 1.24208 +8.21931 9.03906 +6.25425 6.69972 +0.971299 4.21205 +5.68426 6.45281 +2.85786 3.3955 +8.17715 8.88439 +2.72802 5.01235 +6.12811 6.53711 +5.22878 6.45864 +0.453655 0.922032 +0.466162 0.85262 +2.40916 2.64759 +5.63583 6.37476 +2.18434 3.14105 +0.912811 2.08432 +8.9464 10.1515 +6.77323 7.27133 +0.7167 1.60579 +5.89813 6.32997 +7.66593 8.4611 +6.54145 6.88337 +5.95421 6.21188 +1.10383 1.92226 +5.37168 5.65707 +1.51874 1.66339 +4.60748 5.00384 +8.97354 10.5394 +2.05022 3.20373 +8.17316 8.19283 +2.33792 2.72643 +8.81577 9.3704 +5.95738 6.59855 +5.69025 6.17335 +6.91889 7.88142 +2.17529 2.81528 +6.65046 7.19698 +7.10694 8.78046 +2.09613 2.47484 +1.92423 2.25333 +-0.0906039 0.861376 +6.61481 7.70609 +6.7448 6.84276 +3.43655 5.28405 +6.05404 6.48902 +3.24637 3.36149 +5.69528 5.77157 +5.12352 5.31024 +7.65858 8.80828 +3.69209 4.4851 +0.25765 1.29637 +3.1537 4.13191 +3.12328 3.83765 +2.99798 4.8748 +4.49566 4.67827 +3.50822 4.03987 +8.00334 8.34084 +8.61039 9.00704 +0.0332147 0.166124 +4.55193 5.36546 +4.20308 4.31589 +0.955466 1.20095 +-0.382972 1.47625 +0.803913 1.01916 +3.78333 4.0707 +6.58604 6.70173 +3.02066 3.82562 +1.16515 2.2816 +7.87242 8.24214 +4.057 4.60368 +2.84714 3.59726 +2.77804 3.69136 +-0.139996 1.36416 +4.50647 6.37579 +8.86647 10.1549 +9.24372 10.1442 +0.743107 1.84722 +6.18761 7.65841 +0.214887 0.443938 +8.8513 9.55063 +4.04856 5.79916 +6.69671 7.10025 +6.97477 7.79702 +4.82551 5.10538 +0.821772 2.85828 +9.3086 9.74805 +5.45623 6.66668 +7.64296 8.67451 +7.53052 8.31024 +7.45352 7.5063 +1.31412 1.4979 +7.81176 8.48083 +0.228964 1.73207 +5.52579 5.93103 +6.58544 8.48938 +2.75407 4.18746 +3.21396 3.96298 +1.13806 2.34106 +0.899331 2.87945 +5.69016 6.61624 +2.48172 2.58082 +0.676004 1.43405 +3.41766 3.9503 +0.104554 0.298373 +6.50673 8.21831 +6.00349 6.69385 +9.62453 10.3147 +4.09379 6.02911 +-1.12803 1.68823 +1.83324 3.43133 +8.30576 9.09288 +-0.363911 0.405218 +1.91686 3.34928 +6.98331 7.15885 +-0.31591 0.996789 +0.145813 0.35408 +5.32016 6.13679 +6.99664 7.48644 +-0.140875 0.821045 +9.0119 9.19742 +1.69616 1.72453 +4.38064 5.07542 +6.85898 7.55478 +3.9145 4.27935 +5.77592 6.16806 +1.45345 3.01301 +4.13024 5.59662 +8.14557 8.41669 +4.00075 4.829 +-0.283024 1.59436 +5.92468 7.17507 +6.84458 7.18356 +1.06987 1.42839 +8.618 8.66235 +0.432802 1.59512 +3.78058 4.36051 +1.6113 4.21135 +6.73475 7.01057 +6.74819 6.90498 +6.93146 8.54681 +9.02605 9.91613 +3.888 4.00526 +1.07958 2.27915 +4.78456 5.10764 +3.92952 4.89555 +9.09348 9.30304 +6.73107 7.21036 +7.42366 7.73225 +4.04079 4.72919 +1.21726 1.34683 +8.82903 9.73504 +0.577663 1.00786 +1.56822 2.08675 +4.84315 5.44994 +1.01008 1.16524 +5.99782 6.01535 +0.996739 1.75305 +4.76128 6.39012 +8.93563 9.51972 +-0.0698166 0.453543 +5.9084 6.95139 +0.535401 0.692258 +4.80729 5.48335 +3.42581 4.76147 +3.58715 4.43541 +7.50236 7.71227 +5.19742 5.87901 +1.79752 2.43097 +7.29762 7.57608 +5.65169 6.47762 +6.02249 7.93642 +0.840131 2.81176 +6.2646 6.96911 +7.46014 8.17136 +9.79049 9.94054 +4.61094 5.35819 +7.30902 7.41873 +1.21883 1.84621 +6.41743 6.57736 +1.53114 1.62859 +6.73237 7.47083 +6.05618 7.56831 +7.63374 8.16821 +5.20839 6.05382 +0.619043 1.44065 +2.38657 4.88786 +3.88289 5.18788 +4.42283 4.51106 +9.15575 9.22388 +3.18678 3.72243 +3.20638 3.65935 +4.2219 4.97961 +4.63725 6.90959 +2.57123 2.59101 +4.08581 4.37325 +6.53926 6.80412 +1.77475 3.89149 +9.22854 10.426 +2.67375 4.36551 +3.17194 4.0433 +1.10304 2.0348 +3.67233 4.04957 +3.23526 3.5012 +5.17684 6.47301 +4.4 4.67662 +4.15842 5.85903 +5.88496 6.61616 +7.26489 7.51279 +4.17402 6.6997 +-0.540216 0.54573 +4.36063 4.60442 +9.18146 9.96239 +0.977216 2.42032 +9.09143 9.61178 +5.06686 6.23076 +2.04772 2.92048 +1.4154 2.00707 +7.80442 9.54824 +4.55549 4.7148 +7.56964 8.80172 +1.35347 3.21648 +9.12751 10.0605 +1.81735 2.06061 +5.63798 8.0918 +6.79492 7.98002 +9.23053 10.1299 +1.74639 2.02724 +3.71825 4.09879 +2.4995 3.42493 +4.1255 5.66758 +4.75493 6.99687 +8.22481 8.72036 +6.13689 7.53026 +5.41315 5.66358 +4.21425 5.62743 +6.22936 6.44392 +2.02303 2.96414 +-0.0655462 0.130508 +6.1487 6.70994 +4.36674 6.24985 +7.51129 7.63176 +7.9729 8.98613 +3.92117 4.15596 +4.54398 5.43399 +6.34248 6.92305 +-0.550253 1.16167 +9.15142 9.53717 +8.99354 9.65952 +6.28988 7.90053 +3.36505 3.782 +8.80005 9.70553 +1.99947 2.18573 +1.15023 2.07069 +0.253723 1.32958 +2.0392 2.93977 +2.89024 3.00836 +8.16735 8.2049 +1.49508 2.95258 +6.19092 7.44552 +2.33328 3.06758 +6.44166 7.4649 +7.34749 7.79488 +7.5557 8.04141 +2.76812 5.13617 +7.97308 9.25668 +4.73539 5.22234 +7.53377 8.41651 +-0.355405 1.36499 +4.72111 4.73744 +-1.22753 1.84842 +5.5033 5.63808 +3.95421 4.19313 +6.24752 6.98229 +4.49694 5.07277 +3.70871 4.30093 +1.31984 1.50116 +7.16044 8.70868 +2.44587 3.34659 +6.08322 7.20376 +2.75012 2.82555 +0.0394442 0.863634 +3.90896 4.73696 +4.77494 5.04158 +8.41473 8.82932 +1.7049 2.71024 +9.01684 10.1044 +4.57959 5.01066 +3.2484 4.21875 +1.11596 2.88792 +3.53616 4.14001 +5.80672 5.82478 +5.85844 7.70293 +6.18239 6.30124 +2.22913 3.23412 +2.97521 3.08481 +2.2749 3.70611 +2.3457 3.86609 +2.71695 4.04473 +7.22863 7.40115 +1.80428 2.39815 +1.80781 2.33028 +2.78662 3.14936 +9.40717 9.94906 +6.54968 6.80773 +2.76862 3.24492 +1.96034 2.87404 +3.53295 3.54927 +5.36042 5.67073 +8.63339 8.93752 +0.932415 1.70402 +4.32923 4.55594 +9.3491 10.4969 +0.121416 1.15499 +-0.172998 1.36319 +2.02349 2.29887 +1.75352 2.35329 +0.502555 2.01665 +6.71754 6.80014 +3.35175 3.93337 +7.17133 7.9851 +8.51299 9.95771 +5.86103 6.36734 +1.44593 3.46008 +4.49699 4.60855 +2.29261 3.10053 +6.68713 8.19499 +5.43776 6.84387 +8.58591 9.02134 +5.24746 6.15595 +1.3847 2.5074 +6.62143 7.07775 +1.7101 2.077 +9.70898 10.2789 +6.67451 7.92058 +2.56858 3.60374 +1.61917 2.60482 +1.77902 2.16908 +4.76209 6.00461 +3.8894 3.98269 +7.0278 7.276 +5.4866 5.59417 +1.69306 2.92506 +2.45744 3.76592 +2.5689 2.80611 +5.98283 6.06154 +9.5267 9.9626 +9.55652 10.4128 +6.6111 6.64606 +3.38826 4.26111 +3.61887 3.73455 +4.14924 6.13796 +7.15863 7.28212 +5.78984 6.56662 +2.09304 2.2681 +4.39867 4.88557 +6.20907 6.81034 +4.63336 4.91476 +0.939805 2.43621 +1.56774 5.13599 +8.40908 9.82058 +2.06273 2.20306 +2.53524 5.01482 +2.9314 3.23661 +2.48535 3.47368 +0.366389 1.4699 +8.81131 9.01654 +2.05102 2.87972 +1.9699 2.22723 +6.18333 6.98224 +1.3425 2.4443 +0.767883 1.77423 +3.1538 3.43248 +0.891006 0.903458 +5.7136 5.8713 +0.437569 1.37539 +3.98533 5.01646 +8.65764 9.89518 +3.74889 3.98561 +7.74507 8.30657 +8.24671 8.43006 +6.88467 7.42036 +1.99426 2.03522 +1.90486 2.04181 +1.12911 1.71807 +9.25253 10.105 +1.92989 2.0346 +5.60044 6.25585 +9.16848 10.087 +6.67824 6.72257 +1.88522 2.80222 +0.242758 0.852689 +5.09249 7.71484 +5.54974 6.44414 +7.66767 8.72936 +3.48884 3.83156 +3.4697 5.14646 +8.48582 8.7692 +6.76259 7.06897 +7.83856 8.62005 +5.81853 6.76571 +2.04803 2.94439 +6.85396 7.22985 +6.52449 7.39764 +9.26838 9.34809 +4.64449 5.64975 +7.51845 7.80279 +-1.27268 1.65344 +0.686101 4.20373 +7.80552 8.37119 +7.20419 8.35284 +9.33962 9.87975 +4.31238 5.58683 +2.39198 3.84398 +1.29248 2.59269 +4.71612 6.195 +5.27332 6.52174 +7.71492 7.84702 +8.18064 8.72233 +1.55223 2.31294 +6.34374 7.31758 +6.48966 6.92611 +2.62268 3.09895 +4.09064 5.06197 +2.66367 4.12126 +1.53391 2.93092 +8.64516 8.70655 +9.20047 9.28957 +4.00474 4.11716 +8.5418 9.45901 +8.73386 9.73253 +9.22596 9.63179 +1.34204 2.7834 +8.4489 9.21027 +7.75158 8.51085 +5.98856 6.11212 +1.29906 2.08111 +9.24315 9.76291 +6.84345 6.91607 +5.88294 5.90545 +3.03022 3.39941 +3.22222 3.4089 +1.12791 1.65898 +6.70232 7.36336 +8.60042 8.82377 +1.26451 1.30362 +2.76682 2.92693 +1.54763 2.19582 +6.5865 7.24173 +4.15242 4.21742 +8.39615 8.78524 +1.67017 2.08717 +9.03012 9.97041 +2.31463 2.45877 +8.29872 8.51813 +1.66689 2.51919 +-0.807606 1.47794 +1.31452 1.94418 +0.0739222 0.512106 +4.23577 4.25889 +7.45273 7.97505 +3.34234 3.46608 +7.97304 9.14131 +1.9029 2.99946 +8.84087 9.79689 +4.92769 5.68685 +2.74004 3.04513 +0.889257 2.20448 +3.10574 3.9758 +3.91547 4.32303 +7.17475 8.07377 +5.92903 8.03738 +1.57974 1.65527 +3.76339 4.2285 +2.28263 2.7559 +9.53105 9.87477 +2.10154 3.2222 +4.23683 5.34347 +1.38769 2.48482 +5.39838 5.51872 +8.50975 10.1382 +8.04108 9.21474 +8.5252 9.67823 +8.893 10.7726 +7.1294 8.18211 +1.15642 1.73882 +0.436911 0.756698 +3.66142 3.71659 +6.37686 6.7 +8.88506 8.99896 +2.31891 3.79061 +2.61615 2.81909 +1.35216 1.39571 +3.04217 3.52564 +7.8409 9.34099 +0.470596 1.49157 +6.94014 7.18365 +8.05483 8.49979 +8.18511 8.25608 +7.03597 8.45251 +2.47411 2.65172 +0.112716 0.193057 +4.45039 5.10584 +4.53906 5.80013 +5.11702 5.27151 +1.24211 1.90757 +4.64114 4.72912 +1.77254 3.45037 +-0.1275 0.99675 +5.69637 7.67722 +2.21252 2.44032 +3.89623 4.40192 +2.79904 3.15569 +8.37911 9.42424 +5.27199 6.2026 +1.84791 3.75411 +0.522801 0.54806 +3.83644 4.64785 +6.65497 7.55638 +6.75104 6.98564 +2.34979 2.98049 +8.27176 8.60459 +5.07773 5.44064 +1.16934 1.98872 +4.2914 5.37557 +6.83462 7.95408 +3.91405 5.73229 +7.77473 8.53538 +9.23441 9.90185 +4.03659 5.2473 +5.99336 7.8004 +4.2432 5.89276 +6.39847 7.81276 +9.13909 10.4164 +1.12009 2.5649 +2.35157 3.18468 +4.46918 5.55572 +3.82512 5.53666 +7.18238 8.10193 +8.40911 9.23639 +8.99555 10.4192 +6.69547 8.87825 +4.79012 5.34858 +9.23615 10.0986 +-0.590587 1.14603 +2.74289 3.48244 +-0.248403 1.1591 +3.35663 3.7229 +7.37504 7.6481 +6.64796 7.64695 +0.778081 2.41212 +4.49242 4.7772 +8.01419 8.109 +6.6494 7.76619 +8.86331 10.1205 +0.817273 0.937855 +8.00019 8.21556 +6.19405 6.54794 +6.11798 7.30421 +3.40164 4.28921 +5.31927 6.21584 +2.79377 3.40938 +3.59494 3.90321 +7.79218 10.3132 +2.99546 3.86111 +1.71916 3.40283 +6.1768 6.81915 +7.59629 8.68568 +1.59724 2.348 +6.20151 6.5391 +6.30798 6.70478 +0.489786 1.51322 +1.28396 1.86775 +5.18031 5.43007 +6.61276 7.70565 +1.4909 2.11165 +4.56163 5.49277 +1.93598 4.35147 +3.65568 5.00224 +1.68028 2.00363 +7.82874 8.67399 +1.23053 2.87598 +-0.164275 0.194491 +2.58349 4.01302 +1.23279 2.02984 +0.599702 1.09257 +9.50965 9.80164 +2.33108 3.58037 +4.38659 4.62378 +2.65097 2.87349 +0.0537058 0.576502 +4.20415 5.15693 +5.41458 5.98382 +4.37747 5.10347 +2.62536 2.70073 +6.96845 8.15356 +6.91533 8.41638 +9.36431 9.58863 +6.13019 7.25915 +2.7818 3.4951 +9.44641 10.1301 +2.68817 4.19772 +5.65664 5.6814 +8.25308 10.498 +3.50374 3.64458 +1.47063 1.78567 +8.21901 8.98152 +3.99261 4.47339 +2.51395 3.38788 +4.66178 5.24959 +9.08415 10.3467 +5.92351 7.20447 +1.74145 2.35957 +7.62653 8.96797 +6.43542 7.68775 +5.49047 6.56355 +4.9225 6.22555 +0.257967 0.704837 +3.42488 3.52873 +8.67606 9.77824 +5.12981 6.37856 +5.97359 6.32151 +1.58517 2.28129 +0.530687 1.54545 +7.04056 8.15296 +1.8541 3.1902 +9.46286 10.0098 +3.17967 4.02237 +3.49966 3.80271 +6.24894 6.49618 +1.19944 1.59215 +5.30422 6.94823 +7.49137 7.78584 +7.02669 8.16282 +2.21673 3.36471 +7.66183 8.34763 +4.13876 4.87421 +3.0199 4.07124 +8.40439 8.82943 +-0.274649 0.429602 +6.11215 7.65609 +3.34781 5.03006 +1.28231 1.77258 +7.57256 8.59456 +5.36208 5.81735 +7.18511 8.96618 +8.86053 9.49567 +5.39097 5.93211 +6.59094 7.26553 +3.69159 4.01914 +8.73797 8.81611 +1.41144 1.82827 +7.83555 8.07567 +6.13821 8.44907 +5.83432 6.48744 +2.93596 4.66271 +7.03215 7.59658 +1.65252 2.45337 +2.91358 4.90129 +8.94415 9.14642 +5.21005 6.1166 +0.33225 1.17039 +7.40089 8.07586 +9.30427 9.40776 +2.34188 2.81124 +1.02811 3.3344 +6.28117 7.62089 +4.80105 7.10049 +8.90252 10.0057 +2.20932 2.33093 +8.20746 10.6268 +4.31887 5.23945 +9.258 9.8985 +3.80742 4.15057 +1.11313 1.23711 +9.53067 9.70165 +7.95467 8.67187 +9.66031 9.83223 +3.61385 4.09571 +0.623148 0.652817 +7.77809 8.62118 +0.86157 1.98606 +3.12528 3.75815 +1.9363 3.22621 +8.23521 8.99175 +8.95406 10.4487 +3.38526 3.90652 +0.34281 2.0226 +0.739384 0.793829 +3.55637 3.96384 +6.1562 7.28647 +5.30211 7.51385 +1.46275 1.78688 +-0.0144662 0.868488 +0.0740443 0.119828 +9.26206 9.83923 +0.743397 1.40754 +4.68823 6.62985 +8.8291 9.17373 +4.66711 5.09313 +4.023 4.44994 +5.68937 5.79194 +8.04835 8.06763 +6.94662 8.00075 +0.774686 1.13428 +0.381819 2.34757 +2.1235 2.63524 +5.42795 6.89998 +6.07662 6.29083 +6.47821 6.7872 +2.58305 2.6192 +-0.598336 1.23458 +4.29089 5.43332 +8.09914 8.28229 +5.05925 5.35258 +0.181705 0.444466 +3.27849 4.79932 +0.310314 1.43125 +1.13836 2.76825 +1.2529 4.09336 +0.198106 0.608625 +1.77442 2.23777 +6.29823 6.64574 +1.22125 1.37929 +1.77592 3.04011 +1.43999 2.90926 +4.20495 5.32396 +4.98874 5.33211 +8.36483 8.67875 +5.65373 7.14132 +2.8303 3.05037 +3.41509 3.54032 +7.21702 7.85857 +5.79848 5.8913 +4.52711 5.65511 +2.04663 2.66919 +5.76363 6.77903 +-0.153046 0.77878 +4.37474 4.49936 +6.86786 7.81999 +8.92084 9.16368 +7.5975 8.56954 +0.197493 1.07503 +3.99803 4.67019 +9.35123 9.60094 +1.46442 2.4256 +5.21501 5.79612 +8.80879 8.99085 +-0.109252 1.30631 +7.34965 7.87947 +7.08703 8.12723 +0.985946 2.14663 +0.48521 0.856118 +6.57719 6.70623 +8.71165 8.72286 +3.16883 4.8714 +-0.21189 0.412944 +3.6526 4.37121 +0.364649 1.3363 +9.27722 9.35135 +3.47517 3.8793 +5.67149 6.28631 +6.52789 6.61039 +9.36323 10.4189 +4.30743 6.18638 +7.93653 9.4877 +8.24024 8.41475 +2.75692 3.13935 +8.80223 9.1489 +3.42656 3.90557 +8.96598 9.3217 +1.99582 4.84803 +5.1178 5.8688 +4.47901 5.73433 +7.30397 7.85527 +0.18463 0.656832 +7.80806 8.41666 +8.50023 9.42628 +7.67563 8.64756 +9.46783 9.52169 +2.06797 3.3107 +5.08863 5.10167 +0.82146 1.39055 +7.5428 8.04736 +9.09407 10.8208 +9.15219 9.99706 +1.61637 3.46354 +5.3812 5.96247 +9.34115 9.73575 +6.49221 7.30031 +1.56337 3.39704 +8.463 8.60841 +-0.322779 0.658242 +8.50173 8.72125 +0.854851 1.83405 +7.81945 8.12841 +2.60724 3.19985 +5.03714 5.55331 +1.85041 3.36816 +7.26119 7.64364 +5.75223 5.99653 +4.00026 4.43863 +5.00939 6.03009 +6.22879 6.6638 +6.44231 7.18622 +1.66002 1.88587 +2.59781 2.84919 +4.96399 5.40545 +5.70327 6.95018 +6.97141 7.08346 +3.98535 4.6179 +5.96795 7.14997 +5.07581 5.8262 +4.65665 4.98851 +8.65646 8.70986 +3.04175 3.19155 +0.796073 1.0952 +8.24859 8.57828 +5.26952 6.34245 +7.94685 8.78542 +0.193963 0.968524 +6.61159 6.80186 +9.37533 9.79195 +8.94048 9.74959 +5.77272 6.48616 +6.0092 7.86718 +2.52621 2.58938 +8.91347 9.22421 +4.20466 5.45909 +4.82157 5.09167 +7.35464 7.36611 +5.12413 6.45063 +2.12404 2.81187 +8.88875 9.20752 +2.59731 3.20587 +1.54772 2.08968 +6.70449 7.08952 +-0.0967146 0.888521 +3.10207 4.34815 +1.20807 2.35497 +6.00753 6.08492 +3.21837 4.00446 +4.34095 6.0963 +4.24821 4.79576 +4.49523 6.6669 +1.49483 2.52552 +0.0411497 0.641526 +8.3854 9.20954 +8.12419 8.93702 +0.0201515 1.06914 +1.57617 3.44176 +1.4173 1.76847 +5.42261 6.51539 +6.6744 8.46109 +3.05234 3.59179 +6.49059 7.24618 +7.01989 7.69901 +2.34664 2.90601 +9.17324 9.86754 +5.50919 5.70258 +2.40486 4.6009 +3.74368 4.00093 +6.9211 7.33554 +7.41358 8.7413 +8.78284 9.62033 +2.96753 3.01602 +-0.200693 0.535532 +6.4383 6.45049 +8.28835 9.42148 +4.2379 5.35128 +4.68397 5.04593 +5.7185 7.03177 +5.37494 6.43977 +2.99518 4.08138 +7.28064 7.54638 +9.10622 10.4907 +1.23839 1.50915 +6.7823 9.24533 +8.45679 8.62427 +0.106718 0.69304 +2.84119 3.50375 +3.60466 4.51338 +8.04709 8.19023 +3.31632 3.48054 +5.9027 7.46331 +-0.621072 1.13003 +8.57167 8.69262 +0.301047 1.42246 +1.24229 2.44616 +0.962706 1.55754 +8.77327 9.55275 +1.77899 2.44335 +0.368575 1.84726 +9.05918 9.07832 +6.61723 7.68015 +8.59899 8.80383 +-0.133927 0.20271 +5.69266 5.74809 +0.68202 1.52342 +7.17359 7.91482 +5.74049 7.34297 +7.88371 7.9683 +1.58749 2.26543 +3.96728 4.45988 +5.4354 6.88336 +1.68706 1.6976 +6.56907 7.40696 +0.518151 0.724124 +8.99155 9.36995 +6.00506 7.91529 +5.26967 6.11536 +2.37416 2.50887 +8.47983 9.31509 +2.38155 2.54346 +8.08415 9.65214 +1.00693 3.19203 +1.6523 1.73553 +6.85283 6.9958 +4.11425 4.90193 +1.39597 1.58725 +5.05551 5.19458 +5.89969 6.11394 +5.9148 7.26824 +9.32271 9.93989 +1.62911 2.58215 +5.43399 6.14203 +3.11393 3.58792 +8.57619 9.3788 +2.23349 2.7884 +8.09022 8.54326 +9.7114 9.87076 +5.91086 6.10885 +7.35805 7.57276 +0.650002 0.879866 +3.24977 3.75531 +2.73948 3.41051 +3.08006 4.62772 +3.71868 4.31519 +4.13905 5.78577 +1.77297 3.02983 +5.85931 5.89333 +3.68972 3.93193 +1.43922 2.98425 +6.51534 8.33386 +6.6821 7.50874 +1.2541 2.11722 +5.40634 5.54411 +4.55502 4.60346 +4.32484 4.68497 +3.40711 4.31975 +9.20893 10.0853 +6.12594 6.9009 +0.12664 0.347193 +7.53378 8.82258 +7.79572 8.91645 +2.50098 3.39701 +4.17873 4.97732 +1.05822 2.47032 +3.1012 4.97736 +8.42126 8.74568 +7.83301 8.17843 +9.26618 10.584 +3.02667 3.7128 +8.30654 8.69242 +2.87173 3.43275 +6.59917 7.54843 +7.03447 8.20283 +5.75718 6.40637 +2.62899 4.1855 +-0.520148 0.902194 +5.1538 5.61763 +1.25625 2.33142 +4.16336 4.3384 +3.01296 3.41026 +3.16515 3.26305 +2.40944 3.21897 +6.80742 8.57141 +1.15125 1.54824 +8.72251 9.50878 +3.15703 4.04482 +0.470308 0.726093 +0.199979 0.878243 +7.8908 9.17915 +6.91793 7.16038 +4.64783 5.00217 +2.21237 3.03073 +1.5825 1.63362 +3.18806 5.20795 +5.92725 5.95595 +4.65027 5.09868 +6.42204 6.87201 +8.08637 9.40221 +4.95542 6.16185 +7.45987 7.57979 +8.826 9.13961 +4.42078 5.27977 +7.26216 8.97585 +2.26919 3.33512 +9.4077 9.81908 +0.722223 1.03378 +-0.0497795 1.19355 +8.22686 9.31082 +0.0733766 0.93037 +7.47883 7.9062 +5.28731 5.74181 +1.78496 3.61348 +0.690987 0.764344 +2.56442 3.54999 +4.27944 5.43124 +4.04412 5.35376 +0.663756 1.88268 +1.73567 1.78553 +8.07666 9.41842 +7.70138 8.42873 +9.27113 9.55873 +0.982413 2.5565 +0.994807 1.02007 +5.01226 5.31923 +8.87435 10.0597 +1.74836 3.22578 +0.151528 0.191719 +5.82608 6.06438 +1.17239 1.59955 +3.18515 4.11049 +1.92258 3.70604 +1.63692 1.8266 +1.83542 2.66228 +2.21954 3.11425 +3.97546 4.3928 +0.731374 2.05705 +5.44809 5.96359 +9.85934 10.0553 +8.42169 9.63654 +6.68148 8.43446 +2.00014 3.3485 +0.735924 1.73 +1.61833 3.05643 +7.87934 8.67316 +8.67441 10.0032 +0.794573 1.2493 +6.11926 6.41441 +5.2715 5.82597 +9.41854 9.46625 +3.46299 4.06742 +5.6487 5.79053 +1.46503 3.43496 +0.9957 1.53939 +2.4714 3.1301 +0.887049 1.6196 +3.04884 3.19662 +1.24337 2.05758 +7.61142 8.55766 +0.998279 1.64425 +4.74917 5.85236 +2.97632 3.94611 +4.11786 5.62709 +7.40498 7.62083 +1.47854 3.64736 +2.1176 2.64511 +4.55533 5.89436 +7.44618 9.79926 +-0.410242 0.737348 +5.719 6.30861 +8.33692 8.38222 +8.78122 9.98195 +3.75452 4.26866 +2.23771 2.44985 +6.72455 7.61362 +5.9797 6.58846 +6.72885 7.60315 +-0.710302 1.18332 +7.73287 9.383 +6.61213 7.67394 +4.12945 5.68527 +-0.300887 0.341615 +5.77978 6.41534 +8.34001 9.96874 +1.62323 1.8283 +1.71788 2.23905 +7.43484 8.0418 +3.47322 3.8047 +3.47311 3.51261 +7.82093 8.86377 +2.46973 2.99125 +7.91166 8.55065 +3.39807 3.43599 +8.94792 10.0437 +7.70859 8.32487 +5.86852 7.13103 +7.64996 9.19033 +6.66742 7.8092 +7.88241 8.58675 +9.42939 10.3479 diff --git a/geom_bottleneck/tests/data/test_012_B b/geom_bottleneck/tests/data/test_012_B new file mode 100644 index 0000000..5f6e43c --- /dev/null +++ b/geom_bottleneck/tests/data/test_012_B @@ -0,0 +1,5000 @@ +1.17434 1.46837 +2.58198 4.16589 +0.234041 0.968658 +1.52703 1.59579 +6.7103 7.44033 +3.19227 4.41539 +5.42556 5.57369 +3.45417 4.86089 +3.82256 4.1092 +7.82551 7.90784 +3.9384 4.71796 +5.60335 5.9054 +7.96663 9.8987 +6.30305 6.64853 +7.33246 10.5316 +0.623312 1.09008 +2.63041 2.64616 +5.36028 6.28956 +4.64202 5.91858 +7.55219 7.96304 +7.73736 9.18221 +1.67114 1.84851 +5.07514 5.12159 +7.03732 7.05228 +7.5006 7.59212 +0.244947 1.55875 +0.0170454 1.10485 +1.95394 3.53669 +5.66015 6.01949 +5.88211 7.64639 +7.46698 9.27085 +6.37429 7.10154 +4.54535 4.81932 +8.21203 9.35896 +4.89933 6.20802 +3.68683 4.17831 +0.477467 0.828394 +6.17871 6.77834 +9.77523 9.92676 +0.854808 2.38709 +7.93326 8.3553 +2.10917 2.27771 +4.07045 4.72793 +8.2016 8.8011 +2.9205 3.95746 +2.89806 4.39725 +5.5654 5.78669 +9.5219 9.98543 +7.08591 7.19588 +8.35359 9.57893 +9.81348 10.0345 +8.5994 9.71835 +5.43903 7.25234 +1.82768 2.92724 +4.44952 6.79754 +5.66747 7.34386 +5.88153 6.39253 +3.34008 4.22032 +2.46068 2.76051 +0.370778 2.61681 +6.02508 6.26809 +4.32654 4.93262 +7.41536 7.99616 +8.84229 9.87911 +3.8551 5.84353 +1.56832 2.34694 +6.96099 7.42028 +8.15753 8.72014 +9.23141 10.3815 +7.4484 7.80228 +0.473671 0.874895 +3.15689 3.50687 +3.58122 4.09945 +3.55022 3.74767 +4.42708 5.80211 +4.40956 4.68699 +3.80576 4.61856 +7.29965 8.28614 +7.40582 8.15308 +1.69789 1.77669 +1.66419 3.44308 +0.473997 0.872506 +7.83959 8.52898 +6.22416 6.36949 +-0.187159 0.871822 +0.232336 0.585965 +9.29905 9.44357 +1.4459 2.40589 +2.83008 3.19758 +1.15291 2.12112 +2.58686 3.33896 +6.79362 7.88068 +0.228178 1.48318 +5.60001 6.20258 +4.97803 7.10992 +1.70429 1.962 +2.72659 3.13886 +9.22714 9.25889 +3.84694 3.88778 +-0.282077 1.48155 +9.28756 9.58517 +4.34069 5.59751 +8.63909 8.76839 +8.86236 10.7642 +6.77597 8.41888 +7.30621 8.64164 +0.685607 1.22755 +2.91514 3.22638 +2.72098 3.66837 +8.17528 8.32638 +5.19632 5.7506 +7.34177 8.70639 +5.74082 6.35524 +5.95975 6.69284 +9.40187 10.4488 +2.92761 3.36735 +0.399531 3.13082 +4.83399 4.92635 +7.74539 8.56852 +1.76322 3.5086 +6.54479 6.72963 +7.64362 8.12404 +1.35542 1.45313 +0.214385 0.718085 +1.7006 3.21962 +5.91009 6.47862 +2.21093 2.34636 +5.96919 6.79365 +6.59951 8.22203 +1.54571 1.59397 +3.27012 3.79128 +0.32455 0.622995 +1.73926 2.78017 +9.81035 9.84077 +7.38441 7.85171 +8.90372 9.34186 +7.26323 8.41174 +5.7363 5.97348 +8.25473 10.1281 +2.3981 2.52096 +8.53783 9.63442 +8.51755 9.2735 +6.48614 6.773 +3.40182 3.65137 +2.1353 3.04852 +2.95397 3.73285 +6.98063 7.4963 +4.50189 5.26384 +0.21416 1.49363 +0.632196 1.36307 +6.57833 6.60481 +8.0634 9.33903 +2.79759 2.94462 +4.43747 4.58861 +6.48733 6.86569 +2.28008 3.47037 +6.87452 7.77431 +-0.156821 2.71557 +0.72595 1.78862 +1.97586 2.38196 +8.61839 9.1468 +4.55496 5.68986 +0.26923 1.15728 +9.63757 9.7236 +1.39497 1.96698 +4.8643 5.04172 +6.64675 7.66435 +2.56256 2.6015 +-0.381989 0.611211 +0.676336 1.26896 +8.95304 9.03243 +5.62058 6.07997 +3.36522 4.04276 +8.64868 10.5024 +4.75813 5.19834 +1.96608 2.05864 +9.01449 9.10397 +3.72786 4.51921 +5.6938 6.96584 +1.73499 2.9314 +2.73099 3.41409 +8.77171 9.07665 +4.63865 4.67649 +8.6698 9.30782 +-0.168259 2.09581 +9.29672 9.56 +0.372544 2.60567 +0.450487 1.32919 +6.95341 7.6399 +3.4403 5.24993 +5.53469 6.97831 +-0.79664 1.21306 +5.68831 6.14413 +8.85601 8.95444 +3.83309 5.211 +5.51573 6.5114 +3.64009 3.99648 +4.40759 4.99283 +1.85198 2.6457 +2.72645 3.74803 +2.04751 3.00998 +3.19365 3.9383 +8.09529 9.45596 +8.88173 9.5618 +0.609816 2.67806 +1.57288 2.60884 +1.68354 1.80124 +4.92058 5.9959 +1.48728 1.84885 +0.299669 0.413905 +9.02156 9.56731 +7.50854 8.49023 +0.667131 1.89987 +2.22472 2.58793 +5.84395 8.79426 +2.35839 2.66935 +3.43111 3.69982 +6.71023 7.36801 +6.75697 9.0991 +2.35352 2.85316 +6.73054 7.39006 +9.48673 10.1493 +6.71226 6.72805 +9.22083 9.71889 +8.36513 9.33921 +0.0652672 0.319993 +3.26467 4.60881 +7.62269 7.79878 +6.48608 6.69515 +6.21737 6.88645 +6.56094 6.9699 +1.61317 2.7167 +5.08621 6.29754 +2.24676 2.8076 +3.09943 3.93921 +9.74093 10.0968 +0.417699 1.6381 +9.2958 10.2973 +3.6663 4.1369 +0.0229943 0.448065 +9.2928 10.1833 +3.66334 4.22032 +0.812172 2.19952 +7.88025 8.71192 +8.69379 9.34922 +1.70691 2.95352 +8.28737 8.29985 +5.22491 5.354 +4.03526 4.14084 +6.49359 7.05924 +0.24853 1.44718 +7.86936 8.75135 +5.76 6.68919 +5.85437 6.14314 +5.86292 6.0516 +2.35692 2.91295 +0.0990674 1.29386 +2.9911 3.56188 +0.552671 0.638929 +5.80756 6.22761 +1.21067 1.77175 +4.51882 4.72936 +1.99969 2.89732 +3.65968 6.61987 +0.478582 1.33355 +0.259061 0.289813 +3.89264 5.02474 +0.349236 0.438003 +7.70442 8.1729 +7.90389 10.1876 +3.06898 3.15219 +4.77811 5.29095 +9.76561 9.89451 +4.14295 4.2489 +0.540224 2.28623 +9.60749 10.2284 +8.49555 9.00307 +7.89668 9.76886 +4.12631 4.70897 +7.87898 7.91814 +9.29858 9.52908 +9.24009 9.91544 +3.73498 4.70275 +5.44467 5.9274 +2.13453 4.85697 +2.29607 2.88771 +0.807842 1.82319 +0.319005 2.08473 +1.62 1.63649 +2.20431 3.23869 +2.00132 2.77136 +6.64752 6.71706 +8.12249 8.28379 +7.55541 7.7813 +3.51763 3.64484 +9.21075 10.2811 +2.24501 2.54426 +5.64566 6.46452 +6.72307 8.56698 +3.91728 4.60262 +4.02535 4.29548 +3.0499 3.53135 +1.30677 2.32194 +9.36908 9.90669 +3.92387 4.33848 +2.87312 3.08243 +4.49167 5.2749 +5.43143 6.74905 +6.94595 9.16539 +1.9784 2.00429 +9.42478 10.2226 +3.7185 3.96576 +9.37729 9.50574 +5.34283 6.89736 +4.95341 5.84626 +2.91654 4.28413 +8.26544 9.3076 +6.23114 7.20273 +1.02585 2.21446 +1.6718 2.29591 +2.28926 2.73452 +-0.648145 1.105 +1.44194 2.18562 +6.78584 8.37985 +2.00402 2.08248 +1.64076 2.04067 +0.0419044 0.455962 +5.51723 5.72098 +5.42117 6.81165 +5.70331 5.81707 +4.97889 5.60741 +3.38797 4.46846 +7.20995 7.66784 +3.45388 4.23386 +3.11057 4.35995 +3.29476 4.04676 +2.0519 2.94719 +5.37101 5.38271 +5.99383 6.64188 +7.48444 7.6377 +2.15043 3.05399 +1.54093 1.83799 +5.59223 5.87222 +5.8005 6.08042 +6.1208 7.22563 +1.2938 2.17454 +4.92405 5.0402 +6.91336 7.79688 +1.47978 1.99762 +9.00494 10.8315 +5.84805 6.15303 +4.95368 5.49096 +8.21704 8.31192 +0.715222 2.33517 +0.904183 2.54741 +3.42349 3.74906 +0.627978 2.37092 +8.41477 8.72651 +3.55373 5.58652 +4.12685 4.61533 +0.775274 1.41263 +4.78915 5.08639 +6.35791 8.15015 +2.88242 3.63509 +2.78526 3.07834 +0.39129 1.15933 +3.26615 4.74531 +8.78873 9.8888 +7.25612 7.45972 +4.97452 5.30012 +0.757255 1.35518 +1.29516 2.52446 +4.66838 4.96648 +-0.0720209 0.832726 +2.68276 3.21123 +8.44253 10.0311 +3.40809 4.70506 +1.09617 2.35452 +5.19302 6.73599 +1.25316 1.58101 +6.2056 7.10099 +7.7666 8.52777 +0.301239 1.37275 +0.522829 0.731575 +6.73869 6.96826 +2.41703 3.20567 +4.94617 6.22052 +5.41524 7.68272 +6.0408 6.29938 +0.0642067 0.600878 +6.32122 6.63505 +3.25427 4.70611 +5.88704 6.1678 +8.71533 9.08476 +6.25575 6.88392 +1.54462 1.56366 +3.95938 4.03326 +2.54671 3.66798 +8.48603 9.10156 +3.37369 4.65454 +5.25469 5.64636 +7.02624 7.36449 +8.17061 8.44321 +9.23147 10.1149 +1.45589 2.25886 +6.47702 8.25307 +7.69088 7.91753 +0.442832 0.616926 +8.35355 8.83222 +7.65142 9.58906 +4.04877 5.17345 +0.76012 1.8686 +6.54877 7.40058 +7.41774 7.65429 +8.69655 9.3325 +4.8302 6.25306 +1.77203 1.90284 +3.67485 4.94569 +6.60162 6.72031 +3.05924 3.35235 +0.0823162 1.3486 +8.42991 8.86331 +6.81596 6.83527 +-0.0174808 1.6745 +-0.758131 1.08928 +4.14423 5.46342 +9.26253 9.85714 +7.42749 8.58214 +4.88849 5.86936 +8.99339 9.38141 +8.85301 9.18285 +2.64303 3.45658 +7.1133 8.66473 +3.50745 3.8629 +7.81615 7.83244 +2.94991 3.8741 +7.91822 8.8362 +-0.0553088 1.19059 +7.35558 7.77948 +2.11257 2.20563 +8.57533 9.16338 +2.3515 3.13009 +4.13239 5.38696 +2.20763 2.93941 +7.2451 7.3211 +0.834388 1.57413 +4.47024 6.17855 +4.75947 6.80913 +2.99607 3.54732 +8.15998 8.80718 +8.94688 9.27971 +4.46335 4.9522 +5.30725 5.69786 +7.63989 7.86974 +6.69589 7.69565 +5.34018 6.08115 +8.59515 9.62264 +1.80557 3.22507 +8.62429 8.94242 +1.34532 1.95042 +8.60707 8.80741 +8.03275 9.40327 +4.30357 4.39095 +8.97954 10.7076 +2.18143 3.51825 +3.98695 5.62062 +2.48813 2.60622 +5.56957 6.43776 +5.18249 5.55459 +3.45373 3.64101 +-0.00345662 0.570597 +3.61127 4.69761 +9.37858 10.6205 +7.24635 8.19639 +4.70142 4.80735 +3.30055 5.14257 +0.860415 1.31635 +4.72924 5.46893 +7.47391 7.72644 +6.22287 6.57754 +0.181652 1.01366 +2.14494 2.80736 +2.16406 3.19383 +8.52991 9.22722 +8.74411 9.06935 +0.575831 1.02699 +2.47315 3.0331 +4.2872 4.59813 +5.82293 7.03604 +2.08982 2.25319 +7.3626 8.41994 +1.23867 3.10885 +7.397 7.78026 +6.78837 7.32977 +0.829368 1.56617 +9.23075 9.35172 +6.76562 7.23578 +0.42851 0.839401 +4.83626 5.5852 +0.150032 2.45322 +2.16811 2.47439 +5.60245 5.81188 +7.43707 7.46519 +0.167317 1.44642 +4.9732 7.58343 +8.67391 10.2957 +0.318592 0.639284 +3.365 4.25929 +7.83683 8.88895 +5.20557 5.30114 +0.940347 1.74022 +5.39149 7.13464 +1.10826 1.27913 +1.9147 2.31276 +0.935283 2.49181 +3.67898 4.33336 +5.10125 6.07734 +0.348807 0.839242 +0.310986 0.58381 +2.03594 2.43119 +5.49755 5.94215 +1.94885 3.34409 +9.66806 9.97883 +4.79099 5.45155 +4.81158 5.30001 +5.17667 5.90019 +9.64168 9.99177 +1.14899 1.22792 +0.466236 0.952985 +6.93679 7.72282 +2.97285 3.23931 +9.22517 9.24315 +7.25783 7.46414 +4.37304 4.51815 +4.01069 4.02979 +0.843132 1.80443 +4.78572 6.04237 +6.02471 6.38074 +4.99536 7.76852 +4.97442 5.17384 +0.731231 1.49497 +2.2797 2.90845 +9.13211 10.341 +4.19545 5.08597 +6.13127 7.09817 +2.65124 5.02208 +5.40235 7.12912 +6.86258 6.91991 +8.24317 8.55273 +7.6877 7.69875 +3.33922 3.53776 +0.089484 0.40755 +1.34909 1.68726 +8.43113 8.72899 +4.90038 5.55994 +0.308089 0.490555 +5.42628 7.1433 +2.11647 2.56987 +3.56934 4.1619 +8.35794 9.24416 +8.8645 9.69151 +5.10701 6.0036 +7.66385 7.8412 +2.89952 4.55221 +6.01533 6.38269 +-0.945182 1.07304 +1.79537 1.85576 +-0.0313338 0.501067 +8.85689 8.87522 +1.61143 1.7773 +9.53229 9.84943 +3.51669 3.81091 +-0.448016 1.10903 +3.16889 3.439 +4.30534 4.36372 +6.20158 8.09618 +2.20949 5.23616 +3.29459 4.17079 +3.90101 4.05611 +5.89688 6.85702 +0.734474 1.04471 +7.84341 8.02702 +8.69431 10.1086 +9.73194 9.92195 +7.63516 7.70631 +8.51416 9.33072 +-0.0712911 0.361001 +2.76979 3.22708 +5.34404 7.5165 +5.64429 5.79865 +0.0755012 0.363483 +5.05631 7.27153 +-0.60164 1.09659 +0.457228 0.876186 +4.27092 5.38033 +8.63891 9.04134 +6.29608 7.04242 +8.97795 9.93013 +5.00385 5.57737 +8.48068 9.44885 +7.35543 7.78492 +3.55698 4.01035 +-0.268117 0.649128 +0.633184 0.66254 +4.54216 4.81132 +6.15574 6.35276 +4.3663 6.36286 +1.45231 2.07039 +7.37031 7.9157 +5.30961 6.3506 +5.80757 5.81762 +4.91767 4.97519 +3.45667 3.60965 +1.7934 2.3807 +4.33289 5.41047 +1.16021 1.29979 +3.75172 4.53521 +3.10835 3.1275 +2.68167 3.00314 +4.10639 4.24094 +4.90776 5.74069 +7.30861 7.86666 +3.52822 3.70998 +5.22222 5.28033 +0.00866476 0.326377 +7.73247 8.61481 +4.25231 4.77499 +8.41148 8.54604 +2.95389 3.63497 +7.76126 9.69124 +6.41218 6.69682 +4.86285 6.44503 +1.84783 1.9065 +4.08788 4.11706 +9.17473 9.50133 +5.15091 5.78649 +1.27694 3.33579 +2.92648 3.37855 +9.37392 10.5123 +4.81878 6.34991 +8.38702 8.83716 +5.07771 6.33618 +1.47438 1.75588 +6.20935 7.11166 +1.08286 1.38 +1.40048 2.0157 +6.60355 7.26234 +5.28396 5.90003 +8.9525 9.59216 +-0.0305792 0.544664 +-0.571491 0.735471 +6.287 7.03679 +5.35225 5.4104 +0.095812 0.605976 +4.33523 4.4048 +6.13288 6.80949 +4.14654 5.5505 +-0.213214 0.260592 +7.56188 7.83088 +7.8132 8.65963 +8.02469 9.3254 +0.00641711 0.420562 +7.49269 8.15849 +9.26359 9.4366 +5.74008 7.86317 +8.62729 9.78825 +4.28946 6.20553 +3.19174 4.54991 +4.16992 4.25203 +2.46138 4.11583 +1.92971 2.16701 +3.43028 3.80842 +6.98297 7.28388 +7.51884 7.55947 +7.79102 9.44326 +0.416342 1.32311 +9.35398 9.85201 +8.72997 9.10384 +6.23398 6.88888 +7.46984 7.4875 +5.92603 6.66938 +1.77761 2.58697 +0.835966 2.06139 +9.63284 10.3565 +6.13677 6.42768 +0.151375 0.382404 +8.10315 8.13441 +5.52283 6.28113 +1.00873 2.44226 +2.5239 3.89871 +5.40599 6.72653 +3.43407 4.0068 +1.22444 1.26601 +7.04395 7.80599 +3.75987 3.77123 +6.43597 7.06249 +8.34435 8.87418 +8.25853 9.04009 +0.415321 2.32725 +0.639046 1.75525 +7.83226 8.12538 +9.55429 10.2734 +3.658 4.35867 +1.8588 3.93292 +7.38922 8.16823 +8.53626 9.23024 +0.848152 1.13412 +6.31667 7.2348 +3.81584 4.62621 +9.24748 10.7408 +2.75953 2.95288 +5.70188 6.62278 +4.22202 4.45368 +3.24616 3.88779 +1.05053 2.09846 +8.67718 9.52693 +2.14107 2.71959 +1.10518 2.69689 +5.01476 5.54139 +4.69244 5.20358 +8.88285 9.93012 +2.55228 2.77382 +6.72118 7.50057 +7.58999 8.71573 +1.83763 2.13481 +4.86135 5.27995 +4.39794 5.42117 +1.42512 2.98262 +4.80489 5.34701 +2.7993 5.13702 +7.52122 8.41729 +9.08613 9.37543 +1.1555 1.3935 +7.34071 8.0428 +8.33361 8.40349 +2.514 2.54741 +8.25732 8.41758 +1.65337 2.57964 +4.20527 5.06565 +0.723443 1.06987 +5.85836 6.64701 +7.908 8.07591 +5.01839 7.0105 +3.15908 5.10364 +4.3574 6.67192 +2.06662 2.46437 +7.5595 8.9108 +7.94919 9.20231 +4.11889 5.49714 +7.28151 7.51881 +1.30685 2.09479 +3.08479 4.47364 +4.50916 5.91511 +7.31605 7.63868 +3.14469 4.07035 +8.38431 8.87993 +7.42277 7.64967 +4.22472 4.26323 +8.49871 8.90746 +7.44431 8.09014 +8.35213 8.7504 +3.85634 4.37584 +9.12975 9.77042 +-0.326056 1.17374 +3.53802 4.06211 +6.81775 6.8467 +8.19106 8.64489 +4.20526 5.37727 +2.74081 3.72143 +0.49642 1.10775 +7.76606 8.00524 +4.79825 6.38926 +1.99478 3.20484 +4.69853 6.29508 +5.73058 7.18643 +8.11708 8.64257 +9.62375 9.84838 +5.95271 6.38989 +9.0193 9.93848 +3.91188 4.10834 +6.065 6.60546 +2.62354 3.60072 +8.53665 9.06824 +6.40691 7.44693 +1.62959 2.5825 +9.4128 9.87031 +6.24697 6.62684 +3.31136 3.45626 +4.80347 4.9935 +9.21711 9.53416 +-0.491547 1.72886 +4.75174 4.87217 +0.86329 1.53331 +2.4586 4.2578 +5.10301 6.2815 +5.08302 5.86788 +6.12434 6.78948 +9.68323 10.0973 +3.52576 4.40424 +4.9925 6.89084 +0.846638 1.80782 +1.09709 1.7685 +8.38592 9.03312 +9.56243 10.2682 +5.03592 6.6429 +7.8609 8.04599 +1.21404 1.31975 +7.47824 9.2063 +1.47849 2.68795 +1.2909 2.06381 +5.21288 5.54616 +6.27218 6.99345 +4.77622 5.08494 +3.30665 4.14735 +3.38947 3.55545 +7.71197 8.53162 +1.10565 1.50806 +0.7889 0.984689 +2.88598 3.33244 +5.70958 5.81232 +5.16567 6.24511 +6.91255 7.25784 +-0.401084 0.753156 +4.81138 6.20671 +1.67301 3.58501 +7.19478 8.25624 +1.24428 2.2523 +4.31631 5.33357 +0.589196 1.02017 +5.69207 6.97803 +2.3854 3.25501 +4.1362 4.91135 +8.9932 10.3184 +7.95871 8.45158 +4.03213 5.26347 +3.09506 4.06425 +-0.0310321 0.738171 +7.35733 7.61512 +2.48488 2.96253 +4.72098 5.69867 +5.5395 5.96914 +3.17854 4.283 +6.50012 7.33744 +1.93266 3.00941 +1.49319 2.71826 +9.0187 9.13099 +7.15259 7.40691 +8.71939 8.93257 +1.57203 3.11249 +0.933429 2.16903 +2.99663 3.71667 +2.06144 2.81311 +7.9072 8.2103 +0.490069 0.614737 +7.84111 9.70812 +1.15363 1.6421 +1.15475 1.43307 +8.2228 9.92116 +7.76825 8.40724 +6.15122 7.31322 +7.1427 7.49294 +2.30516 2.7019 +2.03336 4.03387 +8.3918 9.85707 +8.57214 9.59345 +3.8057 4.1119 +8.9223 9.38556 +9.32051 9.60504 +7.13349 7.69154 +1.71855 2.00425 +5.10333 6.0605 +-0.149137 0.80973 +0.466224 3.1698 +4.19165 4.29604 +1.64018 2.3161 +9.40397 9.89211 +5.21738 7.06323 +0.525526 1.0331 +8.06992 8.08704 +9.81539 10.0915 +9.33514 9.50521 +5.95494 6.54519 +9.21466 9.35909 +4.96603 5.18164 +3.89238 5.53056 +5.04546 6.32916 +8.63758 8.65805 +7.03226 7.57074 +0.32029 1.10893 +0.194176 0.992252 +8.79061 9.50848 +0.239137 0.300717 +7.7234 8.43747 +3.43679 4.28954 +8.31382 9.18928 +1.39612 1.67253 +6.95733 7.39846 +1.29129 2.12185 +7.93611 10.2305 +3.67764 4.17562 +1.38149 2.42407 +2.2847 2.48412 +9.28655 10.0661 +2.94115 3.21326 +7.04238 7.91536 +5.06012 5.61526 +8.95611 9.91736 +2.18524 3.44007 +1.0692 1.10987 +4.37019 5.18443 +5.82014 6.441 +1.68642 1.70458 +4.93783 4.9535 +9.42003 10.1196 +-0.356795 1.30987 +1.37778 2.80527 +9.54126 10.1758 +8.67413 10.5984 +0.914291 2.0697 +6.08696 7.09832 +2.82202 3.31103 +4.07818 5.50195 +2.85223 3.67449 +6.03006 7.10863 +8.84655 10.528 +5.08031 6.2001 +1.00272 2.74191 +0.169102 0.223253 +0.025089 1.26534 +-0.203339 0.64667 +0.899666 1.48885 +0.74235 1.49976 +6.28212 6.80412 +5.65159 5.93106 +2.1686 2.7445 +5.02936 5.43091 +8.07124 8.80499 +8.65696 8.95802 +7.68394 8.365 +8.65062 8.69146 +0.058248 1.19535 +5.74545 5.84057 +6.05244 6.52152 +9.3878 10.3328 +7.71379 8.88044 +3.32961 4.54105 +8.51987 8.62854 +4.10821 4.16902 +9.47639 9.78723 +4.72417 4.84793 +2.32867 2.94068 +9.52275 9.57815 +5.32867 6.96127 +4.32462 5.1508 +4.46919 6.45961 +8.62661 10.9533 +0.0244049 0.56156 +1.49207 1.73164 +7.03156 7.81168 +5.88587 5.89732 +8.43632 9.65085 +7.52612 8.06726 +4.82464 5.6193 +3.8062 3.90356 +2.42708 2.51646 +2.06458 2.45877 +0.427218 2.24283 +7.42616 8.11513 +0.617708 1.01833 +8.74218 9.03592 +-0.213346 0.599112 +9.05291 9.59124 +5.20365 5.54277 +2.85289 3.99509 +3.08468 4.58456 +0.136826 0.685254 +3.87191 3.99021 +0.970836 1.49673 +2.44355 2.53584 +8.88615 9.94545 +3.90591 4.52798 +1.52518 2.50658 +7.21268 9.07745 +0.767314 1.23833 +8.62975 9.42367 +6.71524 7.67686 +7.61205 8.48292 +5.312 5.65087 +4.75627 5.96261 +7.90674 8.0753 +7.37887 7.71478 +3.74483 5.52984 +2.7187 2.85544 +4.7902 5.62159 +2.89671 5.19815 +7.37268 8.72506 +7.11916 8.28301 +9.19814 9.75279 +1.2085 2.60113 +-0.632009 0.889734 +7.99858 8.39743 +6.48346 7.10822 +6.30616 7.06648 +5.56514 6.51183 +2.41505 3.56224 +6.83749 8.84447 +9.05111 9.46906 +7.77476 8.4091 +6.11378 6.31232 +4.42882 5.69917 +5.88107 8.052 +3.75437 4.08893 +2.70487 2.77664 +7.26028 9.77257 +1.44621 2.73267 +2.0384 2.60397 +2.95402 3.68949 +6.04766 6.4054 +0.716046 1.77698 +1.5084 1.72988 +2.58426 2.80376 +8.05255 8.59793 +6.06336 6.20709 +3.29813 4.31473 +2.53477 4.92554 +8.78711 9.88634 +9.26627 9.82082 +6.70683 6.81257 +8.25978 8.99788 +7.28054 7.64237 +5.14556 5.20711 +4.20431 5.87866 +8.96592 9.97597 +4.06216 4.41519 +8.49174 11.0491 +5.24547 6.03094 +4.65885 5.95835 +5.09606 6.34846 +6.30463 6.65933 +6.48022 9.56168 +1.38088 2.98143 +0.486911 1.16767 +8.16327 9.34821 +0.768885 0.782616 +4.51699 6.08086 +9.55086 9.70242 +2.86802 3.72489 +1.88496 2.18749 +4.31876 4.33726 +8.38871 9.45631 +8.80634 9.36198 +5.232 6.42399 +9.86919 10.0492 +3.61902 4.53086 +3.13118 4.42364 +2.69395 3.1816 +-0.303144 1.32309 +4.28871 4.36739 +3.8631 4.08745 +4.9291 4.98968 +7.14273 7.25505 +2.56623 2.59122 +6.01753 7.72265 +6.76051 7.53954 +6.76933 8.14741 +0.933137 1.83537 +7.9357 8.57904 +5.55847 5.59984 +4.25563 4.3345 +4.28087 5.21348 +8.88534 9.06554 +1.88575 2.94002 +5.26613 6.04562 +0.514249 1.45538 +0.130644 0.501645 +4.30564 4.86337 +1.57246 2.38451 +0.303814 1.77474 +4.22675 5.02783 +6.75381 6.78634 +5.64096 5.9725 +6.76159 6.98142 +2.35569 2.39119 +3.29794 4.95962 +6.55055 7.03366 +5.31474 5.69404 +9.01335 9.16988 +8.58306 9.37831 +7.06522 7.07778 +1.14695 1.74744 +3.15507 3.22865 +5.5925 7.14168 +2.14679 3.68767 +7.54789 9.71878 +1.5667 2.08742 +-0.604726 1.66718 +0.306012 0.54799 +2.61731 5.08257 +0.80957 1.74655 +8.22035 8.81637 +4.401 5.449 +8.89389 9.01988 +4.80574 4.9322 +2.19895 2.88565 +9.06688 10.8095 +1.23727 1.58699 +7.14836 7.92057 +4.65155 6.15149 +0.563061 2.16535 +7.66764 8.0341 +8.32324 8.42774 +4.54541 5.11069 +8.0237 8.09992 +7.26113 8.09404 +2.55196 3.20317 +8.1236 8.60951 +1.90437 3.23006 +0.888133 2.50365 +1.13618 1.69444 +2.60463 3.01696 +7.2311 7.73229 +5.06501 6.01487 +3.9893 4.10116 +1.45278 1.56937 +2.74601 3.80778 +9.40705 10.3843 +3.02533 3.52213 +8.7097 9.2268 +8.73145 10.5552 +2.56059 3.5742 +6.27328 7.57089 +3.23291 3.30811 +6.33804 7.20304 +7.63648 8.34564 +9.82053 9.93597 +3.14924 4.58629 +5.28253 6.33733 +1.99411 2.04104 +0.305593 0.420302 +5.39668 6.64188 +7.99992 9.37823 +5.25169 5.65987 +0.109291 0.875734 +3.08589 5.50296 +6.51358 6.62588 +5.34687 5.58204 +0.043587 0.932787 +-0.0264143 0.28677 +8.09722 8.37087 +5.46612 6.30285 +2.89146 3.49892 +6.73278 7.11762 +5.03068 5.90176 +1.7459 2.87727 +0.207707 0.448933 +7.00453 7.63105 +6.02789 7.87991 +8.1917 8.95854 +7.49014 8.73215 +8.48402 9.22063 +1.0467 2.4687 +0.241901 1.38802 +2.65867 2.81258 +5.46725 6.59448 +3.40578 3.75607 +4.2495 4.26392 +5.6608 6.213 +2.99705 3.88852 +6.17231 6.72018 +-0.17415 0.492739 +4.89596 6.49895 +4.68876 6.60218 +-0.0510568 1.46013 +8.87099 9.28179 +3.98894 4.5838 +-0.20015 1.59214 +8.80756 9.51828 +7.74921 8.53538 +-0.380041 0.440574 +2.69409 3.91466 +2.42747 4.56745 +6.25881 7.75647 +7.2941 7.77193 +2.60806 2.90251 +0.325028 1.22219 +8.29921 9.01416 +3.85524 5.45451 +5.2612 5.71877 +2.92849 3.73937 +8.6242 8.70808 +7.28153 7.35797 +1.65378 2.87917 +3.46034 4.24143 +3.99989 4.3199 +1.15266 3.60328 +4.8464 6.4887 +4.67021 4.68421 +6.96861 7.31554 +0.00723008 0.817047 +7.59589 8.88352 +5.56725 6.08465 +9.02409 9.19527 +5.81681 6.74193 +1.98221 2.98678 +8.76392 10.7646 +4.3903 4.50531 +1.0186 2.01838 +2.66674 2.74505 +2.41105 3.44579 +8.98295 9.18995 +8.14385 8.98779 +2.69613 3.60144 +0.445704 1.51319 +-0.634889 0.860409 +6.32737 7.10112 +7.88824 8.06838 +3.76271 4.43529 +7.66487 9.30221 +8.73974 9.59191 +3.08965 3.43006 +8.9518 9.96154 +0.727194 1.55228 +6.35214 7.12234 +2.71987 3.22996 +7.12786 7.4379 +-0.346107 0.837469 +8.47103 9.05987 +9.15744 10.628 +8.3237 10.093 +1.15052 1.16223 +6.95959 7.35423 +7.69488 8.44145 +4.21694 5.65913 +3.10562 3.37534 +9.73437 9.78252 +5.0458 5.53479 +7.80485 8.5163 +2.0442 3.75748 +-0.459177 0.498702 +7.38032 8.32195 +0.909659 2.11175 +7.08657 7.56877 +1.84997 3.10206 +4.2517 4.53819 +6.71655 7.04117 +1.06604 1.29153 +2.69273 3.31633 +2.19732 2.84826 +-0.723032 0.774865 +-0.289734 1.44645 +5.87194 7.71917 +1.01576 2.83685 +0.981927 0.998558 +3.07172 3.73201 +-0.112577 1.12642 +3.54063 3.67007 +7.21571 8.53815 +0.109957 0.839052 +6.86046 7.17211 +9.40878 9.69478 +0.989391 1.69046 +8.22287 8.8147 +1.48203 2.83308 +5.86418 8.0993 +0.749797 1.09852 +1.82996 2.50847 +0.28178 0.496017 +2.60694 3.00872 +8.6254 10.1698 +6.11641 6.41537 +7.19529 7.21342 +1.8214 2.17517 +0.991201 1.3788 +2.84924 3.12362 +5.75821 7.13843 +6.7106 7.35932 +6.6055 6.6829 +7.97105 8.58613 +1.56087 1.95845 +6.36782 7.10926 +2.43382 2.74699 +7.40509 8.8029 +8.42459 8.63142 +6.26128 7.55043 +4.6465 5.4431 +2.93214 3.29517 +0.157602 0.545214 +6.05931 6.72188 +1.7908 3.11731 +2.39217 3.58736 +7.07421 7.43852 +8.13419 9.74991 +9.53094 9.65319 +2.35726 3.68679 +-0.108561 0.874853 +6.87136 8.84157 +3.40803 4.58835 +7.50448 7.89932 +4.29762 5.53867 +0.863755 2.30032 +7.24847 7.95342 +2.89618 2.98849 +-0.928261 1.61922 +0.974105 2.91262 +6.99271 7.25856 +3.60995 5.01832 +1.26865 1.79704 +9.62217 9.80719 +1.02656 1.35514 +7.16502 7.32934 +3.12092 3.28857 +2.81374 3.84317 +8.73626 10.7585 +3.36982 3.61446 +5.08437 5.78949 +2.90218 3.0862 +9.2309 10.2523 +5.0967 5.48926 +9.73088 9.92708 +1.54013 2.78301 +6.73707 10.0789 +6.41735 6.838 +2.57935 3.04287 +5.719 6.70352 +5.42474 5.62732 +4.23904 4.69787 +4.16528 4.28736 +7.73477 8.84143 +4.90346 5.87324 +5.1969 6.14087 +3.48793 4.14182 +0.648493 1.07987 +6.88101 6.97932 +7.67342 8.74418 +5.16759 6.3871 +9.16292 9.49569 +8.77422 10.4817 +-0.358149 1.04178 +9.54616 10.3424 +3.12027 4.26504 +3.81223 4.73004 +1.2386 3.32247 +8.21963 8.42629 +9.10312 9.51016 +6.96107 7.43045 +2.98587 3.12365 +0.198165 0.211424 +5.19716 6.10856 +6.10553 6.3327 +3.98176 5.11099 +1.02512 1.04242 +4.27949 5.71947 +-0.457956 0.538807 +7.99877 9.48581 +5.88782 7.73303 +1.21496 2.85825 +8.46962 8.7862 +9.50182 10.1527 +5.85223 7.76234 +2.48368 2.52439 +2.35426 2.77405 +0.397056 0.482679 +0.160423 1.15786 +4.47109 4.8633 +4.74523 5.84196 +5.39177 5.75218 +9.00754 10.3249 +3.74813 4.03273 +3.08633 4.08426 +4.62672 5.29012 +1.92055 3.01442 +3.79279 4.5603 +9.52431 9.68334 +2.8126 3.32592 +-0.313688 0.490785 +9.06695 9.36835 +2.60321 4.14185 +4.40231 4.99535 +9.32205 10.1041 +5.3879 5.44349 +0.308728 1.0956 +9.05758 9.08283 +1.90313 2.50914 +7.1391 7.59459 +7.47357 7.95993 +1.25267 2.34827 +3.33222 4.36522 +8.78126 9.38611 +0.635979 1.62283 +8.3492 8.57545 +-0.572557 1.60517 +8.28855 9.03937 +3.47934 3.90271 +4.64498 5.43501 +0.872177 2.62011 +7.3893 7.58876 +2.14063 2.88063 +1.69361 1.75261 +4.19727 4.86483 +0.814676 1.27639 +8.19899 8.58203 +8.3394 8.99896 +9.31768 10.1694 +4.99218 5.19949 +4.2459 4.75266 +9.6314 9.64249 +4.038 4.75708 +7.92398 8.8579 +4.30747 4.54161 +7.51776 7.78258 +3.77611 5.1385 +3.53275 3.90278 +1.78619 2.12474 +3.18736 3.55159 +8.36759 8.52587 +5.52526 5.7843 +7.64174 8.09773 +4.37925 5.85699 +3.94295 5.31298 +-0.464623 0.795523 +7.02408 7.7048 +0.0690458 1.0008 +1.05445 1.32797 +0.126093 0.712612 +-0.809973 1.33869 +3.45568 3.96532 +0.433875 1.78679 +8.94667 9.65034 +1.98575 2.76936 +6.47974 7.67912 +2.74186 3.34153 +7.82655 9.32112 +4.71441 6.14932 +0.741177 1.76987 +8.05021 8.23239 +0.818503 0.882959 +7.13341 7.43399 +8.45939 8.93395 +4.44558 5.70161 +3.05657 3.86962 +8.75469 8.85537 +1.0922 2.23475 +6.00278 7.51598 +0.0530968 0.582206 +4.01788 5.48223 +1.30808 2.81869 +8.18848 8.59771 +2.43691 2.80685 +8.54045 10.6178 +7.58523 7.91634 +6.70183 7.49962 +5.81501 7.29783 +0.661853 1.58021 +6.50997 7.20411 +0.334292 1.40252 +-0.329585 0.742961 +2.38756 2.48935 +2.78114 3.58788 +7.97227 8.55379 +3.36753 4.57472 +5.14486 5.31457 +3.99691 5.47708 +6.36404 6.8741 +3.22519 4.63321 +1.80583 2.21824 +8.20747 9.42947 +5.90819 6.94368 +6.58559 6.85933 +2.99108 4.03832 +7.20963 9.6252 +3.10244 3.87265 +7.23018 7.91389 +7.18084 9.61063 +6.74145 6.86507 +8.40721 9.5751 +7.12352 9.45614 +2.06653 2.51786 +4.9155 5.04183 +1.34304 2.92777 +0.571315 1.17285 +8.05396 8.28214 +5.29142 6.24974 +8.93797 9.23051 +4.6108 5.45568 +6.46124 7.53124 +3.16695 4.37505 +2.76803 2.82764 +4.1531 4.84927 +8.19433 9.00383 +5.12114 6.22952 +2.2542 4.74849 +0.621192 0.871537 +1.37403 2.28895 +0.305704 1.3287 +8.70471 9.53085 +2.29164 3.56607 +2.42106 3.37382 +1.14309 2.03085 +9.17624 10.3281 +1.88864 2.70161 +0.932647 1.2473 +5.72385 6.55694 +5.25496 5.38675 +5.85771 6.69626 +7.37247 7.93094 +7.73499 7.98782 +4.91417 5.27506 +3.51127 3.84403 +6.96198 7.27686 +6.51176 7.74735 +4.19954 5.08222 +1.58115 1.83842 +2.11889 2.3408 +1.94427 2.00422 +5.59977 6.86555 +9.46942 10.3491 +9.18904 10.1988 +1.71938 3.01547 +4.3515 5.4951 +2.53792 5.85188 +0.3884 1.36228 +5.02469 5.62368 +6.82402 7.72203 +-0.320478 0.821539 +0.0885656 0.248783 +3.01725 3.44385 +6.63776 7.74386 +6.57899 7.9332 +4.82656 5.18327 +3.91909 4.43955 +0.0708319 0.101395 +2.59796 4.22775 +-0.433109 1.26978 +-0.434274 0.624336 +3.22018 4.25282 +4.63351 4.776 +8.889 9.56332 +5.35952 5.46531 +8.73832 9.22756 +2.03432 2.34194 +0.477994 1.43353 +1.2029 2.86844 +5.09945 5.76855 +8.89076 9.01771 +5.30284 6.31732 +1.56375 3.17543 +5.4773 6.36897 +5.30934 5.35073 +7.20096 7.7075 +6.51046 7.12888 +9.37127 10.0531 +-0.0484323 0.348687 +1.83241 2.2143 +8.28633 8.60462 +2.51014 3.65817 +3.27798 3.58685 +1.41567 2.23302 +7.50794 8.10378 +-0.0579575 2.10373 +-0.856005 0.96621 +2.96238 3.48434 +1.36304 1.90594 +2.9997 3.41214 +7.2763 8.087 +1.69207 2.74419 +5.41625 5.83917 +9.22139 9.53794 +1.17477 1.51576 +6.74597 7.90871 +0.678913 1.73759 +5.70863 5.7214 +8.88411 8.93377 +3.44409 4.54586 +0.958963 1.53878 +8.29904 9.3867 +2.52433 3.60238 +8.16257 8.21986 +2.11395 4.23455 +6.85451 7.40364 +0.20286 0.639736 +2.05848 2.49034 +0.547013 0.77336 +7.83609 8.11903 +2.16539 2.29286 +3.94232 4.31368 +8.53475 8.54519 +4.77462 6.4158 +4.08395 4.68214 +1.56902 2.23811 +1.61337 3.11768 +1.51181 1.65521 +0.0821202 2.09269 +4.77622 5.16243 +4.62148 5.75837 +0.613158 0.952696 +1.89128 3.04792 +7.57509 8.92834 +2.70465 4.2941 +4.95906 5.12442 +8.0927 8.17277 +0.796512 1.3215 +5.74134 6.45291 +9.68479 9.78978 +5.89261 6.2292 +6.11377 7.9339 +2.20571 2.67129 +3.46228 4.27058 +5.26723 6.2653 +4.04391 4.26562 +0.380382 0.818995 +7.58108 7.7618 +5.02375 6.13042 +4.20178 4.66297 +2.83039 3.0221 +2.36072 2.45545 +6.68854 9.20726 +2.91388 3.42464 +9.33373 9.73449 +7.75844 7.94625 +2.72414 2.89669 +6.65438 7.96623 +1.00647 1.05385 +2.63018 4.9432 +0.152187 1.60259 +8.86332 10.3631 +2.31523 2.6815 +8.00509 8.61794 +1.69711 1.75938 +8.65442 8.73697 +4.23917 4.32001 +9.66851 10.1925 +6.93943 7.49814 +8.51986 9.03561 +2.10317 2.5175 +0.539549 1.75683 +6.29423 7.93236 +8.64345 9.54556 +1.44069 1.6814 +9.10017 9.77088 +6.16731 7.40496 +0.570043 1.93192 +2.65761 3.88544 +1.46895 1.52688 +-0.369067 0.540647 +2.04868 2.72065 +2.1286 2.27858 +5.90157 6.16431 +1.55581 2.51851 +3.29705 3.81635 +3.4137 4.10991 +8.48699 10.1364 +8.43437 9.4642 +-0.037842 1.47589 +0.541735 1.7805 +0.499576 2.36065 +4.1415 4.72435 +4.77598 6.16872 +3.30388 3.61854 +6.43796 7.85966 +5.27157 5.70871 +0.919258 2.18653 +4.00961 4.07902 +3.78201 4.23596 +4.50464 4.791 +3.70253 5.30916 +8.59228 8.70036 +4.31103 5.69049 +5.31775 5.34378 +2.24198 2.64194 +6.66937 7.41675 +7.21753 8.42057 +4.35399 4.52398 +6.90698 7.30084 +3.44296 5.44378 +3.36719 4.89951 +3.38624 5.33856 +3.44877 3.53693 +5.81398 6.3016 +7.24655 7.33127 +3.86142 4.53134 +3.85894 6.88112 +6.45704 6.95699 +6.90997 8.24088 +5.68813 5.7611 +0.699911 0.824323 +6.73758 8.42517 +9.34644 10.07 +0.289929 1.30554 +8.30644 8.49113 +6.47667 7.16073 +4.28093 4.90236 +8.32678 8.57064 +7.09205 7.92316 +5.55599 5.63919 +1.0104 2.22875 +1.72237 3.53668 +2.54699 3.14823 +-0.668582 1.25485 +1.25582 1.37003 +1.35044 1.57807 +6.17083 6.30811 +0.618816 1.20065 +-0.540992 1.21634 +2.06673 4.28857 +9.03398 10.8112 +8.73735 9.22814 +1.30178 2.7599 +6.0221 7.34889 +8.30124 8.52159 +1.92023 3.34545 +2.99331 4.93358 +3.8412 3.93379 +1.455 2.77005 +0.538664 2.1118 +4.16926 4.26053 +0.699746 0.937609 +6.36024 6.6511 +2.34698 4.84463 +8.11109 8.76496 +4.05425 4.67773 +8.2284 9.78568 +1.64423 1.80353 +5.70109 6.93764 +7.2091 9.67224 +4.47015 5.23311 +4.29326 5.36144 +7.93151 8.96494 +4.61889 4.96487 +5.38473 5.43594 +9.35456 9.66489 +1.23737 3.04121 +1.16077 1.19519 +5.91037 7.55679 +6.88344 7.60181 +6.39705 8.65039 +1.61791 2.93041 +9.68285 10.1396 +9.03129 9.05839 +7.0683 8.29875 +7.19624 7.41696 +7.5266 8.38738 +-0.254571 1.01098 +1.30218 2.03222 +7.6432 7.73031 +4.99495 6.04757 +2.79394 3.29394 +0.31505 3.55963 +7.55382 8.18787 +6.00032 6.27664 +1.49355 1.79767 +5.21191 7.19537 +3.47816 3.75801 +2.10272 2.39494 +1.31887 1.93829 +7.14313 7.63055 +7.3141 7.77239 +6.03409 6.17265 +4.24946 4.53165 +0.0569272 2.56109 +8.44766 11.4872 +4.22879 4.28007 +6.92817 6.98775 +8.08859 9.0206 +-0.0748418 1.48605 +6.56698 7.0488 +4.46624 5.4952 +3.66085 4.05778 +6.44711 8.93943 +2.45735 2.49339 +0.0606673 0.416191 +-0.183838 0.750464 +7.08561 7.67275 +6.65423 6.90808 +0.0598735 0.364072 +5.2228 5.41543 +3.14042 3.19043 +2.40069 3.02829 +1.80441 2.1849 +3.47491 3.95775 +5.49162 6.63934 +2.03332 2.32288 +3.17234 5.25109 +2.58274 2.59951 +9.37994 9.97097 +4.71509 6.77966 +5.18915 6.84982 +6.12508 7.04354 +0.811202 1.98808 +1.46825 3.66984 +2.44386 4.15623 +7.60169 7.68242 +-0.43208 1.22222 +5.40569 5.66153 +0.391742 1.79408 +6.77742 8.43115 +9.12828 9.3851 +6.39541 6.80626 +5.17919 6.29326 +6.57263 8.12999 +3.439 4.62236 +8.40525 9.80086 +7.60986 7.70099 +1.32123 1.44213 +0.526574 1.92338 +9.57195 9.79591 +9.52103 9.63159 +3.79775 4.20608 +4.74446 4.89606 +9.00085 9.60025 +1.26279 2.08363 +4.13639 4.49232 +6.59409 7.18315 +1.0637 1.78425 +5.4213 6.87661 +4.24407 4.30987 +9.79732 10.1204 +4.24597 4.83541 +8.47705 8.5145 +4.34095 4.93842 +5.68168 6.96086 +7.48654 7.91072 +8.32005 8.45111 +5.24065 5.3032 +3.25982 3.94442 +5.58106 6.18764 +4.4243 5.58619 +6.36467 7.07082 +2.70051 3.56014 +5.94534 6.87688 +7.33638 7.7645 +4.57067 5.86652 +7.83993 8.36854 +9.03617 9.11629 +7.44672 7.95614 +6.05876 6.3594 +4.02496 4.97119 +3.01438 4.36109 +7.4932 7.92357 +7.51661 7.53354 +7.60692 8.49678 +1.76088 2.59103 +7.08578 7.39566 +4.83605 5.42933 +-0.186592 0.847663 +1.15879 2.33996 +8.11815 9.35472 +6.02584 7.62549 +0.881084 1.00015 +5.39067 6.27026 +0.910755 0.97444 +5.32174 5.65652 +7.69388 8.24928 +3.40521 3.7615 +5.60321 6.92388 +8.25096 8.34324 +0.00108913 2.16897 +0.508035 0.66573 +-0.0517816 0.0876197 +3.26472 4.30955 +1.99494 2.14903 +2.089 4.32368 +5.17378 5.75964 +2.8779 3.54361 +6.56459 6.90645 +1.43196 2.88337 +1.48917 1.94009 +3.40807 4.25784 +8.0334 8.13458 +8.22254 9.6175 +2.96308 3.14349 +5.04768 5.71252 +3.9977 4.72614 +1.44384 1.60782 +7.78147 8.19817 +7.03854 7.50085 +5.90747 7.06091 +2.89169 4.31831 +2.46167 3.16529 +9.13228 9.1504 +2.57975 3.05313 +5.75976 6.52958 +8.10499 8.98982 +8.43162 8.76377 +0.422917 0.668254 +1.69046 2.09962 +5.50386 6.66954 +0.0897183 0.564514 +3.50103 4.1041 +3.91918 4.52559 +4.39297 6.18876 +3.90396 4.90868 +9.69362 9.85528 +6.27994 6.95062 +8.01563 9.09433 +8.25641 9.72944 +8.22072 8.35423 +1.27059 1.61352 +8.53312 8.96235 +3.49185 3.9042 +5.79579 6.046 +0.489013 1.2147 +4.00074 4.177 +2.66625 2.93036 +7.20267 9.34958 +7.44659 8.54707 +8.99915 10.1143 +7.59922 7.82031 +8.38502 9.03222 +0.160075 0.294398 +4.14549 4.3927 +9.35554 10.248 +-0.159435 0.467922 +2.17272 3.72336 +8.63811 8.79976 +4.23215 4.66461 +6.99516 8.2035 +6.45212 7.88791 +6.20141 6.28633 +7.69396 8.82204 +4.50807 5.96315 +8.51725 8.89286 +0.939492 2.12064 +7.4615 7.62666 +8.46681 9.11769 +3.92828 5.40884 +9.05622 9.40015 +0.229625 0.860838 +2.05694 2.52113 +-0.217927 0.574255 +9.55146 10.3256 +8.31497 8.3417 +3.52833 4.47013 +7.7131 8.52058 +2.15462 2.66777 +5.7674 6.17553 +3.3358 4.10589 +2.06642 3.00412 +2.43387 2.85242 +5.09473 5.84276 +7.3287 7.54846 +4.64254 5.11465 +4.05785 4.93614 +4.25413 5.43513 +2.96476 3.15378 +3.53732 4.48239 +2.34137 4.01272 +2.24879 3.40626 +3.43323 4.49055 +0.871415 1.33068 +0.508929 1.65611 +4.92057 4.94743 +7.03376 7.35193 +5.73043 6.47264 +7.82417 9.93642 +5.24102 5.9178 +2.38528 4.1676 +6.27437 7.19631 +9.29267 9.53262 +4.10098 5.24964 +0.383714 0.833317 +5.97628 7.92987 +8.15799 8.96819 +8.1687 8.29862 +8.16289 10.5149 +7.38205 7.89765 +3.81883 4.15607 +9.46915 9.61755 +1.50756 1.51863 +2.34236 2.84689 +0.398473 1.15027 +1.05302 1.49155 +8.71687 9.35232 +1.0502 1.40395 +7.83685 8.76302 +7.7731 8.46899 +5.56618 5.97458 +2.90035 4.12043 +6.40644 6.68706 +3.95201 4.37075 +7.1831 7.67748 +9.42789 10.0914 +5.45198 7.01256 +8.64609 9.45756 +6.01864 6.31515 +7.64621 8.65533 +5.45654 5.76553 +2.04332 2.75476 +5.49454 5.85693 +6.13688 6.21927 +2.66255 2.7385 +4.8326 6.43772 +9.12704 9.45287 +-0.294488 0.318697 +2.26979 2.35516 +4.12949 5.58506 +3.01416 3.62246 +6.64697 7.10221 +6.44307 6.82985 +4.10484 4.73148 +7.42589 7.6029 +5.33055 5.50395 +2.46474 3.05847 +5.43677 5.59206 +2.13807 2.3988 +-0.38424 1.8121 +0.00916704 0.219304 +8.62621 10.2262 +3.33927 4.51169 +5.45656 7.13165 +5.29253 6.57917 +3.51704 3.9421 +8.63729 9.13361 +3.92626 4.3469 +6.83104 7.52695 +1.22258 2.28191 +0.447646 0.789809 +7.96543 8.54328 +2.24269 2.42571 +4.4161 5.40481 +0.813992 2.21792 +0.694664 0.974182 +6.50017 6.88902 +4.00723 4.65882 +9.05784 9.85062 +6.80276 6.98196 +0.105446 0.379881 +0.416982 0.53336 +9.01269 9.55204 +3.27197 4.23315 +6.7017 6.89704 +4.21512 4.42378 +4.86735 6.90949 +4.52235 5.36878 +2.62205 3.55746 +-0.551048 0.555476 +1.63274 2.71251 +4.26739 4.88085 +8.23129 9.77405 +2.49409 3.96851 +6.66387 6.88886 +7.72383 8.90611 +3.18511 3.27281 +0.73722 1.64435 +7.90329 9.02868 +6.94845 7.06773 +0.509461 1.54928 +4.63885 5.51652 +9.24395 9.5121 +1.00007 1.57161 +5.31349 5.45437 +0.929284 1.71034 +7.05985 7.63288 +7.38418 7.45373 +4.14937 6.5167 +7.49989 8.6081 +9.28313 9.57721 +4.41285 5.1497 +2.96148 3.09221 +1.58256 1.66419 +4.45116 5.43488 +5.70927 7.11699 +3.61105 3.93153 +5.92285 6.63773 +3.50065 4.48453 +7.97338 8.96464 +0.541394 0.965435 +4.46469 5.03925 +7.33695 7.6484 +9.64234 9.6938 +4.16378 4.17886 +7.10741 7.31549 +1.51829 2.62477 +2.1892 2.9684 +9.23767 10.0462 +7.87649 7.97087 +7.05385 7.85952 +6.91232 7.50277 +6.60185 7.81572 +2.27112 3.90211 +5.74452 8.2018 +6.25117 6.26911 +0.525893 1.53447 +0.392956 0.959233 +3.51591 4.71055 +3.10449 5.41156 +7.35964 7.65642 +2.89831 3.54334 +3.42338 3.68259 +4.75496 5.51419 +3.8792 4.48395 +2.18007 4.13236 +3.15798 3.16864 +8.91248 9.21598 +8.54636 9.34037 +7.93697 9.79709 +6.40205 8.9653 +9.67332 10.2252 +4.31771 5.25423 +7.27485 7.3725 +6.22971 7.11411 +1.16538 2.16762 +1.40443 1.6876 +3.14915 4.58847 +7.13761 8.72165 +4.38448 5.88699 +7.98309 9.19449 +8.491 9.05597 +5.55043 6.19359 +2.44006 3.36071 +9.56522 9.79903 +1.86129 2.00225 +1.65239 2.11478 +7.59392 8.4655 +2.44709 2.68538 +6.80932 7.04694 +8.8212 9.4182 +0.276845 0.956468 +8.17008 8.5538 +0.77864 2.06897 +6.78458 7.68692 +0.504907 2.67518 +5.56963 6.9058 +3.42691 3.5414 +2.52065 2.71583 +5.09924 6.26696 +0.223724 0.610039 +3.61258 5.29324 +0.388393 3.11131 +2.87763 4.45415 +8.26438 10.1169 +5.89742 8.17506 +1.89686 2.66651 +5.33662 5.68228 +3.37496 5.67291 +2.25713 2.36127 +0.402185 0.716342 +6.4231 6.79227 +3.22707 4.69314 +7.85092 8.77413 +3.31322 3.72455 +5.43021 7.7167 +8.5883 9.00864 +1.21371 1.71836 +6.35584 7.9706 +5.44438 5.50414 +5.31325 6.11217 +6.08888 6.78794 +7.70604 8.13257 +1.29858 2.48753 +5.54083 6.38817 +8.23948 9.82646 +7.5575 9.0224 +8.00415 9.39763 +0.488455 1.55358 +4.48727 5.20741 +6.46648 7.02349 +0.355939 0.611119 +9.4892 10.2189 +2.61893 2.82832 +0.268193 1.24687 +3.01964 5.19554 +6.29954 7.42795 +8.70796 9.48366 +5.39307 6.64597 +2.47001 2.60746 +5.30949 7.46529 +6.07973 6.16835 +0.764507 1.6144 +7.94123 8.52143 +1.88244 1.96592 +6.42103 7.02205 +7.673 7.73208 +6.66891 7.80675 +6.9305 7.5431 +6.62335 6.93873 +4.34846 5.77621 +0.49878 2.82928 +2.65221 2.80109 +7.45348 7.74372 +4.10129 5.26894 +3.87782 4.19855 +4.62113 5.22658 +2.84558 2.88185 +2.53209 2.86065 +8.94932 9.21967 +6.48046 6.89614 +5.81885 6.66829 +6.49129 6.62015 +8.5663 9.58685 +2.43346 3.89849 +9.36561 9.45886 +1.40232 2.65 +6.66 6.74041 +2.87007 3.49668 +4.71138 6.0184 +5.03638 6.08494 +7.77735 8.14253 +1.0301 1.27179 +2.58337 4.04699 +6.95419 7.89775 +7.81164 8.62551 +3.37669 3.96217 +4.68541 5.58692 +4.79697 6.34841 +3.95334 4.81962 +9.44006 10.0941 +4.91098 5.12386 +8.44273 10.1565 +3.6685 3.73156 +5.07599 5.33357 +-0.138235 0.260923 +2.71154 3.45603 +5.75096 6.16127 +4.4775 4.64308 +6.80557 8.97442 +5.49408 5.76652 +8.31937 9.12886 +3.26479 5.51673 +2.57425 3.03145 +2.42465 3.92714 +7.86505 8.50835 +3.29229 3.43549 +4.08537 4.69709 +7.83885 8.60616 +1.61622 2.72716 +9.10228 9.41907 +8.49325 9.46612 +-0.174644 0.351716 +1.95648 2.14825 +8.28844 8.4428 +4.35888 5.59521 +5.1396 5.22537 +0.330835 0.879566 +6.14972 6.82967 +3.14811 4.89049 +-0.231668 1.08277 +3.13526 4.94545 +8.32674 8.91046 +5.22364 5.48006 +9.84318 9.88416 +-1.07813 1.6965 +1.5095 2.0328 +8.03716 8.2792 +-1.01307 1.46703 +8.22096 9.0055 +8.9917 9.0415 +5.60623 6.74537 +3.15991 3.19314 +3.13863 3.26451 +0.739618 0.896958 +0.67599 1.18486 +3.37355 4.06303 +0.38605 0.410067 +3.03297 3.46387 +3.45867 3.79806 +8.67249 9.53278 +-0.213855 0.787363 +1.52316 2.61117 +8.31846 8.59736 +4.84685 4.94042 +7.41901 7.82623 +4.99029 5.09747 +5.3637 5.37612 +3.22123 4.77749 +3.21668 5.74743 +3.48748 4.59962 +8.00016 8.56269 +1.63631 2.42239 +1.05159 3.72319 +7.22643 7.95706 +5.65694 5.99195 +9.4469 9.66915 +0.857984 1.59867 +4.05869 5.69955 +2.65788 3.07259 +1.8038 3.38748 +3.91934 4.89922 +6.18534 6.70342 +2.85076 3.20176 +8.1897 9.9614 +0.685531 2.05322 +3.31097 4.00809 +8.26537 8.63475 +2.90508 4.07797 +1.25213 2.31285 +3.05752 4.03741 +-0.481913 0.605629 +1.87958 2.19386 +7.28689 7.76316 +4.82075 5.20688 +-0.08115 0.31839 +3.50085 5.89363 +1.31184 3.30269 +4.03137 4.81493 +6.11688 6.13923 +7.93584 8.43321 +4.9838 5.3733 +3.8174 4.11979 +8.56196 9.02824 +2.87809 3.89589 +7.95309 8.05432 +3.47469 3.63716 +6.61009 7.12576 +8.87374 9.79588 +7.31513 7.99089 +5.78084 6.68535 +4.96985 5.59877 +2.20236 2.52473 +0.661014 1.11035 +6.36183 6.58403 +6.67947 6.85093 +-0.242005 0.513902 +0.442966 1.72024 +6.4587 6.74016 +6.67958 8.0837 +8.98524 9.56405 +6.91409 7.59877 +3.73596 3.97705 +5.51193 5.96437 +3.72029 4.50126 +3.09896 3.23616 +8.83312 8.91774 +0.32173 0.486199 +4.21092 4.59955 +2.61616 4.07081 +1.89049 2.65559 +4.96401 5.00629 +9.33156 9.70914 +3.72455 4.61054 +8.91265 9.6563 +7.12401 8.04324 +6.65393 7.25572 +1.04032 1.24927 +3.0174 5.56006 +1.47645 2.26867 +3.49833 4.37416 +6.16877 6.34452 +6.47417 6.90595 +4.27056 4.92535 +7.60439 9.35352 +0.426219 0.754405 +8.5291 8.68579 +5.84717 6.64632 +1.99513 2.5284 +5.10669 7.83064 +6.99006 7.37272 +0.871836 1.5934 +3.6572 4.38875 +0.154617 0.290737 +5.91634 6.50415 +5.33982 5.45293 +6.92602 6.94691 +0.349512 1.61427 +8.02048 8.99943 +5.75598 7.34946 +5.86948 6.51327 +5.11707 5.6181 +6.27656 7.10043 +8.48922 9.73833 +8.35863 8.69746 +6.67829 7.07852 +8.51257 9.50383 +3.76636 4.33757 +4.82804 5.57166 +5.17892 5.61254 +1.35188 1.94069 +6.04969 6.06833 +5.34181 5.82455 +5.71714 6.71234 +0.966462 2.56278 +7.95169 8.15951 +6.53583 6.89673 +6.73246 8.34493 +8.71111 9.76467 +7.53215 9.56537 +0.619041 0.736713 +9.24399 9.50151 +8.57184 9.88538 +2.82682 3.77294 +4.2649 4.84602 +8.6621 8.96426 +8.04469 8.3189 +7.81877 8.42944 +2.78031 5.16589 +1.23076 1.43577 +8.35385 8.49632 +3.27901 3.66774 +0.595941 1.41354 +3.37123 5.16685 +9.11003 9.95515 +-0.25959 0.32069 +1.44153 1.70148 +1.61595 1.70799 +7.8201 8.53423 +8.5402 9.36947 +8.39125 9.8221 +6.2909 6.35773 +0.000933745 0.920054 +-0.21358 0.491025 +4.00874 4.03866 +3.43552 3.55874 +7.85942 7.98987 +7.6681 8.06748 +6.19541 7.14765 +8.53891 8.96393 +2.38789 3.26866 +-0.0162847 1.18379 +1.04764 1.52755 +0.400798 0.55475 +6.32001 6.94897 +5.9692 6.2012 +1.20784 2.67873 +3.58247 4.46372 +-0.229647 0.559407 +5.65979 5.73489 +2.32795 2.78462 +0.706144 1.55147 +4.56527 4.6636 +5.98901 7.20908 +9.27329 9.95152 +1.31296 1.70529 +5.82933 6.41329 +4.17452 5.29881 +4.15885 5.25117 +0.35549 1.3511 +1.0591 2.4463 +8.87597 9.55625 +6.66826 8.57255 +0.355945 1.40613 +5.39729 6.10218 +3.78791 4.37501 +9.53885 9.87184 +2.67568 2.82552 +4.44836 4.52939 +5.96764 7.40168 +6.35578 6.98546 +0.636857 1.19517 +3.3986 5.55448 +1.46493 2.66884 +-0.0676901 1.80921 +7.83396 8.53452 +8.3508 9.04561 +4.03407 6.0066 +0.997538 3.30635 +7.83064 8.03466 +4.57652 4.97461 +3.85952 4.15471 +0.960261 2.1069 +0.522458 1.52989 +8.81627 9.00768 +0.172256 1.29455 +5.69294 6.15752 +6.86391 7.75307 +2.32429 2.95415 +1.83191 1.90364 +0.400855 0.705649 +5.23264 5.39972 +5.19047 5.79842 +2.40804 2.89401 +0.462887 1.43874 +6.70213 7.90229 +4.37985 4.95797 +3.73768 4.30645 +0.756797 2.11146 +0.458724 0.472099 +3.93098 6.47147 +5.5294 6.00365 +2.97106 3.42174 +5.75875 5.80235 +7.96799 9.02105 +5.36254 7.22823 +6.56124 7.39973 +9.49234 9.57879 +2.87576 3.59509 +3.49182 4.28124 +8.68021 9.94486 +9.60199 10.1276 +9.70115 9.81776 +3.09609 3.98732 +5.00113 8.15031 +5.21248 5.74835 +9.23337 9.5696 +2.92777 3.56297 +2.52044 3.04905 +4.79908 5.05762 +1.98626 3.69659 +4.78726 6.20637 +7.39711 7.42831 +4.44319 4.78716 +9.28452 10.0832 +8.00774 8.85707 +9.22947 10.0523 +4.38653 4.86012 +5.15285 5.23106 +8.95413 9.75947 +2.90286 3.32407 +0.348694 1.39738 +-0.0660432 0.293424 +4.09079 4.2922 +6.0407 7.23031 +2.83771 3.72237 +8.54697 9.38898 +2.16742 3.45018 +8.83255 9.30343 +3.59112 3.6531 +7.53452 7.81898 +7.11781 7.19773 +8.2892 10.0259 +4.91072 5.06031 +5.8232 7.25924 +7.0641 8.31604 +9.477 9.63892 +5.8003 6.58306 +9.63988 10.2754 +0.654364 1.02398 +5.9488 6.85043 +7.86867 8.99891 +9.202 9.46902 +4.17932 4.20271 +6.50328 6.71085 +7.19848 8.15579 +5.62459 5.75449 +-0.159668 0.791409 +7.55683 8.7315 +1.03278 1.423 +0.751457 0.808785 +6.2203 6.50634 +1.64418 2.98238 +6.87468 7.00652 +6.36966 6.7117 +7.69893 8.89535 +0.419794 1.05032 +2.73928 4.31548 +0.409245 1.55228 +6.03905 6.39323 +0.409695 0.789834 +4.39148 4.40935 +1.14673 3.23607 +5.85562 6.44503 +6.87394 6.88742 +3.761 4.35136 +7.2208 8.01436 +6.49839 6.54002 +4.70791 5.91886 +4.24906 5.96619 +2.53482 3.91496 +-0.369254 0.69193 +4.81351 6.31088 +9.76066 10.0736 +1.4413 1.55942 +7.21917 8.88908 +6.03521 7.56826 +1.25568 1.42024 +5.47575 6.04431 +1.43099 1.99979 +5.1004 6.04088 +6.54798 6.56118 +1.0142 3.1564 +1.75267 2.1453 +1.28133 1.36044 +9.60996 10.0563 +1.14397 1.50247 +6.86688 7.08724 +8.38287 9.18041 +0.132076 1.27657 +6.52553 6.9301 +0.223917 1.41325 +1.18902 1.79753 +1.40084 1.75678 +1.94524 2.51929 +1.98276 2.62875 +0.763281 1.05483 +7.97952 8.51249 +1.059 3.05463 +5.33401 5.85094 +8.37442 8.64374 +6.62865 6.67315 +1.01707 1.64386 +0.113335 2.23523 +6.71906 8.00216 +-0.886574 1.29366 +4.20078 4.85294 +8.43336 9.06988 +3.55413 4.40768 +6.69076 9.01132 +6.18982 7.14109 +7.14381 7.7046 +8.63195 9.47031 +8.88052 9.84886 +3.34443 3.62637 +4.5862 4.72832 +4.95757 5.23571 +2.85993 4.04966 +1.43846 2.27425 +5.43112 6.30496 +-0.452609 1.55525 +7.17706 7.71287 +5.78537 5.79579 +8.51102 8.9466 +-0.472904 0.810489 +3.83688 4.24045 +8.04432 9.04582 +1.57259 3.37136 +1.22231 1.33582 +5.73006 6.26477 +2.90855 4.22125 +9.39717 9.4287 +3.63873 4.16094 +0.442035 2.08889 +0.294491 1.31124 +3.14755 3.86305 +6.57634 9.44898 +2.19051 2.41878 +4.99277 5.12569 +4.10425 4.9423 +4.83547 5.62769 +5.73879 5.78179 +8.90329 9.81905 +5.60168 6.17538 +5.83843 6.66128 +1.84271 2.57406 +3.01047 3.33662 +2.85037 3.79158 +3.49007 4.46877 +8.58942 9.51529 +0.613753 1.12824 +8.23757 9.54707 +9.27134 9.4196 +6.27126 6.56417 +2.17206 2.33018 +3.53588 5.17162 +8.6312 10.0868 +5.76342 6.66164 +9.01501 9.90984 +3.22004 4.18954 +4.37918 4.68595 +2.00928 3.49815 +6.64229 7.06693 +2.85962 4.58794 +8.45587 9.8897 +2.8481 3.65956 +8.65849 8.67336 +6.48486 6.58637 +5.82336 7.45254 +4.02267 4.59696 +2.24997 2.83815 +8.16201 8.55518 +7.40645 9.07085 +1.43137 1.50333 +8.7212 10.9419 +1.50523 2.44124 +1.92455 2.85819 +4.50866 4.53052 +5.75781 5.81275 +1.71013 2.0282 +9.31592 9.9015 +6.14972 8.18798 +1.85705 2.20068 +4.80971 5.10509 +3.31201 3.58168 +8.61824 9.31861 +7.19497 7.86933 +3.25381 4.53472 +5.62799 6.29537 +9.00659 10.021 +9.15156 9.74827 +2.0324 2.80741 +0.714403 1.00476 +1.26522 1.80417 +-0.362995 0.41758 +7.08785 7.71544 +5.55685 5.74045 +0.428866 3.03773 +7.61574 8.94894 +9.07256 9.69772 +4.49537 5.06822 +5.66388 6.48899 +1.69126 2.69607 +9.90539 10.0783 +6.56455 8.27128 +6.61988 7.86616 +7.42012 7.64493 +2.99922 3.35282 +4.69379 5.18947 +0.87894 1.30518 +9.47632 9.61234 +0.665754 0.855958 +-0.422778 2.11197 +3.38786 4.15441 +7.57236 8.75855 +1.89832 3.50224 +-0.185929 1.0777 +3.32911 5.53465 +6.91111 8.69247 +6.97456 7.86905 +4.75518 5.0948 +4.23733 5.83368 +8.52456 8.56086 +0.0978267 0.136564 +7.4668 7.99757 +5.52851 5.80858 +8.5833 8.88589 +5.10603 6.41348 +4.70682 6.59981 +8.60265 9.19477 +5.04514 6.24014 +4.49041 4.88669 +7.40925 9.15624 +0.80364 1.35315 +7.11604 8.01153 +0.267749 0.714089 +0.121521 0.822226 +9.30556 9.81307 +2.11398 2.92567 +5.97722 6.08022 +7.13483 7.22211 +8.00161 9.27274 +4.87681 5.51654 +3.11843 3.84311 +5.17747 5.98482 +3.6077 4.46306 +1.37454 2.2443 +4.93385 5.96357 +2.92184 4.0964 +4.88767 5.56353 +2.87394 3.76336 +0.326521 0.622872 +2.42056 2.45007 +-0.527891 0.827211 +6.73151 7.20155 +1.82048 2.54905 +1.35563 1.88701 +3.64202 4.10669 +5.22846 5.23953 +6.06271 6.46993 +2.71418 3.2081 +6.41179 7.57176 +7.45823 7.79609 +1.01227 1.39137 +9.0872 9.20132 +5.083 5.64038 +5.63236 5.97945 +-0.317645 0.822313 +0.865396 2.65587 +5.71839 5.98983 +1.50978 2.08611 +2.95824 3.70996 +0.264301 1.02233 +8.22351 8.98589 +4.87805 5.24127 +2.31329 3.46752 +6.19539 6.69676 +5.18643 5.40947 +7.15453 7.66643 +1.20694 2.25111 +7.87378 7.89093 +5.16514 5.604 +8.68354 9.01395 +7.33753 9.37499 +2.94627 4.06036 +8.64337 8.85727 +0.0353092 1.0128 +6.98437 7.35718 +6.77073 6.79959 +3.13559 3.70735 +7.40139 8.27017 +4.01174 4.39788 +3.22281 5.11647 +7.79256 8.58737 +0.642233 1.39694 +7.18603 8.69453 +3.37803 3.59355 +0.762287 0.84262 +4.21823 4.52565 +0.894924 1.35434 +0.844327 1.19938 +5.57958 7.05431 +-0.631066 1.55134 +3.78962 4.17935 +9.15329 10.4824 +5.47536 5.52975 +8.81243 9.16088 +4.45989 4.94123 +8.68235 9.45112 +8.04719 10.3938 +8.87349 9.40483 +0.502543 0.570283 +2.08512 2.47652 +-0.654512 0.804355 +3.68569 5.21711 +5.33017 5.80226 +3.44991 5.31415 +-0.00417763 2.95077 +7.17784 7.9318 +1.2721 1.31642 +5.24415 5.64173 +2.79434 3.28746 +4.54991 6.49276 +4.74707 5.12555 +7.36365 8.15777 +0.913049 1.79828 +1.47498 1.83425 +2.64271 3.38567 +4.78159 5.44718 +7.6087 7.66442 +-0.484393 0.909893 +3.16824 3.23757 +4.43021 5.90284 +4.25954 4.74995 +6.58742 7.24125 +1.86151 2.27069 +3.16459 4.5945 +1.06471 2.08965 +3.31028 3.83029 +1.52593 2.47521 +0.703789 1.42451 +1.47969 1.68923 +2.92352 4.24089 +9.84088 9.93485 +3.18205 4.27817 +7.39345 7.78945 +3.78808 5.41572 +4.38624 6.75693 +6.93065 7.16977 +1.01289 2.19807 +3.37006 3.54196 +5.50238 5.58285 +-0.225113 1.99347 +1.67796 1.86943 +6.1999 6.35102 +3.80494 4.74814 +1.13294 2.02639 +1.1965 2.6548 +-0.284453 0.856092 +4.26565 5.02196 +9.66948 9.88874 +6.20287 6.25528 +4.38154 6.65806 +3.77411 4.3075 +5.77177 6.78486 +9.16311 9.816 +3.22861 3.42009 +3.36573 4.34724 +6.76951 7.58025 +4.83813 5.23042 +3.87192 4.37372 +5.56859 5.90066 +-0.368163 1.4593 +5.44031 7.81671 +2.66342 2.99253 +6.11846 7.69499 +4.98811 5.17531 +4.45078 4.67513 +4.88206 4.94128 +2.51813 3.0268 +0.461292 1.15264 +2.34766 4.48652 +0.198819 2.23425 +6.85634 6.98248 +0.912438 1.81872 +4.84933 6.34912 +5.15613 5.82891 +0.172772 0.994083 +3.37381 3.64549 +1.98836 3.2697 +1.64344 2.06049 +0.766585 3.09305 +7.8979 8.28046 +4.34856 5.01341 +6.69809 7.24239 +5.19034 7.04959 +5.3747 6.92123 +7.8893 10.1251 +6.11207 6.99125 +5.37115 6.84111 +9.04786 9.11002 +6.45326 6.64415 +-0.76294 0.92832 +0.980411 1.8166 +3.05536 3.50031 +6.10827 7.55786 +6.57848 9.06264 +7.66855 8.861 +4.80276 4.82283 +1.99932 3.2877 +9.45229 9.80653 +0.457474 0.778684 +5.44444 5.95239 +5.60974 8.05169 +7.64656 7.79632 +6.78372 7.65134 +6.93878 7.82023 +9.08292 9.55308 +9.16329 9.25802 +1.4909 2.38688 +4.31881 5.3564 +5.12535 5.60119 +2.44591 2.54637 +7.36929 7.80452 +2.13707 2.97655 +9.73557 9.94588 +1.96637 3.36097 +0.857068 2.29643 +5.58224 5.91142 +8.90714 9.0255 +9.77988 10.0711 +0.41121 0.970955 +-0.518356 0.91447 +7.58725 7.71255 +8.1435 8.78712 +6.5487 7.17991 +4.94961 5.50283 +8.14086 9.03281 +3.51281 5.24806 +3.5786 3.84066 +6.27435 8.37735 +8.65263 9.5555 +2.87484 3.56117 +5.57707 6.55879 +-0.111276 0.264178 +3.60894 4.15477 +2.82322 3.64397 +8.40669 9.1127 +8.43089 10.5298 +1.38472 2.2453 +1.74464 2.00472 +4.01588 4.67572 +0.408869 0.938602 +2.06155 3.46067 +4.4871 5.08963 +2.4435 3.87355 +1.32864 2.55801 +4.78579 5.26122 +7.43027 7.57749 +6.90971 7.32716 +8.01095 9.46872 +9.41627 10.524 +8.83143 10.4474 +0.631816 1.75513 +1.72965 2.17123 +-0.513239 1.1886 +6.75616 6.7984 +2.49278 4.26493 +0.230011 0.966298 +3.78506 4.95013 +2.03886 3.14808 +7.87309 10.5637 +3.54564 3.58055 +1.91974 2.9194 +4.8503 4.98668 +4.66494 4.83558 +7.57916 8.24358 +4.78743 5.38547 +2.81034 3.34534 +1.00297 2.0138 +6.87593 7.17736 +3.93157 5.0655 +3.10361 4.05519 +8.22876 8.38326 +7.48377 8.31026 +2.23106 3.4905 +0.130934 0.606709 +1.22344 2.55898 +7.55829 7.92597 +4.10977 4.86263 +0.122756 0.264176 +3.8357 4.15854 +1.28414 2.13031 +0.280029 0.805504 +2.88245 4.1704 +5.57936 6.94781 +6.22719 6.33201 +-0.761013 1.16475 +6.16636 7.12566 +2.98935 3.192 +2.23263 2.34362 +3.9082 4.11692 +2.66865 3.5275 +1.87676 2.43966 +4.60035 5.39332 +2.74287 3.73097 +2.81953 3.96666 +5.73644 6.04042 +4.02179 4.52419 +3.26438 4.07346 +1.22509 2.13719 +7.91885 9.71846 +1.28152 1.48079 +7.97918 9.26344 +8.75682 9.8677 +7.25678 7.45362 +8.16161 8.87066 +1.21873 2.37224 +7.76739 9.06346 +3.89932 5.03406 +3.53901 4.37006 +2.93795 4.04333 +6.36543 6.72985 +4.72622 4.98804 +1.86205 1.99008 +0.784581 2.05264 +0.978519 2.91723 +3.9067 6.47195 +0.735425 2.38151 +8.37394 8.41609 +6.91804 7.23374 +9.39259 10.1026 +7.28732 7.43466 +4.75982 5.44264 +6.71504 7.53933 +2.17125 2.54358 +0.703562 1.39087 +-0.221711 0.541965 +9.22839 9.39159 +9.53465 9.97585 +1.44304 2.53666 +7.886 8.85051 +9.33174 10.1632 +2.60898 3.42889 +1.73658 2.02589 +6.31651 6.77762 +7.26755 8.34499 +9.01312 10.9837 +7.47361 8.96251 +7.98365 8.02586 +1.40065 3.44891 +9.44617 9.55391 +8.24265 9.34849 +9.366 10.4216 +0.375354 1.17522 +3.37114 3.38278 +-0.742469 1.07634 +4.29988 4.81879 +4.18605 7.21928 +7.41047 8.29198 +6.68173 7.60225 +3.24292 3.30695 +1.8951 3.42167 +3.97359 4.2857 +4.72621 5.80575 +4.75014 5.02239 +6.43454 6.94568 +7.16601 8.10355 +2.16685 2.23666 +6.70852 8.63284 +8.16988 8.95848 +0.277002 1.30648 +1.5803 2.28632 +2.22634 2.34679 +0.200623 0.814959 +5.27457 6.51651 +2.49533 2.90705 +6.48922 6.69528 +8.18879 8.63551 +2.75159 3.633 +0.884853 1.56434 +1.87488 3.98951 +4.24783 5.17713 +6.22499 6.56095 +5.68238 5.99272 +3.75553 3.85012 +4.87543 5.39966 +6.62671 8.72493 +3.50262 4.05131 +5.38952 5.4974 +7.84971 7.94051 +5.39123 6.66564 +5.43986 6.17256 +7.48968 7.7677 +4.2685 4.57296 +1.75169 4.11058 +5.03634 5.16102 +4.68003 4.84715 +8.36249 9.98761 +8.94297 10.6969 +6.21572 6.24305 +7.90303 8.0672 +7.90426 8.41244 +5.98512 7.93187 +5.13297 5.27136 +6.58367 7.4971 +4.72663 5.22956 +7.99667 8.59246 +4.3303 5.92188 +1.3132 1.80875 +7.70104 9.20947 +1.78862 2.00473 +9.63678 9.65571 +-0.264416 0.318054 +2.70004 3.40777 +2.74642 3.73608 +3.6494 3.6743 +8.03113 9.22851 +1.07526 1.3116 +4.05436 5.33291 +4.60907 6.03605 +7.83426 9.10358 +2.27997 2.77309 +5.63139 6.92616 +4.40717 5.25214 +1.98986 3.5062 +2.42393 2.9584 +1.94336 3.08456 +1.20185 3.01827 +0.641733 2.10095 +7.25046 8.29391 +0.640392 1.26451 +3.9588 4.85492 +6.83036 7.41101 +6.48581 7.08757 +6.48734 8.47856 +9.55084 10.3774 +-0.173137 1.26574 +2.32702 2.58775 +2.7463 3.13914 +7.86951 8.62807 +5.96916 7.92759 +0.217046 1.70373 +1.04207 1.05755 +4.79058 5.07902 +4.19024 5.35395 +9.00175 9.83715 +8.37554 9.275 +4.5204 4.82999 +3.49936 4.75519 +7.07916 7.74619 +6.66726 7.35282 +7.39513 8.55523 +7.50381 9.60708 +1.39304 2.26927 +2.84101 4.76376 +1.21779 1.59353 +4.7893 5.70143 +9.12195 9.57131 +5.40461 6.15443 +2.86445 4.26837 +8.01324 10.9082 +2.96659 3.8042 +2.4897 4.59323 +6.37887 7.15878 +7.00143 7.6419 +3.22491 3.41843 +1.22852 3.31783 +2.09881 2.56121 +4.43205 4.67051 +4.39328 4.66715 +2.38355 3.39058 +0.638802 1.59399 +5.32717 5.81376 +8.00353 9.72007 +8.77281 9.81649 +8.95552 9.86609 +2.90915 3.96556 +3.88176 4.93124 +6.45945 7.69942 +-0.108577 1.57424 +0.304992 0.320561 +6.47789 6.5515 +1.98211 2.05312 +6.2741 7.35626 +9.45057 9.67918 +5.2916 5.48037 +0.158802 0.712187 +6.42002 6.84323 +9.11085 9.13063 +9.42446 9.95882 +6.03624 6.96469 +9.2473 9.6286 +7.10342 8.71163 +3.34072 3.35187 +7.4602 8.58506 +8.7963 8.81873 +0.323615 2.22687 +0.326746 1.76681 +2.20062 2.76862 +7.55181 7.85006 +0.941035 1.28117 +8.76643 9.60019 +9.19731 9.33092 +6.0479 6.57293 +6.12725 6.24356 +7.53078 8.92488 +3.1841 3.48283 +1.85544 2.01888 +7.3849 9.29183 +5.03915 5.27721 +4.77142 5.46282 +-0.291696 1.14641 +1.61367 2.20867 +5.31853 6.69431 +2.52731 3.13139 +4.86677 5.18106 +4.50183 4.60969 +5.95881 6.09964 +2.41939 4.42026 +6.92003 7.17891 +4.29584 5.48557 +8.02803 9.06315 +2.82326 3.49599 +5.8647 5.87561 +2.38814 3.62688 +6.32418 7.17662 +5.99907 6.5059 +3.84698 4.14446 +9.80728 9.82132 +5.2366 6.30871 +9.81878 9.91004 +1.53024 1.83525 +2.98035 3.68531 +4.5418 6.98786 +5.19561 5.9846 +0.946068 1.46672 +3.26948 4.71928 +6.13476 7.68682 +8.36934 9.65072 +6.40074 7.14762 +1.01349 1.80493 +8.4514 10.25 +-0.180382 0.682704 +1.03041 1.63565 +5.64642 6.96069 +2.73598 3.67485 +5.8705 6.66157 +4.68343 4.7176 +5.83787 7.6818 +1.42529 2.234 +3.73726 4.19241 +5.38341 5.81884 +1.13088 1.69073 +0.968034 1.98828 +1.06007 1.11039 +3.50129 4.51807 +5.83133 6.77904 +-0.334945 1.29129 +0.326706 1.16015 +9.15028 10.4391 +5.13047 6.79712 +1.06952 1.38997 +5.79345 6.49898 +7.88149 8.5143 +8.00404 8.09794 +8.22725 8.28904 +6.38406 6.61356 +6.32166 6.73458 +7.17066 7.32049 +1.64338 3.79327 +7.92135 8.55568 +7.15578 7.42231 +6.70701 7.65427 +5.76608 7.63064 +3.54163 4.08662 +3.81402 6.76906 +4.5998 4.61865 +9.01471 9.18718 +5.21234 5.73335 +0.946018 1.39917 +6.99714 8.29739 +5.64458 6.93965 +3.39809 5.70907 +6.32284 6.83604 +8.50347 8.53097 +3.90118 4.85721 +9.41198 9.62076 +4.41514 5.55152 +7.69979 7.81249 +5.34434 5.37105 +7.25274 7.76114 +7.67383 7.92718 +5.82851 6.29417 +0.935651 1.2842 +0.639586 0.786771 +6.39823 8.31226 +3.67546 4.89035 +9.20323 9.57287 +2.33896 2.99576 +8.51933 8.80243 +0.983098 1.11084 +8.48215 9.42998 +7.29586 7.3914 +2.00695 2.89046 +2.60909 2.62433 +2.04118 2.92033 +7.60386 9.01419 +7.32896 7.73342 +9.51693 9.54891 +5.1323 5.24962 +6.35326 7.18302 +2.50952 3.51872 +3.4149 3.57431 +9.18412 10.4976 +5.68123 6.42697 +5.87758 6.0124 +6.3202 6.64588 +8.2547 9.98176 +5.50949 5.7854 +0.0824268 0.128178 +2.17292 3.76233 +7.22786 7.68214 +5.09326 6.4151 +4.30171 4.86688 +2.39206 3.47399 +7.95152 8.35556 +2.40133 2.936 +2.77819 3.87516 +3.252 4.33376 +9.54269 9.7513 +6.6747 6.73043 +0.611474 1.97158 +7.65864 8.53689 +1.58345 1.8017 +2.56917 2.8152 +8.5424 8.8301 +4.98159 5.44499 +5.82482 6.03578 +3.55509 4.90785 +5.77028 5.94747 +0.163965 1.1379 +2.85039 2.94261 +4.24343 4.67273 +3.22636 4.06084 +6.03662 6.21018 +4.55495 5.07697 +1.91173 2.51739 +6.54894 7.24036 +5.55502 6.92676 +0.245707 0.586188 +2.28044 3.29563 +4.71378 5.25198 +8.28953 8.44891 +9.42282 10.179 +5.0548 5.73614 +6.3203 6.43659 +6.54178 8.82077 +3.67181 4.17365 +8.51445 8.96445 +1.69648 2.84524 +0.194222 0.920147 +2.48533 2.59803 +1.66002 1.6739 +4.79833 4.95404 +1.09801 1.11009 +6.62529 7.4066 +8.0099 8.37262 +3.55429 4.11824 +6.2666 7.12137 +7.83222 8.01342 +9.37156 9.72961 +1.1647 4.04434 +4.50719 5.09068 +3.25175 3.75482 +8.28659 9.30848 +7.30009 8.60755 +-1.12073 1.21016 +0.310087 0.725712 +8.3746 9.13511 +9.11925 10.2234 +9.68703 9.7137 +0.603098 0.844291 +5.88373 6.99327 +0.852802 1.43297 +3.7463 5.82283 +7.69639 8.25446 +-0.337322 0.977113 +8.76606 9.16618 +3.43527 3.6616 +3.93587 5.39471 +5.66569 7.20462 +5.34999 5.7193 +3.25589 3.706 +1.52012 2.55985 +4.74228 5.43725 +5.15323 5.51652 +7.77237 8.33717 +-0.0514419 0.914127 +9.27182 9.59476 +8.14192 9.74859 +6.42702 7.20331 +7.51351 7.68358 +7.0947 7.46059 +7.97635 8.59449 +2.39931 2.66008 +5.79481 5.94673 +4.41054 4.81613 +2.72202 3.61239 +2.86039 3.44719 +1.81115 3.28151 +-0.566995 0.734214 +9.61998 9.72024 +7.4163 7.61821 +0.42522 0.552659 +3.17617 4.36942 +0.740294 1.36953 +7.13755 8.39966 +0.219186 0.892588 +3.78307 5.2905 +0.783026 1.76155 +3.01893 3.33055 +3.12143 3.5713 +-0.792679 0.92539 +0.668572 1.12961 +3.88619 4.30545 +7.59276 8.1776 +4.71509 5.05622 +6.53406 7.04242 +1.581 2.21984 +4.7144 5.51372 +2.76338 3.50211 +0.16364 0.293599 +5.92365 6.10636 +3.11174 4.29165 +5.49295 6.48717 +-0.503239 0.795707 +7.30558 8.12408 +2.10674 4.13456 +7.11985 8.01932 +1.34672 1.48739 +4.05778 5.69084 +2.83686 2.9115 +6.4471 6.53909 +0.467374 1.84371 +2.76467 2.94177 +4.87867 5.33932 +0.892878 1.96273 +1.13934 2.27205 +7.76918 8.39409 +6.72181 7.43901 +7.0836 8.68472 +7.12924 7.56332 +0.689172 1.62922 +9.41146 9.91043 +0.398265 1.27579 +6.29966 7.4874 +5.09438 5.65334 +6.04623 6.4687 +5.75305 6.89731 +0.308118 0.459501 +3.63692 4.30501 +3.1755 3.71009 +7.32787 7.52785 +2.23235 4.09978 +2.71191 2.91513 +0.209457 0.840713 +7.31489 7.38296 +6.21245 6.91111 +5.75983 5.96049 +5.92056 8.24518 +-0.354452 0.489638 +4.05894 5.34828 +1.56299 1.57414 +2.85083 3.27455 +8.78323 10.0012 +0.208502 1.26471 +6.10824 6.79285 +5.55114 8.03968 +6.13077 6.32342 +7.34865 7.82592 +3.94835 4.75016 +7.8268 8.72249 +4.85131 5.07903 +5.40398 6.0134 +2.85971 3.85293 +0.126379 1.45545 +3.15768 4.28388 +9.64566 9.70016 +4.47514 6.31064 +6.44995 7.2894 +4.70992 6.13777 +3.91128 4.22263 +7.35627 8.07739 +2.49215 2.68749 +8.09946 9.16929 +0.925679 1.92784 +8.48437 8.63892 +7.2255 9.18109 +-0.00840282 0.0168954 +5.91933 6.6274 +4.16086 4.64302 +8.27009 8.47868 +1.73372 2.93094 +8.17421 9.17705 +9.19136 9.43222 +0.0653594 0.648416 +8.69 8.96184 +8.99355 9.40832 +6.25088 6.26945 +6.72391 7.38424 +9.59708 10.3496 +6.00971 6.18818 +4.64468 5.75797 +3.64832 5.30079 +5.99378 7.8792 +6.5388 6.99379 +7.31694 8.43802 +3.66227 4.92638 +9.55964 10.3796 +-0.14433 0.29095 +3.56716 3.71252 +3.82062 4.27788 +8.10405 9.35275 +7.17891 7.46539 +1.17698 1.29602 +4.48829 5.03134 +7.18025 8.13852 +9.42388 10.3634 +5.2158 6.17469 +5.22926 6.52397 +5.16731 6.40625 +6.53348 7.269 +2.07834 2.39172 +9.65044 10.1519 +8.64551 10.1294 +9.29006 10.5993 +1.50639 2.83173 +5.71675 5.99216 +3.0783 3.35571 +0.115401 1.31431 +8.03988 8.11942 +3.11917 4.53956 +1.14552 1.1646 +5.34782 6.43017 +0.0701702 1.0368 +0.183335 0.440704 +6.33438 7.71607 +2.11533 2.64323 +7.12104 7.13366 +7.21548 8.26968 +3.13445 4.13568 +4.57452 4.74602 +2.60889 3.69846 +7.21184 7.47573 +6.87651 7.03405 +2.65431 3.94352 +1.50006 1.70087 +6.16344 7.54429 +7.02057 7.73067 +8.27833 9.01489 +0.500833 0.597845 +8.34751 9.88925 +2.80242 2.91837 +5.29424 6.079 +8.36276 9.10074 +0.216887 0.268335 +1.30798 3.16393 +3.93851 4.22658 +2.58028 3.14744 +9.31131 10.3451 +7.37262 8.84852 +4.45306 5.6723 +3.74535 4.0721 +4.90174 5.63875 +3.41847 4.65199 +3.10265 3.82548 +6.56126 6.97557 +2.57449 2.95098 +7.97418 9.06301 +9.2203 9.66829 +4.64922 4.96305 +8.83034 10.115 +6.6685 6.89847 +7.36585 7.48669 +8.66761 9.39287 +0.562216 0.961875 +7.56292 7.81006 +8.50715 8.95572 +0.572825 2.24755 +5.9367 6.06766 +-0.769578 0.776163 +4.48224 4.9553 +8.21069 9.29643 +8.57206 9.47175 +1.10032 1.21371 +3.76306 3.87152 +6.46197 8.18457 +6.96501 9.70727 +3.42357 3.93484 +0.818601 2.42743 +-0.119739 0.397938 +-0.378761 0.523892 +8.03394 9.35409 +3.60283 3.98864 +2.21789 2.70607 +-0.255329 0.319063 +6.20806 6.22609 +7.1283 8.04391 +3.73565 4.03638 +8.5374 9.10987 +5.22675 5.35072 +7.51777 7.58439 +9.12636 10.4159 +9.15003 9.40672 +0.217863 1.19883 +9.42416 9.9178 +2.55337 3.8088 +7.03655 7.98242 +9.17171 9.8047 +0.110162 0.722738 +3.16467 3.58897 +6.47244 7.12961 +1.0456 1.65614 +1.58456 1.62844 +1.79039 1.84035 +6.24286 7.07838 +9.08631 9.11684 +3.05068 3.40838 +2.81212 4.03665 +2.52011 3.09841 +8.06001 8.16356 +7.07649 7.52685 +2.47666 2.86548 +8.66241 8.95103 +-0.298116 0.662697 +0.822443 2.46125 +2.07619 2.33674 +4.84135 6.21034 +7.49625 8.13026 +7.85854 8.29618 +3.01722 3.37062 +6.54393 7.30306 +2.21113 2.30166 +8.32138 8.57349 +6.2995 6.33514 +3.0018 3.56886 +4.63378 5.52214 +6.71908 8.96715 +2.29809 2.95581 +8.34947 8.71096 +4.96902 5.32075 +9.51051 9.72733 +3.311 4.77789 +3.50233 3.66309 +4.95177 5.76002 +6.12876 7.22391 +6.27743 6.79393 +3.60638 3.6833 +5.20305 5.50848 +7.16065 8.88358 +9.45049 10.2539 +6.16892 7.0314 +8.08479 9.74516 +0.0717867 0.669987 +2.17569 3.34098 +4.81716 5.7509 +7.63999 8.01157 +5.87228 6.60363 +3.39621 4.35575 +4.96079 5.07901 +7.57639 8.82003 +8.27285 8.52609 +0.665858 1.64782 +1.74256 2.07126 +6.19512 6.4258 +0.664592 1.30896 +0.180682 1.43746 +6.46752 6.81303 +2.55562 3.08708 +9.33695 9.63312 +6.33821 6.77092 +7.88252 8.55026 +8.17937 8.45385 +-0.415294 0.793096 +5.22077 5.54553 +8.67808 9.10041 +1.72096 1.92024 +0.492778 1.48076 +2.29514 2.88531 +0.0934389 1.37614 +8.40297 9.11121 +3.66605 3.91717 +-0.274468 0.867811 +9.41428 9.56659 +1.22657 2.12792 +8.71336 9.85384 +5.09347 5.42905 +2.02877 2.36652 +5.99112 7.40703 +0.911618 3.48138 +4.84352 5.11131 +1.16309 2.08613 +5.58561 5.84805 +0.663543 1.08921 +1.83189 3.93269 +4.07731 4.38879 +4.04789 4.9989 +2.09457 3.61279 +2.00982 2.94396 +7.37537 7.66574 +5.08648 5.80122 +9.19959 10.2263 +4.26136 4.86194 +6.67875 7.61134 +1.27462 2.48399 +7.2237 7.82324 +-0.0141009 0.0441377 +8.32069 8.36192 +2.82562 3.0717 +-0.528918 1.25301 +1.90486 3.04714 +1.34489 1.75301 +3.14332 4.03322 +8.55351 10.8681 +9.09824 10.3828 +0.496868 0.622499 +7.11112 7.62765 +0.335233 0.528962 +6.71335 7.13937 +6.78574 7.71172 +9.13568 9.22251 +7.10299 7.64765 +3.64747 4.06685 +8.64041 9.40111 +2.43515 2.93081 +2.95476 3.68588 +0.0863751 0.777976 +6.5891 8.18165 +8.80986 10.0735 +0.568868 1.63785 +4.41677 5.42049 +8.72857 9.88426 +3.67467 4.25442 +8.98168 10.1087 +5.08611 5.50098 +1.28982 2.34422 +-0.914176 0.969847 +4.35042 4.42735 +4.02282 5.08164 +9.00566 9.4791 +2.71821 3.24065 +3.20252 3.24988 +8.61559 9.6733 +3.15157 4.7685 +3.59348 4.67872 +0.286864 0.36279 +8.40374 10.528 +7.53647 8.13523 +6.81591 6.90226 +7.68111 9.10704 +8.37958 8.73818 +3.25808 4.40893 +1.50348 3.00641 +0.20803 1.40949 +3.93771 4.84177 +2.79232 3.35329 +4.2666 4.63588 +0.341784 1.46241 +1.53063 2.06724 +8.58212 8.86194 +8.95411 9.70651 +8.71591 9.26292 +6.66088 6.7009 +3.95881 5.93917 +8.5823 8.76007 +-0.308958 0.34174 +1.03188 1.37677 +7.52675 9.84031 +4.27952 4.32984 +1.83465 2.27607 +8.12096 8.64922 +2.22605 4.40067 +0.00929139 0.871342 +0.376531 1.29354 +3.5257 4.30165 +1.95846 4.09589 +-0.200922 0.799272 +0.24432 1.76673 +4.73477 5.06514 +8.97059 9.2276 +2.89618 2.93969 +0.168256 1.03325 +3.44522 3.83622 +2.74889 2.76042 +6.07155 6.7979 +9.06484 9.09804 +7.56658 9.29215 +4.3084 5.45621 +-0.0786996 1.12809 +8.48249 9.74107 +6.4196 6.61469 +1.57119 1.87612 +3.15463 3.86251 +2.0089 2.57741 +6.53618 7.12035 +7.07901 7.29396 +0.114756 0.887413 +8.90806 9.65731 +4.0921 5.23407 +2.63441 2.92344 +4.31769 4.98832 +8.90336 9.26837 +8.25313 8.91204 +2.87758 4.00212 +-0.708243 0.789072 +3.28656 4.55872 +5.73177 5.80293 +5.40596 5.5844 +4.09318 4.57774 +6.16178 7.00613 +8.5514 10.5495 +6.83987 7.3056 +1.06341 1.97923 +7.82153 9.00722 +0.923069 1.42337 +1.83408 2.82331 +5.75305 7.23576 +0.241909 0.96721 +1.16645 2.10491 +5.41819 6.09839 +7.49242 7.69495 +0.347233 0.383681 +2.33245 2.53467 +4.91249 5.27759 +8.11182 9.2758 +0.0955456 0.548659 +-0.359909 0.48055 +1.64759 3.47097 +6.37855 7.40015 +0.423283 2.08857 +4.10068 4.46856 +2.58389 2.69626 +0.848483 2.72258 +8.67321 8.88903 +2.07607 3.42398 +3.11033 3.80741 +2.24735 3.48626 +8.11883 8.7687 +0.29959 1.41603 +4.84924 5.13641 +1.44102 1.74592 +1.13437 2.50296 +1.75876 3.09859 +4.75363 5.90838 +7.36423 8.20074 +5.51578 6.42652 +0.915633 1.86015 +9.44679 10.3479 +2.61691 3.60215 +6.26524 7.2538 +2.74326 3.12649 +5.83934 6.98592 +9.1111 10.4891 +2.27066 2.82709 +8.19359 8.67233 +0.834236 1.7066 +6.19288 7.21392 +-0.249843 0.891821 +2.5652 3.25132 +5.25356 5.88905 +3.99545 4.18918 +1.93186 2.51527 +4.44621 4.82421 +5.89181 7.36963 +2.77321 3.60627 +2.76444 3.88016 +2.50062 2.66105 +1.14846 1.66146 +2.951 4.81656 +3.81976 4.01061 +4.75674 5.59916 +6.74092 7.08289 +2.09989 2.32514 +0.220723 0.865303 +5.48107 5.71875 +1.48372 2.88941 +0.484577 1.12051 +8.93618 9.7185 +1.89769 3.65655 +2.0129 3.55214 +9.23173 10.3694 +0.286189 1.22753 +0.453785 1.55541 +2.24068 2.6541 +8.80917 10.4969 +7.12801 7.15222 +9.25745 9.9103 +5.73429 6.76901 +7.54454 8.47157 +1.96008 3.74997 +8.00837 9.25665 +1.66384 2.07613 +5.53014 5.97461 +-1.32495 1.33319 +4.58479 5.2263 +7.92048 8.75668 +6.87595 7.02522 +0.157713 0.389585 +7.48277 7.51261 +8.10714 8.38399 +0.0802723 0.587088 +1.13024 1.71135 +5.71769 6.84757 +3.08261 4.31054 +2.95952 5.09762 +6.62815 7.44256 +5.0805 5.8499 +3.38489 3.73265 +1.10644 2.18331 +4.70493 7.31686 +2.2253 2.6338 +0.778359 1.6265 +6.94211 7.2149 +4.20976 4.99342 +7.47792 7.67881 +7.06219 8.76137 +4.97677 6.12206 +6.30829 6.69361 +6.19977 6.76781 +9.67636 10.2172 +3.41958 3.69137 +0.374486 0.943711 +4.00837 4.80107 +8.85401 10.1325 +6.0938 7.8919 +1.51055 3.08998 +8.94594 10.3139 +1.06714 2.65511 +0.703202 0.850595 +4.87735 6.00659 +8.3067 8.39924 +7.78071 8.3155 +1.98737 2.81116 +6.86323 8.07974 +1.03479 1.34584 +0.490512 0.670211 +5.82122 6.1901 +5.50836 6.63385 +7.9192 8.9606 +0.913719 2.18983 +4.97151 5.70909 +4.19907 4.37712 +2.01188 2.63318 +7.84813 9.3771 +5.32667 7.48502 +8.50951 10.1006 +-0.551637 0.930509 +1.06511 2.23353 +1.91111 3.42663 +9.37528 9.55327 +7.27975 7.38741 +3.46676 4.83165 +7.36137 8.70333 +-0.295762 0.623228 +8.48558 8.81076 +2.71689 3.41873 +6.49265 8.11042 +5.25516 5.57336 +6.10462 7.05991 +8.76997 9.15164 +7.86196 8.30651 +7.82765 9.24604 +5.98573 6.34182 +6.45367 7.47857 +3.27018 5.10835 +1.3079 2.37423 +-0.261387 0.338113 +7.60683 8.81791 +4.7346 7.41988 +5.25597 5.28517 +3.76704 4.52226 +3.91774 6.66976 +5.69618 8.92667 +1.86148 3.07531 +5.57404 6.51438 +9.39049 9.77921 +2.38692 4.21416 +6.84909 7.23633 +7.2379 7.58761 +4.73485 6.11606 +7.80013 8.08105 +1.72701 3.40244 +2.44475 4.4072 +9.72565 9.77726 +3.35288 4.06493 +8.91215 9.92325 +8.67991 9.65865 +0.253195 0.764339 +4.23564 5.59497 +1.84752 2.14986 +-0.502957 0.528737 +1.32656 2.11347 +9.81563 10.0213 +7.60114 8.05035 +8.51797 8.83342 +-0.394604 1.41267 +7.71614 8.63514 +0.530249 0.968898 +2.90463 3.01675 +7.58098 8.71658 +-0.253747 1.28827 +1.832 2.39006 +7.2268 7.27225 +3.84076 4.66703 +2.2564 2.73185 +7.31508 8.46008 +4.99387 5.64948 +7.21239 7.79983 +7.60231 7.8473 +0.555482 1.41892 +1.25539 1.73665 +8.41561 8.96404 +5.06771 5.17664 +0.0655744 2.10718 +8.00222 8.65909 +7.48841 7.83609 +6.30909 6.89448 +9.1697 9.55942 +1.36259 2.22582 +-0.923854 0.994771 +3.43724 4.64053 +8.09411 8.19574 +4.84869 5.52805 +2.69802 3.4119 +9.0613 9.29405 +0.565216 0.687165 +5.93495 6.57426 +1.86925 2.75493 +1.41068 2.00824 +1.60612 1.62471 +3.11499 5.89909 +2.69806 3.90538 +3.76301 4.22135 +3.30065 4.70725 +5.56461 7.02137 +8.35335 8.99287 +4.79259 4.88508 +6.7911 7.52912 +8.14843 8.28583 +3.67629 5.06406 +5.71462 7.04747 +9.06721 9.99733 +4.87932 6.8586 +8.00814 9.57664 +7.03069 7.51623 +9.0989 9.57644 +2.70873 3.91296 +1.64425 1.7007 +6.53716 6.99033 +8.29874 8.74509 +1.88941 2.57626 +4.65337 5.23247 +9.04723 9.06665 +3.52258 3.61496 +1.1207 1.80143 +0.680601 1.98384 +2.94593 5.38692 +2.65685 2.67932 +9.00469 10.2054 +6.44318 7.2657 +4.66656 5.33893 +3.41719 4.72453 +3.12403 4.21748 +6.67973 6.81775 +3.54347 4.14978 +3.02554 3.50812 +3.91883 3.93657 +7.31721 7.89895 +1.86275 2.85473 +6.23266 6.4449 +7.59855 9.38013 +9.07084 9.49309 +0.557656 2.6851 +6.899 7.37693 +4.23162 5.84314 +8.54108 9.37672 +3.9513 4.79746 +7.299 8.29678 +5.58879 5.88551 +9.14992 9.22385 +9.1914 9.31788 +4.95663 5.56316 +2.16516 2.39538 +0.722262 1.89664 +7.76447 7.80026 +2.77772 3.39136 +9.59513 9.78635 +1.02728 1.2181 +7.32631 7.56611 +7.37389 7.46163 +6.87949 8.18689 +8.95602 9.81169 +5.85364 6.63434 +0.129136 2.13484 +7.09608 7.71167 +7.1487 8.34258 +7.48738 8.3172 +8.77247 9.95985 +7.6706 9.56828 +8.14268 8.61726 +6.5455 7.90871 +4.57866 4.78453 +3.63937 4.42349 +5.18905 5.36516 +4.68884 5.62995 +5.88338 7.83824 +-0.002979 0.145818 +4.42981 4.77141 +0.558593 1.07999 +6.91713 7.36159 +5.13948 6.20805 +3.34368 4.07112 +7.27365 7.8383 +9.6898 9.9514 +6.14332 6.75102 +2.16534 2.78843 +2.8007 4.37952 +7.67047 7.72955 +8.77377 9.85092 +1.26087 1.55193 +6.29788 6.58511 +7.68178 9.05777 +0.383336 1.21247 +2.55185 4.30874 +8.91971 9.21836 +3.67638 4.68596 +8.13843 9.13684 +-0.424353 1.97502 +2.71499 2.93977 +0.104447 0.387901 +4.09592 4.67009 +0.808593 0.920798 +5.01258 6.30662 +4.97668 6.57412 +8.44135 9.03816 +2.78932 3.72809 +6.71337 7.15128 +4.27234 4.50127 +6.78266 9.70351 +6.48026 7.51491 +7.36296 8.42283 +4.80339 7.3704 +6.24735 7.3132 +0.134626 0.364187 +2.73854 4.09422 +0.809997 1.19657 +6.41154 6.50244 +7.16847 8.56485 +1.53582 3.33985 +1.92874 2.86427 +6.95941 7.01378 +5.8592 6.54917 +2.51802 2.75622 +3.3894 3.6957 +2.2547 2.64693 +8.62054 9.1951 +8.86378 10.0003 +1.87892 2.28732 +3.83146 4.21484 +1.53262 1.99692 +7.86048 7.93125 +1.79437 2.68269 +3.92781 4.24119 +5.43044 5.47935 +0.322904 0.618854 +3.42383 5.18531 +4.00989 5.83612 +7.06304 8.76582 +5.88039 6.77654 +8.638 8.9479 +1.73391 2.09002 +1.04861 2.84779 +-0.313019 0.557659 +3.35245 4.1308 +9.05373 9.57205 +5.85684 6.49193 +6.00719 6.86421 +4.25244 4.65772 +5.15865 5.61529 +8.78498 9.77544 +8.33803 9.26452 +3.42915 4.92279 +8.29884 8.94035 +5.10232 5.35924 +4.33571 4.86695 +7.86184 7.90029 +7.34345 7.36214 +0.201624 0.800371 +9.05882 10.5503 +4.32188 5.03154 +-0.0456982 1.22298 +2.90921 3.60013 +1.69306 2.36564 +7.79029 9.15059 +4.65205 5.06538 +6.34552 8.32176 +7.92695 9.32585 +7.17903 8.09903 +9.53561 9.60287 +0.365723 1.23929 +0.542889 0.849053 +8.15061 8.93512 +6.40042 6.41053 +5.82666 6.5488 +1.00893 1.83717 +1.76021 2.11893 +7.61076 8.6242 +2.32513 3.4856 +4.39023 6.01094 +-0.11754 0.421848 +6.76371 6.94513 +4.67607 5.58732 +-0.201992 0.765553 +7.42926 7.44429 +2.57485 2.85339 +2.74138 4.13421 +8.21645 9.18107 +6.28184 6.4996 +7.129 7.74678 +7.76842 8.74924 +3.5359 4.35892 +3.04103 3.24376 +2.29389 2.92164 +6.96306 7.64415 +8.82053 9.04584 +1.19911 2.06167 +5.91357 7.6773 +0.150241 1.23291 +4.48681 5.41762 +6.89156 8.13443 +5.37828 5.79944 +2.13694 2.91102 +1.35932 2.08272 +6.14309 6.23278 +4.03202 5.88521 +7.23417 7.43704 +1.2501 2.60793 +2.12334 3.65727 +7.05722 8.77078 +0.437873 0.585933 +6.33338 9.16643 +2.44724 4.40234 +2.92012 3.64047 +1.2039 3.25195 +8.6611 10.0398 +8.0088 9.13622 +5.96562 7.08515 +5.45181 6.65246 +0.742546 2.38958 +4.12919 4.93571 +0.428823 0.84483 +1.45226 2.5869 +9.50727 10.0211 +7.69194 8.66273 +1.25706 2.44554 +5.23247 5.47762 +0.499178 1.70722 +7.26569 8.72467 +3.59815 5.50022 +1.03601 2.43445 +0.092414 0.927635 +3.7917 3.995 +6.21977 8.40398 +3.1513 3.81188 +9.80482 10.0951 +8.65564 9.33687 +2.06164 3.49152 +2.09754 2.34929 +0.66126 2.31888 +5.34832 6.82603 +7.91038 8.59105 +0.695523 0.800961 +2.33406 2.71629 +8.37774 10.9253 +9.7682 10.106 +9.44382 9.5743 +8.78009 9.47645 +1.87309 3.04127 +1.86724 2.13913 +3.30049 3.52416 +7.18508 7.6648 +1.3736 2.12153 +2.41879 5.06716 +1.87815 2.29743 +1.76646 2.06335 +9.73034 9.95475 +0.497489 0.686102 +6.96908 7.17338 +9.23111 10.0148 +3.30981 4.21787 +9.53311 10.3734 +-0.067709 0.147251 +8.44557 8.82047 +7.10407 7.47639 +0.834352 1.36908 +9.1598 10.6508 +4.22018 4.38279 +3.8295 3.95462 +3.97302 4.97247 +1.55856 2.31013 +0.0217962 0.486978 +1.69845 2.65786 +-0.489562 0.582187 +5.10621 5.6055 +9.8478 9.85919 +6.15389 6.92324 +7.11469 8.0418 +3.20625 3.78209 +5.93389 7.66892 +1.15134 1.18023 +6.84797 7.4239 +2.9483 3.22279 +-0.43205 0.764755 +7.17846 7.33313 +5.4729 8.26894 +6.19512 7.32132 +0.591934 0.767568 +0.49266 1.80691 +9.08272 9.72242 +5.85683 6.36905 +5.27625 7.13913 +3.60853 3.98155 +0.642811 1.10253 +1.27117 1.5329 +8.76096 9.61776 +4.9498 5.12847 +7.53282 7.80438 +1.40487 1.65657 +3.45329 3.84307 +3.25698 3.49614 +2.38651 2.89802 +8.23114 8.99016 +9.58516 10.4145 +5.5185 6.27733 +0.583068 0.892249 +1.93142 2.35084 +7.94845 9.22667 +2.47963 3.9005 +3.46106 3.86301 +7.77744 8.43735 +1.41072 1.73969 +9.12904 10.4307 +3.52227 3.66861 +5.4743 5.86487 +-0.51727 1.63657 +5.09861 7.03162 +5.14763 5.93411 +3.23526 3.47376 +0.9702 1.74063 +9.28366 10.3322 +1.80257 1.92265 +8.63597 9.08467 +4.16006 4.97753 +6.37418 6.39374 +5.82376 6.62429 +7.74751 8.68962 +1.63821 2.53399 +4.9864 6.40969 +0.680772 0.995608 +3.74344 3.83319 +0.898055 1.8593 +2.36839 2.39307 +7.21046 7.51006 +0.60893 2.91523 +3.15017 4.30412 +5.02219 6.28886 +4.60541 4.73379 +8.41196 8.58978 +8.84706 10.8198 +6.95807 7.54952 +5.54729 6.9315 +4.62574 4.73423 +3.35252 3.59865 +1.02207 1.71791 +3.16408 3.73993 +0.639222 1.69519 +7.57978 8.05813 +2.41371 2.77174 +8.65544 10.093 +6.31988 6.70758 +6.5301 8.39328 +0.578825 1.20331 +1.1243 2.07824 +5.86555 6.72397 +6.37103 6.81736 +1.12086 3.46541 +2.59503 3.44073 +5.27128 5.3616 +2.87331 3.4352 +5.48408 6.67916 +3.36016 4.09125 +0.813671 0.9811 +0.812162 3.22209 +6.85104 6.86306 +0.671311 0.979685 +2.75962 2.82659 +2.42186 2.49827 +7.82974 9.59669 +3.48851 3.60085 +8.47775 10.9574 +8.6863 10.6155 +0.196484 1.07469 +1.19293 1.45012 +5.79166 6.18466 +6.51597 6.6793 +9.78341 10.1992 +8.17879 9.59257 +6.96178 8.73165 +4.09161 4.31908 +3.19514 3.4072 +5.5101 6.32978 +0.188435 1.84481 +9.41738 10.0379 +1.46994 1.6294 +4.21915 5.39529 +5.46567 5.86638 +8.19414 9.201 +4.38616 4.55193 +2.31105 2.73345 +6.05897 6.12297 +8.84135 9.74232 +9.44943 10.2225 +3.27501 3.66059 +0.524904 1.74374 +7.7228 8.43799 +5.13274 5.82863 +8.2787 8.94491 +1.61463 2.03499 +7.04346 8.69977 +0.938308 2.38676 +0.00208037 0.0186158 +1.98744 2.05864 +7.05787 8.16211 +1.68383 2.04684 +2.24812 2.28257 +0.685061 1.2947 +2.25379 2.92827 +6.0052 6.24797 +7.06213 7.86344 +0.751849 2.96376 +0.0977921 0.513746 +8.43792 9.10545 +2.80769 3.09276 +9.19308 9.59741 +4.74365 4.99708 +8.41385 8.58422 +4.28093 5.9281 +4.26205 4.75417 +1.48035 1.61363 +1.4264 1.80922 +3.48365 4.52935 +1.78396 2.96351 +8.4134 8.96536 +8.65646 9.34781 +1.88027 2.97804 +8.92531 9.02743 +6.91815 7.88895 +5.68023 7.37521 +3.93105 4.6123 +0.385874 1.30785 +1.80151 2.24385 +8.43781 9.33927 +6.69643 8.001 +6.12062 6.673 +4.8316 6.63067 +9.00443 9.08204 +1.5651 2.65023 +3.57517 4.40231 +5.85127 8.02219 +8.02586 10.018 +2.00514 2.75138 +6.32104 7.84285 +8.90914 9.78319 +4.91325 6.27817 +3.87406 4.80327 +8.57887 9.30685 +1.40351 1.71079 +-0.217977 0.224497 +8.37711 9.56393 +5.54644 5.77714 +8.18206 8.36015 +0.774967 1.97899 +9.10434 10.1721 +9.39621 10.1135 +4.80108 4.90605 +9.45978 9.96227 +2.85412 4.05215 +5.71985 7.16735 +2.35081 2.82214 +9.34881 10.5899 +7.13014 7.82872 +4.54931 4.89725 +9.41397 9.9131 +8.90226 9.55276 +8.27995 9.83651 +9.2767 9.6053 +0.388751 1.40317 +5.01478 5.88869 +6.41521 7.21754 +1.22552 1.39067 +3.75771 3.81571 +4.39362 6.04592 +8.82639 8.84544 +4.59289 4.89208 +1.52235 1.64285 +1.85893 4.52056 +1.91781 2.78253 +3.34677 4.54987 +9.26905 10.6019 +7.10958 8.02083 +0.765257 1.66957 +2.17169 2.70214 +4.2293 6.38089 +1.41111 2.45992 +5.76864 6.85715 +2.19944 2.93182 +9.03727 9.6454 +3.82652 4.35225 +2.52642 3.09725 +7.77868 9.35844 +0.337665 1.00787 +1.92021 2.04418 +4.41862 5.95486 +9.47606 9.62386 +1.12113 1.55658 +5.26701 7.09712 +8.81478 9.34863 +6.29447 7.43847 +2.82379 3.57268 +7.9735 8.79936 +3.30176 5.50666 +6.36009 6.8864 +4.13583 5.00627 +0.510514 0.882245 +6.93864 7.78543 +2.04039 2.4298 +3.18337 3.19424 +4.20059 4.67088 +0.316687 0.707377 +0.169106 1.68194 +8.26665 10.2362 +1.1124 1.78306 +2.84603 3.33142 +9.48756 9.96651 +9.4301 9.7316 +0.234674 1.23981 +0.493232 0.522565 +1.342 1.41739 +2.57196 4.08221 +1.54201 2.52284 +5.32049 6.00052 +8.54218 8.59452 +-0.030524 1.64476 +2.31645 2.72528 +4.71898 4.92827 +0.0872997 1.74969 +0.994278 1.76964 +1.34411 2.77952 +0.156817 2.10245 +5.78094 6.34389 +3.09336 3.10563 +8.14245 9.0928 +9.34202 9.75484 +9.78415 10.0211 +4.68383 5.19384 +6.09441 7.90512 +6.74941 6.76118 +1.78693 1.91697 +2.34369 2.62141 +-0.20756 0.829082 +3.57681 5.11448 +2.44234 4.45153 +4.84521 5.31902 +1.80487 3.64498 +2.46125 3.02549 +-0.334514 0.64288 +8.06406 8.49886 +1.74559 2.54474 +6.05883 6.46529 +9.00014 10.2271 +8.00064 8.5061 +0.909467 0.980765 +8.65862 8.69736 +8.11457 8.77049 +3.93237 5.02485 +4.64507 5.34852 +3.92405 4.19449 +5.02381 5.21722 +3.76203 3.78396 +6.74925 7.34781 +8.2556 8.63585 +3.92521 3.99739 +1.44641 2.31509 +0.23516 0.917239 +4.4614 6.35489 +3.33221 3.95247 +1.73289 2.07919 +6.92385 7.55052 +8.74351 9.41125 +9.41451 10.1785 +7.4001 8.81081 +2.97038 3.12524 +7.26043 7.77569 +5.56625 5.59344 +5.70977 6.33362 +7.61443 8.43218 +1.05308 1.82947 +0.377602 1.57633 +6.42483 7.51505 +4.73011 5.43693 +7.72 8.09098 +9.20063 9.82287 +6.88273 7.35327 +6.88423 7.68356 +3.55293 3.6227 +0.947096 1.76021 +3.66411 5.67117 +9.31422 10.1035 +6.84847 6.98956 +2.16221 4.45806 +0.853284 3.15932 +2.48673 2.89793 +3.37633 3.90938 +1.6141 1.66363 +1.6658 3.01723 +0.419408 1.01736 +0.712239 0.791538 +2.25249 3.62425 +8.09772 10.2367 +1.46651 1.48148 +1.73233 2.0489 +7.42679 9.23232 +7.97446 9.53281 +2.74677 4.03955 +-0.169412 0.872795 +4.90663 5.40277 +7.62122 9.49334 +6.55971 7.34259 +3.71957 5.03775 +3.33226 4.06459 +0.634912 1.52603 +3.65506 4.09318 +4.31463 4.60534 +8.58287 9.85385 +0.334759 0.7232 +2.14027 2.866 +6.06611 6.3625 +2.53013 3.18764 +4.30913 4.89247 +6.53234 6.92328 +7.66419 8.61762 +1.37598 2.26754 +8.06279 8.80692 +5.28688 5.70608 +0.509396 1.34606 +8.80589 9.29765 +9.3801 10.3988 +0.402662 0.597735 +5.87213 6.63371 +2.79136 3.763 +6.20615 7.25189 +7.54065 9.62156 +4.12107 5.04454 +5.60294 6.69246 +1.20845 1.49272 +1.75679 2.56397 +2.83939 3.85147 +6.21362 6.71341 +9.01824 9.2388 +4.66617 5.04944 +1.48766 2.55674 +8.89442 9.42175 +5.29411 5.39531 +6.66271 8.68733 +0.730461 1.42466 +6.22927 6.55086 +0.566776 1.17299 +3.06104 4.17775 +5.28026 5.73966 +5.76071 7.61585 +7.83786 9.58106 +6.32199 6.46961 +8.89555 9.17429 +3.85772 4.97805 +6.63352 8.79211 +7.87234 7.94131 +6.53479 7.87979 +3.90293 4.50376 +6.21371 7.31788 +1.00497 1.75003 +6.90351 8.02435 +2.29142 3.9809 +6.26632 6.45283 +-0.0354471 1.31727 +8.80046 9.20169 +7.86905 8.36819 +0.848737 1.82393 +7.98136 9.40712 +3.97765 4.95399 +8.70252 9.26275 +3.13412 4.29389 +2.06446 3.55839 +7.67918 8.44509 +5.96082 6.40336 +1.20461 2.36924 +4.76741 5.74978 +9.41217 9.94305 +7.36736 8.07119 +3.44102 3.56957 +3.59893 4.52751 +4.2613 6.41628 +1.65321 3.02235 +3.70067 3.86657 +0.0176327 1.1215 +4.13592 4.88595 +8.73668 9.0834 +1.80944 2.95584 +6.05721 6.93009 +5.08206 5.38626 +1.86749 1.89392 +3.58284 4.10506 +0.0885586 1.47709 +5.46502 5.93066 +8.45338 8.47878 +3.46789 4.02317 +0.975506 1.15814 +7.12758 7.60073 +7.99582 8.56746 +3.11435 3.83805 +4.51166 4.52472 +8.39096 8.75934 +8.42208 9.66019 +2.48498 4.73703 +3.50301 4.81264 +6.40196 7.0733 +8.52138 8.82265 +1.49822 1.74634 +7.08547 7.93508 +3.47832 4.42948 +6.08646 6.20865 +4.46334 4.65278 +3.80008 4.08214 +3.4853 5.44308 +5.48109 6.18681 +6.59161 8.04307 +7.36554 7.38201 +5.2144 5.31725 +4.62607 7.25804 +1.24345 1.81263 +5.49248 8.16867 +6.4056 8.26316 +7.67828 8.56923 +2.46187 2.56974 +2.22942 3.27248 +7.14933 8.06682 +2.3236 2.95462 +4.18028 4.80535 +4.981 5.54215 +7.23261 7.34863 +4.96309 6.06396 +4.24402 4.44364 +0.917707 1.32687 +1.19806 1.65106 +3.7725 5.31412 +9.70021 9.84203 +5.99824 7.77474 +3.32636 3.84266 +8.59841 9.07653 +7.9916 9.14415 +0.786519 1.84655 +0.166394 1.47834 +2.87633 3.52808 +7.53804 9.56807 +6.14406 6.16189 +1.63428 3.96845 +1.10307 1.58897 +1.30032 2.85313 +7.89803 8.32723 +8.77593 8.90136 +1.68804 2.69447 +4.5956 4.6743 +7.39643 8.29839 +6.93629 7.82243 +6.10289 7.677 +1.83835 2.34295 +1.04506 1.91684 +8.95277 9.43817 +0.36153 0.643665 +1.02408 3.18963 +4.02972 4.40301 +2.80428 2.82552 +6.51718 6.64956 +0.185341 1.56607 +6.1658 7.59364 +4.09288 4.11687 +6.90205 7.16338 +5.0755 5.39478 +4.5614 4.83286 +5.8489 8.76295 +9.70079 10.0431 +8.44334 8.54714 +3.00139 3.66327 +5.34458 6.38895 +7.11481 7.96865 +4.66776 5.15678 +0.390138 0.53352 +2.01116 3.32839 +6.78761 6.97068 +4.57477 5.0724 +1.14098 1.36134 +7.4559 8.30327 +0.700932 2.40437 +1.90469 1.99046 +4.30064 5.11485 +7.84433 8.48543 +5.96212 7.49882 +3.93055 3.96317 +0.546327 1.04814 +8.96011 9.0404 +7.89255 8.06149 +0.669924 2.6944 +-0.00972314 0.837474 +6.07199 6.37467 +2.73659 3.19833 +5.9576 7.10966 +9.1316 9.14737 +5.26101 6.59184 +5.77697 8.08876 +0.68623 0.782805 +0.842619 1.39893 +5.82075 6.15957 +4.36394 4.88479 +7.1828 7.90107 +3.3331 4.39923 +6.54243 7.24966 +2.809 2.96491 +4.18514 4.61948 +4.95453 5.33929 +8.33288 9.52867 +9.05785 10.4276 +2.58917 4.74403 +1.34279 1.89014 +4.93626 5.75424 +7.75031 7.92788 +9.00904 9.02402 +3.91286 5.15124 +6.98486 7.34688 +-0.173169 0.415019 +0.652242 1.51556 +3.50184 5.30486 +3.72563 4.09022 +4.60463 6.58985 +3.34219 4.31833 +2.55445 2.58651 +6.14573 6.3669 +4.52336 6.37342 +9.37606 9.76836 +2.4198 3.36929 +2.89109 3.66974 +5.62463 6.05989 +0.674219 1.84165 +0.590017 1.71153 +1.54622 2.10277 +6.48003 6.55663 +3.56355 3.98573 +0.743671 1.87049 +3.27833 6.0722 +4.76267 6.9967 +2.80188 4.03037 +0.372694 0.482111 +5.73987 5.9529 +8.84732 9.49033 +0.833944 1.8157 +4.06126 4.36615 +0.884619 2.34622 +6.86723 6.99141 +8.07737 9.05193 +8.35903 9.00761 +8.84777 9.74001 +8.58058 9.05479 +8.28076 8.44566 +4.55155 5.65475 +2.44314 3.38966 +3.22172 4.50395 +7.1808 7.90376 +0.639636 1.72606 +5.46807 5.94322 +9.02146 9.87864 +-0.628472 0.655557 +4.29775 5.9553 +6.77525 7.38152 +6.51827 6.93542 +8.95252 9.52939 +0.755406 1.19973 +7.69455 7.86912 +0.170143 1.12949 +7.69254 8.08221 +2.08238 3.27051 +1.28662 1.78628 +1.21208 2.79391 +-0.155739 1.7071 +8.28833 9.10011 +5.77789 6.6954 +1.98395 2.35216 +5.77469 6.05177 +2.77565 5.81092 +-1.53416 2.30576 +6.93529 8.04506 +3.91553 4.55593 +5.57201 6.29071 +1.54149 1.86613 +4.09163 4.31234 +8.47834 11.1229 +5.70376 7.02981 +2.24683 3.79925 +5.4793 6.41036 +5.27644 6.81729 +0.13273 0.371437 +1.22959 1.41618 +0.551957 1.03276 +2.01269 2.4018 +8.77113 9.09395 +8.11753 8.46262 +0.39406 0.783705 +5.35964 5.48227 +7.24727 8.23233 +7.74525 8.85748 +0.0115736 0.882607 +1.78575 2.19684 +8.32514 9.0503 +3.11074 3.34975 +0.847464 2.13237 +0.310898 0.393528 +8.68841 10.518 +1.10032 1.83755 +2.42286 3.02554 +1.16364 2.80986 +1.46419 2.11421 +7.46021 7.90273 +6.86556 7.62542 +1.91466 3.79843 +3.1056 3.83969 +3.41591 4.26565 +0.285122 1.21372 +3.75441 5.52385 +1.07643 2.63403 +6.17341 7.67244 +9.13122 9.5132 +4.39696 6.15885 +3.7207 4.07729 +6.80782 7.1958 +6.65933 6.67105 +8.51535 8.7263 +5.98305 7.17759 +2.19609 2.46108 +8.21186 8.96908 +2.94729 3.60562 +3.31907 3.9297 +0.463492 0.626603 +2.62143 3.55089 +5.76898 6.79002 +1.45502 1.56525 +4.80797 5.62389 +5.87337 6.70588 +2.92765 3.50929 +0.412987 0.951057 +3.64594 4.40269 +-0.043401 0.502176 +4.54802 5.44613 +1.20218 1.8732 +2.75547 2.96745 +7.10348 7.7945 +9.74845 9.98835 +4.83718 6.4836 +2.30563 2.5903 +4.74016 6.30789 +6.42192 6.93329 +5.37294 6.73938 +2.4365 3.05787 +1.08283 3.79193 +4.90426 5.93563 +3.8874 4.83301 +0.13909 0.983027 +4.07407 5.61421 +8.62875 10.6851 +8.10233 8.29952 +2.23047 2.4691 +7.34617 7.39475 +1.66309 2.3032 +7.11207 10.0686 +4.52412 6.38666 +2.48323 2.96878 +7.47877 8.86547 +2.67607 4.33436 +6.83659 8.21075 +2.87313 3.39011 +2.81911 4.07729 +0.227877 0.657898 +6.57843 7.14311 +-0.591405 1.56925 +7.08018 7.59 +9.09558 9.3923 +9.48544 9.79474 +0.740233 2.33129 +8.51111 11.134 +7.79219 8.0281 +1.73821 1.89316 +9.21077 9.29488 +5.38354 6.46025 +4.30403 4.5472 +0.0893758 0.919238 +7.94464 8.51053 +5.27119 6.3741 +5.22476 6.00588 diff --git a/geom_bottleneck/tests/data/test_013_A b/geom_bottleneck/tests/data/test_013_A new file mode 100644 index 0000000..51cff1c --- /dev/null +++ b/geom_bottleneck/tests/data/test_013_A @@ -0,0 +1,5 @@ +7.50638 7.78005 +0.991758 2.12178 +5.18481 6.61702 +6.14703 7.08581 +4.09936 4.83024 diff --git a/geom_bottleneck/tests/data/test_013_B b/geom_bottleneck/tests/data/test_013_B new file mode 100644 index 0000000..be62ed3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_013_B @@ -0,0 +1,5 @@ +5.8232 6.36308 +2.16066 2.48668 +2.38754 4.91418 +4.77403 5.43982 +0.291412 1.11147 diff --git a/geom_bottleneck/tests/data/test_014_A b/geom_bottleneck/tests/data/test_014_A new file mode 100644 index 0000000..f7f90ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_014_A @@ -0,0 +1 @@ +1.0 1.0 diff --git a/geom_bottleneck/tests/data/test_014_B b/geom_bottleneck/tests/data/test_014_B new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_014_B @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/test_015_A b/geom_bottleneck/tests/data/test_015_A new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_015_A @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/test_015_B b/geom_bottleneck/tests/data/test_015_B new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_015_B @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/test_016_A b/geom_bottleneck/tests/data/test_016_A new file mode 100644 index 0000000..151d4b1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_016_A @@ -0,0 +1,220 @@ +1.391781911475341 1.391781911475341 +1.395142124726278 1.395142124726278 +1.514181227875788 1.514181227875788 +1.528291566797427 1.528291566797427 +1.585389310674157 1.585389310674157 +1.629232116709072 1.629232116709072 +1.641428662445941 1.641428662445941 +1.646998748860116 1.646998748860116 +1.652915988616469 1.652915988616469 +1.69199679556404 1.69199679556404 +1.705727462482595 1.705727462482595 +1.706819293048617 1.706819293048617 +1.720175733750729 1.720175733750729 +1.728031840308488 1.728031840308488 +1.73797421040929 1.73797421040929 +1.739519744204842 1.739519744204842 +1.76132425248022 1.76132425248022 +1.767766952966369 1.767766952966369 +1.792444271021371 1.792444271021371 +1.831487552809192 1.831487552809192 +1.837086616049901 1.837086616049901 +1.851186504948943 1.851186504948943 +1.860502132730509 1.860502132730509 +1.8619433117852 1.8619433117852 +1.878229072834972 1.878229072834972 +1.880655074837347 1.880655074837347 +1.883647832802556 1.883647832802556 +1.884127769927503 1.884127769927503 +1.892969784466709 1.892969784466709 +1.916936460787894 1.916936460787894 +1.931545068229315 1.931545068229315 +1.937626522143119 1.937626522143119 +1.942267721488891 1.942267721488891 +1.963295334827521 1.963295334827521 +1.975655395743736 1.975655395743736 +1.981448090925679 1.981448090925679 +1.986220565173897 1.986220565173897 +1.98709020812351 1.98709020812351 +1.989420269013254 1.989420269013254 +2.007874648480185 2.007874648480185 +2.012179388983059 2.012179388983059 +2.019051972834053 2.019051972834053 +2.023278848058142 2.023278848058142 +2.026190677562545 2.026190677562545 +2.041594763633561 2.041594763633561 +2.042508934597344 2.042508934597344 +2.04305394648524 2.04305394648524 +2.052514683218775 2.052514683218775 +2.059038785694094 2.059038785694094 +2.062577320792516 2.062577320792516 +2.063488177732052 2.063488177732052 +2.067806664626417 2.067806664626417 +2.073013782498534 2.073013782498534 +2.08646120854976 2.08646120854976 +2.098476357223667 2.098476357223667 +2.101378199886176 2.101378199886176 +2.101927506425904 2.101927506425904 +2.12671744783454 2.12671744783454 +2.143966150630584 2.143966150630584 +2.145312642688415 2.145312642688415 +2.148704396208969 2.148704396208969 +2.153092682531471 2.153092682531471 +2.157553654759374 2.157553654759374 +2.176659075756566 2.176659075756566 +2.177260578806816 2.177260578806816 +2.179141269427014 2.179141269427014 +2.201895416482074 2.201895416482074 +2.202563945779844 2.202563945779844 +2.205113735193028 2.205113735193028 +2.207345865351049 2.207345865351049 +2.208922099676958 2.208922099676958 +2.218057898922937 2.218057898922937 +2.228610453267036 2.228610453267036 +2.241314066596301 2.241314066596301 +2.242145210071643 2.242145210071643 +2.253976266568437 2.253976266568437 +2.255324860119305 2.255324860119305 +2.271300972641221 2.271300972641221 +2.279438361991067 2.279438361991067 +2.286592331830957 2.286592331830957 +2.287159411646074 2.287159411646074 +2.296653147995115 2.296653147995115 +2.301754785182811 2.301754785182811 +2.30409930499031 2.30409930499031 +2.32141477565108 2.32141477565108 +2.347789281926012 2.347789281926012 +2.347827987256373 2.347827987256373 +2.349391321950732 2.349391321950732 +2.350129292983257 2.350129292983257 +2.358679083392328 2.358679083392328 +2.372845273125388 2.372845273125388 +2.385040766846267 2.385040766846267 +2.42114588843816 2.42114588843816 +2.425116524931602 2.425116524931602 +2.426518521893022 2.426518521893022 +2.43211651886311 2.43211651886311 +2.441302771998711 2.441302771998711 +2.446429340510857 2.446429340510857 +2.446547553904861 2.446547553904861 +2.45764765793376 2.45764765793376 +2.461222149682938 2.461222149682938 +2.467900747394114 2.467900747394114 +2.473214152160872 2.473214152160872 +2.5 2.5 +2.503557913626332 2.503557913626332 +2.504315621146863 2.504315621146863 +2.515634290122204 2.515634290122204 +2.516231935083851 2.516231935083851 +2.517558892374071 2.517558892374071 +2.526325773757754 2.526325773757754 +2.531164001388939 2.531164001388939 +2.53128061055404 2.53128061055404 +2.539387277827314 2.539387277827314 +2.540864599180268 2.540864599180268 +2.548084457784768 2.548084457784768 +2.548923292215475 2.548923292215475 +2.551730202825644 2.551730202825644 +2.553178578801818 2.553178578801818 +2.560295747947446 2.560295747947446 +2.566321603108612 2.566321603108612 +2.568932286976676 2.568932286976676 +2.574887688783916 2.574887688783916 +2.581809142325336 2.581809142325336 +2.584541960262555 2.584541960262555 +2.585511915815223 2.585511915815223 +2.592970592044868 2.592970592044868 +2.596055336381078 2.596055336381078 +2.598560573626668 2.598560573626668 +2.614019084614256 2.614019084614256 +2.618463725327216 2.618463725327216 +2.622883674481145 2.622883674481145 +2.627791161528314 2.627791161528314 +2.63535653879261 2.63535653879261 +2.654825898255443 2.654825898255443 +2.660423271276714 2.660423271276714 +2.667148030102869 2.667148030102869 +2.67012591760915 2.67012591760915 +2.698712599567882 2.698712599567882 +2.72180967799905 2.72180967799905 +2.732466204434637 2.732466204434637 +2.734187392905275 2.734187392905275 +2.737296308103857 2.737296308103857 +2.745724923243991 2.745724923243991 +2.749541709159369 2.749541709159369 +2.752925621447035 2.752925621447035 +2.754183973113479 2.754183973113479 +2.763972022430258 2.763972022430258 +2.766941997926879 2.766941997926879 +2.773850925522978 2.773850925522978 +2.777506755238121 2.777506755238121 +2.780333194223143 2.780333194223143 +2.783060349483276 2.783060349483276 +2.78679029681548 2.78679029681548 +2.786792895521339 2.786792895521339 +2.795170825459034 2.795170825459034 +2.801104989227437 2.801104989227437 +2.80525433080833 2.80525433080833 +2.805376738133109 2.805376738133109 +2.806844454092663 2.806844454092663 +2.811611818684648 2.811611818684648 +2.811994908451803 2.811994908451803 +2.816002798930236 2.816002798930236 +2.816814002472584 2.816814002472584 +2.818569391261086 2.818569391261086 +2.821660827076439 2.821660827076439 +2.822317588351085 2.822317588351085 +2.824910409962511 2.824910409962511 +2.829322097471409 2.829322097471409 +2.833852169620359 2.833852169620359 +2.839287537694811 2.839287537694811 +2.841714730677953 2.841714730677953 +2.841715058318205 2.841715058318205 +2.851653306950001 2.851653306950001 +2.853639002902003 2.853639002902003 +2.85515962291442 2.85515962291442 +2.855333736885793 2.855333736885793 +2.872540314564304 2.872540314564304 +2.879449214478037 2.879449214478037 +2.881003856158217 2.881003856158217 +2.881074731438092 2.881074731438092 +2.893589165559115 2.893589165559115 +2.898664743213686 2.898664743213686 +2.90387832180792 2.90387832180792 +2.919095859678745 2.919095859678745 +2.924945175440496 2.924945175440496 +2.931795145696962 2.931795145696962 +2.932285006979528 2.932285006979528 +2.934606807227626 2.934606807227626 +2.936392671567475 2.936392671567475 +2.953794710898493 2.953794710898493 +2.958055395706548 2.958055395706548 +2.960407744013656 2.960407744013656 +2.960759715914242 2.960759715914242 +2.969702548922556 2.969702548922556 +2.970149844982665 2.970149844982665 +2.978953970679893 2.978953970679893 +2.979075864664287 2.979075864664287 +2.984665519558418 2.984665519558418 +3.04548240149063 3.04548240149063 +3.050688336416719 3.050688336416719 +3.05773927378742 3.05773927378742 +3.059596740753369 3.059596740753369 +3.059762479996741 3.059762479996741 +3.088543279751235 3.088543279751235 +3.093580813520995 3.093580813520995 +3.104787362108069 3.104787362108069 +3.173380191779681 3.173380191779681 +3.583124637167399 3.583124637167399 +3.630658112409034 3.630658112409034 +3.631421639368965 3.631421639368965 +3.751087101339956 3.751087101339956 +3.800845709568037 3.800845709568037 +3.846558940956666 3.846558940956666 +4 4 +4 4 +4.076238038291317 4.076238038291317 +4.455547086147983 4.455547086147983 +5.356087357608394 5.356087357608394 +5.54364842773721 5.54364842773721 +7.587654388717225 7.587654388717225 diff --git a/geom_bottleneck/tests/data/test_016_B b/geom_bottleneck/tests/data/test_016_B new file mode 100644 index 0000000..bb8655a --- /dev/null +++ b/geom_bottleneck/tests/data/test_016_B @@ -0,0 +1,193 @@ +1.167089173446239 1.167089173446239 +1.256234452640111 1.256234452640111 +1.303693422257498 1.303693422257498 +1.413255970488646 1.413255970488646 +1.697910382446573 1.697910382446573 +1.718844728805093 1.718844728805093 +1.734124820632724 1.734124820632724 +1.749572938304276 1.749572938304276 +1.770320424526358 1.770320424526358 +1.786344763036807 1.786344763036807 +1.810054737907635 1.810054737907635 +1.815127306170105 1.815127306170105 +1.837806648681218 1.837806648681218 +1.870552189043019 1.870552189043019 +1.897240351979503 1.897240351979503 +1.935562152643027 1.935562152643027 +1.952562418976663 1.952562418976663 +1.959552126104175 1.959552126104175 +1.979899732318601 1.979899732318601 +2.00044500769347 2.00044500769347 +2.028951227523087 2.028951227523087 +2.037678749316724 2.037678749316724 +2.047911420446857 2.047911420446857 +2.075181804515723 2.075181804515723 +2.077245386452578 2.077245386452578 +2.084751316684838 2.084751316684838 +2.084860886126203 2.084860886126203 +2.103286477421968 2.103286477421968 +2.106856827309345 2.106856827309345 +2.113139266068691 2.113139266068691 +2.114594962503455 2.114594962503455 +2.115917727493158 2.115917727493158 +2.122335878797089 2.122335878797089 +2.127359082726206 2.127359082726206 +2.131673381033273 2.131673381033273 +2.155015793320908 2.155015793320908 +2.162480684365264 2.162480684365264 +2.195207236194009 2.195207236194009 +2.203279931784429 2.203279931784429 +2.205567995563669 2.205567995563669 +2.212933962936773 2.212933962936773 +2.215081271089993 2.215081271089993 +2.225989037578865 2.225989037578865 +2.24218929203347 2.24218929203347 +2.246321319993257 2.246321319993257 +2.280059407166517 2.280059407166517 +2.284117669032543 2.284117669032543 +2.293233992770926 2.293233992770926 +2.298815356955373 2.298815356955373 +2.300542634724628 2.300542634724628 +2.326408290042679 2.326408290042679 +2.328797162040625 2.328797162040625 +2.36025798094028 2.36025798094028 +2.365031313604634 2.365031313604634 +2.372266311053883 2.372266311053883 +2.400053902049271 2.400053902049271 +2.409134054334209 2.409134054334209 +2.411368235895246 2.411368235895246 +2.415934766378347 2.415934766378347 +2.420989857074179 2.420989857074179 +2.422520269961376 2.422520269961376 +2.43377629944218 2.43377629944218 +2.449308615746858 2.449308615746858 +2.452936540056068 2.452936540056068 +2.453698388060092 2.453698388060092 +2.454711357943602 2.454711357943602 +2.459202673400056 2.459202673400056 +2.493778305287384 2.493778305287384 +2.537394117473177 2.537394117473177 +2.544674753106669 2.544674753106669 +2.558904304820755 2.558904304820755 +2.563089994365716 2.563089994365716 +2.565476194422898 2.565476194422898 +2.599756049189921 2.599756049189921 +2.603619661709009 2.603619661709009 +2.609775379385211 2.609775379385211 +2.622552038976658 2.622552038976658 +2.623798471910885 2.623798471910885 +2.635711198661633 2.635711198661633 +2.644229304223612 2.644229304223612 +2.661919064427223 2.661919064427223 +2.666783921498494 2.666783921498494 +2.675503310152301 2.675503310152301 +2.684228699964661 2.684228699964661 +2.696854617267681 2.696854617267681 +2.700538654666735 2.700538654666735 +2.744886611436907 2.744886611436907 +2.748618547996708 2.748618547996708 +2.757981496641135 2.757981496641135 +2.774766825791652 2.774766825791652 +2.784491736143893 2.784491736143893 +2.796482184304273 2.796482184304273 +2.800849254751463 2.800849254751463 +2.816963410000067 2.816963410000067 +2.825207379914743 2.825207379914743 +2.831286409028398 2.831286409028398 +2.844827082550712 2.844827082550712 +2.853558438121966 2.853558438121966 +2.859806035663089 2.859806035663089 +2.878956033959891 2.878956033959891 +2.886422825109222 2.886422825109222 +2.891566924618832 2.891566924618832 +2.892028419188578 2.892028419188578 +2.893138900330932 2.893138900330932 +2.894250936382814 2.894250936382814 +2.90112201577666 2.90112201577666 +2.902172795370005 2.902172795370005 +2.90967533504119 2.90967533504119 +2.919687125962211 2.919687125962211 +2.923711238894001 2.923711238894001 +2.929041907338841 2.929041907338841 +2.938734873084349 2.938734873084349 +2.939642428979572 2.939642428979572 +2.943010909640486 2.943010909640486 +2.944210926048103 2.944210926048103 +2.951091358234723 2.951091358234723 +2.953950275008233 2.953950275008233 +2.966943157369611 2.966943157369611 +2.982522008227535 2.982522008227535 +2.992174049247434 2.992174049247434 +2.993098995839607 2.993098995839607 +2.995311055519335 2.995311055519335 +2.996708164866609 2.996708164866609 +2.999922110096644 2.999922110096644 +3 3 +3.000364533251431 3.000364533251431 +3.003840990677832 3.003840990677832 +3.006672301312824 3.006672301312824 +3.016489409140306 3.016489409140306 +3.021123787004333 3.021123787004333 +3.039117818612596 3.039117818612596 +3.039555193616473 3.039555193616473 +3.049952247267922 3.049952247267922 +3.057673482371216 3.057673482371216 +3.06920083507411 3.06920083507411 +3.075505231082782 3.075505231082782 +3.079038628197304 3.079038628197304 +3.084265889701239 3.084265889701239 +3.086837468106297 3.086837468106297 +3.103873984398081 3.103873984398081 +3.11528125482979 3.11528125482979 +3.119720021802376 3.119720021802376 +3.132543753577128 3.132543753577128 +3.141822873359038 3.141822873359038 +3.143502053175705 3.143502053175705 +3.153232877003746 3.153232877003746 +3.157586960809866 3.157586960809866 +3.157966892275408 3.157966892275408 +3.163583225161638 3.163583225161638 +3.178188125342772 3.178188125342772 +3.178475867931057 3.178475867931057 +3.179372297765929 3.179372297765929 +3.186437137237586 3.186437137237586 +3.188053957464282 3.188053957464282 +3.199351610026191 3.199351610026191 +3.204566427513051 3.204566427513051 +3.22885278850648 3.22885278850648 +3.229088648916556 3.229088648916556 +3.236685523936269 3.236685523936269 +3.239854786600373 3.239854786600373 +3.255809161351669 3.255809161351669 +3.287718056143732 3.287718056143732 +3.294038308299402 3.294038308299402 +3.313688277153076 3.313688277153076 +3.325783245946608 3.325783245946608 +3.331072954808429 3.331072954808429 +3.354962852285211 3.354962852285211 +3.357502741262644 3.357502741262644 +3.373668509804576 3.373668509804576 +3.408653045775418 3.408653045775418 +3.416281541503763 3.416281541503763 +3.443144279972986 3.443144279972986 +3.492970564191033 3.492970564191033 +3.493767805580122 3.493767805580122 +3.559084134799019 3.559084134799019 +3.559898699300211 3.559898699300211 +3.833585501974904 3.833585501974904 +4.099502076836052 4.099502076836052 +4.484082147277348 4.484082147277348 +4.505718324707756 4.505718324707756 +4.891723119528026 4.891723119528026 +5.065300494905414 5.065300494905414 +5.188599238535201 5.188599238535201 +5.36134479630535 5.36134479630535 +5.609786508140671 5.609786508140671 +7.08640314680382 7.08640314680382 +7.113765883549079 7.113765883549079 +7.328944131981744 7.328944131981744 +7.63625182217108 7.63625182217108 +7.716743341311718 7.716743341311718 +7.938093404092351 7.938093404092351 +8.112783377863046 8.112783377863046 +8.131485096731454 8.131485096731454 diff --git a/geom_bottleneck/tests/data/test_100_A b/geom_bottleneck/tests/data/test_100_A new file mode 100644 index 0000000..e02a950 --- /dev/null +++ b/geom_bottleneck/tests/data/test_100_A @@ -0,0 +1,2 @@ +0 3 +6 12 diff --git a/geom_bottleneck/tests/data/test_100_B b/geom_bottleneck/tests/data/test_100_B new file mode 100644 index 0000000..f757173 --- /dev/null +++ b/geom_bottleneck/tests/data/test_100_B @@ -0,0 +1,2 @@ +3 5 +5 13 diff --git a/geom_bottleneck/tests/data/test_101_A b/geom_bottleneck/tests/data/test_101_A new file mode 100644 index 0000000..5fe22b1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_101_A @@ -0,0 +1,2 @@ +8 11 +9 11 diff --git a/geom_bottleneck/tests/data/test_101_B b/geom_bottleneck/tests/data/test_101_B new file mode 100644 index 0000000..ea19ef6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_101_B @@ -0,0 +1,2 @@ +3 6 +5 8 diff --git a/geom_bottleneck/tests/data/test_102_A b/geom_bottleneck/tests/data/test_102_A new file mode 100644 index 0000000..1cd65e9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_102_A @@ -0,0 +1,2 @@ +7 8 +9 16 diff --git a/geom_bottleneck/tests/data/test_102_B b/geom_bottleneck/tests/data/test_102_B new file mode 100644 index 0000000..3ffa9cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_102_B @@ -0,0 +1,2 @@ +1 10 +9 12 diff --git a/geom_bottleneck/tests/data/test_103_A b/geom_bottleneck/tests/data/test_103_A new file mode 100644 index 0000000..d4c86c9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_103_A @@ -0,0 +1,2 @@ +5 7 +10 15 diff --git a/geom_bottleneck/tests/data/test_103_B b/geom_bottleneck/tests/data/test_103_B new file mode 100644 index 0000000..c9a898a --- /dev/null +++ b/geom_bottleneck/tests/data/test_103_B @@ -0,0 +1,2 @@ +1 2 +1 7 diff --git a/geom_bottleneck/tests/data/test_104_A b/geom_bottleneck/tests/data/test_104_A new file mode 100644 index 0000000..373ae44 --- /dev/null +++ b/geom_bottleneck/tests/data/test_104_A @@ -0,0 +1,2 @@ +6 11 +3 6 diff --git a/geom_bottleneck/tests/data/test_104_B b/geom_bottleneck/tests/data/test_104_B new file mode 100644 index 0000000..e382a3b --- /dev/null +++ b/geom_bottleneck/tests/data/test_104_B @@ -0,0 +1,2 @@ +3 9 +10 17 diff --git a/geom_bottleneck/tests/data/test_105_A b/geom_bottleneck/tests/data/test_105_A new file mode 100644 index 0000000..21b1cc4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_105_A @@ -0,0 +1,2 @@ +5 14 +2 7 diff --git a/geom_bottleneck/tests/data/test_105_B b/geom_bottleneck/tests/data/test_105_B new file mode 100644 index 0000000..3ab6543 --- /dev/null +++ b/geom_bottleneck/tests/data/test_105_B @@ -0,0 +1,2 @@ +5 12 +3 12 diff --git a/geom_bottleneck/tests/data/test_106_A b/geom_bottleneck/tests/data/test_106_A new file mode 100644 index 0000000..8d3ffb8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_106_A @@ -0,0 +1,2 @@ +7 11 +7 15 diff --git a/geom_bottleneck/tests/data/test_106_B b/geom_bottleneck/tests/data/test_106_B new file mode 100644 index 0000000..760ada5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_106_B @@ -0,0 +1,2 @@ +4 12 +6 13 diff --git a/geom_bottleneck/tests/data/test_107_A b/geom_bottleneck/tests/data/test_107_A new file mode 100644 index 0000000..79a621d --- /dev/null +++ b/geom_bottleneck/tests/data/test_107_A @@ -0,0 +1,2 @@ +9 19 +1 7 diff --git a/geom_bottleneck/tests/data/test_107_B b/geom_bottleneck/tests/data/test_107_B new file mode 100644 index 0000000..43e4294 --- /dev/null +++ b/geom_bottleneck/tests/data/test_107_B @@ -0,0 +1,2 @@ +0 1 +1 3 diff --git a/geom_bottleneck/tests/data/test_108_A b/geom_bottleneck/tests/data/test_108_A new file mode 100644 index 0000000..c2035e5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_108_A @@ -0,0 +1,2 @@ +9 19 +7 16 diff --git a/geom_bottleneck/tests/data/test_108_B b/geom_bottleneck/tests/data/test_108_B new file mode 100644 index 0000000..618c2c8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_108_B @@ -0,0 +1,2 @@ +5 13 +0 9 diff --git a/geom_bottleneck/tests/data/test_109_A b/geom_bottleneck/tests/data/test_109_A new file mode 100644 index 0000000..d16f551 --- /dev/null +++ b/geom_bottleneck/tests/data/test_109_A @@ -0,0 +1,2 @@ +8 9 +3 10 diff --git a/geom_bottleneck/tests/data/test_109_B b/geom_bottleneck/tests/data/test_109_B new file mode 100644 index 0000000..02f9518 --- /dev/null +++ b/geom_bottleneck/tests/data/test_109_B @@ -0,0 +1,2 @@ +4 9 +6 13 diff --git a/geom_bottleneck/tests/data/test_110_A b/geom_bottleneck/tests/data/test_110_A new file mode 100644 index 0000000..f013fd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_110_A @@ -0,0 +1,2 @@ +3 5 +1 10 diff --git a/geom_bottleneck/tests/data/test_110_B b/geom_bottleneck/tests/data/test_110_B new file mode 100644 index 0000000..f443b07 --- /dev/null +++ b/geom_bottleneck/tests/data/test_110_B @@ -0,0 +1,2 @@ +7 10 +3 5 diff --git a/geom_bottleneck/tests/data/test_111_A b/geom_bottleneck/tests/data/test_111_A new file mode 100644 index 0000000..fcadd44 --- /dev/null +++ b/geom_bottleneck/tests/data/test_111_A @@ -0,0 +1,2 @@ +10 19 +3 4 diff --git a/geom_bottleneck/tests/data/test_111_B b/geom_bottleneck/tests/data/test_111_B new file mode 100644 index 0000000..569a5d5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_111_B @@ -0,0 +1,2 @@ +5 6 +10 15 diff --git a/geom_bottleneck/tests/data/test_112_A b/geom_bottleneck/tests/data/test_112_A new file mode 100644 index 0000000..7d421ec --- /dev/null +++ b/geom_bottleneck/tests/data/test_112_A @@ -0,0 +1,2 @@ +1 5 +7 8 diff --git a/geom_bottleneck/tests/data/test_112_B b/geom_bottleneck/tests/data/test_112_B new file mode 100644 index 0000000..ec7a9a1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_112_B @@ -0,0 +1,2 @@ +4 11 +9 17 diff --git a/geom_bottleneck/tests/data/test_113_A b/geom_bottleneck/tests/data/test_113_A new file mode 100644 index 0000000..c3b3312 --- /dev/null +++ b/geom_bottleneck/tests/data/test_113_A @@ -0,0 +1,2 @@ +5 12 +0 3 diff --git a/geom_bottleneck/tests/data/test_113_B b/geom_bottleneck/tests/data/test_113_B new file mode 100644 index 0000000..ca287ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_113_B @@ -0,0 +1,2 @@ +3 13 +6 11 diff --git a/geom_bottleneck/tests/data/test_114_A b/geom_bottleneck/tests/data/test_114_A new file mode 100644 index 0000000..112e9d3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_114_A @@ -0,0 +1,2 @@ +6 15 +2 6 diff --git a/geom_bottleneck/tests/data/test_114_B b/geom_bottleneck/tests/data/test_114_B new file mode 100644 index 0000000..dabf69d --- /dev/null +++ b/geom_bottleneck/tests/data/test_114_B @@ -0,0 +1,2 @@ +6 7 +1 4 diff --git a/geom_bottleneck/tests/data/test_115_A b/geom_bottleneck/tests/data/test_115_A new file mode 100644 index 0000000..c467eae --- /dev/null +++ b/geom_bottleneck/tests/data/test_115_A @@ -0,0 +1,2 @@ +10 18 +0 1 diff --git a/geom_bottleneck/tests/data/test_115_B b/geom_bottleneck/tests/data/test_115_B new file mode 100644 index 0000000..e14dd59 --- /dev/null +++ b/geom_bottleneck/tests/data/test_115_B @@ -0,0 +1,2 @@ +2 3 +4 8 diff --git a/geom_bottleneck/tests/data/test_116_A b/geom_bottleneck/tests/data/test_116_A new file mode 100644 index 0000000..1828c98 --- /dev/null +++ b/geom_bottleneck/tests/data/test_116_A @@ -0,0 +1,2 @@ +8 9 +9 14 diff --git a/geom_bottleneck/tests/data/test_116_B b/geom_bottleneck/tests/data/test_116_B new file mode 100644 index 0000000..f63039f --- /dev/null +++ b/geom_bottleneck/tests/data/test_116_B @@ -0,0 +1,2 @@ +5 13 +9 18 diff --git a/geom_bottleneck/tests/data/test_117_A b/geom_bottleneck/tests/data/test_117_A new file mode 100644 index 0000000..280d9bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_117_A @@ -0,0 +1,2 @@ +10 15 +9 14 diff --git a/geom_bottleneck/tests/data/test_117_B b/geom_bottleneck/tests/data/test_117_B new file mode 100644 index 0000000..595260c --- /dev/null +++ b/geom_bottleneck/tests/data/test_117_B @@ -0,0 +1,2 @@ +9 15 +6 11 diff --git a/geom_bottleneck/tests/data/test_118_A b/geom_bottleneck/tests/data/test_118_A new file mode 100644 index 0000000..2ecae80 --- /dev/null +++ b/geom_bottleneck/tests/data/test_118_A @@ -0,0 +1,2 @@ +9 10 +4 11 diff --git a/geom_bottleneck/tests/data/test_118_B b/geom_bottleneck/tests/data/test_118_B new file mode 100644 index 0000000..13fc15b --- /dev/null +++ b/geom_bottleneck/tests/data/test_118_B @@ -0,0 +1,2 @@ +5 14 +7 13 diff --git a/geom_bottleneck/tests/data/test_119_A b/geom_bottleneck/tests/data/test_119_A new file mode 100644 index 0000000..db12f3c --- /dev/null +++ b/geom_bottleneck/tests/data/test_119_A @@ -0,0 +1,2 @@ +2 12 +2 5 diff --git a/geom_bottleneck/tests/data/test_119_B b/geom_bottleneck/tests/data/test_119_B new file mode 100644 index 0000000..79ccbdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_119_B @@ -0,0 +1,2 @@ +2 7 +2 3 diff --git a/geom_bottleneck/tests/data/test_120_A b/geom_bottleneck/tests/data/test_120_A new file mode 100644 index 0000000..cd31ead --- /dev/null +++ b/geom_bottleneck/tests/data/test_120_A @@ -0,0 +1,3 @@ +5 13 +9 10 +3 4 diff --git a/geom_bottleneck/tests/data/test_120_B b/geom_bottleneck/tests/data/test_120_B new file mode 100644 index 0000000..148cbca --- /dev/null +++ b/geom_bottleneck/tests/data/test_120_B @@ -0,0 +1,3 @@ +2 6 +5 6 +3 12 diff --git a/geom_bottleneck/tests/data/test_121_A b/geom_bottleneck/tests/data/test_121_A new file mode 100644 index 0000000..864cde5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_121_A @@ -0,0 +1,3 @@ +10 16 +7 14 +5 8 diff --git a/geom_bottleneck/tests/data/test_121_B b/geom_bottleneck/tests/data/test_121_B new file mode 100644 index 0000000..cc2c1dc --- /dev/null +++ b/geom_bottleneck/tests/data/test_121_B @@ -0,0 +1,3 @@ +9 15 +5 10 +0 3 diff --git a/geom_bottleneck/tests/data/test_122_A b/geom_bottleneck/tests/data/test_122_A new file mode 100644 index 0000000..681d074 --- /dev/null +++ b/geom_bottleneck/tests/data/test_122_A @@ -0,0 +1,3 @@ +5 6 +8 9 +5 11 diff --git a/geom_bottleneck/tests/data/test_122_B b/geom_bottleneck/tests/data/test_122_B new file mode 100644 index 0000000..e8681e6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_122_B @@ -0,0 +1,3 @@ +7 8 +0 1 +6 12 diff --git a/geom_bottleneck/tests/data/test_123_A b/geom_bottleneck/tests/data/test_123_A new file mode 100644 index 0000000..2c53b51 --- /dev/null +++ b/geom_bottleneck/tests/data/test_123_A @@ -0,0 +1,3 @@ +5 8 +4 6 +9 10 diff --git a/geom_bottleneck/tests/data/test_123_B b/geom_bottleneck/tests/data/test_123_B new file mode 100644 index 0000000..0acdfb7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_123_B @@ -0,0 +1,3 @@ +9 14 +5 14 +4 5 diff --git a/geom_bottleneck/tests/data/test_124_A b/geom_bottleneck/tests/data/test_124_A new file mode 100644 index 0000000..f43cb9a --- /dev/null +++ b/geom_bottleneck/tests/data/test_124_A @@ -0,0 +1,3 @@ +0 1 +8 16 +4 7 diff --git a/geom_bottleneck/tests/data/test_124_B b/geom_bottleneck/tests/data/test_124_B new file mode 100644 index 0000000..51dd494 --- /dev/null +++ b/geom_bottleneck/tests/data/test_124_B @@ -0,0 +1,3 @@ +7 8 +0 1 +4 6 diff --git a/geom_bottleneck/tests/data/test_125_A b/geom_bottleneck/tests/data/test_125_A new file mode 100644 index 0000000..e0b6720 --- /dev/null +++ b/geom_bottleneck/tests/data/test_125_A @@ -0,0 +1,3 @@ +9 11 +6 13 +1 10 diff --git a/geom_bottleneck/tests/data/test_125_B b/geom_bottleneck/tests/data/test_125_B new file mode 100644 index 0000000..cf4f98c --- /dev/null +++ b/geom_bottleneck/tests/data/test_125_B @@ -0,0 +1,3 @@ +7 16 +10 11 +7 16 diff --git a/geom_bottleneck/tests/data/test_126_A b/geom_bottleneck/tests/data/test_126_A new file mode 100644 index 0000000..f504606 --- /dev/null +++ b/geom_bottleneck/tests/data/test_126_A @@ -0,0 +1,3 @@ +4 8 +5 14 +1 6 diff --git a/geom_bottleneck/tests/data/test_126_B b/geom_bottleneck/tests/data/test_126_B new file mode 100644 index 0000000..f5b5fda --- /dev/null +++ b/geom_bottleneck/tests/data/test_126_B @@ -0,0 +1,3 @@ +1 2 +8 12 +7 8 diff --git a/geom_bottleneck/tests/data/test_127_A b/geom_bottleneck/tests/data/test_127_A new file mode 100644 index 0000000..20f8541 --- /dev/null +++ b/geom_bottleneck/tests/data/test_127_A @@ -0,0 +1,3 @@ +7 8 +10 15 +3 4 diff --git a/geom_bottleneck/tests/data/test_127_B b/geom_bottleneck/tests/data/test_127_B new file mode 100644 index 0000000..36f6cf3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_127_B @@ -0,0 +1,3 @@ +0 1 +8 11 +2 3 diff --git a/geom_bottleneck/tests/data/test_128_A b/geom_bottleneck/tests/data/test_128_A new file mode 100644 index 0000000..9e2c50e --- /dev/null +++ b/geom_bottleneck/tests/data/test_128_A @@ -0,0 +1,3 @@ +9 17 +0 4 +0 3 diff --git a/geom_bottleneck/tests/data/test_128_B b/geom_bottleneck/tests/data/test_128_B new file mode 100644 index 0000000..0fdae08 --- /dev/null +++ b/geom_bottleneck/tests/data/test_128_B @@ -0,0 +1,3 @@ +10 18 +7 10 +1 2 diff --git a/geom_bottleneck/tests/data/test_129_A b/geom_bottleneck/tests/data/test_129_A new file mode 100644 index 0000000..dc289de --- /dev/null +++ b/geom_bottleneck/tests/data/test_129_A @@ -0,0 +1,3 @@ +8 17 +5 10 +9 16 diff --git a/geom_bottleneck/tests/data/test_129_B b/geom_bottleneck/tests/data/test_129_B new file mode 100644 index 0000000..3216111 --- /dev/null +++ b/geom_bottleneck/tests/data/test_129_B @@ -0,0 +1,3 @@ +10 19 +8 17 +2 11 diff --git a/geom_bottleneck/tests/data/test_130_A b/geom_bottleneck/tests/data/test_130_A new file mode 100644 index 0000000..db70054 --- /dev/null +++ b/geom_bottleneck/tests/data/test_130_A @@ -0,0 +1,3 @@ +10 11 +10 19 +4 6 diff --git a/geom_bottleneck/tests/data/test_130_B b/geom_bottleneck/tests/data/test_130_B new file mode 100644 index 0000000..80c5a30 --- /dev/null +++ b/geom_bottleneck/tests/data/test_130_B @@ -0,0 +1,3 @@ +4 14 +0 8 +3 9 diff --git a/geom_bottleneck/tests/data/test_131_A b/geom_bottleneck/tests/data/test_131_A new file mode 100644 index 0000000..720cdb3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_131_A @@ -0,0 +1,3 @@ +9 15 +3 4 +2 5 diff --git a/geom_bottleneck/tests/data/test_131_B b/geom_bottleneck/tests/data/test_131_B new file mode 100644 index 0000000..55bb437 --- /dev/null +++ b/geom_bottleneck/tests/data/test_131_B @@ -0,0 +1,3 @@ +10 20 +10 15 +7 10 diff --git a/geom_bottleneck/tests/data/test_132_A b/geom_bottleneck/tests/data/test_132_A new file mode 100644 index 0000000..dec8f13 --- /dev/null +++ b/geom_bottleneck/tests/data/test_132_A @@ -0,0 +1,3 @@ +6 16 +2 4 +10 11 diff --git a/geom_bottleneck/tests/data/test_132_B b/geom_bottleneck/tests/data/test_132_B new file mode 100644 index 0000000..8844484 --- /dev/null +++ b/geom_bottleneck/tests/data/test_132_B @@ -0,0 +1,3 @@ +6 8 +5 14 +3 4 diff --git a/geom_bottleneck/tests/data/test_133_A b/geom_bottleneck/tests/data/test_133_A new file mode 100644 index 0000000..b46cb4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_133_A @@ -0,0 +1,3 @@ +4 10 +9 15 +1 7 diff --git a/geom_bottleneck/tests/data/test_133_B b/geom_bottleneck/tests/data/test_133_B new file mode 100644 index 0000000..7a5d26a --- /dev/null +++ b/geom_bottleneck/tests/data/test_133_B @@ -0,0 +1,3 @@ +4 5 +3 6 +1 10 diff --git a/geom_bottleneck/tests/data/test_134_A b/geom_bottleneck/tests/data/test_134_A new file mode 100644 index 0000000..4abd1e5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_134_A @@ -0,0 +1,3 @@ +1 4 +6 13 +10 15 diff --git a/geom_bottleneck/tests/data/test_134_B b/geom_bottleneck/tests/data/test_134_B new file mode 100644 index 0000000..aed169c --- /dev/null +++ b/geom_bottleneck/tests/data/test_134_B @@ -0,0 +1,3 @@ +8 17 +8 16 +7 12 diff --git a/geom_bottleneck/tests/data/test_135_A b/geom_bottleneck/tests/data/test_135_A new file mode 100644 index 0000000..bbe9e95 --- /dev/null +++ b/geom_bottleneck/tests/data/test_135_A @@ -0,0 +1,3 @@ +7 15 +1 4 +2 6 diff --git a/geom_bottleneck/tests/data/test_135_B b/geom_bottleneck/tests/data/test_135_B new file mode 100644 index 0000000..3c84c03 --- /dev/null +++ b/geom_bottleneck/tests/data/test_135_B @@ -0,0 +1,3 @@ +6 10 +2 8 +1 7 diff --git a/geom_bottleneck/tests/data/test_136_A b/geom_bottleneck/tests/data/test_136_A new file mode 100644 index 0000000..a68856e --- /dev/null +++ b/geom_bottleneck/tests/data/test_136_A @@ -0,0 +1,3 @@ +0 1 +9 14 +7 11 diff --git a/geom_bottleneck/tests/data/test_136_B b/geom_bottleneck/tests/data/test_136_B new file mode 100644 index 0000000..c03df54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_136_B @@ -0,0 +1,3 @@ +4 6 +3 4 +8 12 diff --git a/geom_bottleneck/tests/data/test_137_A b/geom_bottleneck/tests/data/test_137_A new file mode 100644 index 0000000..179d357 --- /dev/null +++ b/geom_bottleneck/tests/data/test_137_A @@ -0,0 +1,3 @@ +5 6 +7 14 +5 9 diff --git a/geom_bottleneck/tests/data/test_137_B b/geom_bottleneck/tests/data/test_137_B new file mode 100644 index 0000000..42541ae --- /dev/null +++ b/geom_bottleneck/tests/data/test_137_B @@ -0,0 +1,3 @@ +10 16 +1 3 +6 7 diff --git a/geom_bottleneck/tests/data/test_138_A b/geom_bottleneck/tests/data/test_138_A new file mode 100644 index 0000000..9c39dfb --- /dev/null +++ b/geom_bottleneck/tests/data/test_138_A @@ -0,0 +1,3 @@ +0 4 +9 14 +10 20 diff --git a/geom_bottleneck/tests/data/test_138_B b/geom_bottleneck/tests/data/test_138_B new file mode 100644 index 0000000..826d759 --- /dev/null +++ b/geom_bottleneck/tests/data/test_138_B @@ -0,0 +1,3 @@ +8 13 +7 8 +10 18 diff --git a/geom_bottleneck/tests/data/test_139_A b/geom_bottleneck/tests/data/test_139_A new file mode 100644 index 0000000..7f74c9f --- /dev/null +++ b/geom_bottleneck/tests/data/test_139_A @@ -0,0 +1,3 @@ +6 7 +9 14 +4 5 diff --git a/geom_bottleneck/tests/data/test_139_B b/geom_bottleneck/tests/data/test_139_B new file mode 100644 index 0000000..ba4ab64 --- /dev/null +++ b/geom_bottleneck/tests/data/test_139_B @@ -0,0 +1,3 @@ +9 11 +7 11 +9 10 diff --git a/geom_bottleneck/tests/data/test_140_A b/geom_bottleneck/tests/data/test_140_A new file mode 100644 index 0000000..fec44cc --- /dev/null +++ b/geom_bottleneck/tests/data/test_140_A @@ -0,0 +1,4 @@ +9 11 +6 7 +4 12 +1 8 diff --git a/geom_bottleneck/tests/data/test_140_B b/geom_bottleneck/tests/data/test_140_B new file mode 100644 index 0000000..af8aa1c --- /dev/null +++ b/geom_bottleneck/tests/data/test_140_B @@ -0,0 +1,4 @@ +9 10 +1 2 +2 10 +2 8 diff --git a/geom_bottleneck/tests/data/test_141_A b/geom_bottleneck/tests/data/test_141_A new file mode 100644 index 0000000..db65086 --- /dev/null +++ b/geom_bottleneck/tests/data/test_141_A @@ -0,0 +1,4 @@ +7 13 +2 12 +5 13 +6 8 diff --git a/geom_bottleneck/tests/data/test_141_B b/geom_bottleneck/tests/data/test_141_B new file mode 100644 index 0000000..022c192 --- /dev/null +++ b/geom_bottleneck/tests/data/test_141_B @@ -0,0 +1,4 @@ +5 10 +9 12 +10 18 +8 11 diff --git a/geom_bottleneck/tests/data/test_142_A b/geom_bottleneck/tests/data/test_142_A new file mode 100644 index 0000000..10bbe2d --- /dev/null +++ b/geom_bottleneck/tests/data/test_142_A @@ -0,0 +1,4 @@ +6 15 +4 5 +6 9 +8 17 diff --git a/geom_bottleneck/tests/data/test_142_B b/geom_bottleneck/tests/data/test_142_B new file mode 100644 index 0000000..82b6b28 --- /dev/null +++ b/geom_bottleneck/tests/data/test_142_B @@ -0,0 +1,4 @@ +8 12 +8 11 +3 5 +8 17 diff --git a/geom_bottleneck/tests/data/test_143_A b/geom_bottleneck/tests/data/test_143_A new file mode 100644 index 0000000..1db8047 --- /dev/null +++ b/geom_bottleneck/tests/data/test_143_A @@ -0,0 +1,4 @@ +5 6 +0 2 +5 10 +6 10 diff --git a/geom_bottleneck/tests/data/test_143_B b/geom_bottleneck/tests/data/test_143_B new file mode 100644 index 0000000..5c5a6a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_143_B @@ -0,0 +1,4 @@ +8 14 +5 7 +1 11 +4 10 diff --git a/geom_bottleneck/tests/data/test_144_A b/geom_bottleneck/tests/data/test_144_A new file mode 100644 index 0000000..594f4c4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_144_A @@ -0,0 +1,4 @@ +10 15 +6 13 +1 2 +1 6 diff --git a/geom_bottleneck/tests/data/test_144_B b/geom_bottleneck/tests/data/test_144_B new file mode 100644 index 0000000..aa3cd6d --- /dev/null +++ b/geom_bottleneck/tests/data/test_144_B @@ -0,0 +1,4 @@ +0 8 +10 13 +9 18 +8 11 diff --git a/geom_bottleneck/tests/data/test_145_A b/geom_bottleneck/tests/data/test_145_A new file mode 100644 index 0000000..41ea529 --- /dev/null +++ b/geom_bottleneck/tests/data/test_145_A @@ -0,0 +1,4 @@ +2 10 +3 11 +10 17 +3 8 diff --git a/geom_bottleneck/tests/data/test_145_B b/geom_bottleneck/tests/data/test_145_B new file mode 100644 index 0000000..5bcbaf0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_145_B @@ -0,0 +1,4 @@ +6 13 +10 15 +7 15 +6 10 diff --git a/geom_bottleneck/tests/data/test_146_A b/geom_bottleneck/tests/data/test_146_A new file mode 100644 index 0000000..18c1b4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_146_A @@ -0,0 +1,4 @@ +3 5 +6 11 +1 8 +2 5 diff --git a/geom_bottleneck/tests/data/test_146_B b/geom_bottleneck/tests/data/test_146_B new file mode 100644 index 0000000..24e5821 --- /dev/null +++ b/geom_bottleneck/tests/data/test_146_B @@ -0,0 +1,4 @@ +5 12 +4 10 +5 11 +2 7 diff --git a/geom_bottleneck/tests/data/test_147_A b/geom_bottleneck/tests/data/test_147_A new file mode 100644 index 0000000..bce747d --- /dev/null +++ b/geom_bottleneck/tests/data/test_147_A @@ -0,0 +1,4 @@ +9 11 +1 2 +10 12 +10 15 diff --git a/geom_bottleneck/tests/data/test_147_B b/geom_bottleneck/tests/data/test_147_B new file mode 100644 index 0000000..c545851 --- /dev/null +++ b/geom_bottleneck/tests/data/test_147_B @@ -0,0 +1,4 @@ +4 6 +7 14 +4 12 +7 10 diff --git a/geom_bottleneck/tests/data/test_148_A b/geom_bottleneck/tests/data/test_148_A new file mode 100644 index 0000000..cd7482f --- /dev/null +++ b/geom_bottleneck/tests/data/test_148_A @@ -0,0 +1,4 @@ +5 9 +0 7 +7 11 +7 13 diff --git a/geom_bottleneck/tests/data/test_148_B b/geom_bottleneck/tests/data/test_148_B new file mode 100644 index 0000000..a761bd3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_148_B @@ -0,0 +1,4 @@ +7 9 +2 8 +1 2 +4 11 diff --git a/geom_bottleneck/tests/data/test_149_A b/geom_bottleneck/tests/data/test_149_A new file mode 100644 index 0000000..81fff07 --- /dev/null +++ b/geom_bottleneck/tests/data/test_149_A @@ -0,0 +1,4 @@ +2 4 +1 9 +7 13 +4 14 diff --git a/geom_bottleneck/tests/data/test_149_B b/geom_bottleneck/tests/data/test_149_B new file mode 100644 index 0000000..1acd048 --- /dev/null +++ b/geom_bottleneck/tests/data/test_149_B @@ -0,0 +1,4 @@ +9 12 +0 6 +4 10 +0 4 diff --git a/geom_bottleneck/tests/data/test_150_A b/geom_bottleneck/tests/data/test_150_A new file mode 100644 index 0000000..8f4862d --- /dev/null +++ b/geom_bottleneck/tests/data/test_150_A @@ -0,0 +1,4 @@ +9 11 +7 16 +0 1 +0 3 diff --git a/geom_bottleneck/tests/data/test_150_B b/geom_bottleneck/tests/data/test_150_B new file mode 100644 index 0000000..d55101f --- /dev/null +++ b/geom_bottleneck/tests/data/test_150_B @@ -0,0 +1,4 @@ +7 14 +4 5 +7 16 +8 14 diff --git a/geom_bottleneck/tests/data/test_151_A b/geom_bottleneck/tests/data/test_151_A new file mode 100644 index 0000000..1915b6a --- /dev/null +++ b/geom_bottleneck/tests/data/test_151_A @@ -0,0 +1,4 @@ +3 13 +10 11 +7 14 +2 11 diff --git a/geom_bottleneck/tests/data/test_151_B b/geom_bottleneck/tests/data/test_151_B new file mode 100644 index 0000000..065a2c7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_151_B @@ -0,0 +1,4 @@ +6 9 +10 15 +7 8 +7 12 diff --git a/geom_bottleneck/tests/data/test_152_A b/geom_bottleneck/tests/data/test_152_A new file mode 100644 index 0000000..43ed98e --- /dev/null +++ b/geom_bottleneck/tests/data/test_152_A @@ -0,0 +1,4 @@ +10 11 +2 5 +2 5 +0 3 diff --git a/geom_bottleneck/tests/data/test_152_B b/geom_bottleneck/tests/data/test_152_B new file mode 100644 index 0000000..5e179b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_152_B @@ -0,0 +1,4 @@ +4 8 +5 12 +6 8 +3 5 diff --git a/geom_bottleneck/tests/data/test_153_A b/geom_bottleneck/tests/data/test_153_A new file mode 100644 index 0000000..16f5a34 --- /dev/null +++ b/geom_bottleneck/tests/data/test_153_A @@ -0,0 +1,4 @@ +0 9 +10 11 +10 16 +1 9 diff --git a/geom_bottleneck/tests/data/test_153_B b/geom_bottleneck/tests/data/test_153_B new file mode 100644 index 0000000..a82ae69 --- /dev/null +++ b/geom_bottleneck/tests/data/test_153_B @@ -0,0 +1,4 @@ +0 3 +3 10 +6 14 +4 7 diff --git a/geom_bottleneck/tests/data/test_154_A b/geom_bottleneck/tests/data/test_154_A new file mode 100644 index 0000000..73246c1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_154_A @@ -0,0 +1,4 @@ +2 5 +5 15 +2 5 +3 7 diff --git a/geom_bottleneck/tests/data/test_154_B b/geom_bottleneck/tests/data/test_154_B new file mode 100644 index 0000000..6650b45 --- /dev/null +++ b/geom_bottleneck/tests/data/test_154_B @@ -0,0 +1,4 @@ +3 4 +9 16 +5 12 +1 6 diff --git a/geom_bottleneck/tests/data/test_155_A b/geom_bottleneck/tests/data/test_155_A new file mode 100644 index 0000000..9ce2859 --- /dev/null +++ b/geom_bottleneck/tests/data/test_155_A @@ -0,0 +1,4 @@ +10 14 +7 10 +9 10 +4 12 diff --git a/geom_bottleneck/tests/data/test_155_B b/geom_bottleneck/tests/data/test_155_B new file mode 100644 index 0000000..c852368 --- /dev/null +++ b/geom_bottleneck/tests/data/test_155_B @@ -0,0 +1,4 @@ +6 10 +2 8 +4 8 +1 11 diff --git a/geom_bottleneck/tests/data/test_156_A b/geom_bottleneck/tests/data/test_156_A new file mode 100644 index 0000000..e79fcd1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_156_A @@ -0,0 +1,4 @@ +2 4 +6 12 +1 9 +4 14 diff --git a/geom_bottleneck/tests/data/test_156_B b/geom_bottleneck/tests/data/test_156_B new file mode 100644 index 0000000..05cd916 --- /dev/null +++ b/geom_bottleneck/tests/data/test_156_B @@ -0,0 +1,4 @@ +2 12 +7 12 +7 11 +2 4 diff --git a/geom_bottleneck/tests/data/test_157_A b/geom_bottleneck/tests/data/test_157_A new file mode 100644 index 0000000..257f007 --- /dev/null +++ b/geom_bottleneck/tests/data/test_157_A @@ -0,0 +1,4 @@ +8 17 +7 9 +10 16 +1 9 diff --git a/geom_bottleneck/tests/data/test_157_B b/geom_bottleneck/tests/data/test_157_B new file mode 100644 index 0000000..da76a0c --- /dev/null +++ b/geom_bottleneck/tests/data/test_157_B @@ -0,0 +1,4 @@ +9 11 +3 6 +0 3 +2 3 diff --git a/geom_bottleneck/tests/data/test_158_A b/geom_bottleneck/tests/data/test_158_A new file mode 100644 index 0000000..ec64dab --- /dev/null +++ b/geom_bottleneck/tests/data/test_158_A @@ -0,0 +1,4 @@ +2 4 +9 15 +8 16 +8 11 diff --git a/geom_bottleneck/tests/data/test_158_B b/geom_bottleneck/tests/data/test_158_B new file mode 100644 index 0000000..407c843 --- /dev/null +++ b/geom_bottleneck/tests/data/test_158_B @@ -0,0 +1,4 @@ +10 17 +10 15 +1 8 +10 17 diff --git a/geom_bottleneck/tests/data/test_159_A b/geom_bottleneck/tests/data/test_159_A new file mode 100644 index 0000000..bbf8d13 --- /dev/null +++ b/geom_bottleneck/tests/data/test_159_A @@ -0,0 +1,4 @@ +9 13 +5 6 +3 6 +5 7 diff --git a/geom_bottleneck/tests/data/test_159_B b/geom_bottleneck/tests/data/test_159_B new file mode 100644 index 0000000..fbe6d45 --- /dev/null +++ b/geom_bottleneck/tests/data/test_159_B @@ -0,0 +1,4 @@ +2 5 +4 5 +9 14 +10 11 diff --git a/geom_bottleneck/tests/data/test_160_A b/geom_bottleneck/tests/data/test_160_A new file mode 100644 index 0000000..c712c5a --- /dev/null +++ b/geom_bottleneck/tests/data/test_160_A @@ -0,0 +1,5 @@ +3 10 +1 10 +5 15 +0 9 +8 9 diff --git a/geom_bottleneck/tests/data/test_160_B b/geom_bottleneck/tests/data/test_160_B new file mode 100644 index 0000000..90edf6f --- /dev/null +++ b/geom_bottleneck/tests/data/test_160_B @@ -0,0 +1,5 @@ +3 11 +0 8 +0 3 +4 7 +1 11 diff --git a/geom_bottleneck/tests/data/test_161_A b/geom_bottleneck/tests/data/test_161_A new file mode 100644 index 0000000..4cbae18 --- /dev/null +++ b/geom_bottleneck/tests/data/test_161_A @@ -0,0 +1,5 @@ +9 11 +8 10 +3 6 +4 14 +5 10 diff --git a/geom_bottleneck/tests/data/test_161_B b/geom_bottleneck/tests/data/test_161_B new file mode 100644 index 0000000..e166afb --- /dev/null +++ b/geom_bottleneck/tests/data/test_161_B @@ -0,0 +1,5 @@ +0 3 +8 14 +8 13 +0 2 +1 2 diff --git a/geom_bottleneck/tests/data/test_162_A b/geom_bottleneck/tests/data/test_162_A new file mode 100644 index 0000000..e16e9a3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_162_A @@ -0,0 +1,5 @@ +4 5 +7 17 +4 8 +10 16 +4 7 diff --git a/geom_bottleneck/tests/data/test_162_B b/geom_bottleneck/tests/data/test_162_B new file mode 100644 index 0000000..78ab6a3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_162_B @@ -0,0 +1,5 @@ +6 14 +9 10 +1 9 +7 17 +7 8 diff --git a/geom_bottleneck/tests/data/test_163_A b/geom_bottleneck/tests/data/test_163_A new file mode 100644 index 0000000..6836e59 --- /dev/null +++ b/geom_bottleneck/tests/data/test_163_A @@ -0,0 +1,5 @@ +6 12 +6 11 +7 15 +9 11 +1 6 diff --git a/geom_bottleneck/tests/data/test_163_B b/geom_bottleneck/tests/data/test_163_B new file mode 100644 index 0000000..9d9e6e2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_163_B @@ -0,0 +1,5 @@ +0 6 +1 11 +2 3 +7 14 +7 10 diff --git a/geom_bottleneck/tests/data/test_164_A b/geom_bottleneck/tests/data/test_164_A new file mode 100644 index 0000000..a4187bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_164_A @@ -0,0 +1,5 @@ +0 2 +6 14 +7 16 +9 10 +2 6 diff --git a/geom_bottleneck/tests/data/test_164_B b/geom_bottleneck/tests/data/test_164_B new file mode 100644 index 0000000..8597409 --- /dev/null +++ b/geom_bottleneck/tests/data/test_164_B @@ -0,0 +1,5 @@ +2 10 +5 13 +4 13 +4 6 +8 16 diff --git a/geom_bottleneck/tests/data/test_165_A b/geom_bottleneck/tests/data/test_165_A new file mode 100644 index 0000000..15b9f15 --- /dev/null +++ b/geom_bottleneck/tests/data/test_165_A @@ -0,0 +1,5 @@ +1 9 +6 15 +6 7 +10 18 +6 7 diff --git a/geom_bottleneck/tests/data/test_165_B b/geom_bottleneck/tests/data/test_165_B new file mode 100644 index 0000000..8056eab --- /dev/null +++ b/geom_bottleneck/tests/data/test_165_B @@ -0,0 +1,5 @@ +8 15 +3 13 +8 17 +1 9 +9 18 diff --git a/geom_bottleneck/tests/data/test_166_A b/geom_bottleneck/tests/data/test_166_A new file mode 100644 index 0000000..8257649 --- /dev/null +++ b/geom_bottleneck/tests/data/test_166_A @@ -0,0 +1,5 @@ +2 10 +4 12 +0 4 +10 18 +3 11 diff --git a/geom_bottleneck/tests/data/test_166_B b/geom_bottleneck/tests/data/test_166_B new file mode 100644 index 0000000..02499eb --- /dev/null +++ b/geom_bottleneck/tests/data/test_166_B @@ -0,0 +1,5 @@ +0 6 +6 16 +3 11 +10 19 +5 15 diff --git a/geom_bottleneck/tests/data/test_167_A b/geom_bottleneck/tests/data/test_167_A new file mode 100644 index 0000000..416f645 --- /dev/null +++ b/geom_bottleneck/tests/data/test_167_A @@ -0,0 +1,5 @@ +4 7 +0 5 +1 9 +7 8 +4 10 diff --git a/geom_bottleneck/tests/data/test_167_B b/geom_bottleneck/tests/data/test_167_B new file mode 100644 index 0000000..2ab78e5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_167_B @@ -0,0 +1,5 @@ +3 13 +3 13 +4 12 +4 13 +3 10 diff --git a/geom_bottleneck/tests/data/test_168_A b/geom_bottleneck/tests/data/test_168_A new file mode 100644 index 0000000..57f9e66 --- /dev/null +++ b/geom_bottleneck/tests/data/test_168_A @@ -0,0 +1,5 @@ +9 10 +3 8 +7 17 +10 11 +5 7 diff --git a/geom_bottleneck/tests/data/test_168_B b/geom_bottleneck/tests/data/test_168_B new file mode 100644 index 0000000..6d5d9c5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_168_B @@ -0,0 +1,5 @@ +10 18 +1 9 +4 9 +4 14 +8 14 diff --git a/geom_bottleneck/tests/data/test_169_A b/geom_bottleneck/tests/data/test_169_A new file mode 100644 index 0000000..7db2396 --- /dev/null +++ b/geom_bottleneck/tests/data/test_169_A @@ -0,0 +1,5 @@ +9 12 +10 14 +10 17 +5 6 +4 5 diff --git a/geom_bottleneck/tests/data/test_169_B b/geom_bottleneck/tests/data/test_169_B new file mode 100644 index 0000000..58d7cec --- /dev/null +++ b/geom_bottleneck/tests/data/test_169_B @@ -0,0 +1,5 @@ +0 2 +9 10 +4 11 +10 13 +2 5 diff --git a/geom_bottleneck/tests/data/test_170_A b/geom_bottleneck/tests/data/test_170_A new file mode 100644 index 0000000..7d30592 --- /dev/null +++ b/geom_bottleneck/tests/data/test_170_A @@ -0,0 +1,5 @@ +5 11 +8 14 +6 13 +1 11 +6 15 diff --git a/geom_bottleneck/tests/data/test_170_B b/geom_bottleneck/tests/data/test_170_B new file mode 100644 index 0000000..86d8ccc --- /dev/null +++ b/geom_bottleneck/tests/data/test_170_B @@ -0,0 +1,5 @@ +1 3 +1 3 +4 7 +7 15 +5 13 diff --git a/geom_bottleneck/tests/data/test_171_A b/geom_bottleneck/tests/data/test_171_A new file mode 100644 index 0000000..30ce17c --- /dev/null +++ b/geom_bottleneck/tests/data/test_171_A @@ -0,0 +1,5 @@ +0 7 +3 5 +4 14 +8 14 +3 12 diff --git a/geom_bottleneck/tests/data/test_171_B b/geom_bottleneck/tests/data/test_171_B new file mode 100644 index 0000000..487dcb5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_171_B @@ -0,0 +1,5 @@ +7 13 +3 7 +0 5 +4 14 +5 12 diff --git a/geom_bottleneck/tests/data/test_172_A b/geom_bottleneck/tests/data/test_172_A new file mode 100644 index 0000000..69232cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_172_A @@ -0,0 +1,5 @@ +3 4 +7 10 +8 14 +9 11 +2 12 diff --git a/geom_bottleneck/tests/data/test_172_B b/geom_bottleneck/tests/data/test_172_B new file mode 100644 index 0000000..1ab31ab --- /dev/null +++ b/geom_bottleneck/tests/data/test_172_B @@ -0,0 +1,5 @@ +7 9 +8 10 +9 13 +3 9 +3 7 diff --git a/geom_bottleneck/tests/data/test_173_A b/geom_bottleneck/tests/data/test_173_A new file mode 100644 index 0000000..d88d368 --- /dev/null +++ b/geom_bottleneck/tests/data/test_173_A @@ -0,0 +1,5 @@ +5 8 +7 9 +7 11 +1 9 +5 6 diff --git a/geom_bottleneck/tests/data/test_173_B b/geom_bottleneck/tests/data/test_173_B new file mode 100644 index 0000000..a331c9c --- /dev/null +++ b/geom_bottleneck/tests/data/test_173_B @@ -0,0 +1,5 @@ +1 5 +6 9 +2 5 +1 4 +6 10 diff --git a/geom_bottleneck/tests/data/test_174_A b/geom_bottleneck/tests/data/test_174_A new file mode 100644 index 0000000..a97b65b --- /dev/null +++ b/geom_bottleneck/tests/data/test_174_A @@ -0,0 +1,5 @@ +4 14 +2 7 +9 19 +6 9 +0 2 diff --git a/geom_bottleneck/tests/data/test_174_B b/geom_bottleneck/tests/data/test_174_B new file mode 100644 index 0000000..98da402 --- /dev/null +++ b/geom_bottleneck/tests/data/test_174_B @@ -0,0 +1,5 @@ +4 11 +10 17 +7 8 +0 8 +3 9 diff --git a/geom_bottleneck/tests/data/test_175_A b/geom_bottleneck/tests/data/test_175_A new file mode 100644 index 0000000..dc8bedd --- /dev/null +++ b/geom_bottleneck/tests/data/test_175_A @@ -0,0 +1,5 @@ +8 11 +5 11 +7 13 +8 14 +4 12 diff --git a/geom_bottleneck/tests/data/test_175_B b/geom_bottleneck/tests/data/test_175_B new file mode 100644 index 0000000..b5bd41f --- /dev/null +++ b/geom_bottleneck/tests/data/test_175_B @@ -0,0 +1,5 @@ +4 12 +10 20 +10 20 +3 13 +9 16 diff --git a/geom_bottleneck/tests/data/test_176_A b/geom_bottleneck/tests/data/test_176_A new file mode 100644 index 0000000..dff782a --- /dev/null +++ b/geom_bottleneck/tests/data/test_176_A @@ -0,0 +1,5 @@ +10 13 +9 10 +8 15 +5 9 +5 13 diff --git a/geom_bottleneck/tests/data/test_176_B b/geom_bottleneck/tests/data/test_176_B new file mode 100644 index 0000000..8724366 --- /dev/null +++ b/geom_bottleneck/tests/data/test_176_B @@ -0,0 +1,5 @@ +2 8 +6 7 +0 9 +5 11 +4 12 diff --git a/geom_bottleneck/tests/data/test_177_A b/geom_bottleneck/tests/data/test_177_A new file mode 100644 index 0000000..556caf8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_177_A @@ -0,0 +1,5 @@ +4 7 +2 3 +6 7 +2 4 +0 7 diff --git a/geom_bottleneck/tests/data/test_177_B b/geom_bottleneck/tests/data/test_177_B new file mode 100644 index 0000000..91583a5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_177_B @@ -0,0 +1,5 @@ +8 17 +10 13 +4 6 +3 8 +0 5 diff --git a/geom_bottleneck/tests/data/test_178_A b/geom_bottleneck/tests/data/test_178_A new file mode 100644 index 0000000..e223edb --- /dev/null +++ b/geom_bottleneck/tests/data/test_178_A @@ -0,0 +1,5 @@ +2 3 +9 15 +8 10 +7 15 +5 11 diff --git a/geom_bottleneck/tests/data/test_178_B b/geom_bottleneck/tests/data/test_178_B new file mode 100644 index 0000000..2ab0b73 --- /dev/null +++ b/geom_bottleneck/tests/data/test_178_B @@ -0,0 +1,5 @@ +10 17 +2 9 +0 9 +8 12 +4 14 diff --git a/geom_bottleneck/tests/data/test_179_A b/geom_bottleneck/tests/data/test_179_A new file mode 100644 index 0000000..7b11730 --- /dev/null +++ b/geom_bottleneck/tests/data/test_179_A @@ -0,0 +1,5 @@ +3 13 +5 14 +7 14 +3 11 +10 15 diff --git a/geom_bottleneck/tests/data/test_179_B b/geom_bottleneck/tests/data/test_179_B new file mode 100644 index 0000000..e160b9f --- /dev/null +++ b/geom_bottleneck/tests/data/test_179_B @@ -0,0 +1,5 @@ +2 9 +2 10 +1 4 +3 6 +0 7 diff --git a/geom_bottleneck/tests/data/test_180_A b/geom_bottleneck/tests/data/test_180_A new file mode 100644 index 0000000..a830fb1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_180_A @@ -0,0 +1,6 @@ +9 19 +6 7 +9 17 +0 3 +7 8 +8 14 diff --git a/geom_bottleneck/tests/data/test_180_B b/geom_bottleneck/tests/data/test_180_B new file mode 100644 index 0000000..0ed2108 --- /dev/null +++ b/geom_bottleneck/tests/data/test_180_B @@ -0,0 +1,6 @@ +0 10 +1 11 +10 12 +5 6 +10 16 +5 14 diff --git a/geom_bottleneck/tests/data/test_181_A b/geom_bottleneck/tests/data/test_181_A new file mode 100644 index 0000000..e29de9c --- /dev/null +++ b/geom_bottleneck/tests/data/test_181_A @@ -0,0 +1,6 @@ +1 4 +1 2 +9 19 +3 6 +8 11 +4 8 diff --git a/geom_bottleneck/tests/data/test_181_B b/geom_bottleneck/tests/data/test_181_B new file mode 100644 index 0000000..dacaa51 --- /dev/null +++ b/geom_bottleneck/tests/data/test_181_B @@ -0,0 +1,6 @@ +6 11 +8 15 +8 12 +10 11 +4 7 +5 10 diff --git a/geom_bottleneck/tests/data/test_182_A b/geom_bottleneck/tests/data/test_182_A new file mode 100644 index 0000000..e545af0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_182_A @@ -0,0 +1,6 @@ +8 10 +2 6 +6 14 +5 6 +6 7 +0 2 diff --git a/geom_bottleneck/tests/data/test_182_B b/geom_bottleneck/tests/data/test_182_B new file mode 100644 index 0000000..ffee041 --- /dev/null +++ b/geom_bottleneck/tests/data/test_182_B @@ -0,0 +1,6 @@ +8 11 +6 8 +0 5 +7 13 +6 9 +10 19 diff --git a/geom_bottleneck/tests/data/test_183_A b/geom_bottleneck/tests/data/test_183_A new file mode 100644 index 0000000..0681b8d --- /dev/null +++ b/geom_bottleneck/tests/data/test_183_A @@ -0,0 +1,6 @@ +8 13 +5 7 +1 5 +5 11 +3 7 +0 3 diff --git a/geom_bottleneck/tests/data/test_183_B b/geom_bottleneck/tests/data/test_183_B new file mode 100644 index 0000000..da3af74 --- /dev/null +++ b/geom_bottleneck/tests/data/test_183_B @@ -0,0 +1,6 @@ +10 20 +6 11 +9 10 +1 4 +0 8 +7 14 diff --git a/geom_bottleneck/tests/data/test_184_A b/geom_bottleneck/tests/data/test_184_A new file mode 100644 index 0000000..a252760 --- /dev/null +++ b/geom_bottleneck/tests/data/test_184_A @@ -0,0 +1,6 @@ +3 7 +1 10 +2 5 +0 5 +1 4 +2 3 diff --git a/geom_bottleneck/tests/data/test_184_B b/geom_bottleneck/tests/data/test_184_B new file mode 100644 index 0000000..788be62 --- /dev/null +++ b/geom_bottleneck/tests/data/test_184_B @@ -0,0 +1,6 @@ +8 14 +10 11 +3 5 +5 9 +6 8 +9 10 diff --git a/geom_bottleneck/tests/data/test_185_A b/geom_bottleneck/tests/data/test_185_A new file mode 100644 index 0000000..8922d7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_185_A @@ -0,0 +1,6 @@ +4 10 +8 10 +5 9 +9 13 +9 18 +8 14 diff --git a/geom_bottleneck/tests/data/test_185_B b/geom_bottleneck/tests/data/test_185_B new file mode 100644 index 0000000..fc90091 --- /dev/null +++ b/geom_bottleneck/tests/data/test_185_B @@ -0,0 +1,6 @@ +0 10 +4 5 +3 10 +1 11 +4 9 +4 14 diff --git a/geom_bottleneck/tests/data/test_186_A b/geom_bottleneck/tests/data/test_186_A new file mode 100644 index 0000000..894dc49 --- /dev/null +++ b/geom_bottleneck/tests/data/test_186_A @@ -0,0 +1,6 @@ +1 8 +10 11 +3 10 +8 9 +3 13 +9 13 diff --git a/geom_bottleneck/tests/data/test_186_B b/geom_bottleneck/tests/data/test_186_B new file mode 100644 index 0000000..c0b49c0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_186_B @@ -0,0 +1,6 @@ +6 15 +8 9 +4 7 +0 10 +1 9 +1 2 diff --git a/geom_bottleneck/tests/data/test_187_A b/geom_bottleneck/tests/data/test_187_A new file mode 100644 index 0000000..f2181af --- /dev/null +++ b/geom_bottleneck/tests/data/test_187_A @@ -0,0 +1,6 @@ +9 11 +8 11 +10 11 +3 8 +7 17 +3 5 diff --git a/geom_bottleneck/tests/data/test_187_B b/geom_bottleneck/tests/data/test_187_B new file mode 100644 index 0000000..ab13d0f --- /dev/null +++ b/geom_bottleneck/tests/data/test_187_B @@ -0,0 +1,6 @@ +6 10 +10 19 +5 11 +6 13 +10 16 +10 20 diff --git a/geom_bottleneck/tests/data/test_188_A b/geom_bottleneck/tests/data/test_188_A new file mode 100644 index 0000000..8290582 --- /dev/null +++ b/geom_bottleneck/tests/data/test_188_A @@ -0,0 +1,6 @@ +4 9 +10 20 +0 4 +5 6 +8 9 +5 6 diff --git a/geom_bottleneck/tests/data/test_188_B b/geom_bottleneck/tests/data/test_188_B new file mode 100644 index 0000000..6acfc2e --- /dev/null +++ b/geom_bottleneck/tests/data/test_188_B @@ -0,0 +1,6 @@ +9 19 +6 11 +0 2 +5 12 +3 11 +7 11 diff --git a/geom_bottleneck/tests/data/test_189_A b/geom_bottleneck/tests/data/test_189_A new file mode 100644 index 0000000..468967c --- /dev/null +++ b/geom_bottleneck/tests/data/test_189_A @@ -0,0 +1,6 @@ +8 11 +4 8 +6 7 +9 15 +10 11 +2 3 diff --git a/geom_bottleneck/tests/data/test_189_B b/geom_bottleneck/tests/data/test_189_B new file mode 100644 index 0000000..299edf6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_189_B @@ -0,0 +1,6 @@ +6 10 +2 6 +2 9 +1 3 +7 10 +8 15 diff --git a/geom_bottleneck/tests/data/test_190_A b/geom_bottleneck/tests/data/test_190_A new file mode 100644 index 0000000..01b3e3c --- /dev/null +++ b/geom_bottleneck/tests/data/test_190_A @@ -0,0 +1,6 @@ +8 17 +9 10 +1 3 +9 16 +7 10 +8 14 diff --git a/geom_bottleneck/tests/data/test_190_B b/geom_bottleneck/tests/data/test_190_B new file mode 100644 index 0000000..26d2d2a --- /dev/null +++ b/geom_bottleneck/tests/data/test_190_B @@ -0,0 +1,6 @@ +8 9 +10 15 +10 12 +8 14 +4 5 +4 10 diff --git a/geom_bottleneck/tests/data/test_191_A b/geom_bottleneck/tests/data/test_191_A new file mode 100644 index 0000000..e89e4b8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_191_A @@ -0,0 +1,6 @@ +10 15 +2 7 +9 16 +6 14 +6 12 +4 13 diff --git a/geom_bottleneck/tests/data/test_191_B b/geom_bottleneck/tests/data/test_191_B new file mode 100644 index 0000000..80022bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_191_B @@ -0,0 +1,6 @@ +8 18 +5 11 +2 7 +7 16 +6 9 +7 17 diff --git a/geom_bottleneck/tests/data/test_192_A b/geom_bottleneck/tests/data/test_192_A new file mode 100644 index 0000000..8e0e64f --- /dev/null +++ b/geom_bottleneck/tests/data/test_192_A @@ -0,0 +1,6 @@ +9 15 +1 9 +2 11 +1 8 +9 11 +7 8 diff --git a/geom_bottleneck/tests/data/test_192_B b/geom_bottleneck/tests/data/test_192_B new file mode 100644 index 0000000..dcfe162 --- /dev/null +++ b/geom_bottleneck/tests/data/test_192_B @@ -0,0 +1,6 @@ +8 16 +10 17 +8 9 +2 9 +2 12 +7 11 diff --git a/geom_bottleneck/tests/data/test_193_A b/geom_bottleneck/tests/data/test_193_A new file mode 100644 index 0000000..6c2bcc8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_193_A @@ -0,0 +1,6 @@ +5 10 +4 13 +6 7 +7 8 +7 8 +6 12 diff --git a/geom_bottleneck/tests/data/test_193_B b/geom_bottleneck/tests/data/test_193_B new file mode 100644 index 0000000..fb271c9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_193_B @@ -0,0 +1,6 @@ +7 12 +2 5 +9 18 +1 6 +7 16 +1 5 diff --git a/geom_bottleneck/tests/data/test_194_A b/geom_bottleneck/tests/data/test_194_A new file mode 100644 index 0000000..2de1094 --- /dev/null +++ b/geom_bottleneck/tests/data/test_194_A @@ -0,0 +1,6 @@ +9 14 +7 12 +3 10 +1 9 +3 10 +0 1 diff --git a/geom_bottleneck/tests/data/test_194_B b/geom_bottleneck/tests/data/test_194_B new file mode 100644 index 0000000..5879993 --- /dev/null +++ b/geom_bottleneck/tests/data/test_194_B @@ -0,0 +1,6 @@ +6 15 +4 9 +3 7 +2 3 +0 2 +2 12 diff --git a/geom_bottleneck/tests/data/test_195_A b/geom_bottleneck/tests/data/test_195_A new file mode 100644 index 0000000..d109838 --- /dev/null +++ b/geom_bottleneck/tests/data/test_195_A @@ -0,0 +1,6 @@ +0 9 +7 8 +9 15 +2 6 +3 8 +9 15 diff --git a/geom_bottleneck/tests/data/test_195_B b/geom_bottleneck/tests/data/test_195_B new file mode 100644 index 0000000..6c66513 --- /dev/null +++ b/geom_bottleneck/tests/data/test_195_B @@ -0,0 +1,6 @@ +3 9 +2 3 +3 10 +7 16 +4 7 +1 6 diff --git a/geom_bottleneck/tests/data/test_196_A b/geom_bottleneck/tests/data/test_196_A new file mode 100644 index 0000000..4094acd --- /dev/null +++ b/geom_bottleneck/tests/data/test_196_A @@ -0,0 +1,6 @@ +6 8 +8 12 +0 4 +3 11 +4 14 +9 14 diff --git a/geom_bottleneck/tests/data/test_196_B b/geom_bottleneck/tests/data/test_196_B new file mode 100644 index 0000000..e5ed3ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_196_B @@ -0,0 +1,6 @@ +4 10 +2 3 +7 8 +2 8 +5 12 +9 10 diff --git a/geom_bottleneck/tests/data/test_197_A b/geom_bottleneck/tests/data/test_197_A new file mode 100644 index 0000000..771897b --- /dev/null +++ b/geom_bottleneck/tests/data/test_197_A @@ -0,0 +1,6 @@ +4 10 +9 11 +0 6 +4 8 +9 14 +9 14 diff --git a/geom_bottleneck/tests/data/test_197_B b/geom_bottleneck/tests/data/test_197_B new file mode 100644 index 0000000..1cfe6aa --- /dev/null +++ b/geom_bottleneck/tests/data/test_197_B @@ -0,0 +1,6 @@ +7 13 +6 7 +5 11 +3 13 +6 14 +10 15 diff --git a/geom_bottleneck/tests/data/test_198_A b/geom_bottleneck/tests/data/test_198_A new file mode 100644 index 0000000..6966ac4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_198_A @@ -0,0 +1,6 @@ +10 17 +3 7 +7 8 +9 15 +0 3 +10 20 diff --git a/geom_bottleneck/tests/data/test_198_B b/geom_bottleneck/tests/data/test_198_B new file mode 100644 index 0000000..6e9d9d4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_198_B @@ -0,0 +1,6 @@ +3 11 +4 7 +6 15 +8 15 +7 10 +2 10 diff --git a/geom_bottleneck/tests/data/test_199_A b/geom_bottleneck/tests/data/test_199_A new file mode 100644 index 0000000..8556563 --- /dev/null +++ b/geom_bottleneck/tests/data/test_199_A @@ -0,0 +1,6 @@ +7 17 +3 13 +10 15 +9 17 +7 8 +5 14 diff --git a/geom_bottleneck/tests/data/test_199_B b/geom_bottleneck/tests/data/test_199_B new file mode 100644 index 0000000..a43e0df --- /dev/null +++ b/geom_bottleneck/tests/data/test_199_B @@ -0,0 +1,6 @@ +7 17 +7 17 +9 14 +4 13 +1 8 +1 10 diff --git a/geom_bottleneck/tests/data/test_200_A b/geom_bottleneck/tests/data/test_200_A new file mode 100644 index 0000000..b0a7fbd --- /dev/null +++ b/geom_bottleneck/tests/data/test_200_A @@ -0,0 +1,7 @@ +9 10 +0 10 +7 8 +1 6 +8 14 +0 3 +6 9 diff --git a/geom_bottleneck/tests/data/test_200_B b/geom_bottleneck/tests/data/test_200_B new file mode 100644 index 0000000..fcbab9a --- /dev/null +++ b/geom_bottleneck/tests/data/test_200_B @@ -0,0 +1,7 @@ +2 7 +0 7 +2 4 +8 12 +7 12 +10 16 +5 6 diff --git a/geom_bottleneck/tests/data/test_201_A b/geom_bottleneck/tests/data/test_201_A new file mode 100644 index 0000000..07d880d --- /dev/null +++ b/geom_bottleneck/tests/data/test_201_A @@ -0,0 +1,7 @@ +4 5 +1 7 +0 8 +4 5 +9 14 +8 9 +2 10 diff --git a/geom_bottleneck/tests/data/test_201_B b/geom_bottleneck/tests/data/test_201_B new file mode 100644 index 0000000..70b22f4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_201_B @@ -0,0 +1,7 @@ +5 6 +6 16 +1 2 +2 3 +4 12 +6 15 +8 18 diff --git a/geom_bottleneck/tests/data/test_202_A b/geom_bottleneck/tests/data/test_202_A new file mode 100644 index 0000000..b8fe1b9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_202_A @@ -0,0 +1,7 @@ +0 6 +4 14 +9 10 +9 18 +5 12 +5 12 +1 7 diff --git a/geom_bottleneck/tests/data/test_202_B b/geom_bottleneck/tests/data/test_202_B new file mode 100644 index 0000000..ee6e2e0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_202_B @@ -0,0 +1,7 @@ +5 6 +7 17 +1 6 +3 11 +7 15 +10 20 +3 4 diff --git a/geom_bottleneck/tests/data/test_203_A b/geom_bottleneck/tests/data/test_203_A new file mode 100644 index 0000000..71a1737 --- /dev/null +++ b/geom_bottleneck/tests/data/test_203_A @@ -0,0 +1,7 @@ +4 9 +10 20 +5 9 +0 9 +0 8 +5 9 +0 10 diff --git a/geom_bottleneck/tests/data/test_203_B b/geom_bottleneck/tests/data/test_203_B new file mode 100644 index 0000000..d217cda --- /dev/null +++ b/geom_bottleneck/tests/data/test_203_B @@ -0,0 +1,7 @@ +3 12 +1 9 +9 17 +7 14 +6 10 +10 20 +7 12 diff --git a/geom_bottleneck/tests/data/test_204_A b/geom_bottleneck/tests/data/test_204_A new file mode 100644 index 0000000..011da68 --- /dev/null +++ b/geom_bottleneck/tests/data/test_204_A @@ -0,0 +1,7 @@ +9 14 +2 3 +9 14 +6 7 +2 3 +6 13 +10 11 diff --git a/geom_bottleneck/tests/data/test_204_B b/geom_bottleneck/tests/data/test_204_B new file mode 100644 index 0000000..c5d6236 --- /dev/null +++ b/geom_bottleneck/tests/data/test_204_B @@ -0,0 +1,7 @@ +9 10 +0 4 +4 7 +8 15 +8 9 +7 10 +10 11 diff --git a/geom_bottleneck/tests/data/test_205_A b/geom_bottleneck/tests/data/test_205_A new file mode 100644 index 0000000..d082be1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_205_A @@ -0,0 +1,7 @@ +8 17 +9 12 +2 11 +0 8 +10 11 +0 7 +8 18 diff --git a/geom_bottleneck/tests/data/test_205_B b/geom_bottleneck/tests/data/test_205_B new file mode 100644 index 0000000..30a242c --- /dev/null +++ b/geom_bottleneck/tests/data/test_205_B @@ -0,0 +1,7 @@ +10 17 +9 18 +6 11 +6 7 +10 17 +3 13 +8 17 diff --git a/geom_bottleneck/tests/data/test_206_A b/geom_bottleneck/tests/data/test_206_A new file mode 100644 index 0000000..15ee45b --- /dev/null +++ b/geom_bottleneck/tests/data/test_206_A @@ -0,0 +1,7 @@ +5 7 +8 17 +4 7 +7 17 +9 11 +0 8 +9 10 diff --git a/geom_bottleneck/tests/data/test_206_B b/geom_bottleneck/tests/data/test_206_B new file mode 100644 index 0000000..f8c89ef --- /dev/null +++ b/geom_bottleneck/tests/data/test_206_B @@ -0,0 +1,7 @@ +5 15 +9 17 +10 13 +6 13 +0 6 +10 16 +8 15 diff --git a/geom_bottleneck/tests/data/test_207_A b/geom_bottleneck/tests/data/test_207_A new file mode 100644 index 0000000..2015b9e --- /dev/null +++ b/geom_bottleneck/tests/data/test_207_A @@ -0,0 +1,7 @@ +4 9 +9 17 +9 10 +9 15 +2 3 +8 13 +9 13 diff --git a/geom_bottleneck/tests/data/test_207_B b/geom_bottleneck/tests/data/test_207_B new file mode 100644 index 0000000..036a8ca --- /dev/null +++ b/geom_bottleneck/tests/data/test_207_B @@ -0,0 +1,7 @@ +10 18 +1 3 +10 15 +5 14 +7 15 +0 1 +10 13 diff --git a/geom_bottleneck/tests/data/test_208_A b/geom_bottleneck/tests/data/test_208_A new file mode 100644 index 0000000..a1e6af4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_208_A @@ -0,0 +1,7 @@ +6 14 +2 7 +6 16 +7 14 +8 13 +2 5 +5 9 diff --git a/geom_bottleneck/tests/data/test_208_B b/geom_bottleneck/tests/data/test_208_B new file mode 100644 index 0000000..f21e91b --- /dev/null +++ b/geom_bottleneck/tests/data/test_208_B @@ -0,0 +1,7 @@ +3 10 +8 16 +2 11 +10 18 +2 6 +3 7 +3 8 diff --git a/geom_bottleneck/tests/data/test_209_A b/geom_bottleneck/tests/data/test_209_A new file mode 100644 index 0000000..545aae9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_209_A @@ -0,0 +1,7 @@ +10 18 +5 8 +4 7 +10 16 +4 10 +2 9 +1 6 diff --git a/geom_bottleneck/tests/data/test_209_B b/geom_bottleneck/tests/data/test_209_B new file mode 100644 index 0000000..2cf3171 --- /dev/null +++ b/geom_bottleneck/tests/data/test_209_B @@ -0,0 +1,7 @@ +10 11 +1 2 +0 6 +10 11 +9 11 +10 17 +1 2 diff --git a/geom_bottleneck/tests/data/test_210_A b/geom_bottleneck/tests/data/test_210_A new file mode 100644 index 0000000..799debc --- /dev/null +++ b/geom_bottleneck/tests/data/test_210_A @@ -0,0 +1,7 @@ +1 3 +6 7 +10 11 +7 16 +4 5 +2 5 +10 18 diff --git a/geom_bottleneck/tests/data/test_210_B b/geom_bottleneck/tests/data/test_210_B new file mode 100644 index 0000000..7cb0519 --- /dev/null +++ b/geom_bottleneck/tests/data/test_210_B @@ -0,0 +1,7 @@ +3 7 +5 13 +6 11 +0 10 +10 18 +8 9 +1 4 diff --git a/geom_bottleneck/tests/data/test_211_A b/geom_bottleneck/tests/data/test_211_A new file mode 100644 index 0000000..6715acb --- /dev/null +++ b/geom_bottleneck/tests/data/test_211_A @@ -0,0 +1,7 @@ +9 15 +1 5 +10 11 +2 6 +6 8 +2 9 +8 11 diff --git a/geom_bottleneck/tests/data/test_211_B b/geom_bottleneck/tests/data/test_211_B new file mode 100644 index 0000000..9c7890f --- /dev/null +++ b/geom_bottleneck/tests/data/test_211_B @@ -0,0 +1,7 @@ +5 7 +3 9 +1 3 +1 2 +4 5 +4 7 +3 7 diff --git a/geom_bottleneck/tests/data/test_212_A b/geom_bottleneck/tests/data/test_212_A new file mode 100644 index 0000000..e3d327a --- /dev/null +++ b/geom_bottleneck/tests/data/test_212_A @@ -0,0 +1,7 @@ +3 6 +8 12 +7 15 +6 11 +9 16 +4 8 +7 12 diff --git a/geom_bottleneck/tests/data/test_212_B b/geom_bottleneck/tests/data/test_212_B new file mode 100644 index 0000000..ee57410 --- /dev/null +++ b/geom_bottleneck/tests/data/test_212_B @@ -0,0 +1,7 @@ +9 17 +1 2 +10 17 +1 10 +5 8 +5 7 +7 10 diff --git a/geom_bottleneck/tests/data/test_213_A b/geom_bottleneck/tests/data/test_213_A new file mode 100644 index 0000000..4b904df --- /dev/null +++ b/geom_bottleneck/tests/data/test_213_A @@ -0,0 +1,7 @@ +4 8 +0 2 +0 7 +0 4 +6 15 +8 14 +3 10 diff --git a/geom_bottleneck/tests/data/test_213_B b/geom_bottleneck/tests/data/test_213_B new file mode 100644 index 0000000..f5188b4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_213_B @@ -0,0 +1,7 @@ +8 9 +8 13 +9 10 +2 12 +4 7 +7 8 +3 12 diff --git a/geom_bottleneck/tests/data/test_214_A b/geom_bottleneck/tests/data/test_214_A new file mode 100644 index 0000000..3914579 --- /dev/null +++ b/geom_bottleneck/tests/data/test_214_A @@ -0,0 +1,7 @@ +4 10 +7 8 +8 15 +1 4 +6 13 +8 15 +8 9 diff --git a/geom_bottleneck/tests/data/test_214_B b/geom_bottleneck/tests/data/test_214_B new file mode 100644 index 0000000..f75c54f --- /dev/null +++ b/geom_bottleneck/tests/data/test_214_B @@ -0,0 +1,7 @@ +5 12 +2 12 +5 10 +1 8 +10 19 +0 6 +3 9 diff --git a/geom_bottleneck/tests/data/test_215_A b/geom_bottleneck/tests/data/test_215_A new file mode 100644 index 0000000..a8d6070 --- /dev/null +++ b/geom_bottleneck/tests/data/test_215_A @@ -0,0 +1,7 @@ +3 4 +4 5 +3 9 +7 15 +9 12 +1 2 +4 12 diff --git a/geom_bottleneck/tests/data/test_215_B b/geom_bottleneck/tests/data/test_215_B new file mode 100644 index 0000000..d956b59 --- /dev/null +++ b/geom_bottleneck/tests/data/test_215_B @@ -0,0 +1,7 @@ +4 13 +5 7 +2 6 +9 12 +0 6 +0 1 +6 12 diff --git a/geom_bottleneck/tests/data/test_216_A b/geom_bottleneck/tests/data/test_216_A new file mode 100644 index 0000000..67c5e86 --- /dev/null +++ b/geom_bottleneck/tests/data/test_216_A @@ -0,0 +1,7 @@ +10 13 +10 17 +5 10 +4 6 +9 12 +6 9 +2 6 diff --git a/geom_bottleneck/tests/data/test_216_B b/geom_bottleneck/tests/data/test_216_B new file mode 100644 index 0000000..802850d --- /dev/null +++ b/geom_bottleneck/tests/data/test_216_B @@ -0,0 +1,7 @@ +3 9 +9 13 +1 2 +4 13 +1 8 +0 2 +1 2 diff --git a/geom_bottleneck/tests/data/test_217_A b/geom_bottleneck/tests/data/test_217_A new file mode 100644 index 0000000..a37f46d --- /dev/null +++ b/geom_bottleneck/tests/data/test_217_A @@ -0,0 +1,7 @@ +3 7 +1 4 +3 8 +1 2 +1 3 +8 9 +5 14 diff --git a/geom_bottleneck/tests/data/test_217_B b/geom_bottleneck/tests/data/test_217_B new file mode 100644 index 0000000..4cac64e --- /dev/null +++ b/geom_bottleneck/tests/data/test_217_B @@ -0,0 +1,7 @@ +3 12 +9 10 +9 10 +5 14 +0 8 +5 8 +2 5 diff --git a/geom_bottleneck/tests/data/test_218_A b/geom_bottleneck/tests/data/test_218_A new file mode 100644 index 0000000..7ca83bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_218_A @@ -0,0 +1,7 @@ +7 11 +6 14 +9 19 +6 8 +2 7 +4 8 +2 8 diff --git a/geom_bottleneck/tests/data/test_218_B b/geom_bottleneck/tests/data/test_218_B new file mode 100644 index 0000000..7c188f2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_218_B @@ -0,0 +1,7 @@ +2 4 +8 16 +3 13 +3 12 +1 11 +0 1 +5 7 diff --git a/geom_bottleneck/tests/data/test_219_A b/geom_bottleneck/tests/data/test_219_A new file mode 100644 index 0000000..275bc18 --- /dev/null +++ b/geom_bottleneck/tests/data/test_219_A @@ -0,0 +1,7 @@ +3 4 +8 10 +5 6 +3 7 +9 12 +5 6 +0 1 diff --git a/geom_bottleneck/tests/data/test_219_B b/geom_bottleneck/tests/data/test_219_B new file mode 100644 index 0000000..be6ab2a --- /dev/null +++ b/geom_bottleneck/tests/data/test_219_B @@ -0,0 +1,7 @@ +7 16 +1 2 +4 12 +9 17 +10 11 +9 14 +10 16 diff --git a/geom_bottleneck/tests/data/test_220_A b/geom_bottleneck/tests/data/test_220_A new file mode 100644 index 0000000..3b9ea09 --- /dev/null +++ b/geom_bottleneck/tests/data/test_220_A @@ -0,0 +1,8 @@ +8 18 +6 9 +7 12 +8 14 +7 8 +4 11 +9 18 +4 8 diff --git a/geom_bottleneck/tests/data/test_220_B b/geom_bottleneck/tests/data/test_220_B new file mode 100644 index 0000000..8e97d15 --- /dev/null +++ b/geom_bottleneck/tests/data/test_220_B @@ -0,0 +1,8 @@ +9 19 +5 9 +8 9 +2 10 +3 9 +2 5 +6 15 +9 14 diff --git a/geom_bottleneck/tests/data/test_221_A b/geom_bottleneck/tests/data/test_221_A new file mode 100644 index 0000000..2e229a8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_221_A @@ -0,0 +1,8 @@ +9 17 +4 10 +3 5 +9 18 +3 10 +9 18 +5 12 +0 10 diff --git a/geom_bottleneck/tests/data/test_221_B b/geom_bottleneck/tests/data/test_221_B new file mode 100644 index 0000000..e3c3c1b --- /dev/null +++ b/geom_bottleneck/tests/data/test_221_B @@ -0,0 +1,8 @@ +1 3 +1 2 +2 6 +10 19 +4 14 +10 18 +4 9 +9 19 diff --git a/geom_bottleneck/tests/data/test_222_A b/geom_bottleneck/tests/data/test_222_A new file mode 100644 index 0000000..fcb6c7f --- /dev/null +++ b/geom_bottleneck/tests/data/test_222_A @@ -0,0 +1,8 @@ +9 13 +6 10 +10 17 +9 14 +7 16 +2 4 +5 11 +10 13 diff --git a/geom_bottleneck/tests/data/test_222_B b/geom_bottleneck/tests/data/test_222_B new file mode 100644 index 0000000..512f188 --- /dev/null +++ b/geom_bottleneck/tests/data/test_222_B @@ -0,0 +1,8 @@ +1 11 +0 1 +8 10 +0 6 +9 19 +3 4 +2 6 +9 10 diff --git a/geom_bottleneck/tests/data/test_223_A b/geom_bottleneck/tests/data/test_223_A new file mode 100644 index 0000000..6f6cef5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_223_A @@ -0,0 +1,8 @@ +0 8 +2 6 +3 13 +9 16 +4 7 +4 14 +7 17 +6 7 diff --git a/geom_bottleneck/tests/data/test_223_B b/geom_bottleneck/tests/data/test_223_B new file mode 100644 index 0000000..07803f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_223_B @@ -0,0 +1,8 @@ +7 9 +3 10 +0 9 +0 1 +1 5 +2 8 +0 1 +10 18 diff --git a/geom_bottleneck/tests/data/test_224_A b/geom_bottleneck/tests/data/test_224_A new file mode 100644 index 0000000..f33d061 --- /dev/null +++ b/geom_bottleneck/tests/data/test_224_A @@ -0,0 +1,8 @@ +5 12 +0 6 +5 11 +9 17 +9 10 +0 10 +0 4 +8 13 diff --git a/geom_bottleneck/tests/data/test_224_B b/geom_bottleneck/tests/data/test_224_B new file mode 100644 index 0000000..1b9ef36 --- /dev/null +++ b/geom_bottleneck/tests/data/test_224_B @@ -0,0 +1,8 @@ +8 14 +3 13 +3 4 +9 19 +8 16 +5 9 +4 14 +2 4 diff --git a/geom_bottleneck/tests/data/test_225_A b/geom_bottleneck/tests/data/test_225_A new file mode 100644 index 0000000..cc0d576 --- /dev/null +++ b/geom_bottleneck/tests/data/test_225_A @@ -0,0 +1,8 @@ +0 1 +9 17 +3 12 +9 19 +8 15 +7 15 +6 10 +1 10 diff --git a/geom_bottleneck/tests/data/test_225_B b/geom_bottleneck/tests/data/test_225_B new file mode 100644 index 0000000..b810b48 --- /dev/null +++ b/geom_bottleneck/tests/data/test_225_B @@ -0,0 +1,8 @@ +8 11 +4 8 +8 14 +3 8 +2 10 +8 15 +5 14 +6 16 diff --git a/geom_bottleneck/tests/data/test_226_A b/geom_bottleneck/tests/data/test_226_A new file mode 100644 index 0000000..e39728a --- /dev/null +++ b/geom_bottleneck/tests/data/test_226_A @@ -0,0 +1,8 @@ +10 12 +3 5 +10 13 +6 8 +8 14 +8 15 +8 17 +3 8 diff --git a/geom_bottleneck/tests/data/test_226_B b/geom_bottleneck/tests/data/test_226_B new file mode 100644 index 0000000..601abce --- /dev/null +++ b/geom_bottleneck/tests/data/test_226_B @@ -0,0 +1,8 @@ +3 4 +9 19 +3 7 +9 10 +1 4 +7 12 +0 1 +4 13 diff --git a/geom_bottleneck/tests/data/test_227_A b/geom_bottleneck/tests/data/test_227_A new file mode 100644 index 0000000..e98b204 --- /dev/null +++ b/geom_bottleneck/tests/data/test_227_A @@ -0,0 +1,8 @@ +10 11 +8 9 +2 8 +5 14 +6 16 +3 9 +7 8 +0 7 diff --git a/geom_bottleneck/tests/data/test_227_B b/geom_bottleneck/tests/data/test_227_B new file mode 100644 index 0000000..3d5a25e --- /dev/null +++ b/geom_bottleneck/tests/data/test_227_B @@ -0,0 +1,8 @@ +7 8 +9 14 +2 7 +7 17 +5 13 +4 6 +3 4 +6 16 diff --git a/geom_bottleneck/tests/data/test_228_A b/geom_bottleneck/tests/data/test_228_A new file mode 100644 index 0000000..a3edeae --- /dev/null +++ b/geom_bottleneck/tests/data/test_228_A @@ -0,0 +1,8 @@ +9 10 +1 6 +8 10 +0 9 +0 2 +7 13 +10 20 +1 10 diff --git a/geom_bottleneck/tests/data/test_228_B b/geom_bottleneck/tests/data/test_228_B new file mode 100644 index 0000000..64f78ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_228_B @@ -0,0 +1,8 @@ +4 6 +9 12 +5 11 +9 16 +8 9 +7 16 +4 10 +3 4 diff --git a/geom_bottleneck/tests/data/test_229_A b/geom_bottleneck/tests/data/test_229_A new file mode 100644 index 0000000..c832a04 --- /dev/null +++ b/geom_bottleneck/tests/data/test_229_A @@ -0,0 +1,8 @@ +9 12 +1 10 +6 14 +4 9 +7 11 +3 12 +6 8 +4 12 diff --git a/geom_bottleneck/tests/data/test_229_B b/geom_bottleneck/tests/data/test_229_B new file mode 100644 index 0000000..0f232d0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_229_B @@ -0,0 +1,8 @@ +7 13 +2 11 +6 10 +6 10 +7 15 +10 14 +10 13 +10 14 diff --git a/geom_bottleneck/tests/data/test_230_A b/geom_bottleneck/tests/data/test_230_A new file mode 100644 index 0000000..11d75a8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_230_A @@ -0,0 +1,8 @@ +9 16 +3 5 +3 11 +0 7 +0 2 +10 16 +4 6 +8 16 diff --git a/geom_bottleneck/tests/data/test_230_B b/geom_bottleneck/tests/data/test_230_B new file mode 100644 index 0000000..f30b9d0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_230_B @@ -0,0 +1,8 @@ +4 11 +7 14 +8 17 +6 13 +0 1 +6 10 +8 10 +1 6 diff --git a/geom_bottleneck/tests/data/test_231_A b/geom_bottleneck/tests/data/test_231_A new file mode 100644 index 0000000..8d21ce3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_231_A @@ -0,0 +1,8 @@ +2 9 +1 11 +10 20 +7 16 +7 9 +0 7 +6 7 +6 7 diff --git a/geom_bottleneck/tests/data/test_231_B b/geom_bottleneck/tests/data/test_231_B new file mode 100644 index 0000000..f5d94fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_231_B @@ -0,0 +1,8 @@ +7 10 +10 19 +8 9 +5 12 +7 17 +3 5 +10 11 +0 1 diff --git a/geom_bottleneck/tests/data/test_232_A b/geom_bottleneck/tests/data/test_232_A new file mode 100644 index 0000000..ccad736 --- /dev/null +++ b/geom_bottleneck/tests/data/test_232_A @@ -0,0 +1,8 @@ +1 6 +5 9 +9 10 +0 9 +0 8 +10 11 +2 7 +6 7 diff --git a/geom_bottleneck/tests/data/test_232_B b/geom_bottleneck/tests/data/test_232_B new file mode 100644 index 0000000..f132580 --- /dev/null +++ b/geom_bottleneck/tests/data/test_232_B @@ -0,0 +1,8 @@ +5 8 +4 5 +10 17 +10 16 +4 10 +5 14 +5 6 +0 7 diff --git a/geom_bottleneck/tests/data/test_233_A b/geom_bottleneck/tests/data/test_233_A new file mode 100644 index 0000000..fd2fa4e --- /dev/null +++ b/geom_bottleneck/tests/data/test_233_A @@ -0,0 +1,8 @@ +9 13 +2 6 +0 1 +6 14 +9 13 +0 1 +6 9 +2 9 diff --git a/geom_bottleneck/tests/data/test_233_B b/geom_bottleneck/tests/data/test_233_B new file mode 100644 index 0000000..3dc34c6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_233_B @@ -0,0 +1,8 @@ +8 12 +5 12 +1 5 +10 13 +1 7 +8 14 +7 15 +1 8 diff --git a/geom_bottleneck/tests/data/test_234_A b/geom_bottleneck/tests/data/test_234_A new file mode 100644 index 0000000..6ff3442 --- /dev/null +++ b/geom_bottleneck/tests/data/test_234_A @@ -0,0 +1,8 @@ +0 7 +5 13 +10 20 +1 2 +9 10 +10 17 +1 2 +0 7 diff --git a/geom_bottleneck/tests/data/test_234_B b/geom_bottleneck/tests/data/test_234_B new file mode 100644 index 0000000..36a2966 --- /dev/null +++ b/geom_bottleneck/tests/data/test_234_B @@ -0,0 +1,8 @@ +2 12 +1 2 +3 4 +1 4 +0 7 +7 8 +8 13 +9 18 diff --git a/geom_bottleneck/tests/data/test_235_A b/geom_bottleneck/tests/data/test_235_A new file mode 100644 index 0000000..40aec79 --- /dev/null +++ b/geom_bottleneck/tests/data/test_235_A @@ -0,0 +1,8 @@ +4 7 +10 11 +7 12 +2 7 +8 11 +9 11 +8 12 +7 16 diff --git a/geom_bottleneck/tests/data/test_235_B b/geom_bottleneck/tests/data/test_235_B new file mode 100644 index 0000000..910422b --- /dev/null +++ b/geom_bottleneck/tests/data/test_235_B @@ -0,0 +1,8 @@ +1 3 +9 15 +10 20 +6 16 +2 8 +3 9 +8 10 +9 14 diff --git a/geom_bottleneck/tests/data/test_236_A b/geom_bottleneck/tests/data/test_236_A new file mode 100644 index 0000000..8ca54db --- /dev/null +++ b/geom_bottleneck/tests/data/test_236_A @@ -0,0 +1,8 @@ +5 11 +10 15 +7 9 +8 14 +0 5 +1 7 +2 3 +6 11 diff --git a/geom_bottleneck/tests/data/test_236_B b/geom_bottleneck/tests/data/test_236_B new file mode 100644 index 0000000..0855757 --- /dev/null +++ b/geom_bottleneck/tests/data/test_236_B @@ -0,0 +1,8 @@ +4 5 +1 8 +1 2 +1 4 +8 17 +2 5 +3 10 +1 2 diff --git a/geom_bottleneck/tests/data/test_237_A b/geom_bottleneck/tests/data/test_237_A new file mode 100644 index 0000000..18a69fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_237_A @@ -0,0 +1,8 @@ +1 6 +3 6 +4 8 +0 3 +7 14 +6 7 +2 5 +6 13 diff --git a/geom_bottleneck/tests/data/test_237_B b/geom_bottleneck/tests/data/test_237_B new file mode 100644 index 0000000..b2ad13f --- /dev/null +++ b/geom_bottleneck/tests/data/test_237_B @@ -0,0 +1,8 @@ +3 8 +6 16 +3 11 +6 15 +7 14 +6 11 +3 5 +8 14 diff --git a/geom_bottleneck/tests/data/test_238_A b/geom_bottleneck/tests/data/test_238_A new file mode 100644 index 0000000..d9011b0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_238_A @@ -0,0 +1,8 @@ +7 16 +3 12 +4 7 +7 13 +6 9 +5 8 +5 9 +3 4 diff --git a/geom_bottleneck/tests/data/test_238_B b/geom_bottleneck/tests/data/test_238_B new file mode 100644 index 0000000..788cf40 --- /dev/null +++ b/geom_bottleneck/tests/data/test_238_B @@ -0,0 +1,8 @@ +5 6 +0 10 +2 5 +1 2 +9 16 +0 8 +0 3 +5 12 diff --git a/geom_bottleneck/tests/data/test_239_A b/geom_bottleneck/tests/data/test_239_A new file mode 100644 index 0000000..dbb3bec --- /dev/null +++ b/geom_bottleneck/tests/data/test_239_A @@ -0,0 +1,8 @@ +2 10 +1 6 +10 20 +7 10 +2 7 +4 11 +0 5 +6 13 diff --git a/geom_bottleneck/tests/data/test_239_B b/geom_bottleneck/tests/data/test_239_B new file mode 100644 index 0000000..a0c12ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_239_B @@ -0,0 +1,8 @@ +1 5 +1 3 +5 8 +9 16 +8 17 +9 13 +3 4 +4 7 diff --git a/geom_bottleneck/tests/data/test_240_A b/geom_bottleneck/tests/data/test_240_A new file mode 100644 index 0000000..2386a27 --- /dev/null +++ b/geom_bottleneck/tests/data/test_240_A @@ -0,0 +1,9 @@ +0 1 +10 15 +6 7 +5 14 +10 15 +9 12 +0 4 +10 11 +3 10 diff --git a/geom_bottleneck/tests/data/test_240_B b/geom_bottleneck/tests/data/test_240_B new file mode 100644 index 0000000..15439fb --- /dev/null +++ b/geom_bottleneck/tests/data/test_240_B @@ -0,0 +1,9 @@ +0 3 +3 6 +2 12 +3 4 +9 13 +0 3 +0 7 +10 17 +6 15 diff --git a/geom_bottleneck/tests/data/test_241_A b/geom_bottleneck/tests/data/test_241_A new file mode 100644 index 0000000..8ed0c54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_241_A @@ -0,0 +1,9 @@ +1 10 +10 14 +3 4 +3 6 +7 12 +1 3 +9 14 +0 2 +1 11 diff --git a/geom_bottleneck/tests/data/test_241_B b/geom_bottleneck/tests/data/test_241_B new file mode 100644 index 0000000..fdac53a --- /dev/null +++ b/geom_bottleneck/tests/data/test_241_B @@ -0,0 +1,9 @@ +7 8 +8 14 +10 20 +10 16 +2 7 +0 8 +7 17 +1 2 +5 6 diff --git a/geom_bottleneck/tests/data/test_242_A b/geom_bottleneck/tests/data/test_242_A new file mode 100644 index 0000000..e1af329 --- /dev/null +++ b/geom_bottleneck/tests/data/test_242_A @@ -0,0 +1,9 @@ +0 3 +2 4 +5 14 +4 8 +0 7 +3 13 +5 11 +5 7 +10 19 diff --git a/geom_bottleneck/tests/data/test_242_B b/geom_bottleneck/tests/data/test_242_B new file mode 100644 index 0000000..b45d054 --- /dev/null +++ b/geom_bottleneck/tests/data/test_242_B @@ -0,0 +1,9 @@ +5 6 +6 13 +7 12 +2 10 +0 9 +2 11 +2 9 +8 10 +10 13 diff --git a/geom_bottleneck/tests/data/test_243_A b/geom_bottleneck/tests/data/test_243_A new file mode 100644 index 0000000..ed2d61b --- /dev/null +++ b/geom_bottleneck/tests/data/test_243_A @@ -0,0 +1,9 @@ +4 6 +10 11 +4 7 +8 14 +1 4 +9 15 +8 10 +4 11 +7 10 diff --git a/geom_bottleneck/tests/data/test_243_B b/geom_bottleneck/tests/data/test_243_B new file mode 100644 index 0000000..f0b5359 --- /dev/null +++ b/geom_bottleneck/tests/data/test_243_B @@ -0,0 +1,9 @@ +7 8 +1 9 +7 10 +5 6 +3 11 +10 12 +1 8 +3 13 +0 9 diff --git a/geom_bottleneck/tests/data/test_244_A b/geom_bottleneck/tests/data/test_244_A new file mode 100644 index 0000000..1d1e4a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_244_A @@ -0,0 +1,9 @@ +4 14 +3 8 +0 3 +3 12 +9 16 +4 7 +6 12 +7 8 +5 13 diff --git a/geom_bottleneck/tests/data/test_244_B b/geom_bottleneck/tests/data/test_244_B new file mode 100644 index 0000000..5d9748f --- /dev/null +++ b/geom_bottleneck/tests/data/test_244_B @@ -0,0 +1,9 @@ +3 7 +3 8 +5 15 +4 7 +1 2 +0 10 +6 15 +8 9 +4 5 diff --git a/geom_bottleneck/tests/data/test_245_A b/geom_bottleneck/tests/data/test_245_A new file mode 100644 index 0000000..f17d580 --- /dev/null +++ b/geom_bottleneck/tests/data/test_245_A @@ -0,0 +1,9 @@ +5 6 +3 11 +7 9 +1 7 +5 14 +4 7 +9 19 +1 7 +4 6 diff --git a/geom_bottleneck/tests/data/test_245_B b/geom_bottleneck/tests/data/test_245_B new file mode 100644 index 0000000..4b67caa --- /dev/null +++ b/geom_bottleneck/tests/data/test_245_B @@ -0,0 +1,9 @@ +1 2 +6 7 +7 13 +1 9 +9 13 +2 8 +2 4 +4 5 +4 7 diff --git a/geom_bottleneck/tests/data/test_246_A b/geom_bottleneck/tests/data/test_246_A new file mode 100644 index 0000000..b4ddade --- /dev/null +++ b/geom_bottleneck/tests/data/test_246_A @@ -0,0 +1,9 @@ +10 15 +3 10 +2 7 +1 6 +2 3 +2 9 +9 10 +9 12 +8 18 diff --git a/geom_bottleneck/tests/data/test_246_B b/geom_bottleneck/tests/data/test_246_B new file mode 100644 index 0000000..6e0c12d --- /dev/null +++ b/geom_bottleneck/tests/data/test_246_B @@ -0,0 +1,9 @@ +4 9 +4 7 +6 11 +7 10 +0 3 +7 14 +7 17 +4 6 +10 15 diff --git a/geom_bottleneck/tests/data/test_247_A b/geom_bottleneck/tests/data/test_247_A new file mode 100644 index 0000000..4832963 --- /dev/null +++ b/geom_bottleneck/tests/data/test_247_A @@ -0,0 +1,9 @@ +5 14 +9 19 +4 5 +3 4 +2 7 +9 12 +10 11 +7 12 +8 12 diff --git a/geom_bottleneck/tests/data/test_247_B b/geom_bottleneck/tests/data/test_247_B new file mode 100644 index 0000000..17cc1f0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_247_B @@ -0,0 +1,9 @@ +4 12 +2 7 +1 2 +9 19 +4 14 +6 12 +8 11 +5 12 +9 10 diff --git a/geom_bottleneck/tests/data/test_248_A b/geom_bottleneck/tests/data/test_248_A new file mode 100644 index 0000000..adbf3d6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_248_A @@ -0,0 +1,9 @@ +8 9 +8 15 +2 12 +0 1 +8 14 +0 5 +7 17 +7 12 +7 10 diff --git a/geom_bottleneck/tests/data/test_248_B b/geom_bottleneck/tests/data/test_248_B new file mode 100644 index 0000000..39ee264 --- /dev/null +++ b/geom_bottleneck/tests/data/test_248_B @@ -0,0 +1,9 @@ +6 11 +1 10 +6 16 +10 13 +3 13 +10 16 +8 14 +8 16 +1 5 diff --git a/geom_bottleneck/tests/data/test_249_A b/geom_bottleneck/tests/data/test_249_A new file mode 100644 index 0000000..2b8a639 --- /dev/null +++ b/geom_bottleneck/tests/data/test_249_A @@ -0,0 +1,9 @@ +2 7 +2 4 +7 17 +2 11 +6 12 +3 12 +2 8 +5 6 +0 1 diff --git a/geom_bottleneck/tests/data/test_249_B b/geom_bottleneck/tests/data/test_249_B new file mode 100644 index 0000000..06b036c --- /dev/null +++ b/geom_bottleneck/tests/data/test_249_B @@ -0,0 +1,9 @@ +0 1 +8 11 +9 13 +3 11 +3 13 +7 15 +2 6 +4 5 +3 4 diff --git a/geom_bottleneck/tests/data/test_250_A b/geom_bottleneck/tests/data/test_250_A new file mode 100644 index 0000000..6934dd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_250_A @@ -0,0 +1,9 @@ +0 8 +7 14 +5 12 +7 15 +9 19 +8 14 +6 15 +10 11 +9 19 diff --git a/geom_bottleneck/tests/data/test_250_B b/geom_bottleneck/tests/data/test_250_B new file mode 100644 index 0000000..0d387ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_250_B @@ -0,0 +1,9 @@ +8 13 +7 14 +0 6 +4 14 +7 17 +6 8 +5 13 +0 1 +5 10 diff --git a/geom_bottleneck/tests/data/test_251_A b/geom_bottleneck/tests/data/test_251_A new file mode 100644 index 0000000..6fb7509 --- /dev/null +++ b/geom_bottleneck/tests/data/test_251_A @@ -0,0 +1,9 @@ +1 8 +6 13 +1 6 +10 15 +7 8 +3 6 +3 11 +7 12 +4 9 diff --git a/geom_bottleneck/tests/data/test_251_B b/geom_bottleneck/tests/data/test_251_B new file mode 100644 index 0000000..4ea7b4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_251_B @@ -0,0 +1,9 @@ +5 11 +6 12 +2 9 +5 6 +0 5 +0 2 +6 10 +4 10 +10 19 diff --git a/geom_bottleneck/tests/data/test_252_A b/geom_bottleneck/tests/data/test_252_A new file mode 100644 index 0000000..0076fb9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_252_A @@ -0,0 +1,9 @@ +4 8 +5 15 +0 10 +8 15 +1 8 +4 6 +5 13 +7 10 +0 1 diff --git a/geom_bottleneck/tests/data/test_252_B b/geom_bottleneck/tests/data/test_252_B new file mode 100644 index 0000000..cf7fab7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_252_B @@ -0,0 +1,9 @@ +2 3 +4 6 +0 9 +4 7 +4 11 +6 10 +9 11 +1 5 +3 4 diff --git a/geom_bottleneck/tests/data/test_253_A b/geom_bottleneck/tests/data/test_253_A new file mode 100644 index 0000000..0916538 --- /dev/null +++ b/geom_bottleneck/tests/data/test_253_A @@ -0,0 +1,9 @@ +9 18 +1 10 +7 12 +0 6 +2 4 +1 10 +2 4 +1 2 +2 11 diff --git a/geom_bottleneck/tests/data/test_253_B b/geom_bottleneck/tests/data/test_253_B new file mode 100644 index 0000000..3ee1874 --- /dev/null +++ b/geom_bottleneck/tests/data/test_253_B @@ -0,0 +1,9 @@ +9 12 +6 11 +0 1 +6 7 +2 5 +6 8 +10 20 +9 17 +8 15 diff --git a/geom_bottleneck/tests/data/test_254_A b/geom_bottleneck/tests/data/test_254_A new file mode 100644 index 0000000..85af9cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_254_A @@ -0,0 +1,9 @@ +1 9 +2 10 +4 7 +4 14 +3 9 +1 11 +7 16 +10 11 +5 15 diff --git a/geom_bottleneck/tests/data/test_254_B b/geom_bottleneck/tests/data/test_254_B new file mode 100644 index 0000000..573f5c5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_254_B @@ -0,0 +1,9 @@ +9 13 +0 1 +8 9 +8 9 +3 10 +5 14 +6 12 +3 5 +2 3 diff --git a/geom_bottleneck/tests/data/test_255_A b/geom_bottleneck/tests/data/test_255_A new file mode 100644 index 0000000..2fc0a84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_255_A @@ -0,0 +1,9 @@ +10 11 +4 8 +2 10 +2 10 +3 8 +6 7 +8 14 +2 10 +4 11 diff --git a/geom_bottleneck/tests/data/test_255_B b/geom_bottleneck/tests/data/test_255_B new file mode 100644 index 0000000..04e0521 --- /dev/null +++ b/geom_bottleneck/tests/data/test_255_B @@ -0,0 +1,9 @@ +5 13 +8 12 +8 9 +4 10 +7 8 +1 7 +3 11 +10 15 +5 10 diff --git a/geom_bottleneck/tests/data/test_256_A b/geom_bottleneck/tests/data/test_256_A new file mode 100644 index 0000000..bb1df33 --- /dev/null +++ b/geom_bottleneck/tests/data/test_256_A @@ -0,0 +1,9 @@ +6 7 +7 8 +10 16 +2 5 +5 15 +7 9 +10 15 +9 18 +4 9 diff --git a/geom_bottleneck/tests/data/test_256_B b/geom_bottleneck/tests/data/test_256_B new file mode 100644 index 0000000..a9bb2f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_256_B @@ -0,0 +1,9 @@ +0 10 +7 9 +9 10 +7 8 +1 2 +2 4 +8 15 +3 7 +0 2 diff --git a/geom_bottleneck/tests/data/test_257_A b/geom_bottleneck/tests/data/test_257_A new file mode 100644 index 0000000..ac06787 --- /dev/null +++ b/geom_bottleneck/tests/data/test_257_A @@ -0,0 +1,9 @@ +6 14 +9 16 +9 18 +4 7 +8 15 +7 9 +9 17 +1 2 +10 17 diff --git a/geom_bottleneck/tests/data/test_257_B b/geom_bottleneck/tests/data/test_257_B new file mode 100644 index 0000000..93ab86c --- /dev/null +++ b/geom_bottleneck/tests/data/test_257_B @@ -0,0 +1,9 @@ +2 3 +3 6 +10 13 +7 14 +0 8 +0 2 +9 12 +1 7 +0 1 diff --git a/geom_bottleneck/tests/data/test_258_A b/geom_bottleneck/tests/data/test_258_A new file mode 100644 index 0000000..b00d4c3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_258_A @@ -0,0 +1,9 @@ +4 11 +0 6 +5 6 +2 4 +2 7 +8 11 +3 8 +3 4 +7 10 diff --git a/geom_bottleneck/tests/data/test_258_B b/geom_bottleneck/tests/data/test_258_B new file mode 100644 index 0000000..f3ab79e --- /dev/null +++ b/geom_bottleneck/tests/data/test_258_B @@ -0,0 +1,9 @@ +6 15 +5 10 +9 10 +4 10 +7 8 +2 8 +8 18 +9 18 +5 9 diff --git a/geom_bottleneck/tests/data/test_259_A b/geom_bottleneck/tests/data/test_259_A new file mode 100644 index 0000000..30c4a56 --- /dev/null +++ b/geom_bottleneck/tests/data/test_259_A @@ -0,0 +1,9 @@ +4 5 +0 1 +4 7 +5 14 +2 8 +0 1 +9 13 +5 9 +10 13 diff --git a/geom_bottleneck/tests/data/test_259_B b/geom_bottleneck/tests/data/test_259_B new file mode 100644 index 0000000..8cb51f7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_259_B @@ -0,0 +1,9 @@ +6 15 +9 18 +7 8 +9 16 +9 15 +5 15 +9 10 +6 10 +5 6 diff --git a/geom_bottleneck/tests/data/test_260_A b/geom_bottleneck/tests/data/test_260_A new file mode 100644 index 0000000..83740c1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_260_A @@ -0,0 +1,10 @@ +1 4 +2 5 +3 7 +7 9 +4 13 +8 15 +10 19 +9 14 +10 18 +10 17 diff --git a/geom_bottleneck/tests/data/test_260_B b/geom_bottleneck/tests/data/test_260_B new file mode 100644 index 0000000..18e1128 --- /dev/null +++ b/geom_bottleneck/tests/data/test_260_B @@ -0,0 +1,10 @@ +0 4 +8 15 +4 6 +10 13 +6 7 +7 10 +8 13 +2 7 +4 13 +3 5 diff --git a/geom_bottleneck/tests/data/test_261_A b/geom_bottleneck/tests/data/test_261_A new file mode 100644 index 0000000..259e18a --- /dev/null +++ b/geom_bottleneck/tests/data/test_261_A @@ -0,0 +1,10 @@ +8 11 +6 11 +9 16 +7 17 +7 14 +9 11 +0 1 +9 14 +6 14 +0 10 diff --git a/geom_bottleneck/tests/data/test_261_B b/geom_bottleneck/tests/data/test_261_B new file mode 100644 index 0000000..2be943f --- /dev/null +++ b/geom_bottleneck/tests/data/test_261_B @@ -0,0 +1,10 @@ +8 18 +5 7 +9 12 +7 10 +3 6 +4 14 +9 15 +8 14 +1 9 +0 5 diff --git a/geom_bottleneck/tests/data/test_262_A b/geom_bottleneck/tests/data/test_262_A new file mode 100644 index 0000000..ccb706b --- /dev/null +++ b/geom_bottleneck/tests/data/test_262_A @@ -0,0 +1,10 @@ +1 8 +6 16 +7 13 +10 13 +7 11 +10 15 +10 17 +8 17 +0 3 +5 6 diff --git a/geom_bottleneck/tests/data/test_262_B b/geom_bottleneck/tests/data/test_262_B new file mode 100644 index 0000000..944d288 --- /dev/null +++ b/geom_bottleneck/tests/data/test_262_B @@ -0,0 +1,10 @@ +9 18 +7 8 +0 8 +8 15 +6 14 +6 11 +6 16 +7 17 +3 4 +4 7 diff --git a/geom_bottleneck/tests/data/test_263_A b/geom_bottleneck/tests/data/test_263_A new file mode 100644 index 0000000..6262062 --- /dev/null +++ b/geom_bottleneck/tests/data/test_263_A @@ -0,0 +1,10 @@ +0 9 +10 11 +4 13 +9 13 +4 6 +7 13 +4 5 +7 9 +10 11 +10 18 diff --git a/geom_bottleneck/tests/data/test_263_B b/geom_bottleneck/tests/data/test_263_B new file mode 100644 index 0000000..c9f8716 --- /dev/null +++ b/geom_bottleneck/tests/data/test_263_B @@ -0,0 +1,10 @@ +2 6 +6 13 +2 12 +3 13 +5 6 +10 16 +9 18 +9 16 +10 18 +10 20 diff --git a/geom_bottleneck/tests/data/test_264_A b/geom_bottleneck/tests/data/test_264_A new file mode 100644 index 0000000..8c79b6d --- /dev/null +++ b/geom_bottleneck/tests/data/test_264_A @@ -0,0 +1,10 @@ +3 11 +3 4 +8 12 +2 10 +7 12 +2 10 +10 13 +4 8 +2 9 +10 11 diff --git a/geom_bottleneck/tests/data/test_264_B b/geom_bottleneck/tests/data/test_264_B new file mode 100644 index 0000000..9b92607 --- /dev/null +++ b/geom_bottleneck/tests/data/test_264_B @@ -0,0 +1,10 @@ +7 11 +2 7 +4 12 +9 10 +10 12 +8 15 +8 12 +6 7 +2 11 +10 11 diff --git a/geom_bottleneck/tests/data/test_265_A b/geom_bottleneck/tests/data/test_265_A new file mode 100644 index 0000000..4de3ff9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_265_A @@ -0,0 +1,10 @@ +0 4 +1 2 +6 11 +9 19 +0 6 +9 19 +0 5 +4 5 +7 11 +9 14 diff --git a/geom_bottleneck/tests/data/test_265_B b/geom_bottleneck/tests/data/test_265_B new file mode 100644 index 0000000..f03f49f --- /dev/null +++ b/geom_bottleneck/tests/data/test_265_B @@ -0,0 +1,10 @@ +1 7 +5 10 +5 10 +4 6 +0 7 +4 12 +8 11 +10 15 +2 11 +8 17 diff --git a/geom_bottleneck/tests/data/test_266_A b/geom_bottleneck/tests/data/test_266_A new file mode 100644 index 0000000..95754d3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_266_A @@ -0,0 +1,10 @@ +7 8 +3 12 +0 5 +0 6 +1 5 +9 17 +6 11 +3 5 +2 11 +5 7 diff --git a/geom_bottleneck/tests/data/test_266_B b/geom_bottleneck/tests/data/test_266_B new file mode 100644 index 0000000..5a2d560 --- /dev/null +++ b/geom_bottleneck/tests/data/test_266_B @@ -0,0 +1,10 @@ +10 17 +5 13 +9 10 +3 4 +4 10 +6 12 +0 7 +6 14 +1 6 +4 10 diff --git a/geom_bottleneck/tests/data/test_267_A b/geom_bottleneck/tests/data/test_267_A new file mode 100644 index 0000000..d2c663e --- /dev/null +++ b/geom_bottleneck/tests/data/test_267_A @@ -0,0 +1,10 @@ +3 4 +10 20 +2 10 +1 7 +0 4 +0 10 +0 8 +3 4 +9 19 +7 13 diff --git a/geom_bottleneck/tests/data/test_267_B b/geom_bottleneck/tests/data/test_267_B new file mode 100644 index 0000000..aebae2b --- /dev/null +++ b/geom_bottleneck/tests/data/test_267_B @@ -0,0 +1,10 @@ +2 11 +4 5 +1 10 +3 9 +6 11 +0 8 +2 3 +0 3 +6 11 +7 12 diff --git a/geom_bottleneck/tests/data/test_268_A b/geom_bottleneck/tests/data/test_268_A new file mode 100644 index 0000000..d0e9835 --- /dev/null +++ b/geom_bottleneck/tests/data/test_268_A @@ -0,0 +1,10 @@ +3 4 +10 17 +8 17 +0 2 +4 8 +0 8 +4 5 +5 6 +1 2 +1 7 diff --git a/geom_bottleneck/tests/data/test_268_B b/geom_bottleneck/tests/data/test_268_B new file mode 100644 index 0000000..ac0c242 --- /dev/null +++ b/geom_bottleneck/tests/data/test_268_B @@ -0,0 +1,10 @@ +3 11 +3 6 +1 2 +8 9 +2 5 +4 13 +4 9 +9 18 +9 15 +9 13 diff --git a/geom_bottleneck/tests/data/test_269_A b/geom_bottleneck/tests/data/test_269_A new file mode 100644 index 0000000..62a1a47 --- /dev/null +++ b/geom_bottleneck/tests/data/test_269_A @@ -0,0 +1,10 @@ +10 17 +10 18 +3 10 +6 8 +3 5 +5 11 +5 12 +9 13 +6 16 +2 11 diff --git a/geom_bottleneck/tests/data/test_269_B b/geom_bottleneck/tests/data/test_269_B new file mode 100644 index 0000000..ecf44f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_269_B @@ -0,0 +1,10 @@ +3 8 +2 9 +1 6 +8 11 +10 18 +4 12 +0 2 +0 1 +0 8 +0 4 diff --git a/geom_bottleneck/tests/data/test_270_A b/geom_bottleneck/tests/data/test_270_A new file mode 100644 index 0000000..6bd9f37 --- /dev/null +++ b/geom_bottleneck/tests/data/test_270_A @@ -0,0 +1,10 @@ +6 16 +3 8 +6 7 +5 10 +7 17 +1 2 +10 19 +10 18 +4 9 +9 14 diff --git a/geom_bottleneck/tests/data/test_270_B b/geom_bottleneck/tests/data/test_270_B new file mode 100644 index 0000000..5e177c7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_270_B @@ -0,0 +1,10 @@ +8 14 +10 14 +6 7 +3 8 +9 10 +3 7 +2 3 +2 3 +10 19 +8 15 diff --git a/geom_bottleneck/tests/data/test_271_A b/geom_bottleneck/tests/data/test_271_A new file mode 100644 index 0000000..12f7492 --- /dev/null +++ b/geom_bottleneck/tests/data/test_271_A @@ -0,0 +1,10 @@ +0 7 +0 6 +3 10 +3 6 +1 10 +10 11 +3 13 +9 16 +9 15 +10 20 diff --git a/geom_bottleneck/tests/data/test_271_B b/geom_bottleneck/tests/data/test_271_B new file mode 100644 index 0000000..1af6dd6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_271_B @@ -0,0 +1,10 @@ +9 10 +9 16 +10 14 +1 4 +8 14 +10 11 +9 10 +3 7 +6 14 +7 8 diff --git a/geom_bottleneck/tests/data/test_272_A b/geom_bottleneck/tests/data/test_272_A new file mode 100644 index 0000000..b6b67f0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_272_A @@ -0,0 +1,10 @@ +9 17 +6 16 +6 8 +1 2 +7 12 +1 4 +0 9 +9 16 +8 10 +10 11 diff --git a/geom_bottleneck/tests/data/test_272_B b/geom_bottleneck/tests/data/test_272_B new file mode 100644 index 0000000..9b12c0e --- /dev/null +++ b/geom_bottleneck/tests/data/test_272_B @@ -0,0 +1,10 @@ +1 11 +9 14 +8 9 +3 11 +7 15 +0 5 +0 8 +5 11 +0 1 +10 11 diff --git a/geom_bottleneck/tests/data/test_273_A b/geom_bottleneck/tests/data/test_273_A new file mode 100644 index 0000000..6ae8fde --- /dev/null +++ b/geom_bottleneck/tests/data/test_273_A @@ -0,0 +1,10 @@ +2 10 +8 9 +10 19 +3 7 +4 5 +1 8 +0 5 +6 9 +0 1 +4 10 diff --git a/geom_bottleneck/tests/data/test_273_B b/geom_bottleneck/tests/data/test_273_B new file mode 100644 index 0000000..42955e8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_273_B @@ -0,0 +1,10 @@ +9 19 +0 2 +0 1 +2 9 +7 9 +2 7 +3 6 +9 10 +2 3 +0 9 diff --git a/geom_bottleneck/tests/data/test_274_A b/geom_bottleneck/tests/data/test_274_A new file mode 100644 index 0000000..78e099d --- /dev/null +++ b/geom_bottleneck/tests/data/test_274_A @@ -0,0 +1,10 @@ +0 1 +10 11 +4 6 +9 15 +9 19 +4 7 +8 17 +0 7 +7 17 +4 14 diff --git a/geom_bottleneck/tests/data/test_274_B b/geom_bottleneck/tests/data/test_274_B new file mode 100644 index 0000000..59cac0c --- /dev/null +++ b/geom_bottleneck/tests/data/test_274_B @@ -0,0 +1,10 @@ +4 12 +2 7 +0 5 +3 10 +7 15 +3 8 +8 14 +8 11 +6 14 +6 16 diff --git a/geom_bottleneck/tests/data/test_275_A b/geom_bottleneck/tests/data/test_275_A new file mode 100644 index 0000000..9593ad1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_275_A @@ -0,0 +1,10 @@ +7 13 +2 3 +10 11 +5 10 +6 11 +10 16 +5 10 +5 9 +10 18 +10 11 diff --git a/geom_bottleneck/tests/data/test_275_B b/geom_bottleneck/tests/data/test_275_B new file mode 100644 index 0000000..46d793b --- /dev/null +++ b/geom_bottleneck/tests/data/test_275_B @@ -0,0 +1,10 @@ +9 19 +10 11 +8 9 +7 8 +4 8 +0 2 +4 12 +6 16 +4 9 +8 9 diff --git a/geom_bottleneck/tests/data/test_276_A b/geom_bottleneck/tests/data/test_276_A new file mode 100644 index 0000000..546a9ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_276_A @@ -0,0 +1,10 @@ +6 16 +2 3 +0 6 +9 18 +3 13 +1 5 +1 6 +3 4 +7 11 +0 1 diff --git a/geom_bottleneck/tests/data/test_276_B b/geom_bottleneck/tests/data/test_276_B new file mode 100644 index 0000000..3b63537 --- /dev/null +++ b/geom_bottleneck/tests/data/test_276_B @@ -0,0 +1,10 @@ +9 17 +8 9 +7 10 +2 10 +2 11 +2 7 +6 11 +7 12 +10 18 +4 14 diff --git a/geom_bottleneck/tests/data/test_277_A b/geom_bottleneck/tests/data/test_277_A new file mode 100644 index 0000000..41ee575 --- /dev/null +++ b/geom_bottleneck/tests/data/test_277_A @@ -0,0 +1,10 @@ +6 8 +6 15 +0 10 +9 10 +5 10 +4 10 +0 5 +5 9 +8 9 +2 5 diff --git a/geom_bottleneck/tests/data/test_277_B b/geom_bottleneck/tests/data/test_277_B new file mode 100644 index 0000000..84ade69 --- /dev/null +++ b/geom_bottleneck/tests/data/test_277_B @@ -0,0 +1,10 @@ +0 2 +4 7 +3 12 +8 13 +2 3 +9 18 +8 16 +2 3 +10 20 +4 10 diff --git a/geom_bottleneck/tests/data/test_278_A b/geom_bottleneck/tests/data/test_278_A new file mode 100644 index 0000000..d2e3a7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_278_A @@ -0,0 +1,10 @@ +8 10 +6 7 +9 19 +6 11 +4 6 +0 8 +5 6 +5 10 +1 10 +2 7 diff --git a/geom_bottleneck/tests/data/test_278_B b/geom_bottleneck/tests/data/test_278_B new file mode 100644 index 0000000..0046a8a --- /dev/null +++ b/geom_bottleneck/tests/data/test_278_B @@ -0,0 +1,10 @@ +1 2 +0 8 +9 19 +4 13 +0 10 +7 15 +2 3 +10 17 +2 12 +10 17 diff --git a/geom_bottleneck/tests/data/test_279_A b/geom_bottleneck/tests/data/test_279_A new file mode 100644 index 0000000..4e5619f --- /dev/null +++ b/geom_bottleneck/tests/data/test_279_A @@ -0,0 +1,10 @@ +5 9 +4 8 +5 7 +0 2 +8 17 +5 12 +3 5 +1 3 +3 10 +7 10 diff --git a/geom_bottleneck/tests/data/test_279_B b/geom_bottleneck/tests/data/test_279_B new file mode 100644 index 0000000..7ae40fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_279_B @@ -0,0 +1,10 @@ +9 11 +2 5 +5 15 +4 11 +5 11 +9 10 +2 8 +10 14 +6 16 +7 16 diff --git a/geom_bottleneck/tests/data/test_280_A b/geom_bottleneck/tests/data/test_280_A new file mode 100644 index 0000000..3ac2922 --- /dev/null +++ b/geom_bottleneck/tests/data/test_280_A @@ -0,0 +1,20 @@ +5 8 +10 11 +0 1 +8 18 +0 7 +2 12 +3 6 +10 20 +9 14 +4 9 +6 7 +4 13 +3 4 +10 13 +6 7 +8 17 +8 9 +5 7 +5 6 +3 11 diff --git a/geom_bottleneck/tests/data/test_280_B b/geom_bottleneck/tests/data/test_280_B new file mode 100644 index 0000000..c5485cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_280_B @@ -0,0 +1,20 @@ +9 16 +6 7 +4 12 +9 10 +5 12 +5 14 +1 4 +8 17 +4 14 +8 15 +6 14 +3 13 +7 17 +4 7 +0 2 +9 17 +3 4 +6 11 +0 10 +2 3 diff --git a/geom_bottleneck/tests/data/test_281_A b/geom_bottleneck/tests/data/test_281_A new file mode 100644 index 0000000..e9a4644 --- /dev/null +++ b/geom_bottleneck/tests/data/test_281_A @@ -0,0 +1,20 @@ +2 4 +3 4 +7 10 +9 14 +9 16 +8 10 +2 3 +0 10 +10 14 +7 14 +4 7 +4 6 +5 11 +1 7 +3 10 +7 8 +6 11 +0 1 +8 9 +7 16 diff --git a/geom_bottleneck/tests/data/test_281_B b/geom_bottleneck/tests/data/test_281_B new file mode 100644 index 0000000..f219b2a --- /dev/null +++ b/geom_bottleneck/tests/data/test_281_B @@ -0,0 +1,20 @@ +5 15 +8 17 +0 5 +5 11 +7 13 +5 9 +4 7 +3 9 +6 9 +2 10 +4 9 +6 13 +8 17 +8 12 +10 15 +4 11 +3 11 +0 2 +3 8 +1 6 diff --git a/geom_bottleneck/tests/data/test_282_A b/geom_bottleneck/tests/data/test_282_A new file mode 100644 index 0000000..946f3f2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_282_A @@ -0,0 +1,20 @@ +7 17 +1 10 +7 12 +2 12 +1 2 +2 11 +2 6 +7 10 +9 18 +2 12 +3 12 +8 9 +0 10 +5 6 +3 9 +9 13 +0 7 +6 7 +0 2 +4 13 diff --git a/geom_bottleneck/tests/data/test_282_B b/geom_bottleneck/tests/data/test_282_B new file mode 100644 index 0000000..ac3c7c8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_282_B @@ -0,0 +1,20 @@ +0 8 +10 18 +4 11 +1 10 +4 9 +4 8 +3 9 +0 6 +9 12 +9 10 +9 15 +0 3 +2 11 +6 11 +2 8 +1 3 +8 16 +0 5 +9 18 +4 11 diff --git a/geom_bottleneck/tests/data/test_283_A b/geom_bottleneck/tests/data/test_283_A new file mode 100644 index 0000000..0c4676e --- /dev/null +++ b/geom_bottleneck/tests/data/test_283_A @@ -0,0 +1,20 @@ +4 12 +6 9 +7 12 +10 16 +10 11 +1 2 +0 5 +4 7 +3 12 +4 7 +10 11 +3 5 +10 16 +6 7 +10 18 +7 8 +10 11 +4 10 +6 14 +2 4 diff --git a/geom_bottleneck/tests/data/test_283_B b/geom_bottleneck/tests/data/test_283_B new file mode 100644 index 0000000..23a83e7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_283_B @@ -0,0 +1,20 @@ +9 16 +7 17 +2 7 +0 1 +9 17 +8 10 +8 15 +10 17 +6 12 +7 8 +1 8 +2 12 +8 9 +3 6 +6 12 +3 6 +3 5 +2 6 +10 11 +7 13 diff --git a/geom_bottleneck/tests/data/test_284_A b/geom_bottleneck/tests/data/test_284_A new file mode 100644 index 0000000..4cec19a --- /dev/null +++ b/geom_bottleneck/tests/data/test_284_A @@ -0,0 +1,20 @@ +9 13 +2 11 +2 4 +6 7 +6 14 +6 13 +7 14 +0 8 +3 4 +2 9 +4 10 +4 11 +6 15 +1 3 +5 9 +4 5 +4 13 +7 11 +9 15 +7 16 diff --git a/geom_bottleneck/tests/data/test_284_B b/geom_bottleneck/tests/data/test_284_B new file mode 100644 index 0000000..f09aa28 --- /dev/null +++ b/geom_bottleneck/tests/data/test_284_B @@ -0,0 +1,20 @@ +9 11 +7 10 +3 5 +0 1 +5 11 +2 10 +3 5 +2 4 +7 15 +3 4 +10 13 +1 3 +8 14 +0 8 +1 11 +5 13 +0 1 +2 3 +0 6 +2 6 diff --git a/geom_bottleneck/tests/data/test_285_A b/geom_bottleneck/tests/data/test_285_A new file mode 100644 index 0000000..8e27a5a --- /dev/null +++ b/geom_bottleneck/tests/data/test_285_A @@ -0,0 +1,20 @@ +7 9 +7 12 +7 16 +4 14 +1 8 +3 13 +7 15 +4 5 +10 18 +10 16 +5 6 +6 12 +3 13 +5 9 +7 15 +1 2 +10 14 +5 6 +6 12 +3 9 diff --git a/geom_bottleneck/tests/data/test_285_B b/geom_bottleneck/tests/data/test_285_B new file mode 100644 index 0000000..16a8754 --- /dev/null +++ b/geom_bottleneck/tests/data/test_285_B @@ -0,0 +1,20 @@ +4 5 +4 9 +10 19 +1 5 +3 9 +10 11 +0 1 +2 12 +1 8 +7 15 +5 9 +8 10 +7 10 +9 18 +4 9 +3 10 +7 15 +7 14 +2 4 +5 7 diff --git a/geom_bottleneck/tests/data/test_286_A b/geom_bottleneck/tests/data/test_286_A new file mode 100644 index 0000000..f8083ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_286_A @@ -0,0 +1,20 @@ +5 6 +10 11 +2 10 +0 6 +4 5 +7 8 +2 10 +4 12 +0 1 +7 15 +2 10 +10 13 +1 10 +9 14 +2 6 +2 8 +6 15 +3 4 +4 6 +2 11 diff --git a/geom_bottleneck/tests/data/test_286_B b/geom_bottleneck/tests/data/test_286_B new file mode 100644 index 0000000..6ba8e74 --- /dev/null +++ b/geom_bottleneck/tests/data/test_286_B @@ -0,0 +1,20 @@ +7 8 +3 4 +7 15 +10 14 +4 12 +4 8 +8 12 +4 8 +1 4 +10 12 +0 2 +0 1 +6 12 +7 11 +9 16 +3 11 +2 4 +10 14 +2 10 +6 8 diff --git a/geom_bottleneck/tests/data/test_287_A b/geom_bottleneck/tests/data/test_287_A new file mode 100644 index 0000000..5dd8f38 --- /dev/null +++ b/geom_bottleneck/tests/data/test_287_A @@ -0,0 +1,20 @@ +10 20 +8 9 +0 4 +6 14 +1 4 +3 7 +0 3 +10 13 +7 9 +4 6 +7 14 +3 13 +10 17 +4 13 +9 18 +2 3 +1 11 +10 16 +6 12 +4 13 diff --git a/geom_bottleneck/tests/data/test_287_B b/geom_bottleneck/tests/data/test_287_B new file mode 100644 index 0000000..6fff124 --- /dev/null +++ b/geom_bottleneck/tests/data/test_287_B @@ -0,0 +1,20 @@ +0 2 +6 7 +8 9 +2 10 +0 4 +7 8 +0 9 +1 4 +6 11 +0 2 +5 7 +9 18 +9 16 +5 14 +3 4 +5 14 +3 4 +6 9 +1 5 +7 10 diff --git a/geom_bottleneck/tests/data/test_288_A b/geom_bottleneck/tests/data/test_288_A new file mode 100644 index 0000000..567d877 --- /dev/null +++ b/geom_bottleneck/tests/data/test_288_A @@ -0,0 +1,20 @@ +8 12 +4 9 +5 14 +7 8 +4 11 +5 15 +2 10 +1 3 +0 7 +3 5 +1 3 +1 7 +8 13 +7 10 +5 6 +7 10 +3 6 +10 20 +10 17 +4 14 diff --git a/geom_bottleneck/tests/data/test_288_B b/geom_bottleneck/tests/data/test_288_B new file mode 100644 index 0000000..1d50cf6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_288_B @@ -0,0 +1,20 @@ +6 14 +8 11 +5 13 +1 10 +9 12 +9 19 +4 14 +0 2 +8 16 +1 10 +3 9 +0 3 +2 5 +2 4 +5 8 +2 11 +3 5 +6 16 +7 11 +5 11 diff --git a/geom_bottleneck/tests/data/test_289_A b/geom_bottleneck/tests/data/test_289_A new file mode 100644 index 0000000..39c74ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_289_A @@ -0,0 +1,20 @@ +3 4 +5 13 +8 18 +9 18 +4 10 +2 8 +1 10 +10 17 +2 3 +10 15 +2 3 +4 6 +7 8 +7 9 +8 12 +7 9 +8 15 +6 9 +0 2 +8 17 diff --git a/geom_bottleneck/tests/data/test_289_B b/geom_bottleneck/tests/data/test_289_B new file mode 100644 index 0000000..cb24888 --- /dev/null +++ b/geom_bottleneck/tests/data/test_289_B @@ -0,0 +1,20 @@ +1 11 +10 18 +6 16 +7 14 +8 16 +9 11 +2 3 +8 12 +4 5 +7 14 +5 10 +7 8 +2 12 +5 9 +0 1 +10 19 +1 5 +10 20 +3 10 +9 11 diff --git a/geom_bottleneck/tests/data/test_290_A b/geom_bottleneck/tests/data/test_290_A new file mode 100644 index 0000000..21e124b --- /dev/null +++ b/geom_bottleneck/tests/data/test_290_A @@ -0,0 +1,20 @@ +8 15 +6 10 +4 5 +10 20 +3 8 +0 10 +0 2 +3 9 +1 10 +3 11 +5 12 +6 7 +6 8 +3 6 +8 9 +9 15 +2 12 +8 12 +3 11 +4 9 diff --git a/geom_bottleneck/tests/data/test_290_B b/geom_bottleneck/tests/data/test_290_B new file mode 100644 index 0000000..d705f0e --- /dev/null +++ b/geom_bottleneck/tests/data/test_290_B @@ -0,0 +1,20 @@ +8 10 +1 2 +5 6 +2 9 +6 15 +3 8 +6 7 +4 11 +2 3 +10 14 +3 4 +3 4 +1 2 +2 11 +2 6 +6 7 +1 4 +8 16 +4 5 +9 12 diff --git a/geom_bottleneck/tests/data/test_291_A b/geom_bottleneck/tests/data/test_291_A new file mode 100644 index 0000000..0ba0226 --- /dev/null +++ b/geom_bottleneck/tests/data/test_291_A @@ -0,0 +1,20 @@ +10 11 +4 5 +4 13 +4 10 +9 13 +3 4 +8 13 +9 15 +2 8 +9 16 +8 14 +8 18 +1 6 +0 8 +8 16 +5 6 +9 19 +8 15 +8 13 +8 16 diff --git a/geom_bottleneck/tests/data/test_291_B b/geom_bottleneck/tests/data/test_291_B new file mode 100644 index 0000000..1c933ef --- /dev/null +++ b/geom_bottleneck/tests/data/test_291_B @@ -0,0 +1,20 @@ +2 9 +4 13 +8 13 +10 13 +8 18 +8 13 +5 14 +1 6 +5 6 +7 8 +2 12 +5 6 +6 10 +7 10 +0 6 +10 14 +2 3 +10 18 +5 12 +4 5 diff --git a/geom_bottleneck/tests/data/test_292_A b/geom_bottleneck/tests/data/test_292_A new file mode 100644 index 0000000..1929d2e --- /dev/null +++ b/geom_bottleneck/tests/data/test_292_A @@ -0,0 +1,20 @@ +7 8 +5 15 +7 11 +6 15 +2 8 +8 9 +7 9 +0 2 +4 8 +2 10 +0 2 +2 4 +1 3 +6 10 +2 10 +2 9 +10 13 +7 8 +5 8 +9 11 diff --git a/geom_bottleneck/tests/data/test_292_B b/geom_bottleneck/tests/data/test_292_B new file mode 100644 index 0000000..305f8b8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_292_B @@ -0,0 +1,20 @@ +4 6 +3 9 +8 12 +5 15 +10 12 +4 10 +4 6 +4 6 +0 8 +8 14 +7 14 +4 13 +4 10 +5 12 +10 19 +0 7 +3 10 +10 15 +0 2 +10 11 diff --git a/geom_bottleneck/tests/data/test_293_A b/geom_bottleneck/tests/data/test_293_A new file mode 100644 index 0000000..752bd33 --- /dev/null +++ b/geom_bottleneck/tests/data/test_293_A @@ -0,0 +1,20 @@ +8 15 +5 15 +10 11 +6 7 +10 13 +9 10 +6 8 +9 18 +0 4 +2 4 +2 9 +6 15 +0 1 +5 12 +7 12 +2 9 +3 13 +4 10 +10 16 +2 9 diff --git a/geom_bottleneck/tests/data/test_293_B b/geom_bottleneck/tests/data/test_293_B new file mode 100644 index 0000000..6ce5afb --- /dev/null +++ b/geom_bottleneck/tests/data/test_293_B @@ -0,0 +1,20 @@ +2 10 +8 11 +6 16 +0 10 +2 3 +10 17 +1 2 +7 16 +3 7 +0 3 +8 9 +2 7 +7 17 +3 13 +2 7 +5 11 +6 9 +10 20 +2 4 +3 8 diff --git a/geom_bottleneck/tests/data/test_294_A b/geom_bottleneck/tests/data/test_294_A new file mode 100644 index 0000000..556a43e --- /dev/null +++ b/geom_bottleneck/tests/data/test_294_A @@ -0,0 +1,20 @@ +5 13 +4 12 +6 7 +10 16 +5 14 +3 10 +2 10 +7 11 +5 15 +0 1 +4 14 +3 12 +0 8 +10 13 +0 1 +3 9 +5 6 +7 11 +4 13 +9 11 diff --git a/geom_bottleneck/tests/data/test_294_B b/geom_bottleneck/tests/data/test_294_B new file mode 100644 index 0000000..5a0896c --- /dev/null +++ b/geom_bottleneck/tests/data/test_294_B @@ -0,0 +1,20 @@ +1 10 +6 16 +6 10 +4 12 +6 12 +0 6 +3 9 +3 12 +5 14 +9 17 +10 18 +3 13 +2 10 +8 9 +9 16 +8 14 +5 12 +4 6 +9 10 +7 12 diff --git a/geom_bottleneck/tests/data/test_295_A b/geom_bottleneck/tests/data/test_295_A new file mode 100644 index 0000000..53b904f --- /dev/null +++ b/geom_bottleneck/tests/data/test_295_A @@ -0,0 +1,20 @@ +2 10 +10 20 +9 16 +2 9 +2 7 +7 11 +8 11 +10 12 +4 9 +4 13 +6 12 +7 8 +4 8 +7 15 +2 9 +9 11 +10 13 +9 19 +7 14 +5 13 diff --git a/geom_bottleneck/tests/data/test_295_B b/geom_bottleneck/tests/data/test_295_B new file mode 100644 index 0000000..61d13ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_295_B @@ -0,0 +1,20 @@ +3 13 +3 13 +8 17 +1 6 +3 9 +3 10 +5 12 +9 10 +5 7 +9 16 +2 6 +0 1 +4 8 +1 3 +5 15 +6 7 +7 10 +1 3 +5 13 +1 7 diff --git a/geom_bottleneck/tests/data/test_296_A b/geom_bottleneck/tests/data/test_296_A new file mode 100644 index 0000000..444d20f --- /dev/null +++ b/geom_bottleneck/tests/data/test_296_A @@ -0,0 +1,20 @@ +0 6 +4 10 +10 13 +0 6 +1 6 +10 19 +6 13 +1 2 +5 13 +6 14 +4 12 +1 8 +6 16 +2 9 +9 11 +9 19 +1 10 +3 4 +2 11 +4 8 diff --git a/geom_bottleneck/tests/data/test_296_B b/geom_bottleneck/tests/data/test_296_B new file mode 100644 index 0000000..476d729 --- /dev/null +++ b/geom_bottleneck/tests/data/test_296_B @@ -0,0 +1,20 @@ +1 3 +7 9 +4 10 +10 11 +0 5 +4 12 +1 2 +7 14 +10 19 +8 9 +3 12 +1 2 +1 5 +0 1 +10 17 +9 17 +1 7 +2 5 +2 5 +4 13 diff --git a/geom_bottleneck/tests/data/test_297_A b/geom_bottleneck/tests/data/test_297_A new file mode 100644 index 0000000..745d7f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_297_A @@ -0,0 +1,20 @@ +6 9 +1 3 +7 10 +9 14 +9 18 +8 12 +2 3 +5 15 +8 14 +3 12 +5 6 +7 15 +6 16 +8 18 +6 13 +6 7 +3 8 +2 3 +9 13 +9 14 diff --git a/geom_bottleneck/tests/data/test_297_B b/geom_bottleneck/tests/data/test_297_B new file mode 100644 index 0000000..99b1ccc --- /dev/null +++ b/geom_bottleneck/tests/data/test_297_B @@ -0,0 +1,20 @@ +4 11 +9 18 +9 11 +2 7 +2 9 +4 12 +4 13 +10 18 +8 10 +2 5 +9 15 +2 9 +10 15 +6 15 +9 12 +10 20 +9 16 +8 11 +0 1 +2 12 diff --git a/geom_bottleneck/tests/data/test_298_A b/geom_bottleneck/tests/data/test_298_A new file mode 100644 index 0000000..d35fccc --- /dev/null +++ b/geom_bottleneck/tests/data/test_298_A @@ -0,0 +1,20 @@ +0 6 +9 10 +4 5 +7 13 +10 19 +7 12 +10 20 +2 6 +7 13 +7 8 +9 10 +4 8 +9 10 +7 14 +9 19 +10 16 +3 7 +2 3 +1 5 +3 4 diff --git a/geom_bottleneck/tests/data/test_298_B b/geom_bottleneck/tests/data/test_298_B new file mode 100644 index 0000000..5cf0d1c --- /dev/null +++ b/geom_bottleneck/tests/data/test_298_B @@ -0,0 +1,20 @@ +4 10 +6 8 +2 3 +6 15 +9 16 +10 11 +7 13 +5 6 +2 9 +6 13 +8 14 +9 15 +10 15 +10 12 +9 18 +3 4 +6 7 +1 9 +4 10 +3 7 diff --git a/geom_bottleneck/tests/data/test_299_A b/geom_bottleneck/tests/data/test_299_A new file mode 100644 index 0000000..3506828 --- /dev/null +++ b/geom_bottleneck/tests/data/test_299_A @@ -0,0 +1,20 @@ +9 10 +1 6 +7 16 +9 13 +3 8 +6 11 +1 9 +5 14 +3 7 +3 10 +5 11 +1 7 +1 5 +0 6 +6 14 +8 11 +10 13 +9 17 +4 10 +9 14 diff --git a/geom_bottleneck/tests/data/test_299_B b/geom_bottleneck/tests/data/test_299_B new file mode 100644 index 0000000..3600634 --- /dev/null +++ b/geom_bottleneck/tests/data/test_299_B @@ -0,0 +1,20 @@ +0 9 +7 13 +8 14 +8 9 +7 17 +0 5 +1 10 +0 5 +3 4 +10 19 +6 14 +8 9 +9 14 +1 6 +9 14 +3 5 +4 5 +8 18 +10 14 +10 18 diff --git a/geom_bottleneck/tests/data/test_300_A b/geom_bottleneck/tests/data/test_300_A new file mode 100644 index 0000000..2ab4a1e --- /dev/null +++ b/geom_bottleneck/tests/data/test_300_A @@ -0,0 +1,30 @@ +8 10 +1 4 +9 12 +0 1 +0 5 +2 9 +7 13 +6 7 +3 8 +2 7 +6 8 +8 12 +1 2 +0 1 +5 10 +4 5 +9 13 +8 15 +6 8 +9 17 +7 10 +8 16 +10 11 +6 8 +6 8 +5 11 +1 4 +9 13 +2 4 +2 3 diff --git a/geom_bottleneck/tests/data/test_300_B b/geom_bottleneck/tests/data/test_300_B new file mode 100644 index 0000000..a54300d --- /dev/null +++ b/geom_bottleneck/tests/data/test_300_B @@ -0,0 +1,30 @@ +9 10 +9 11 +6 10 +1 3 +5 8 +7 12 +4 9 +7 11 +1 9 +6 15 +3 9 +3 10 +1 6 +8 15 +1 11 +1 2 +10 11 +6 7 +7 8 +0 3 +10 11 +3 9 +3 9 +5 6 +0 4 +6 9 +2 3 +1 2 +10 11 +4 14 diff --git a/geom_bottleneck/tests/data/test_301_A b/geom_bottleneck/tests/data/test_301_A new file mode 100644 index 0000000..85f8ae5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_301_A @@ -0,0 +1,30 @@ +4 10 +5 9 +6 12 +0 1 +4 7 +4 6 +9 19 +4 9 +2 7 +4 13 +6 7 +4 5 +0 10 +7 8 +3 4 +8 12 +0 9 +8 14 +7 13 +8 14 +1 2 +4 5 +10 14 +4 5 +3 11 +7 12 +9 16 +0 1 +9 19 +9 15 diff --git a/geom_bottleneck/tests/data/test_301_B b/geom_bottleneck/tests/data/test_301_B new file mode 100644 index 0000000..4d9ef19 --- /dev/null +++ b/geom_bottleneck/tests/data/test_301_B @@ -0,0 +1,30 @@ +5 15 +2 9 +3 4 +2 12 +10 17 +0 7 +5 8 +5 7 +7 16 +2 4 +4 8 +1 4 +5 15 +1 2 +2 12 +0 10 +9 10 +2 11 +7 8 +10 19 +1 11 +10 14 +8 11 +6 7 +3 7 +8 16 +3 11 +7 13 +5 10 +8 10 diff --git a/geom_bottleneck/tests/data/test_302_A b/geom_bottleneck/tests/data/test_302_A new file mode 100644 index 0000000..be0e810 --- /dev/null +++ b/geom_bottleneck/tests/data/test_302_A @@ -0,0 +1,30 @@ +7 13 +9 18 +1 11 +5 11 +2 3 +5 10 +1 3 +1 9 +7 11 +5 15 +4 5 +3 5 +9 13 +5 13 +10 14 +7 8 +10 19 +4 5 +2 12 +3 7 +3 4 +8 16 +6 16 +6 7 +6 11 +0 2 +0 8 +7 17 +9 17 +0 3 diff --git a/geom_bottleneck/tests/data/test_302_B b/geom_bottleneck/tests/data/test_302_B new file mode 100644 index 0000000..38806fc --- /dev/null +++ b/geom_bottleneck/tests/data/test_302_B @@ -0,0 +1,30 @@ +9 17 +3 4 +7 14 +1 6 +8 18 +2 8 +8 16 +9 19 +2 5 +10 18 +9 15 +5 13 +3 13 +7 8 +1 3 +9 10 +0 8 +6 14 +10 11 +4 14 +4 14 +4 8 +2 4 +1 9 +7 8 +6 13 +8 9 +5 11 +10 18 +7 10 diff --git a/geom_bottleneck/tests/data/test_303_A b/geom_bottleneck/tests/data/test_303_A new file mode 100644 index 0000000..b277929 --- /dev/null +++ b/geom_bottleneck/tests/data/test_303_A @@ -0,0 +1,30 @@ +4 10 +2 11 +1 5 +9 18 +9 16 +8 11 +9 13 +1 11 +1 11 +9 13 +6 10 +6 15 +0 2 +0 1 +6 10 +1 3 +0 6 +7 8 +3 6 +4 11 +7 14 +8 16 +6 7 +6 7 +6 11 +0 4 +7 12 +1 5 +2 8 +0 1 diff --git a/geom_bottleneck/tests/data/test_303_B b/geom_bottleneck/tests/data/test_303_B new file mode 100644 index 0000000..2cff171 --- /dev/null +++ b/geom_bottleneck/tests/data/test_303_B @@ -0,0 +1,30 @@ +7 8 +5 11 +8 15 +2 3 +10 11 +7 17 +0 10 +5 10 +6 8 +4 8 +7 8 +5 12 +8 15 +5 11 +4 9 +9 17 +7 13 +8 13 +6 7 +3 11 +1 6 +6 8 +1 8 +5 10 +9 19 +8 9 +7 17 +1 6 +10 13 +10 19 diff --git a/geom_bottleneck/tests/data/test_304_A b/geom_bottleneck/tests/data/test_304_A new file mode 100644 index 0000000..2c3de43 --- /dev/null +++ b/geom_bottleneck/tests/data/test_304_A @@ -0,0 +1,30 @@ +0 2 +8 14 +1 2 +0 8 +0 6 +4 8 +5 12 +3 4 +2 3 +0 6 +10 11 +0 4 +0 10 +9 16 +9 10 +5 6 +6 11 +8 9 +0 1 +6 13 +8 18 +4 10 +9 18 +1 6 +5 7 +1 8 +9 13 +5 12 +4 5 +7 8 diff --git a/geom_bottleneck/tests/data/test_304_B b/geom_bottleneck/tests/data/test_304_B new file mode 100644 index 0000000..24402f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_304_B @@ -0,0 +1,30 @@ +5 15 +2 7 +8 13 +4 5 +2 3 +6 9 +8 12 +8 12 +9 18 +10 12 +3 8 +5 9 +2 12 +9 19 +6 13 +6 12 +10 14 +0 2 +2 3 +1 10 +8 13 +10 20 +3 5 +1 8 +0 6 +2 3 +8 9 +5 6 +9 17 +6 9 diff --git a/geom_bottleneck/tests/data/test_305_A b/geom_bottleneck/tests/data/test_305_A new file mode 100644 index 0000000..aa88ed8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_305_A @@ -0,0 +1,30 @@ +1 5 +6 7 +7 15 +4 11 +9 12 +8 10 +4 7 +10 17 +9 10 +7 15 +4 7 +8 12 +9 10 +10 15 +1 5 +4 5 +2 10 +2 3 +4 14 +8 17 +1 10 +7 10 +2 4 +6 15 +8 10 +10 20 +3 7 +2 4 +6 10 +2 5 diff --git a/geom_bottleneck/tests/data/test_305_B b/geom_bottleneck/tests/data/test_305_B new file mode 100644 index 0000000..8edd827 --- /dev/null +++ b/geom_bottleneck/tests/data/test_305_B @@ -0,0 +1,30 @@ +8 13 +10 11 +0 1 +8 13 +2 3 +9 10 +0 4 +3 9 +8 11 +7 12 +3 8 +8 10 +10 14 +2 4 +1 7 +7 10 +6 7 +7 17 +6 14 +0 6 +8 17 +9 14 +2 7 +0 2 +3 12 +7 16 +10 16 +9 13 +8 13 +1 2 diff --git a/geom_bottleneck/tests/data/test_306_A b/geom_bottleneck/tests/data/test_306_A new file mode 100644 index 0000000..8baa725 --- /dev/null +++ b/geom_bottleneck/tests/data/test_306_A @@ -0,0 +1,30 @@ +3 13 +1 8 +7 14 +5 7 +0 1 +10 17 +5 8 +4 5 +6 8 +9 10 +3 10 +9 15 +8 18 +8 14 +5 15 +8 13 +8 9 +7 13 +1 8 +7 13 +3 9 +6 12 +6 9 +2 7 +7 10 +3 9 +8 13 +5 14 +10 11 +2 6 diff --git a/geom_bottleneck/tests/data/test_306_B b/geom_bottleneck/tests/data/test_306_B new file mode 100644 index 0000000..b33f874 --- /dev/null +++ b/geom_bottleneck/tests/data/test_306_B @@ -0,0 +1,30 @@ +8 10 +8 12 +6 9 +9 11 +5 7 +2 12 +0 9 +10 13 +0 1 +3 13 +1 6 +0 4 +2 12 +4 10 +10 14 +4 5 +9 10 +1 6 +4 12 +4 7 +4 13 +0 5 +10 17 +3 5 +2 3 +5 6 +7 11 +10 12 +2 9 +6 8 diff --git a/geom_bottleneck/tests/data/test_307_A b/geom_bottleneck/tests/data/test_307_A new file mode 100644 index 0000000..bce4bc1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_307_A @@ -0,0 +1,30 @@ +0 1 +9 18 +5 7 +2 7 +2 8 +10 17 +9 16 +9 16 +1 6 +7 15 +5 10 +1 2 +8 14 +0 1 +5 6 +2 8 +3 4 +5 12 +4 6 +5 12 +7 11 +8 9 +3 10 +6 13 +0 7 +0 4 +7 16 +10 16 +8 12 +6 8 diff --git a/geom_bottleneck/tests/data/test_307_B b/geom_bottleneck/tests/data/test_307_B new file mode 100644 index 0000000..fd4fcb5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_307_B @@ -0,0 +1,30 @@ +2 5 +3 9 +0 10 +10 14 +4 9 +0 1 +1 9 +3 13 +4 5 +10 16 +5 8 +8 15 +0 5 +0 9 +9 11 +2 3 +10 20 +8 9 +7 15 +4 13 +1 9 +5 8 +7 17 +3 5 +10 16 +2 11 +4 6 +3 7 +7 15 +5 10 diff --git a/geom_bottleneck/tests/data/test_308_A b/geom_bottleneck/tests/data/test_308_A new file mode 100644 index 0000000..55ab2aa --- /dev/null +++ b/geom_bottleneck/tests/data/test_308_A @@ -0,0 +1,30 @@ +3 5 +6 16 +0 3 +0 10 +6 7 +2 6 +7 12 +0 7 +6 9 +6 12 +0 4 +3 12 +2 10 +5 8 +10 16 +8 12 +0 8 +2 3 +6 12 +7 8 +0 4 +2 9 +0 8 +4 7 +10 16 +6 8 +9 14 +6 9 +0 1 +0 1 diff --git a/geom_bottleneck/tests/data/test_308_B b/geom_bottleneck/tests/data/test_308_B new file mode 100644 index 0000000..cdf0c84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_308_B @@ -0,0 +1,30 @@ +3 11 +1 4 +0 3 +9 15 +2 8 +6 12 +3 13 +0 4 +1 5 +8 18 +6 15 +0 5 +6 16 +4 6 +3 11 +4 5 +0 1 +0 10 +4 6 +0 1 +6 7 +6 7 +8 9 +7 13 +8 15 +3 4 +1 7 +4 13 +6 16 +3 12 diff --git a/geom_bottleneck/tests/data/test_309_A b/geom_bottleneck/tests/data/test_309_A new file mode 100644 index 0000000..20cee09 --- /dev/null +++ b/geom_bottleneck/tests/data/test_309_A @@ -0,0 +1,30 @@ +5 15 +2 4 +5 11 +3 13 +5 15 +8 13 +1 10 +2 10 +7 8 +0 7 +9 13 +10 13 +4 14 +0 3 +10 17 +2 7 +5 15 +1 10 +9 11 +7 10 +10 15 +5 7 +0 4 +0 8 +1 2 +8 16 +3 10 +8 16 +3 4 +5 6 diff --git a/geom_bottleneck/tests/data/test_309_B b/geom_bottleneck/tests/data/test_309_B new file mode 100644 index 0000000..86fe46e --- /dev/null +++ b/geom_bottleneck/tests/data/test_309_B @@ -0,0 +1,30 @@ +2 4 +9 17 +4 11 +3 9 +8 13 +6 7 +0 8 +10 15 +10 13 +7 12 +7 14 +9 10 +0 10 +6 7 +6 13 +2 4 +2 3 +6 10 +9 19 +7 17 +2 6 +3 10 +8 17 +8 13 +1 6 +6 16 +10 11 +7 9 +6 13 +9 15 diff --git a/geom_bottleneck/tests/data/test_310_A b/geom_bottleneck/tests/data/test_310_A new file mode 100644 index 0000000..320f176 --- /dev/null +++ b/geom_bottleneck/tests/data/test_310_A @@ -0,0 +1,30 @@ +7 12 +8 15 +10 13 +4 5 +10 12 +6 14 +5 7 +1 8 +10 19 +0 4 +0 5 +10 11 +3 12 +0 6 +8 11 +6 15 +10 16 +1 2 +8 10 +4 5 +10 17 +9 15 +7 9 +7 11 +5 11 +9 13 +0 3 +4 7 +3 4 +10 18 diff --git a/geom_bottleneck/tests/data/test_310_B b/geom_bottleneck/tests/data/test_310_B new file mode 100644 index 0000000..3bcf21c --- /dev/null +++ b/geom_bottleneck/tests/data/test_310_B @@ -0,0 +1,30 @@ +8 10 +1 11 +4 8 +4 14 +3 13 +1 5 +1 9 +3 8 +0 7 +9 10 +1 4 +0 1 +7 17 +6 9 +4 6 +6 9 +2 12 +2 10 +8 14 +7 13 +1 9 +8 14 +1 6 +3 11 +5 8 +5 12 +2 10 +0 6 +4 5 +3 13 diff --git a/geom_bottleneck/tests/data/test_311_A b/geom_bottleneck/tests/data/test_311_A new file mode 100644 index 0000000..d98eb28 --- /dev/null +++ b/geom_bottleneck/tests/data/test_311_A @@ -0,0 +1,30 @@ +2 11 +6 10 +1 4 +2 7 +2 3 +9 15 +2 3 +9 12 +2 3 +5 15 +9 17 +2 6 +0 8 +4 7 +0 5 +0 9 +7 12 +7 12 +9 12 +6 9 +7 16 +1 2 +0 8 +4 12 +2 11 +9 13 +2 7 +5 15 +5 6 +4 10 diff --git a/geom_bottleneck/tests/data/test_311_B b/geom_bottleneck/tests/data/test_311_B new file mode 100644 index 0000000..311ede4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_311_B @@ -0,0 +1,30 @@ +2 3 +7 15 +6 12 +10 18 +10 14 +10 11 +8 9 +1 9 +5 11 +0 1 +10 19 +8 14 +10 12 +8 13 +7 14 +3 5 +10 14 +8 17 +9 10 +7 16 +2 3 +1 7 +9 15 +8 12 +0 1 +6 11 +8 15 +8 13 +2 8 +3 12 diff --git a/geom_bottleneck/tests/data/test_312_A b/geom_bottleneck/tests/data/test_312_A new file mode 100644 index 0000000..2745003 --- /dev/null +++ b/geom_bottleneck/tests/data/test_312_A @@ -0,0 +1,30 @@ +7 12 +0 7 +4 14 +0 6 +10 11 +8 9 +5 14 +5 6 +9 12 +4 8 +2 3 +1 4 +8 10 +2 8 +9 13 +7 12 +10 17 +1 2 +4 8 +3 5 +7 8 +1 5 +6 7 +7 16 +6 10 +10 17 +10 20 +2 5 +4 13 +2 9 diff --git a/geom_bottleneck/tests/data/test_312_B b/geom_bottleneck/tests/data/test_312_B new file mode 100644 index 0000000..4a7645b --- /dev/null +++ b/geom_bottleneck/tests/data/test_312_B @@ -0,0 +1,30 @@ +8 9 +4 10 +9 19 +5 13 +6 12 +4 6 +5 11 +5 6 +3 12 +7 10 +5 12 +7 8 +3 13 +5 14 +4 9 +6 15 +5 14 +4 13 +1 9 +5 13 +5 12 +1 10 +3 4 +7 13 +3 12 +7 11 +4 5 +7 9 +0 4 +0 9 diff --git a/geom_bottleneck/tests/data/test_313_A b/geom_bottleneck/tests/data/test_313_A new file mode 100644 index 0000000..db46821 --- /dev/null +++ b/geom_bottleneck/tests/data/test_313_A @@ -0,0 +1,30 @@ +8 14 +10 15 +7 16 +8 9 +1 10 +8 16 +0 10 +2 3 +4 8 +1 7 +2 6 +5 15 +0 7 +5 6 +0 9 +2 3 +5 6 +9 12 +3 7 +8 10 +10 17 +3 12 +10 13 +4 12 +2 8 +8 14 +6 10 +4 6 +0 7 +8 11 diff --git a/geom_bottleneck/tests/data/test_313_B b/geom_bottleneck/tests/data/test_313_B new file mode 100644 index 0000000..d387050 --- /dev/null +++ b/geom_bottleneck/tests/data/test_313_B @@ -0,0 +1,30 @@ +4 10 +4 11 +4 5 +2 8 +3 6 +1 5 +8 18 +1 4 +7 8 +5 8 +7 15 +10 18 +6 10 +9 17 +6 15 +0 7 +10 19 +8 10 +4 9 +5 14 +5 9 +4 5 +5 12 +5 9 +0 1 +7 9 +2 4 +0 7 +9 18 +8 11 diff --git a/geom_bottleneck/tests/data/test_314_A b/geom_bottleneck/tests/data/test_314_A new file mode 100644 index 0000000..03ad5db --- /dev/null +++ b/geom_bottleneck/tests/data/test_314_A @@ -0,0 +1,30 @@ +10 11 +10 11 +9 12 +2 11 +8 17 +3 10 +8 10 +10 14 +5 9 +5 6 +10 11 +9 17 +10 19 +3 8 +6 15 +10 20 +0 9 +8 12 +7 13 +4 6 +9 10 +6 15 +1 9 +3 9 +10 11 +10 15 +4 9 +8 13 +9 10 +6 9 diff --git a/geom_bottleneck/tests/data/test_314_B b/geom_bottleneck/tests/data/test_314_B new file mode 100644 index 0000000..eaa46d9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_314_B @@ -0,0 +1,30 @@ +10 20 +2 12 +8 13 +0 7 +6 7 +10 15 +10 20 +5 15 +7 8 +3 10 +5 7 +3 10 +0 4 +10 17 +4 9 +5 14 +9 16 +3 4 +6 7 +4 12 +4 10 +9 10 +0 10 +10 11 +1 6 +8 16 +7 16 +10 12 +6 13 +3 7 diff --git a/geom_bottleneck/tests/data/test_315_A b/geom_bottleneck/tests/data/test_315_A new file mode 100644 index 0000000..fa49507 --- /dev/null +++ b/geom_bottleneck/tests/data/test_315_A @@ -0,0 +1,30 @@ +9 16 +10 18 +6 7 +9 12 +1 5 +10 20 +9 14 +4 5 +7 13 +6 12 +1 9 +10 12 +5 8 +10 12 +7 16 +10 16 +1 9 +3 10 +1 4 +1 3 +0 6 +7 13 +1 2 +3 8 +6 13 +6 8 +3 10 +0 1 +9 18 +0 10 diff --git a/geom_bottleneck/tests/data/test_315_B b/geom_bottleneck/tests/data/test_315_B new file mode 100644 index 0000000..d5390e2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_315_B @@ -0,0 +1,30 @@ +1 2 +2 8 +0 2 +9 18 +1 11 +3 6 +6 7 +0 1 +8 14 +6 8 +5 6 +9 17 +5 6 +7 13 +7 9 +9 10 +7 15 +9 11 +3 4 +0 3 +8 16 +0 10 +8 15 +1 11 +8 16 +1 6 +9 17 +10 19 +7 10 +7 9 diff --git a/geom_bottleneck/tests/data/test_316_A b/geom_bottleneck/tests/data/test_316_A new file mode 100644 index 0000000..57ff91f --- /dev/null +++ b/geom_bottleneck/tests/data/test_316_A @@ -0,0 +1,30 @@ +6 16 +4 10 +6 10 +8 11 +1 2 +0 5 +7 16 +4 9 +9 11 +0 2 +0 7 +10 18 +3 6 +9 15 +8 15 +5 9 +7 17 +5 12 +9 19 +10 20 +1 2 +1 11 +3 4 +6 15 +10 18 +3 11 +10 19 +5 6 +1 5 +3 12 diff --git a/geom_bottleneck/tests/data/test_316_B b/geom_bottleneck/tests/data/test_316_B new file mode 100644 index 0000000..407332e --- /dev/null +++ b/geom_bottleneck/tests/data/test_316_B @@ -0,0 +1,30 @@ +4 7 +10 11 +3 4 +2 12 +3 4 +8 13 +3 4 +3 11 +10 11 +9 17 +5 12 +6 14 +10 17 +8 12 +8 9 +4 6 +10 14 +4 11 +5 10 +5 14 +6 7 +0 1 +8 13 +8 12 +3 8 +0 9 +7 8 +8 13 +10 11 +3 7 diff --git a/geom_bottleneck/tests/data/test_317_A b/geom_bottleneck/tests/data/test_317_A new file mode 100644 index 0000000..4b6204e --- /dev/null +++ b/geom_bottleneck/tests/data/test_317_A @@ -0,0 +1,30 @@ +5 6 +1 6 +6 10 +8 16 +7 15 +2 4 +8 17 +5 12 +0 2 +7 17 +2 11 +0 2 +8 10 +8 9 +0 8 +5 10 +2 9 +3 6 +8 9 +9 17 +4 12 +7 9 +1 11 +2 10 +9 19 +10 13 +7 10 +5 8 +5 8 +2 5 diff --git a/geom_bottleneck/tests/data/test_317_B b/geom_bottleneck/tests/data/test_317_B new file mode 100644 index 0000000..b30729a --- /dev/null +++ b/geom_bottleneck/tests/data/test_317_B @@ -0,0 +1,30 @@ +4 9 +0 7 +10 11 +4 5 +2 11 +4 9 +7 17 +7 14 +10 18 +2 6 +2 8 +2 7 +1 11 +5 14 +2 3 +6 9 +2 12 +1 4 +5 6 +5 11 +8 17 +4 12 +3 8 +1 4 +9 13 +0 7 +3 9 +3 4 +5 6 +3 11 diff --git a/geom_bottleneck/tests/data/test_318_A b/geom_bottleneck/tests/data/test_318_A new file mode 100644 index 0000000..2ea4ad5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_318_A @@ -0,0 +1,30 @@ +4 13 +0 5 +5 12 +3 8 +9 17 +6 16 +7 8 +9 14 +9 19 +6 15 +2 8 +1 2 +10 18 +5 11 +5 6 +8 10 +3 7 +1 11 +9 12 +8 9 +10 20 +2 6 +8 16 +9 19 +10 11 +7 11 +9 10 +8 18 +6 14 +2 4 diff --git a/geom_bottleneck/tests/data/test_318_B b/geom_bottleneck/tests/data/test_318_B new file mode 100644 index 0000000..64fd49d --- /dev/null +++ b/geom_bottleneck/tests/data/test_318_B @@ -0,0 +1,30 @@ +10 13 +6 16 +3 11 +10 20 +1 9 +1 10 +4 5 +5 10 +10 11 +1 8 +7 9 +10 11 +4 10 +0 8 +4 13 +7 9 +7 9 +7 15 +9 17 +2 11 +0 1 +6 13 +1 2 +10 13 +10 18 +7 12 +8 15 +4 10 +5 13 +3 11 diff --git a/geom_bottleneck/tests/data/test_319_A b/geom_bottleneck/tests/data/test_319_A new file mode 100644 index 0000000..f7ffeda --- /dev/null +++ b/geom_bottleneck/tests/data/test_319_A @@ -0,0 +1,30 @@ +8 12 +6 14 +2 8 +9 18 +10 16 +8 17 +5 15 +6 7 +1 7 +6 7 +7 9 +9 10 +4 9 +9 14 +6 11 +7 8 +8 14 +6 7 +5 14 +2 10 +0 1 +0 6 +4 5 +1 5 +4 13 +6 14 +5 14 +9 11 +0 7 +3 6 diff --git a/geom_bottleneck/tests/data/test_319_B b/geom_bottleneck/tests/data/test_319_B new file mode 100644 index 0000000..5529fa0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_319_B @@ -0,0 +1,30 @@ +6 7 +5 6 +4 5 +0 4 +5 6 +9 11 +1 2 +8 16 +4 9 +8 10 +7 9 +4 5 +5 15 +0 7 +8 14 +10 15 +5 7 +1 6 +5 6 +5 11 +1 10 +0 5 +5 15 +5 10 +0 2 +10 13 +0 9 +3 9 +10 11 +1 10 diff --git a/geom_bottleneck/tests/data/test_320_A b/geom_bottleneck/tests/data/test_320_A new file mode 100644 index 0000000..c7c7380 --- /dev/null +++ b/geom_bottleneck/tests/data/test_320_A @@ -0,0 +1,50 @@ +5 6 +0 6 +6 10 +5 10 +0 9 +0 4 +10 11 +7 13 +0 2 +4 8 +1 2 +4 13 +8 15 +1 7 +3 4 +5 14 +0 6 +7 16 +2 12 +3 11 +0 1 +3 4 +10 16 +3 8 +0 3 +1 9 +9 14 +5 6 +1 11 +6 9 +6 12 +0 6 +9 13 +4 8 +8 10 +4 9 +7 15 +5 7 +1 2 +8 15 +5 6 +6 12 +0 7 +0 9 +5 12 +1 3 +5 7 +4 12 +7 14 +9 16 diff --git a/geom_bottleneck/tests/data/test_320_B b/geom_bottleneck/tests/data/test_320_B new file mode 100644 index 0000000..2807b27 --- /dev/null +++ b/geom_bottleneck/tests/data/test_320_B @@ -0,0 +1,50 @@ +9 17 +7 13 +7 14 +7 10 +7 12 +2 10 +8 9 +0 1 +0 10 +0 8 +1 4 +2 11 +4 13 +8 13 +4 11 +1 5 +5 6 +2 4 +9 17 +5 15 +5 8 +7 9 +8 14 +9 10 +5 13 +8 13 +8 17 +1 11 +4 7 +3 10 +3 8 +10 20 +7 8 +10 15 +3 5 +8 12 +1 2 +7 16 +7 17 +1 10 +2 8 +4 12 +9 15 +5 7 +4 8 +5 14 +6 15 +7 16 +2 8 +5 14 diff --git a/geom_bottleneck/tests/data/test_321_A b/geom_bottleneck/tests/data/test_321_A new file mode 100644 index 0000000..b24cee9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_321_A @@ -0,0 +1,50 @@ +1 6 +1 7 +1 2 +4 13 +8 15 +1 10 +10 17 +7 17 +0 6 +7 15 +7 13 +9 14 +9 16 +7 12 +5 8 +6 16 +1 3 +8 13 +2 6 +2 10 +2 11 +0 1 +7 15 +4 6 +10 14 +9 10 +0 3 +9 10 +3 9 +7 10 +5 6 +8 18 +2 9 +9 17 +7 12 +9 18 +2 5 +6 8 +7 14 +9 13 +8 16 +9 19 +2 11 +9 16 +6 7 +5 6 +9 17 +8 15 +3 4 +7 14 diff --git a/geom_bottleneck/tests/data/test_321_B b/geom_bottleneck/tests/data/test_321_B new file mode 100644 index 0000000..be6f00b --- /dev/null +++ b/geom_bottleneck/tests/data/test_321_B @@ -0,0 +1,50 @@ +3 8 +8 13 +10 11 +9 11 +10 18 +3 10 +5 10 +9 18 +5 11 +5 7 +9 15 +10 13 +5 7 +6 14 +10 17 +4 10 +10 12 +10 17 +6 16 +3 8 +5 13 +9 12 +9 10 +10 12 +9 14 +7 16 +7 16 +10 14 +7 14 +3 4 +3 4 +8 18 +9 14 +5 9 +2 12 +9 17 +0 7 +2 4 +10 11 +7 14 +0 8 +1 9 +5 6 +2 4 +5 8 +3 12 +3 5 +1 5 +0 6 +4 14 diff --git a/geom_bottleneck/tests/data/test_322_A b/geom_bottleneck/tests/data/test_322_A new file mode 100644 index 0000000..18eed8e --- /dev/null +++ b/geom_bottleneck/tests/data/test_322_A @@ -0,0 +1,50 @@ +8 12 +6 11 +2 8 +0 2 +5 14 +6 8 +1 3 +5 9 +5 10 +6 13 +3 6 +10 14 +2 10 +8 11 +3 13 +3 8 +0 10 +0 3 +8 11 +2 12 +1 2 +10 11 +1 2 +7 16 +1 4 +8 11 +5 7 +8 17 +5 11 +3 8 +5 10 +1 4 +3 5 +4 5 +7 10 +4 13 +1 7 +0 1 +0 7 +6 16 +8 16 +4 11 +2 3 +10 13 +2 8 +7 9 +5 6 +4 10 +1 10 +0 7 diff --git a/geom_bottleneck/tests/data/test_322_B b/geom_bottleneck/tests/data/test_322_B new file mode 100644 index 0000000..f829c84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_322_B @@ -0,0 +1,50 @@ +1 9 +1 8 +6 12 +8 18 +9 17 +5 7 +3 8 +10 11 +10 19 +8 14 +6 8 +6 13 +3 5 +7 16 +0 5 +1 10 +1 2 +0 2 +6 7 +8 17 +4 12 +0 3 +6 8 +0 6 +9 10 +10 11 +8 15 +4 7 +1 11 +7 10 +3 11 +6 16 +2 7 +8 9 +10 18 +0 5 +1 4 +10 12 +3 9 +7 8 +10 14 +7 14 +6 13 +9 16 +5 15 +0 2 +5 12 +9 10 +2 10 +6 7 diff --git a/geom_bottleneck/tests/data/test_323_A b/geom_bottleneck/tests/data/test_323_A new file mode 100644 index 0000000..c452dff --- /dev/null +++ b/geom_bottleneck/tests/data/test_323_A @@ -0,0 +1,50 @@ +2 3 +8 16 +7 16 +7 8 +10 11 +2 12 +5 13 +5 14 +9 10 +7 8 +2 12 +0 9 +1 11 +6 12 +9 19 +6 12 +8 10 +7 10 +10 19 +0 2 +6 12 +2 11 +9 10 +0 9 +9 15 +4 11 +2 5 +4 10 +5 10 +0 7 +8 14 +1 4 +9 16 +1 10 +10 12 +3 10 +2 5 +2 12 +10 15 +0 7 +9 14 +7 8 +5 6 +8 18 +0 5 +0 10 +5 13 +7 11 +9 19 +4 11 diff --git a/geom_bottleneck/tests/data/test_323_B b/geom_bottleneck/tests/data/test_323_B new file mode 100644 index 0000000..4a7c144 --- /dev/null +++ b/geom_bottleneck/tests/data/test_323_B @@ -0,0 +1,50 @@ +3 4 +3 12 +0 3 +0 5 +2 4 +5 8 +5 10 +8 18 +6 15 +1 9 +8 15 +5 11 +8 13 +4 6 +9 18 +3 4 +10 18 +2 11 +3 10 +3 4 +9 12 +6 13 +7 15 +7 11 +6 9 +3 11 +8 11 +8 13 +9 14 +5 14 +1 7 +6 14 +0 1 +10 17 +0 3 +10 13 +0 1 +3 4 +1 7 +4 6 +7 14 +2 12 +8 10 +3 8 +8 18 +8 18 +8 14 +5 9 +10 18 +5 7 diff --git a/geom_bottleneck/tests/data/test_324_A b/geom_bottleneck/tests/data/test_324_A new file mode 100644 index 0000000..330da65 --- /dev/null +++ b/geom_bottleneck/tests/data/test_324_A @@ -0,0 +1,50 @@ +0 3 +8 9 +4 7 +1 5 +4 5 +5 7 +5 11 +5 9 +2 4 +9 16 +9 15 +7 13 +5 10 +3 11 +8 12 +8 14 +4 7 +6 9 +5 12 +7 11 +4 9 +8 18 +8 13 +3 9 +5 12 +3 12 +3 4 +2 3 +9 17 +0 7 +4 8 +5 13 +1 4 +1 4 +5 6 +3 12 +3 4 +8 14 +3 13 +7 10 +3 4 +9 15 +4 10 +9 17 +5 8 +2 6 +2 9 +1 3 +6 12 +0 2 diff --git a/geom_bottleneck/tests/data/test_324_B b/geom_bottleneck/tests/data/test_324_B new file mode 100644 index 0000000..4fb3fef --- /dev/null +++ b/geom_bottleneck/tests/data/test_324_B @@ -0,0 +1,50 @@ +3 9 +2 3 +5 12 +1 8 +5 10 +3 5 +1 2 +6 13 +10 17 +5 14 +7 13 +2 6 +4 5 +2 12 +3 12 +4 9 +7 14 +5 7 +6 7 +4 7 +1 9 +4 13 +10 19 +2 11 +3 9 +10 16 +2 7 +3 5 +5 12 +7 14 +0 10 +4 5 +8 18 +1 5 +7 14 +4 13 +4 7 +6 9 +6 12 +2 11 +4 12 +4 5 +7 17 +8 13 +3 4 +2 6 +6 14 +5 6 +5 6 +6 13 diff --git a/geom_bottleneck/tests/data/test_325_A b/geom_bottleneck/tests/data/test_325_A new file mode 100644 index 0000000..0e38bad --- /dev/null +++ b/geom_bottleneck/tests/data/test_325_A @@ -0,0 +1,50 @@ +6 9 +5 6 +7 17 +4 13 +6 12 +3 9 +3 9 +2 11 +0 3 +4 5 +6 11 +6 7 +8 12 +4 5 +10 11 +9 10 +0 3 +4 6 +0 8 +6 13 +8 12 +7 14 +0 1 +0 1 +8 9 +9 14 +10 12 +3 6 +4 5 +5 13 +10 13 +8 16 +8 16 +2 6 +3 4 +8 16 +2 6 +8 17 +7 11 +0 2 +5 12 +5 9 +5 12 +1 11 +3 10 +5 12 +5 7 +4 5 +4 6 +4 11 diff --git a/geom_bottleneck/tests/data/test_325_B b/geom_bottleneck/tests/data/test_325_B new file mode 100644 index 0000000..807bb12 --- /dev/null +++ b/geom_bottleneck/tests/data/test_325_B @@ -0,0 +1,50 @@ +6 12 +6 12 +5 13 +10 13 +9 16 +4 11 +9 15 +1 9 +2 3 +9 19 +5 8 +10 11 +9 15 +10 13 +9 15 +6 10 +1 5 +9 12 +5 11 +5 8 +10 19 +9 13 +2 3 +7 10 +6 8 +5 12 +7 16 +2 12 +2 6 +10 15 +0 1 +2 10 +10 11 +0 6 +6 13 +3 13 +8 12 +10 11 +10 14 +4 13 +6 13 +0 4 +9 15 +5 15 +6 13 +9 10 +10 15 +2 10 +6 16 +1 9 diff --git a/geom_bottleneck/tests/data/test_326_A b/geom_bottleneck/tests/data/test_326_A new file mode 100644 index 0000000..2cb897b --- /dev/null +++ b/geom_bottleneck/tests/data/test_326_A @@ -0,0 +1,50 @@ +10 12 +3 12 +0 1 +2 7 +3 9 +6 14 +9 19 +3 7 +8 10 +1 2 +4 7 +1 4 +5 6 +10 16 +6 11 +4 9 +5 10 +5 6 +5 10 +3 6 +6 15 +3 7 +9 19 +4 6 +9 19 +4 13 +8 18 +10 12 +9 13 +1 3 +9 16 +9 10 +5 10 +6 12 +8 10 +3 9 +1 8 +7 8 +7 11 +9 13 +0 1 +9 12 +5 14 +10 13 +1 4 +0 8 +9 19 +4 11 +4 13 +7 11 diff --git a/geom_bottleneck/tests/data/test_326_B b/geom_bottleneck/tests/data/test_326_B new file mode 100644 index 0000000..6b37e39 --- /dev/null +++ b/geom_bottleneck/tests/data/test_326_B @@ -0,0 +1,50 @@ +1 8 +6 14 +7 9 +5 14 +8 12 +9 19 +0 5 +0 2 +9 10 +2 3 +4 9 +9 10 +9 10 +7 15 +1 4 +1 6 +9 16 +8 12 +2 9 +9 15 +7 8 +7 13 +0 1 +4 14 +7 17 +4 10 +7 12 +9 10 +5 12 +4 9 +7 8 +3 10 +10 11 +9 19 +1 2 +5 13 +6 13 +6 11 +6 8 +2 9 +5 9 +4 12 +10 18 +5 9 +9 12 +1 11 +7 8 +3 5 +7 17 +3 9 diff --git a/geom_bottleneck/tests/data/test_327_A b/geom_bottleneck/tests/data/test_327_A new file mode 100644 index 0000000..0d54292 --- /dev/null +++ b/geom_bottleneck/tests/data/test_327_A @@ -0,0 +1,50 @@ +8 17 +4 7 +1 11 +9 10 +4 7 +0 9 +10 13 +5 7 +2 6 +7 9 +8 9 +5 8 +4 5 +3 9 +5 13 +10 17 +1 4 +7 15 +1 6 +10 17 +3 11 +10 11 +1 6 +3 12 +5 10 +8 14 +2 11 +6 11 +9 14 +7 16 +1 9 +8 9 +0 5 +4 13 +4 5 +1 3 +10 17 +10 13 +7 11 +4 9 +7 8 +7 15 +0 10 +3 4 +2 3 +6 16 +10 18 +6 13 +9 11 +6 16 diff --git a/geom_bottleneck/tests/data/test_327_B b/geom_bottleneck/tests/data/test_327_B new file mode 100644 index 0000000..548eb3f --- /dev/null +++ b/geom_bottleneck/tests/data/test_327_B @@ -0,0 +1,50 @@ +1 6 +10 11 +1 9 +6 10 +7 17 +9 11 +7 10 +6 10 +4 13 +7 17 +7 11 +3 4 +2 5 +0 8 +8 10 +7 9 +3 7 +4 12 +8 10 +4 6 +9 17 +1 2 +1 5 +6 11 +0 4 +5 8 +5 6 +7 13 +5 10 +4 5 +8 17 +10 12 +7 8 +3 13 +2 3 +3 9 +10 17 +0 1 +0 1 +9 16 +7 8 +3 4 +1 10 +4 13 +1 2 +9 10 +1 2 +5 14 +2 6 +1 5 diff --git a/geom_bottleneck/tests/data/test_328_A b/geom_bottleneck/tests/data/test_328_A new file mode 100644 index 0000000..810b747 --- /dev/null +++ b/geom_bottleneck/tests/data/test_328_A @@ -0,0 +1,50 @@ +2 11 +0 5 +2 6 +5 14 +1 10 +10 12 +0 1 +4 5 +1 2 +8 16 +8 9 +4 13 +2 3 +4 6 +4 14 +0 5 +5 15 +7 12 +5 8 +5 6 +10 15 +7 8 +3 9 +0 10 +4 5 +4 7 +1 9 +10 13 +0 1 +9 10 +2 9 +2 3 +8 16 +4 5 +9 11 +2 9 +7 14 +8 11 +5 8 +10 19 +4 7 +5 14 +0 5 +4 5 +2 5 +3 8 +10 20 +1 11 +4 14 +3 11 diff --git a/geom_bottleneck/tests/data/test_328_B b/geom_bottleneck/tests/data/test_328_B new file mode 100644 index 0000000..e781d51 --- /dev/null +++ b/geom_bottleneck/tests/data/test_328_B @@ -0,0 +1,50 @@ +3 10 +5 8 +4 10 +4 5 +4 11 +4 6 +0 5 +7 11 +6 16 +3 4 +7 14 +1 7 +10 11 +10 11 +2 3 +2 11 +9 12 +2 3 +5 6 +2 4 +2 8 +7 9 +10 14 +4 13 +2 9 +10 11 +6 13 +5 8 +1 8 +7 11 +7 8 +10 17 +9 10 +3 8 +2 4 +10 14 +4 9 +10 19 +9 11 +3 5 +10 20 +9 10 +3 6 +6 15 +6 14 +9 19 +9 11 +5 12 +3 8 +3 9 diff --git a/geom_bottleneck/tests/data/test_329_A b/geom_bottleneck/tests/data/test_329_A new file mode 100644 index 0000000..b02fd14 --- /dev/null +++ b/geom_bottleneck/tests/data/test_329_A @@ -0,0 +1,50 @@ +8 13 +4 13 +0 1 +6 12 +3 12 +0 1 +7 8 +4 12 +2 6 +7 11 +4 8 +3 5 +2 6 +5 12 +2 12 +1 10 +3 10 +2 3 +3 10 +3 4 +2 4 +7 8 +9 16 +3 5 +5 6 +6 11 +3 12 +2 4 +10 11 +8 11 +8 11 +2 9 +0 6 +4 7 +0 1 +2 3 +2 5 +8 16 +8 9 +2 11 +6 16 +6 12 +10 17 +6 11 +3 9 +2 9 +10 11 +9 12 +4 5 +2 6 diff --git a/geom_bottleneck/tests/data/test_329_B b/geom_bottleneck/tests/data/test_329_B new file mode 100644 index 0000000..0ca3fcd --- /dev/null +++ b/geom_bottleneck/tests/data/test_329_B @@ -0,0 +1,50 @@ +0 9 +5 6 +0 5 +9 12 +10 20 +9 12 +7 14 +9 19 +2 3 +5 14 +0 4 +2 3 +8 9 +0 5 +2 5 +9 10 +3 4 +1 7 +7 13 +10 13 +2 11 +9 18 +0 5 +5 13 +1 9 +10 19 +3 5 +2 6 +0 4 +8 13 +10 11 +5 13 +0 2 +0 1 +6 16 +5 8 +8 9 +2 10 +0 3 +4 14 +8 11 +7 14 +1 2 +1 3 +3 5 +3 10 +9 17 +3 6 +3 4 +1 10 diff --git a/geom_bottleneck/tests/data/test_330_A b/geom_bottleneck/tests/data/test_330_A new file mode 100644 index 0000000..4cdb2c9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_330_A @@ -0,0 +1,50 @@ +7 13 +2 8 +2 4 +5 15 +4 10 +9 17 +2 9 +9 12 +6 7 +6 7 +5 15 +4 5 +5 6 +4 6 +0 7 +4 7 +0 2 +8 18 +1 11 +10 11 +5 13 +3 5 +3 11 +0 1 +1 2 +10 14 +1 6 +2 3 +5 15 +3 13 +8 10 +6 15 +10 14 +3 10 +7 17 +4 14 +2 8 +10 11 +9 18 +10 15 +6 12 +4 8 +0 7 +9 11 +6 7 +1 8 +10 15 +0 6 +1 7 +7 16 diff --git a/geom_bottleneck/tests/data/test_330_B b/geom_bottleneck/tests/data/test_330_B new file mode 100644 index 0000000..01f1570 --- /dev/null +++ b/geom_bottleneck/tests/data/test_330_B @@ -0,0 +1,50 @@ +7 10 +4 5 +2 9 +1 2 +7 10 +4 6 +1 9 +6 16 +0 1 +9 14 +6 11 +10 16 +6 9 +0 6 +0 5 +10 12 +4 14 +7 8 +0 3 +9 18 +8 14 +4 7 +1 9 +2 5 +8 9 +9 10 +2 6 +1 11 +2 8 +4 10 +0 4 +2 9 +3 4 +0 10 +5 14 +4 12 +5 11 +4 7 +2 9 +7 16 +8 14 +8 12 +2 9 +4 11 +4 7 +0 1 +6 7 +5 6 +4 12 +2 4 diff --git a/geom_bottleneck/tests/data/test_331_A b/geom_bottleneck/tests/data/test_331_A new file mode 100644 index 0000000..a271a66 --- /dev/null +++ b/geom_bottleneck/tests/data/test_331_A @@ -0,0 +1,50 @@ +10 17 +0 8 +5 8 +10 11 +8 9 +10 13 +10 20 +6 7 +7 12 +0 8 +4 7 +0 10 +8 9 +1 9 +3 8 +10 12 +7 12 +9 18 +6 13 +3 9 +5 9 +6 7 +9 18 +10 17 +6 14 +4 8 +5 14 +10 17 +10 11 +7 16 +5 11 +8 10 +7 14 +6 8 +10 17 +7 8 +3 5 +0 2 +4 10 +8 9 +1 2 +3 12 +1 4 +2 6 +0 1 +0 10 +9 10 +5 6 +5 9 +10 15 diff --git a/geom_bottleneck/tests/data/test_331_B b/geom_bottleneck/tests/data/test_331_B new file mode 100644 index 0000000..72a1a7b --- /dev/null +++ b/geom_bottleneck/tests/data/test_331_B @@ -0,0 +1,50 @@ +5 6 +9 13 +9 17 +8 9 +8 18 +4 14 +8 9 +6 9 +1 5 +8 15 +6 7 +0 1 +5 12 +9 15 +10 16 +2 4 +3 6 +10 14 +10 13 +3 10 +7 13 +9 13 +6 16 +2 3 +6 10 +8 12 +0 9 +2 3 +5 13 +10 12 +1 5 +5 11 +2 6 +1 10 +7 11 +4 5 +5 14 +1 10 +10 15 +3 11 +2 6 +4 10 +6 13 +1 9 +3 10 +6 15 +2 8 +8 14 +4 7 +9 14 diff --git a/geom_bottleneck/tests/data/test_332_A b/geom_bottleneck/tests/data/test_332_A new file mode 100644 index 0000000..c1e999a --- /dev/null +++ b/geom_bottleneck/tests/data/test_332_A @@ -0,0 +1,50 @@ +5 13 +10 20 +4 5 +4 5 +3 13 +9 13 +6 8 +10 11 +3 8 +6 9 +4 5 +2 10 +10 17 +4 13 +8 12 +7 13 +2 4 +10 16 +3 11 +7 16 +5 6 +5 11 +3 6 +8 10 +2 3 +6 9 +1 3 +5 9 +7 16 +6 11 +4 14 +6 15 +10 18 +10 15 +1 10 +2 12 +6 14 +3 12 +0 5 +5 8 +4 14 +9 13 +7 14 +8 9 +8 17 +9 19 +6 15 +5 15 +1 8 +7 12 diff --git a/geom_bottleneck/tests/data/test_332_B b/geom_bottleneck/tests/data/test_332_B new file mode 100644 index 0000000..1f4686e --- /dev/null +++ b/geom_bottleneck/tests/data/test_332_B @@ -0,0 +1,50 @@ +10 11 +5 11 +0 10 +5 9 +4 7 +10 14 +7 12 +10 19 +1 7 +4 8 +3 12 +10 20 +0 3 +4 11 +8 11 +3 13 +0 9 +6 8 +4 12 +6 9 +5 8 +9 12 +7 12 +8 14 +6 11 +0 5 +4 7 +10 19 +9 10 +10 11 +4 8 +10 14 +2 11 +10 11 +3 5 +0 6 +10 20 +9 19 +5 14 +4 11 +7 9 +9 15 +2 3 +2 4 +8 14 +10 14 +9 16 +2 7 +9 17 +7 13 diff --git a/geom_bottleneck/tests/data/test_333_A b/geom_bottleneck/tests/data/test_333_A new file mode 100644 index 0000000..c1cc126 --- /dev/null +++ b/geom_bottleneck/tests/data/test_333_A @@ -0,0 +1,50 @@ +7 12 +4 10 +2 5 +3 12 +8 15 +0 9 +0 6 +9 12 +6 16 +10 18 +5 13 +10 11 +2 3 +9 14 +10 19 +2 11 +9 10 +5 15 +9 19 +1 2 +7 8 +1 5 +8 10 +8 9 +2 3 +7 8 +3 4 +2 6 +0 10 +10 17 +7 16 +6 8 +1 2 +9 10 +10 19 +4 5 +4 10 +2 4 +8 11 +2 7 +2 7 +0 5 +3 7 +7 16 +5 15 +4 11 +7 16 +0 6 +7 8 +1 2 diff --git a/geom_bottleneck/tests/data/test_333_B b/geom_bottleneck/tests/data/test_333_B new file mode 100644 index 0000000..fd22364 --- /dev/null +++ b/geom_bottleneck/tests/data/test_333_B @@ -0,0 +1,50 @@ +0 3 +10 20 +6 13 +9 16 +3 4 +4 13 +2 3 +3 8 +5 13 +10 11 +3 5 +3 5 +7 10 +1 4 +1 2 +8 18 +0 10 +6 16 +5 8 +7 15 +4 10 +1 11 +5 9 +5 13 +1 2 +1 9 +3 8 +6 16 +7 8 +0 8 +9 15 +4 5 +10 11 +0 5 +2 5 +1 8 +10 16 +2 9 +8 14 +6 10 +9 18 +7 8 +9 16 +4 12 +10 15 +3 10 +6 10 +2 5 +4 14 +3 4 diff --git a/geom_bottleneck/tests/data/test_334_A b/geom_bottleneck/tests/data/test_334_A new file mode 100644 index 0000000..914d6c3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_334_A @@ -0,0 +1,50 @@ +8 13 +10 20 +2 3 +7 15 +9 17 +2 12 +5 6 +2 5 +6 13 +10 20 +3 8 +1 9 +3 13 +10 11 +1 5 +7 11 +5 15 +5 6 +9 11 +3 5 +3 8 +6 16 +8 12 +4 7 +0 4 +8 12 +5 15 +9 14 +5 6 +3 4 +1 8 +2 7 +4 7 +8 18 +3 9 +0 5 +0 10 +8 10 +8 14 +3 13 +3 9 +9 17 +5 15 +7 16 +1 9 +0 2 +1 9 +9 12 +5 13 +9 19 diff --git a/geom_bottleneck/tests/data/test_334_B b/geom_bottleneck/tests/data/test_334_B new file mode 100644 index 0000000..27524b9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_334_B @@ -0,0 +1,50 @@ +10 11 +9 14 +2 11 +10 17 +9 15 +4 9 +7 16 +9 12 +8 12 +7 11 +6 16 +3 12 +0 4 +9 15 +3 10 +2 9 +2 3 +6 7 +3 9 +5 8 +6 8 +4 5 +9 14 +6 10 +1 10 +10 12 +8 10 +7 12 +3 9 +4 9 +4 11 +5 10 +9 11 +7 8 +6 16 +8 17 +9 14 +4 14 +2 4 +1 2 +9 11 +7 13 +9 10 +2 9 +2 12 +2 4 +9 16 +7 17 +3 11 +8 9 diff --git a/geom_bottleneck/tests/data/test_335_A b/geom_bottleneck/tests/data/test_335_A new file mode 100644 index 0000000..1a400bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_335_A @@ -0,0 +1,50 @@ +0 2 +6 11 +7 11 +7 12 +7 11 +9 10 +6 14 +4 5 +5 7 +7 16 +2 3 +10 15 +10 19 +9 16 +6 15 +7 14 +8 18 +7 15 +8 14 +10 11 +10 11 +5 9 +0 10 +9 11 +9 19 +0 6 +2 10 +8 15 +1 7 +5 12 +3 4 +1 6 +0 2 +9 16 +9 19 +10 16 +6 9 +1 9 +6 7 +9 10 +8 14 +4 8 +9 10 +1 10 +5 6 +9 11 +7 16 +0 9 +7 13 +7 9 diff --git a/geom_bottleneck/tests/data/test_335_B b/geom_bottleneck/tests/data/test_335_B new file mode 100644 index 0000000..93c3211 --- /dev/null +++ b/geom_bottleneck/tests/data/test_335_B @@ -0,0 +1,50 @@ +8 14 +9 15 +6 11 +4 14 +2 3 +7 13 +5 11 +8 14 +1 8 +9 12 +0 10 +3 5 +10 11 +0 2 +5 13 +6 12 +8 11 +4 10 +5 14 +6 15 +9 19 +4 6 +4 5 +9 16 +5 9 +5 6 +7 14 +9 11 +9 18 +1 9 +1 4 +6 12 +2 10 +8 14 +1 11 +2 4 +9 16 +3 9 +2 11 +7 12 +6 9 +0 8 +9 17 +9 15 +10 12 +0 7 +6 9 +8 13 +10 18 +6 15 diff --git a/geom_bottleneck/tests/data/test_336_A b/geom_bottleneck/tests/data/test_336_A new file mode 100644 index 0000000..5410dc3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_336_A @@ -0,0 +1,50 @@ +4 7 +9 16 +2 5 +0 8 +0 9 +10 11 +7 11 +2 3 +6 13 +6 9 +2 8 +7 16 +2 6 +5 14 +6 9 +7 17 +1 8 +0 4 +7 13 +9 13 +10 16 +0 2 +7 16 +8 17 +7 11 +6 7 +2 12 +5 12 +9 17 +6 7 +1 5 +9 12 +7 10 +6 11 +7 16 +6 11 +6 7 +2 6 +1 8 +10 14 +5 6 +2 7 +5 6 +2 11 +8 10 +6 10 +3 12 +3 11 +8 12 +8 10 diff --git a/geom_bottleneck/tests/data/test_336_B b/geom_bottleneck/tests/data/test_336_B new file mode 100644 index 0000000..8b60a46 --- /dev/null +++ b/geom_bottleneck/tests/data/test_336_B @@ -0,0 +1,50 @@ +6 15 +8 10 +0 10 +5 10 +1 10 +8 17 +2 9 +7 9 +9 12 +7 8 +8 9 +7 8 +4 14 +10 17 +3 8 +2 7 +1 10 +6 13 +9 16 +6 13 +2 4 +4 12 +2 3 +3 10 +6 13 +6 11 +6 13 +9 17 +4 5 +0 1 +5 6 +0 7 +1 8 +5 9 +0 7 +0 3 +8 10 +4 6 +10 16 +1 9 +1 10 +7 12 +1 3 +6 10 +5 6 +9 10 +6 7 +5 7 +8 12 +0 9 diff --git a/geom_bottleneck/tests/data/test_337_A b/geom_bottleneck/tests/data/test_337_A new file mode 100644 index 0000000..652b5f1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_337_A @@ -0,0 +1,50 @@ +3 5 +1 2 +6 14 +10 18 +3 10 +1 11 +1 7 +2 11 +1 2 +0 7 +2 8 +9 14 +8 10 +1 3 +5 11 +7 8 +6 14 +8 17 +2 10 +7 15 +0 2 +4 12 +10 18 +10 11 +2 6 +3 9 +0 4 +5 15 +4 10 +8 14 +5 12 +10 11 +9 16 +9 14 +3 4 +3 5 +1 10 +3 4 +10 11 +1 6 +6 10 +1 8 +9 10 +1 6 +5 6 +5 6 +3 13 +10 19 +5 9 +4 12 diff --git a/geom_bottleneck/tests/data/test_337_B b/geom_bottleneck/tests/data/test_337_B new file mode 100644 index 0000000..eba21bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_337_B @@ -0,0 +1,50 @@ +0 7 +2 4 +5 14 +7 8 +10 18 +4 13 +2 9 +8 16 +1 9 +5 9 +6 13 +0 1 +10 17 +4 9 +8 15 +1 9 +9 17 +5 14 +7 14 +5 12 +9 18 +8 15 +3 12 +7 17 +1 4 +5 7 +5 15 +3 6 +2 5 +1 2 +4 6 +6 15 +3 7 +4 5 +1 9 +7 8 +10 14 +9 18 +9 13 +9 11 +2 6 +8 10 +2 8 +0 9 +0 10 +1 5 +0 1 +6 9 +6 10 +0 3 diff --git a/geom_bottleneck/tests/data/test_338_A b/geom_bottleneck/tests/data/test_338_A new file mode 100644 index 0000000..567256f --- /dev/null +++ b/geom_bottleneck/tests/data/test_338_A @@ -0,0 +1,50 @@ +9 16 +3 6 +8 18 +7 15 +5 7 +8 14 +2 6 +10 12 +1 5 +5 8 +2 11 +1 3 +7 15 +5 13 +10 16 +1 11 +4 6 +7 8 +4 5 +5 11 +7 12 +6 12 +7 15 +8 16 +4 14 +1 6 +4 13 +3 12 +0 1 +3 6 +4 5 +4 11 +8 9 +0 7 +2 10 +9 17 +1 11 +5 9 +1 8 +10 11 +1 7 +6 8 +7 16 +1 4 +10 17 +2 8 +6 10 +10 14 +1 11 +5 15 diff --git a/geom_bottleneck/tests/data/test_338_B b/geom_bottleneck/tests/data/test_338_B new file mode 100644 index 0000000..82c3d80 --- /dev/null +++ b/geom_bottleneck/tests/data/test_338_B @@ -0,0 +1,50 @@ +1 2 +10 14 +5 6 +8 17 +9 17 +1 6 +4 10 +3 13 +7 15 +5 6 +8 10 +2 5 +3 13 +5 15 +2 4 +8 10 +2 9 +1 3 +6 12 +3 6 +2 12 +2 10 +3 11 +0 2 +4 12 +7 12 +3 5 +6 7 +9 17 +8 9 +3 12 +10 20 +2 10 +3 5 +2 11 +7 17 +3 12 +2 6 +9 11 +4 12 +0 8 +9 11 +1 4 +2 7 +7 16 +0 8 +4 13 +4 5 +8 14 +8 11 diff --git a/geom_bottleneck/tests/data/test_339_A b/geom_bottleneck/tests/data/test_339_A new file mode 100644 index 0000000..9148a9c --- /dev/null +++ b/geom_bottleneck/tests/data/test_339_A @@ -0,0 +1,50 @@ +3 4 +10 13 +6 8 +8 10 +2 3 +3 6 +10 19 +6 14 +6 9 +0 8 +5 7 +10 15 +9 17 +2 3 +9 14 +6 14 +1 11 +4 9 +2 3 +9 16 +6 11 +3 8 +6 9 +10 12 +1 3 +3 13 +7 14 +4 9 +8 11 +7 9 +1 2 +9 11 +8 17 +0 2 +9 19 +5 14 +6 8 +10 14 +7 13 +0 10 +4 5 +0 9 +2 9 +0 5 +9 15 +3 9 +3 7 +7 16 +1 2 +10 18 diff --git a/geom_bottleneck/tests/data/test_339_B b/geom_bottleneck/tests/data/test_339_B new file mode 100644 index 0000000..385967f --- /dev/null +++ b/geom_bottleneck/tests/data/test_339_B @@ -0,0 +1,50 @@ +2 9 +3 4 +1 5 +8 12 +8 12 +5 14 +4 9 +4 10 +5 8 +3 8 +9 10 +0 3 +1 10 +0 7 +6 13 +4 7 +10 20 +7 8 +5 8 +9 18 +1 6 +5 8 +4 8 +7 12 +7 17 +10 18 +9 10 +8 16 +8 13 +7 16 +9 18 +0 1 +7 8 +3 13 +3 4 +1 8 +6 14 +5 14 +3 6 +6 9 +7 15 +5 13 +6 15 +2 12 +9 19 +7 15 +0 4 +3 12 +9 11 +10 11 diff --git a/geom_bottleneck/tests/data/test_340_A b/geom_bottleneck/tests/data/test_340_A new file mode 100644 index 0000000..4af25b1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_340_A @@ -0,0 +1,100 @@ +0 5 +10 19 +1 4 +6 9 +1 6 +3 11 +4 10 +9 12 +1 10 +7 12 +8 11 +3 4 +8 18 +9 15 +0 2 +9 12 +1 6 +0 8 +4 5 +2 10 +0 2 +4 10 +6 7 +7 13 +2 3 +0 9 +5 6 +0 10 +5 7 +6 15 +9 15 +1 2 +2 3 +9 14 +8 18 +4 10 +7 15 +5 8 +3 11 +10 14 +4 12 +8 13 +8 17 +2 4 +0 9 +10 19 +3 4 +0 5 +8 15 +1 9 +8 11 +9 16 +0 1 +3 6 +4 6 +2 9 +3 9 +5 11 +1 8 +6 12 +10 19 +5 6 +3 12 +0 2 +9 17 +0 3 +0 4 +10 20 +8 14 +2 10 +3 7 +7 12 +2 4 +8 9 +1 7 +3 13 +1 5 +6 7 +10 13 +9 10 +6 15 +9 11 +0 10 +6 8 +8 9 +5 9 +10 16 +5 11 +7 13 +2 6 +2 3 +5 7 +4 10 +9 19 +7 10 +1 8 +2 9 +10 13 +10 12 +7 11 diff --git a/geom_bottleneck/tests/data/test_340_B b/geom_bottleneck/tests/data/test_340_B new file mode 100644 index 0000000..0e3fa2a --- /dev/null +++ b/geom_bottleneck/tests/data/test_340_B @@ -0,0 +1,100 @@ +7 11 +8 16 +1 4 +8 12 +9 19 +2 5 +2 8 +2 9 +0 4 +1 9 +5 7 +5 9 +10 14 +1 9 +3 10 +0 8 +10 11 +2 10 +2 11 +9 15 +0 1 +0 10 +3 10 +5 12 +5 12 +1 2 +7 12 +0 1 +1 4 +6 15 +1 5 +9 13 +9 17 +9 19 +8 9 +4 6 +1 10 +5 9 +2 3 +7 8 +1 5 +1 4 +8 9 +6 14 +2 9 +1 8 +4 10 +8 10 +1 11 +7 10 +8 13 +5 9 +9 19 +8 9 +3 6 +10 11 +7 8 +3 8 +6 9 +4 12 +10 19 +5 8 +1 9 +8 13 +2 4 +1 8 +7 16 +3 9 +0 3 +1 4 +8 17 +8 9 +5 12 +9 19 +2 8 +0 1 +1 2 +6 10 +1 7 +7 15 +4 8 +2 5 +3 13 +4 7 +9 12 +8 15 +10 12 +9 12 +5 13 +6 15 +1 3 +4 9 +9 16 +7 8 +2 12 +10 19 +1 9 +2 5 +5 6 +9 12 diff --git a/geom_bottleneck/tests/data/test_341_A b/geom_bottleneck/tests/data/test_341_A new file mode 100644 index 0000000..932688b --- /dev/null +++ b/geom_bottleneck/tests/data/test_341_A @@ -0,0 +1,100 @@ +6 15 +6 7 +3 11 +8 15 +2 10 +10 13 +6 16 +9 10 +8 15 +3 12 +10 14 +1 8 +8 17 +1 8 +4 10 +7 12 +1 10 +7 10 +8 18 +3 5 +1 3 +1 6 +0 3 +10 19 +8 18 +4 7 +1 3 +2 8 +1 10 +4 13 +10 13 +10 17 +0 4 +6 12 +4 5 +3 8 +2 4 +4 10 +5 11 +9 14 +5 15 +2 11 +4 12 +5 11 +7 16 +5 7 +4 7 +6 7 +2 6 +3 12 +10 15 +7 12 +1 9 +0 1 +5 8 +1 8 +5 12 +1 3 +2 3 +4 10 +2 10 +10 19 +2 3 +4 13 +10 14 +3 4 +0 10 +5 7 +10 11 +8 11 +6 11 +7 17 +3 4 +0 6 +9 11 +3 12 +5 12 +9 10 +6 8 +4 11 +3 7 +2 6 +9 10 +8 18 +10 11 +2 9 +4 9 +4 13 +0 5 +10 17 +5 6 +6 16 +0 3 +0 8 +5 15 +5 12 +3 10 +8 11 +10 17 +4 6 diff --git a/geom_bottleneck/tests/data/test_341_B b/geom_bottleneck/tests/data/test_341_B new file mode 100644 index 0000000..68cc4b9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_341_B @@ -0,0 +1,100 @@ +9 15 +10 18 +2 5 +5 7 +3 13 +6 13 +0 1 +2 12 +2 11 +3 4 +3 5 +1 9 +4 7 +10 12 +3 8 +9 17 +10 20 +5 7 +3 5 +9 18 +9 12 +3 5 +0 7 +1 2 +6 14 +7 8 +0 2 +3 11 +10 18 +7 10 +0 4 +10 11 +6 12 +8 16 +7 17 +0 8 +0 10 +9 16 +8 15 +5 6 +5 10 +4 8 +4 10 +1 11 +6 7 +6 9 +1 10 +3 5 +10 20 +10 11 +2 8 +10 13 +9 14 +8 11 +10 11 +7 16 +8 10 +8 17 +5 14 +0 7 +7 8 +4 8 +6 14 +2 5 +10 15 +2 10 +2 4 +8 13 +6 14 +2 3 +7 8 +8 13 +4 8 +1 6 +1 9 +0 1 +7 14 +10 11 +2 7 +5 15 +0 4 +1 7 +0 6 +6 13 +6 15 +1 2 +2 4 +8 9 +0 1 +3 4 +8 9 +9 11 +9 16 +8 17 +1 3 +8 10 +8 9 +8 15 +1 3 +7 16 diff --git a/geom_bottleneck/tests/data/test_342_A b/geom_bottleneck/tests/data/test_342_A new file mode 100644 index 0000000..04cdc19 --- /dev/null +++ b/geom_bottleneck/tests/data/test_342_A @@ -0,0 +1,100 @@ +4 8 +4 5 +1 9 +4 13 +2 10 +7 15 +6 7 +8 17 +1 8 +6 7 +9 19 +8 12 +10 18 +5 7 +8 13 +9 12 +9 14 +1 2 +7 11 +9 11 +6 15 +2 12 +6 10 +0 7 +1 10 +2 5 +8 11 +3 13 +3 11 +3 10 +6 14 +1 10 +4 6 +3 13 +5 10 +3 9 +9 16 +3 4 +0 2 +9 10 +10 16 +5 12 +6 11 +4 7 +9 18 +10 16 +5 7 +6 12 +0 7 +5 9 +8 18 +4 7 +2 6 +8 17 +7 10 +7 10 +6 11 +8 9 +3 7 +8 16 +4 9 +6 12 +0 6 +4 12 +10 15 +10 17 +10 20 +3 11 +2 12 +0 9 +3 12 +4 5 +5 7 +3 7 +0 4 +5 9 +1 7 +6 13 +9 13 +8 9 +0 6 +3 10 +1 11 +0 2 +0 6 +3 9 +2 7 +4 7 +8 14 +2 7 +2 4 +4 7 +1 7 +10 13 +6 16 +5 15 +7 17 +7 10 +3 5 +7 10 diff --git a/geom_bottleneck/tests/data/test_342_B b/geom_bottleneck/tests/data/test_342_B new file mode 100644 index 0000000..e6aae99 --- /dev/null +++ b/geom_bottleneck/tests/data/test_342_B @@ -0,0 +1,100 @@ +9 16 +6 15 +1 4 +0 1 +3 5 +2 3 +10 20 +3 7 +0 10 +3 13 +7 8 +4 6 +7 14 +8 9 +8 14 +10 20 +1 9 +4 14 +4 5 +2 6 +6 8 +1 10 +7 14 +8 10 +4 8 +7 8 +7 12 +6 16 +6 7 +9 19 +8 12 +1 9 +1 3 +10 16 +3 6 +2 8 +0 2 +7 15 +2 3 +8 13 +5 8 +1 2 +10 11 +4 11 +5 12 +10 15 +7 8 +2 5 +6 13 +8 17 +8 14 +4 8 +6 11 +5 6 +0 7 +0 5 +8 13 +1 2 +6 11 +6 11 +8 9 +4 5 +4 8 +0 5 +3 9 +1 3 +8 9 +10 16 +8 17 +8 17 +3 4 +3 5 +8 12 +9 10 +9 10 +8 14 +3 10 +5 9 +1 4 +9 19 +0 2 +7 8 +6 8 +7 12 +6 12 +0 1 +9 11 +3 11 +5 6 +0 8 +2 4 +1 7 +3 4 +0 3 +9 17 +2 9 +1 6 +2 6 +7 15 +1 4 diff --git a/geom_bottleneck/tests/data/test_343_A b/geom_bottleneck/tests/data/test_343_A new file mode 100644 index 0000000..9759369 --- /dev/null +++ b/geom_bottleneck/tests/data/test_343_A @@ -0,0 +1,100 @@ +5 13 +5 9 +2 3 +6 14 +1 2 +3 6 +1 3 +9 14 +0 6 +1 8 +9 10 +4 5 +10 19 +6 13 +7 8 +10 16 +6 7 +10 18 +8 11 +2 8 +8 9 +5 10 +1 2 +10 14 +10 12 +8 17 +7 12 +9 12 +1 5 +2 4 +8 13 +2 11 +0 5 +4 8 +2 12 +2 10 +6 15 +1 2 +8 11 +8 18 +8 9 +7 9 +5 7 +0 10 +4 10 +5 13 +8 16 +5 11 +8 16 +7 9 +2 11 +8 12 +8 10 +9 16 +7 8 +5 15 +0 1 +6 7 +7 8 +6 7 +7 13 +9 16 +9 15 +3 11 +4 10 +2 10 +3 13 +0 1 +7 10 +9 10 +8 10 +3 4 +1 4 +1 6 +4 7 +4 10 +6 11 +10 13 +7 10 +9 14 +9 15 +7 9 +3 10 +6 8 +5 15 +8 11 +7 14 +8 18 +9 13 +9 15 +10 17 +3 13 +5 7 +8 16 +4 12 +9 10 +6 12 +1 9 +0 6 +5 11 diff --git a/geom_bottleneck/tests/data/test_343_B b/geom_bottleneck/tests/data/test_343_B new file mode 100644 index 0000000..e338ab2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_343_B @@ -0,0 +1,100 @@ +2 12 +5 9 +5 6 +10 19 +2 6 +6 14 +8 18 +6 9 +2 10 +5 7 +0 6 +7 10 +7 14 +10 15 +10 16 +6 16 +7 16 +3 8 +2 4 +2 11 +10 19 +7 15 +8 9 +7 11 +10 20 +9 11 +3 6 +6 15 +5 14 +2 3 +1 3 +5 11 +3 8 +2 9 +1 3 +10 20 +6 11 +0 9 +6 9 +0 5 +9 10 +2 7 +8 14 +9 19 +2 7 +10 11 +0 6 +4 7 +10 16 +9 12 +7 16 +5 12 +1 8 +4 12 +1 2 +1 8 +9 13 +9 14 +8 9 +4 9 +4 11 +9 19 +5 15 +2 3 +9 10 +8 15 +7 8 +9 10 +5 12 +2 12 +0 1 +3 4 +3 5 +5 14 +10 18 +3 10 +0 1 +9 10 +4 6 +10 18 +9 17 +6 7 +8 15 +3 11 +7 8 +6 12 +5 11 +0 10 +5 8 +6 15 +6 13 +0 4 +4 13 +6 9 +0 1 +0 1 +3 10 +8 17 +0 8 +9 18 diff --git a/geom_bottleneck/tests/data/test_344_A b/geom_bottleneck/tests/data/test_344_A new file mode 100644 index 0000000..e8e81ab --- /dev/null +++ b/geom_bottleneck/tests/data/test_344_A @@ -0,0 +1,100 @@ +2 11 +2 7 +2 7 +1 11 +2 6 +0 9 +2 8 +2 12 +0 9 +5 10 +6 10 +2 4 +9 19 +0 6 +0 6 +9 18 +6 7 +3 13 +3 9 +1 4 +1 9 +1 11 +9 19 +8 9 +7 13 +5 13 +10 14 +10 12 +1 3 +10 17 +2 4 +8 9 +8 18 +7 15 +3 13 +10 19 +0 2 +0 10 +2 7 +5 6 +9 14 +0 4 +7 14 +10 11 +3 5 +0 2 +8 18 +4 5 +10 16 +9 18 +6 16 +4 8 +3 4 +2 7 +4 14 +4 10 +4 10 +10 14 +8 9 +7 16 +1 7 +4 14 +6 7 +3 4 +9 10 +2 3 +7 13 +10 13 +10 14 +3 8 +0 6 +3 4 +1 10 +6 12 +4 6 +3 9 +3 9 +5 11 +10 13 +2 5 +9 16 +4 14 +3 5 +0 1 +10 19 +9 16 +10 14 +0 4 +1 3 +6 8 +7 14 +1 11 +0 6 +1 5 +8 9 +8 11 +7 16 +10 11 +1 7 +2 12 diff --git a/geom_bottleneck/tests/data/test_344_B b/geom_bottleneck/tests/data/test_344_B new file mode 100644 index 0000000..af72be5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_344_B @@ -0,0 +1,100 @@ +10 11 +8 9 +3 12 +2 10 +1 6 +4 8 +8 11 +7 17 +8 18 +9 10 +5 6 +2 9 +8 10 +1 8 +3 13 +5 12 +8 14 +7 14 +2 12 +10 15 +0 7 +7 8 +8 17 +8 10 +4 8 +6 7 +6 8 +2 3 +5 15 +2 11 +10 18 +6 13 +1 2 +6 16 +2 8 +8 11 +9 18 +8 14 +6 16 +10 20 +8 9 +0 7 +1 5 +7 16 +10 17 +1 2 +2 5 +2 6 +3 4 +7 9 +5 8 +5 7 +5 7 +1 11 +7 10 +7 17 +7 14 +5 7 +10 20 +0 2 +5 9 +0 1 +4 12 +5 6 +5 6 +2 9 +0 10 +10 11 +2 7 +8 9 +5 6 +0 2 +4 10 +6 13 +5 15 +9 11 +3 9 +6 10 +0 4 +6 9 +6 16 +10 15 +6 16 +0 8 +4 12 +10 15 +6 11 +8 11 +8 9 +3 12 +4 11 +5 11 +10 14 +9 14 +3 12 +7 8 +2 7 +8 12 +8 9 +4 12 diff --git a/geom_bottleneck/tests/data/test_345_A b/geom_bottleneck/tests/data/test_345_A new file mode 100644 index 0000000..584e4ed --- /dev/null +++ b/geom_bottleneck/tests/data/test_345_A @@ -0,0 +1,100 @@ +2 6 +6 16 +7 11 +0 4 +4 5 +3 9 +9 10 +6 12 +1 3 +9 16 +6 15 +10 14 +4 6 +6 7 +1 7 +2 8 +3 10 +9 10 +0 10 +0 1 +10 11 +3 8 +4 10 +9 15 +6 9 +0 3 +1 7 +1 3 +4 5 +8 12 +2 3 +6 14 +8 14 +1 9 +10 17 +4 5 +3 7 +9 10 +4 7 +7 12 +10 11 +6 11 +0 7 +6 8 +5 15 +1 5 +7 11 +5 7 +10 11 +9 14 +0 3 +8 12 +10 20 +0 10 +5 14 +5 8 +9 10 +3 12 +0 8 +1 11 +3 6 +3 5 +10 14 +3 12 +5 9 +5 13 +6 16 +7 15 +9 17 +7 12 +1 10 +7 10 +6 8 +3 12 +4 12 +5 9 +1 7 +7 16 +8 10 +1 11 +2 11 +4 10 +7 8 +5 15 +2 5 +3 10 +8 12 +9 12 +2 3 +0 3 +10 12 +0 10 +10 14 +4 6 +10 11 +8 17 +6 8 +10 16 +9 18 +5 7 diff --git a/geom_bottleneck/tests/data/test_345_B b/geom_bottleneck/tests/data/test_345_B new file mode 100644 index 0000000..8c3e758 --- /dev/null +++ b/geom_bottleneck/tests/data/test_345_B @@ -0,0 +1,100 @@ +2 5 +8 13 +1 3 +4 13 +3 12 +1 9 +8 14 +4 13 +9 14 +8 14 +7 16 +8 14 +7 8 +0 9 +3 12 +9 14 +9 10 +2 3 +3 6 +6 15 +9 15 +6 12 +0 6 +9 12 +4 9 +5 14 +9 13 +8 9 +5 15 +2 7 +8 10 +0 2 +7 11 +5 10 +7 15 +5 6 +1 8 +7 9 +9 15 +3 10 +1 2 +3 6 +0 5 +6 16 +2 8 +9 10 +4 11 +2 3 +4 8 +5 11 +9 15 +2 7 +5 14 +10 18 +1 3 +9 14 +10 16 +3 8 +9 14 +1 3 +9 13 +2 7 +1 2 +7 13 +1 8 +2 5 +4 5 +3 5 +1 2 +10 13 +6 16 +10 15 +1 7 +10 12 +0 10 +7 12 +9 14 +4 5 +4 5 +6 9 +9 19 +5 12 +9 10 +9 19 +10 18 +8 11 +7 17 +0 3 +3 13 +3 11 +4 8 +6 11 +1 6 +0 9 +9 12 +8 13 +1 10 +7 13 +6 12 +4 8 diff --git a/geom_bottleneck/tests/data/test_346_A b/geom_bottleneck/tests/data/test_346_A new file mode 100644 index 0000000..ab26e2f --- /dev/null +++ b/geom_bottleneck/tests/data/test_346_A @@ -0,0 +1,100 @@ +10 11 +1 11 +1 9 +0 5 +1 3 +10 18 +0 5 +4 5 +1 8 +8 16 +5 6 +9 13 +6 13 +4 5 +7 14 +8 9 +4 5 +9 11 +6 9 +9 18 +10 15 +8 15 +10 12 +3 7 +10 14 +3 9 +10 12 +3 9 +0 10 +5 8 +7 17 +8 11 +6 7 +10 17 +0 8 +0 1 +0 9 +8 10 +7 15 +8 17 +0 4 +0 3 +10 11 +7 10 +4 13 +4 9 +3 4 +4 5 +4 12 +4 11 +5 11 +3 4 +10 16 +0 2 +0 6 +8 10 +9 11 +7 15 +7 9 +5 11 +9 15 +7 8 +7 16 +4 14 +2 3 +5 8 +2 3 +9 15 +8 15 +6 15 +1 6 +2 5 +4 13 +6 12 +7 8 +0 2 +8 14 +4 9 +10 11 +10 16 +3 10 +7 16 +9 13 +1 2 +7 12 +3 5 +5 6 +4 12 +9 11 +6 7 +2 8 +9 10 +7 8 +0 6 +1 2 +5 9 +3 10 +3 13 +2 9 +2 9 diff --git a/geom_bottleneck/tests/data/test_346_B b/geom_bottleneck/tests/data/test_346_B new file mode 100644 index 0000000..5e30972 --- /dev/null +++ b/geom_bottleneck/tests/data/test_346_B @@ -0,0 +1,100 @@ +8 15 +1 8 +10 15 +8 13 +9 16 +3 13 +3 5 +1 8 +8 16 +6 12 +7 16 +4 14 +3 9 +0 8 +9 18 +4 14 +1 10 +6 12 +4 5 +10 14 +3 6 +9 10 +1 4 +6 16 +8 17 +6 7 +0 5 +1 9 +3 7 +8 14 +9 17 +10 15 +3 10 +4 14 +9 10 +9 16 +4 9 +2 12 +4 5 +6 14 +3 12 +10 16 +10 14 +6 12 +2 11 +4 11 +1 10 +5 6 +3 13 +10 19 +4 8 +0 2 +7 9 +6 7 +10 12 +9 18 +2 8 +6 9 +2 6 +4 11 +9 18 +8 14 +10 16 +9 13 +4 5 +1 6 +9 15 +8 9 +10 14 +1 2 +9 17 +10 15 +5 8 +8 11 +8 9 +10 17 +2 4 +5 6 +1 4 +1 4 +5 15 +7 13 +6 12 +10 12 +7 13 +9 10 +5 9 +0 5 +1 7 +2 3 +9 14 +4 10 +8 9 +3 12 +2 3 +4 11 +10 20 +10 13 +3 9 +8 16 diff --git a/geom_bottleneck/tests/data/test_347_A b/geom_bottleneck/tests/data/test_347_A new file mode 100644 index 0000000..0cfd08b --- /dev/null +++ b/geom_bottleneck/tests/data/test_347_A @@ -0,0 +1,100 @@ +0 3 +9 14 +9 11 +1 3 +7 8 +4 12 +7 8 +10 20 +8 13 +2 5 +8 9 +5 14 +8 9 +5 11 +10 14 +7 15 +4 9 +4 10 +1 2 +2 6 +6 12 +0 1 +7 8 +10 13 +4 9 +0 3 +2 3 +0 4 +3 6 +7 13 +0 1 +10 13 +3 4 +1 2 +0 5 +9 12 +1 11 +8 17 +3 4 +3 7 +4 9 +1 2 +1 9 +4 14 +10 11 +3 11 +8 9 +2 6 +4 7 +8 13 +7 10 +0 1 +10 19 +7 13 +6 11 +1 10 +4 12 +9 14 +5 12 +3 13 +0 1 +2 3 +4 8 +5 11 +8 18 +5 6 +0 3 +0 3 +5 8 +10 11 +3 9 +0 4 +8 11 +5 14 +3 7 +9 10 +6 7 +8 14 +9 18 +6 11 +7 8 +6 10 +4 9 +4 9 +9 14 +6 13 +6 13 +10 17 +7 17 +8 15 +7 9 +4 9 +4 14 +0 1 +5 15 +4 8 +0 7 +4 5 +7 16 +4 9 diff --git a/geom_bottleneck/tests/data/test_347_B b/geom_bottleneck/tests/data/test_347_B new file mode 100644 index 0000000..66d57ea --- /dev/null +++ b/geom_bottleneck/tests/data/test_347_B @@ -0,0 +1,100 @@ +10 11 +6 15 +5 11 +8 9 +8 12 +4 7 +6 7 +6 11 +10 16 +6 15 +9 19 +7 16 +10 12 +0 1 +9 13 +9 10 +10 15 +6 10 +10 12 +7 10 +9 17 +2 3 +10 19 +2 3 +5 13 +7 9 +9 16 +9 18 +9 16 +4 10 +1 11 +6 7 +9 10 +6 7 +3 4 +8 15 +6 16 +8 9 +6 8 +8 10 +0 6 +7 9 +5 10 +3 6 +1 5 +6 7 +6 9 +4 13 +5 7 +8 17 +10 16 +9 19 +5 9 +2 3 +6 7 +7 16 +4 10 +3 10 +6 9 +3 11 +9 18 +7 15 +8 16 +6 9 +8 10 +6 10 +0 3 +1 2 +2 3 +5 11 +5 9 +1 11 +10 11 +0 10 +9 14 +1 5 +3 4 +3 10 +6 12 +0 7 +5 9 +9 12 +8 16 +7 12 +1 11 +9 11 +5 15 +10 19 +2 8 +5 15 +4 6 +3 10 +4 13 +0 9 +5 6 +6 10 +2 3 +3 12 +1 10 +6 7 diff --git a/geom_bottleneck/tests/data/test_348_A b/geom_bottleneck/tests/data/test_348_A new file mode 100644 index 0000000..8cef3ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_348_A @@ -0,0 +1,100 @@ +8 16 +2 7 +7 12 +0 9 +9 12 +8 18 +1 3 +2 6 +3 8 +2 6 +3 11 +5 10 +8 9 +0 7 +5 11 +3 10 +3 7 +2 12 +5 12 +6 12 +3 9 +2 9 +1 2 +9 12 +0 9 +9 16 +6 10 +6 10 +2 4 +2 10 +7 8 +8 15 +4 14 +3 5 +8 10 +7 9 +10 19 +8 16 +7 8 +3 4 +8 13 +3 13 +0 1 +7 16 +7 13 +0 7 +7 11 +3 10 +4 14 +4 7 +1 2 +10 13 +8 14 +5 15 +7 11 +6 14 +9 10 +6 15 +2 12 +4 13 +1 4 +6 11 +1 2 +2 7 +3 4 +3 4 +2 8 +2 10 +8 18 +9 12 +9 13 +8 9 +4 10 +5 6 +6 10 +8 9 +5 15 +3 7 +2 10 +1 5 +6 7 +4 5 +5 8 +10 17 +5 8 +10 19 +5 15 +3 10 +8 18 +0 2 +9 13 +2 11 +1 7 +4 12 +5 7 +4 10 +5 13 +3 4 +7 15 +0 1 diff --git a/geom_bottleneck/tests/data/test_348_B b/geom_bottleneck/tests/data/test_348_B new file mode 100644 index 0000000..5db1829 --- /dev/null +++ b/geom_bottleneck/tests/data/test_348_B @@ -0,0 +1,100 @@ +8 18 +0 10 +5 12 +5 13 +5 6 +7 14 +3 9 +2 7 +0 1 +4 11 +10 11 +10 17 +7 8 +5 6 +1 6 +10 15 +8 9 +8 11 +5 6 +7 9 +4 6 +10 13 +6 14 +1 2 +5 6 +7 15 +1 9 +10 12 +9 10 +4 9 +7 10 +7 9 +8 16 +1 9 +5 10 +10 17 +4 5 +8 10 +5 15 +7 14 +5 10 +1 11 +7 11 +8 16 +1 10 +10 17 +2 6 +7 12 +4 5 +2 6 +0 7 +2 9 +10 11 +10 20 +7 17 +9 17 +2 8 +7 11 +2 4 +2 7 +7 10 +10 16 +6 13 +1 3 +2 10 +9 19 +2 12 +6 12 +4 5 +9 17 +1 6 +0 1 +4 10 +8 12 +0 8 +10 19 +2 11 +3 4 +0 1 +1 9 +9 14 +4 8 +2 10 +0 3 +7 15 +8 12 +7 15 +5 7 +8 11 +5 12 +2 11 +9 14 +10 12 +1 11 +7 9 +10 11 +1 5 +2 8 +6 15 +1 5 diff --git a/geom_bottleneck/tests/data/test_349_A b/geom_bottleneck/tests/data/test_349_A new file mode 100644 index 0000000..a3d008e --- /dev/null +++ b/geom_bottleneck/tests/data/test_349_A @@ -0,0 +1,100 @@ +9 18 +5 7 +10 20 +5 6 +8 12 +5 6 +7 14 +9 17 +9 11 +6 7 +3 4 +1 2 +7 9 +1 8 +3 6 +10 13 +2 9 +9 10 +0 8 +3 12 +2 12 +0 6 +7 16 +8 16 +7 8 +10 12 +6 7 +10 13 +3 9 +2 3 +8 14 +4 8 +7 12 +6 12 +6 16 +1 8 +7 13 +2 10 +9 16 +3 10 +0 8 +10 11 +1 2 +5 12 +10 20 +3 10 +7 14 +2 12 +2 10 +4 7 +6 15 +6 7 +3 13 +5 12 +6 9 +5 6 +10 17 +6 7 +4 5 +10 11 +9 13 +6 14 +4 9 +4 7 +5 9 +6 11 +10 13 +5 15 +3 6 +1 7 +7 12 +6 7 +3 9 +5 9 +0 2 +10 14 +3 4 +6 16 +5 13 +2 7 +9 16 +0 6 +9 11 +0 3 +1 10 +3 6 +10 16 +4 10 +10 11 +9 14 +3 13 +0 3 +8 10 +8 18 +5 13 +5 11 +9 18 +1 3 +8 12 +5 6 diff --git a/geom_bottleneck/tests/data/test_349_B b/geom_bottleneck/tests/data/test_349_B new file mode 100644 index 0000000..d66b5eb --- /dev/null +++ b/geom_bottleneck/tests/data/test_349_B @@ -0,0 +1,100 @@ +8 9 +2 3 +7 8 +4 14 +8 15 +3 8 +5 9 +1 3 +7 9 +0 5 +6 11 +3 12 +9 12 +4 10 +7 8 +10 14 +4 9 +5 6 +3 8 +7 15 +2 9 +3 4 +8 14 +7 11 +5 6 +10 19 +8 13 +2 5 +0 9 +0 8 +8 13 +4 8 +10 17 +10 14 +8 17 +2 6 +9 10 +6 10 +8 9 +0 2 +10 18 +6 9 +10 17 +0 3 +8 13 +9 12 +4 5 +8 14 +9 10 +1 2 +2 10 +8 15 +3 12 +4 9 +5 12 +3 11 +2 6 +3 7 +2 4 +5 10 +10 13 +2 4 +4 5 +1 2 +2 8 +2 3 +5 10 +6 7 +9 18 +8 9 +7 12 +2 4 +7 9 +7 14 +8 10 +10 11 +8 13 +10 15 +6 12 +10 16 +9 12 +9 16 +1 5 +2 9 +6 8 +8 10 +0 1 +1 3 +10 11 +7 16 +5 9 +7 13 +7 15 +6 10 +1 4 +10 15 +2 7 +2 7 +8 9 +3 13 diff --git a/geom_bottleneck/tests/data/test_350_A b/geom_bottleneck/tests/data/test_350_A new file mode 100644 index 0000000..734d037 --- /dev/null +++ b/geom_bottleneck/tests/data/test_350_A @@ -0,0 +1,100 @@ +4 13 +9 10 +7 11 +3 10 +1 9 +3 4 +3 11 +7 13 +9 15 +7 8 +7 14 +0 10 +1 6 +7 10 +3 4 +1 2 +7 12 +7 17 +3 11 +4 9 +7 16 +10 11 +3 13 +3 7 +4 5 +3 7 +6 9 +9 10 +0 8 +9 16 +10 13 +5 13 +3 8 +6 9 +10 11 +9 16 +10 11 +5 15 +9 13 +0 1 +10 17 +1 2 +10 20 +0 2 +9 17 +4 9 +10 16 +3 5 +9 18 +2 6 +4 12 +3 12 +7 9 +2 11 +5 13 +2 5 +0 5 +3 9 +3 7 +2 6 +8 15 +1 9 +3 4 +5 10 +3 4 +9 19 +6 8 +9 10 +3 13 +4 5 +1 4 +10 11 +9 13 +8 10 +10 12 +6 8 +1 6 +9 10 +1 5 +1 2 +8 9 +2 9 +3 4 +1 10 +0 7 +0 1 +1 10 +7 8 +4 11 +9 12 +7 17 +8 9 +4 8 +8 11 +9 16 +4 7 +3 5 +3 6 +5 6 +0 9 diff --git a/geom_bottleneck/tests/data/test_350_B b/geom_bottleneck/tests/data/test_350_B new file mode 100644 index 0000000..3cf03c4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_350_B @@ -0,0 +1,100 @@ +10 11 +7 8 +10 13 +1 2 +0 1 +9 10 +10 18 +9 18 +1 9 +0 10 +10 11 +10 14 +0 2 +8 17 +7 17 +8 13 +0 3 +4 11 +5 7 +9 14 +5 14 +1 4 +5 9 +3 5 +10 18 +3 13 +3 4 +4 7 +3 7 +8 13 +1 11 +0 3 +1 4 +10 20 +4 5 +0 9 +9 13 +6 12 +9 19 +7 16 +2 3 +5 6 +1 9 +0 8 +2 4 +8 15 +0 7 +5 6 +4 8 +2 6 +1 2 +8 10 +2 10 +0 1 +8 13 +10 12 +1 8 +2 8 +2 4 +9 12 +7 8 +6 14 +3 9 +1 6 +7 13 +4 7 +10 17 +7 8 +9 12 +8 10 +6 13 +5 14 +5 13 +10 14 +9 13 +1 2 +2 3 +7 11 +6 13 +10 11 +1 9 +1 3 +7 14 +5 14 +2 3 +3 6 +9 11 +10 15 +0 6 +8 16 +4 11 +1 8 +3 8 +2 5 +6 13 +3 6 +7 8 +10 15 +7 10 +3 4 diff --git a/geom_bottleneck/tests/data/test_351_A b/geom_bottleneck/tests/data/test_351_A new file mode 100644 index 0000000..3989d6c --- /dev/null +++ b/geom_bottleneck/tests/data/test_351_A @@ -0,0 +1,100 @@ +2 11 +9 18 +7 13 +10 12 +5 10 +8 11 +10 11 +0 1 +6 13 +2 12 +5 13 +6 8 +2 3 +4 6 +4 10 +5 12 +7 12 +6 13 +6 13 +7 17 +6 10 +6 14 +8 9 +1 9 +0 10 +7 10 +3 12 +9 14 +2 10 +10 14 +1 7 +1 6 +2 12 +7 13 +3 6 +4 5 +2 9 +7 8 +1 2 +8 12 +6 11 +7 8 +10 13 +3 10 +4 12 +5 8 +9 15 +8 15 +4 11 +6 7 +6 8 +9 18 +2 3 +10 20 +0 5 +10 20 +4 13 +10 12 +7 17 +8 16 +2 10 +9 11 +5 11 +5 15 +2 5 +3 12 +5 8 +6 9 +10 11 +3 8 +5 15 +3 13 +10 15 +8 10 +4 9 +4 6 +8 10 +8 17 +0 1 +1 2 +1 8 +7 14 +0 1 +1 5 +6 7 +1 6 +9 14 +8 12 +0 1 +2 10 +0 8 +4 10 +0 8 +3 4 +7 11 +9 13 +0 5 +3 9 +4 9 +2 4 diff --git a/geom_bottleneck/tests/data/test_351_B b/geom_bottleneck/tests/data/test_351_B new file mode 100644 index 0000000..b1c32d7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_351_B @@ -0,0 +1,100 @@ +9 18 +7 9 +6 14 +2 10 +6 7 +9 13 +3 12 +6 7 +4 7 +6 9 +3 4 +7 17 +0 9 +3 8 +0 3 +3 13 +10 15 +1 5 +1 7 +4 10 +2 9 +9 12 +4 11 +10 16 +2 7 +9 17 +1 8 +9 12 +5 8 +10 13 +2 11 +8 9 +5 6 +0 6 +0 5 +2 3 +9 12 +9 13 +8 10 +4 6 +1 4 +7 9 +4 5 +8 9 +5 7 +4 14 +5 9 +3 11 +4 8 +3 10 +4 13 +6 14 +6 13 +6 16 +9 18 +4 14 +3 4 +6 12 +2 6 +8 16 +9 13 +0 4 +9 18 +7 17 +0 5 +0 2 +7 8 +8 10 +0 1 +10 17 +2 7 +10 14 +7 9 +3 10 +1 11 +2 4 +7 13 +5 8 +2 7 +4 9 +8 14 +1 6 +2 4 +4 5 +6 12 +8 9 +0 4 +4 5 +0 7 +9 12 +8 9 +4 9 +8 9 +9 18 +3 10 +0 3 +10 16 +3 9 +3 7 +3 13 diff --git a/geom_bottleneck/tests/data/test_352_A b/geom_bottleneck/tests/data/test_352_A new file mode 100644 index 0000000..df81454 --- /dev/null +++ b/geom_bottleneck/tests/data/test_352_A @@ -0,0 +1,100 @@ +8 12 +1 7 +7 15 +10 15 +5 8 +1 7 +1 2 +1 7 +6 10 +6 12 +8 16 +0 10 +4 8 +1 2 +6 13 +7 11 +5 11 +5 6 +0 1 +8 17 +0 2 +0 4 +9 16 +9 16 +10 13 +5 12 +3 11 +4 9 +9 12 +9 13 +1 5 +1 2 +2 6 +1 7 +8 17 +7 8 +4 9 +9 13 +1 8 +7 9 +0 10 +7 8 +9 15 +5 11 +0 4 +6 9 +0 10 +10 19 +6 11 +0 10 +7 16 +9 10 +2 5 +6 7 +6 11 +5 14 +9 10 +6 11 +8 12 +7 11 +4 12 +9 11 +1 4 +5 7 +6 8 +3 4 +8 15 +2 5 +8 13 +1 2 +4 5 +5 12 +6 15 +6 10 +1 8 +0 9 +0 2 +9 18 +7 14 +4 8 +5 10 +0 10 +9 10 +0 10 +10 14 +0 1 +7 8 +9 14 +8 11 +8 12 +8 14 +7 16 +4 7 +4 14 +0 4 +2 3 +6 16 +9 16 +6 12 +8 17 diff --git a/geom_bottleneck/tests/data/test_352_B b/geom_bottleneck/tests/data/test_352_B new file mode 100644 index 0000000..9b30bae --- /dev/null +++ b/geom_bottleneck/tests/data/test_352_B @@ -0,0 +1,100 @@ +2 10 +0 1 +10 15 +7 14 +2 3 +0 9 +1 4 +5 6 +1 4 +2 8 +2 4 +0 6 +2 8 +0 1 +10 14 +5 11 +0 6 +10 17 +2 9 +10 16 +7 14 +4 11 +6 7 +3 6 +7 16 +2 8 +0 3 +1 2 +5 7 +10 12 +5 6 +1 3 +5 14 +5 14 +6 13 +8 16 +0 10 +6 12 +9 17 +3 5 +4 10 +3 6 +1 9 +1 9 +8 17 +3 4 +0 1 +1 9 +9 11 +6 7 +0 7 +3 4 +9 15 +9 13 +0 5 +1 10 +6 15 +10 19 +5 14 +1 11 +6 12 +4 13 +4 11 +2 3 +7 11 +2 5 +0 6 +0 2 +10 11 +1 5 +6 7 +2 10 +9 17 +0 5 +8 13 +2 12 +6 7 +1 6 +9 17 +8 14 +0 10 +1 2 +2 3 +2 10 +2 12 +4 6 +8 9 +7 8 +6 10 +7 17 +8 17 +10 19 +4 6 +7 9 +2 12 +2 10 +8 15 +0 4 +1 6 +2 5 diff --git a/geom_bottleneck/tests/data/test_353_A b/geom_bottleneck/tests/data/test_353_A new file mode 100644 index 0000000..3dda9d1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_353_A @@ -0,0 +1,100 @@ +1 11 +3 5 +3 5 +2 3 +9 10 +0 9 +6 9 +0 8 +8 10 +6 12 +1 10 +1 2 +0 8 +8 18 +0 7 +3 4 +2 7 +8 15 +1 5 +1 9 +2 11 +7 11 +3 12 +4 6 +0 2 +8 16 +0 1 +10 18 +4 9 +8 18 +1 8 +5 7 +8 16 +1 2 +4 10 +9 18 +3 5 +5 8 +2 10 +3 8 +8 16 +10 12 +0 1 +0 9 +3 7 +3 4 +3 6 +3 9 +8 10 +2 12 +6 10 +3 13 +2 6 +9 10 +6 10 +9 19 +3 5 +4 6 +8 9 +2 3 +5 6 +3 4 +3 7 +7 17 +8 12 +5 6 +1 2 +0 1 +6 10 +7 9 +5 15 +7 14 +2 9 +1 5 +4 5 +0 9 +1 9 +7 8 +1 7 +2 3 +10 16 +5 6 +5 10 +0 9 +1 11 +7 10 +7 17 +10 19 +1 2 +9 19 +10 14 +7 11 +9 14 +8 17 +1 2 +7 16 +2 9 +9 16 +3 4 +0 1 diff --git a/geom_bottleneck/tests/data/test_353_B b/geom_bottleneck/tests/data/test_353_B new file mode 100644 index 0000000..16ed654 --- /dev/null +++ b/geom_bottleneck/tests/data/test_353_B @@ -0,0 +1,100 @@ +1 9 +1 9 +9 14 +7 9 +9 18 +6 13 +1 2 +5 15 +7 8 +8 15 +5 11 +9 13 +1 8 +4 6 +10 11 +6 7 +4 10 +0 4 +3 7 +0 1 +10 11 +7 13 +0 2 +4 5 +10 18 +8 13 +4 11 +8 18 +8 15 +1 10 +6 13 +5 8 +10 15 +7 14 +2 3 +10 19 +5 8 +2 3 +7 14 +1 7 +1 9 +6 12 +2 8 +3 11 +5 13 +2 3 +10 16 +10 15 +2 10 +10 18 +3 6 +0 6 +1 4 +6 11 +1 3 +8 9 +8 16 +0 2 +8 12 +9 10 +1 4 +0 3 +0 2 +5 14 +3 11 +7 12 +7 17 +5 6 +10 16 +3 4 +0 6 +0 3 +0 1 +3 13 +6 7 +4 9 +7 9 +0 1 +10 13 +8 12 +0 6 +2 8 +10 13 +2 3 +7 13 +9 19 +4 7 +10 16 +1 5 +2 11 +3 13 +8 13 +3 9 +3 9 +3 13 +7 15 +0 2 +2 6 +7 14 +1 4 diff --git a/geom_bottleneck/tests/data/test_354_A b/geom_bottleneck/tests/data/test_354_A new file mode 100644 index 0000000..c701ef2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_354_A @@ -0,0 +1,100 @@ +6 16 +5 15 +0 2 +8 18 +10 15 +0 2 +3 5 +6 14 +1 9 +3 12 +6 8 +2 3 +2 11 +8 14 +10 15 +3 5 +10 12 +1 4 +3 4 +8 15 +10 15 +6 15 +10 16 +10 17 +3 11 +10 17 +2 3 +2 10 +5 9 +5 9 +8 16 +0 7 +7 15 +1 3 +0 1 +10 17 +10 12 +0 8 +4 11 +1 8 +5 8 +0 10 +2 4 +1 2 +7 11 +7 14 +4 5 +7 16 +3 7 +5 7 +8 9 +8 12 +2 3 +6 16 +6 16 +5 7 +5 14 +0 10 +9 16 +9 11 +6 16 +5 14 +5 11 +8 9 +4 10 +5 6 +1 2 +6 15 +1 5 +9 10 +8 9 +0 8 +4 5 +10 19 +7 11 +8 18 +3 4 +7 8 +2 9 +6 11 +1 2 +7 16 +0 2 +1 10 +10 11 +4 5 +9 12 +8 13 +1 11 +4 8 +0 1 +9 15 +0 7 +2 4 +1 6 +1 10 +8 15 +8 18 +8 10 +9 17 diff --git a/geom_bottleneck/tests/data/test_354_B b/geom_bottleneck/tests/data/test_354_B new file mode 100644 index 0000000..0a21b24 --- /dev/null +++ b/geom_bottleneck/tests/data/test_354_B @@ -0,0 +1,100 @@ +7 8 +3 12 +9 19 +5 13 +8 9 +4 14 +10 12 +1 4 +1 5 +8 16 +5 10 +7 10 +5 9 +4 7 +6 9 +6 7 +0 1 +7 8 +1 7 +9 19 +7 8 +3 13 +10 18 +8 13 +3 13 +6 15 +2 3 +3 13 +1 8 +9 18 +4 9 +9 10 +10 18 +6 9 +8 17 +1 5 +3 8 +1 11 +7 12 +0 1 +4 5 +7 16 +6 11 +3 5 +5 14 +6 11 +3 10 +7 8 +8 11 +7 13 +10 17 +1 9 +7 14 +1 10 +3 12 +7 15 +1 4 +7 10 +0 5 +3 9 +5 12 +7 16 +5 6 +0 10 +0 1 +3 5 +0 7 +1 6 +4 5 +3 8 +1 8 +2 3 +10 20 +4 10 +7 11 +0 4 +4 6 +5 8 +10 17 +9 10 +0 3 +0 3 +5 9 +9 19 +8 14 +9 14 +4 11 +10 17 +7 9 +6 7 +10 19 +9 10 +3 8 +2 11 +4 14 +9 16 +2 8 +2 5 +5 11 +10 18 diff --git a/geom_bottleneck/tests/data/test_355_A b/geom_bottleneck/tests/data/test_355_A new file mode 100644 index 0000000..48d49bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_355_A @@ -0,0 +1,100 @@ +6 9 +0 2 +2 6 +4 6 +5 7 +8 14 +10 15 +8 9 +6 14 +9 15 +6 12 +1 9 +4 7 +1 4 +3 8 +0 2 +6 16 +6 7 +5 7 +9 11 +10 20 +3 11 +9 13 +2 5 +0 3 +7 14 +7 8 +10 18 +5 7 +4 11 +0 10 +7 16 +1 8 +7 15 +3 4 +3 5 +8 13 +9 12 +5 10 +9 13 +5 11 +8 16 +3 4 +4 11 +9 18 +1 3 +10 14 +5 6 +5 10 +8 11 +8 10 +7 14 +3 6 +9 17 +0 3 +0 2 +2 11 +4 8 +0 6 +7 14 +10 11 +5 7 +9 18 +2 8 +4 5 +1 11 +0 9 +9 10 +3 12 +10 19 +3 7 +7 14 +1 3 +8 9 +9 13 +0 8 +5 11 +6 13 +5 10 +10 15 +8 15 +6 12 +2 6 +2 4 +4 9 +3 6 +9 10 +5 10 +10 15 +9 17 +5 10 +6 11 +2 8 +4 5 +5 15 +2 3 +7 14 +4 10 +4 11 +8 10 diff --git a/geom_bottleneck/tests/data/test_355_B b/geom_bottleneck/tests/data/test_355_B new file mode 100644 index 0000000..cd9cec5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_355_B @@ -0,0 +1,100 @@ +4 11 +9 14 +8 12 +3 5 +5 11 +7 15 +7 15 +1 10 +1 6 +4 13 +7 8 +5 7 +1 2 +3 13 +2 5 +4 10 +6 7 +10 11 +2 6 +1 10 +4 5 +10 18 +5 9 +0 3 +8 9 +5 13 +4 5 +1 2 +4 9 +1 11 +5 15 +9 11 +2 3 +0 1 +4 11 +6 10 +8 10 +2 8 +3 5 +4 8 +10 20 +0 5 +3 13 +2 8 +0 10 +2 7 +10 11 +0 2 +8 12 +1 10 +3 9 +2 8 +6 7 +10 17 +4 5 +2 7 +5 8 +10 20 +5 13 +10 19 +4 13 +1 9 +6 12 +3 4 +4 5 +8 18 +7 14 +1 10 +7 14 +5 9 +1 6 +6 14 +7 8 +5 12 +4 14 +1 7 +2 8 +6 11 +7 13 +3 10 +3 4 +3 11 +9 10 +1 11 +9 10 +2 8 +10 19 +3 6 +10 13 +4 5 +7 16 +2 7 +4 7 +9 15 +9 17 +4 8 +5 8 +4 8 +0 1 +10 17 diff --git a/geom_bottleneck/tests/data/test_356_A b/geom_bottleneck/tests/data/test_356_A new file mode 100644 index 0000000..cb92f38 --- /dev/null +++ b/geom_bottleneck/tests/data/test_356_A @@ -0,0 +1,100 @@ +7 12 +5 6 +6 13 +1 6 +9 10 +10 11 +2 9 +4 14 +4 11 +5 14 +4 13 +6 12 +7 13 +8 9 +5 11 +6 14 +9 13 +0 3 +7 11 +3 13 +2 5 +0 6 +1 8 +3 9 +8 17 +1 7 +10 19 +0 4 +8 18 +0 7 +1 3 +1 10 +0 6 +1 5 +3 11 +0 3 +7 13 +10 11 +2 4 +2 5 +4 11 +4 14 +0 6 +2 11 +6 11 +3 4 +2 6 +6 16 +6 8 +9 13 +8 12 +7 16 +9 16 +4 8 +1 8 +9 19 +7 13 +9 19 +5 6 +3 10 +2 10 +2 10 +9 11 +9 18 +7 13 +7 11 +5 8 +8 13 +8 10 +7 13 +7 17 +6 15 +5 8 +5 9 +5 9 +7 10 +4 10 +9 13 +6 16 +4 12 +5 6 +9 17 +1 2 +2 7 +5 11 +2 12 +10 16 +1 10 +10 19 +5 9 +10 19 +5 10 +10 13 +10 13 +6 7 +10 19 +2 10 +4 6 +3 5 +1 11 diff --git a/geom_bottleneck/tests/data/test_356_B b/geom_bottleneck/tests/data/test_356_B new file mode 100644 index 0000000..365ed3f --- /dev/null +++ b/geom_bottleneck/tests/data/test_356_B @@ -0,0 +1,100 @@ +6 11 +8 12 +7 8 +3 4 +9 12 +8 15 +4 5 +8 18 +2 3 +0 2 +8 11 +1 2 +2 8 +9 13 +6 10 +10 20 +0 3 +7 12 +7 11 +10 20 +6 10 +8 14 +5 6 +5 10 +8 12 +6 16 +1 11 +3 9 +7 17 +8 17 +5 11 +6 16 +5 9 +9 19 +7 11 +0 8 +8 17 +6 13 +0 5 +10 19 +3 8 +0 8 +0 9 +9 16 +8 12 +3 4 +2 3 +1 2 +6 11 +3 4 +2 4 +3 11 +4 11 +8 15 +7 9 +8 10 +4 14 +9 12 +9 16 +1 2 +7 13 +5 11 +1 8 +9 12 +0 5 +10 13 +9 11 +5 14 +0 9 +10 20 +7 8 +4 10 +0 3 +3 12 +8 17 +1 9 +5 9 +2 3 +1 8 +6 7 +3 4 +1 8 +7 10 +1 10 +0 1 +4 6 +8 11 +9 13 +5 6 +10 14 +10 16 +1 6 +5 9 +10 20 +7 13 +3 11 +0 3 +0 7 +6 12 +1 9 diff --git a/geom_bottleneck/tests/data/test_357_A b/geom_bottleneck/tests/data/test_357_A new file mode 100644 index 0000000..de1e8eb --- /dev/null +++ b/geom_bottleneck/tests/data/test_357_A @@ -0,0 +1,100 @@ +6 11 +4 11 +5 10 +8 9 +4 12 +10 17 +0 1 +9 15 +3 7 +6 13 +7 8 +3 4 +4 12 +8 9 +2 4 +10 20 +3 4 +6 16 +6 16 +4 12 +5 6 +9 12 +1 8 +6 14 +8 13 +2 10 +4 14 +3 5 +7 12 +2 7 +3 6 +1 2 +4 5 +7 13 +3 8 +6 9 +4 9 +6 7 +1 6 +8 10 +10 15 +3 6 +10 19 +8 14 +8 9 +4 7 +7 11 +4 11 +2 5 +0 7 +10 13 +4 6 +5 6 +7 16 +2 10 +8 18 +4 5 +9 10 +8 9 +8 14 +0 1 +5 15 +2 9 +6 7 +8 10 +10 14 +8 11 +5 8 +1 5 +9 15 +3 10 +5 10 +1 5 +4 6 +3 11 +6 7 +9 12 +5 11 +1 6 +6 14 +0 5 +3 12 +2 10 +7 12 +7 15 +1 11 +8 12 +3 7 +10 14 +8 9 +8 9 +9 10 +2 12 +3 4 +1 10 +9 15 +1 7 +10 14 +1 3 +10 14 diff --git a/geom_bottleneck/tests/data/test_357_B b/geom_bottleneck/tests/data/test_357_B new file mode 100644 index 0000000..1c68b90 --- /dev/null +++ b/geom_bottleneck/tests/data/test_357_B @@ -0,0 +1,100 @@ +8 10 +0 5 +6 15 +7 17 +6 14 +3 4 +3 5 +0 9 +1 5 +1 2 +2 3 +6 7 +9 10 +3 13 +9 13 +8 11 +5 7 +2 11 +7 9 +10 11 +9 11 +10 12 +4 10 +8 9 +4 12 +8 11 +5 14 +0 1 +8 9 +9 13 +6 14 +7 10 +10 17 +2 10 +9 17 +8 16 +1 3 +9 19 +0 1 +7 15 +2 8 +1 2 +0 1 +2 3 +7 8 +6 11 +10 20 +3 12 +6 11 +7 9 +5 8 +5 14 +3 12 +8 17 +10 15 +9 14 +8 9 +7 13 +9 12 +1 7 +5 11 +5 11 +6 8 +8 9 +5 6 +3 10 +3 4 +1 3 +3 10 +7 8 +1 9 +3 13 +3 10 +7 14 +4 14 +1 10 +0 10 +9 10 +10 15 +1 2 +8 10 +3 4 +2 4 +2 3 +7 13 +3 6 +8 14 +5 6 +3 11 +8 14 +0 5 +3 10 +7 11 +3 11 +10 19 +8 9 +0 1 +10 20 +7 8 +0 8 diff --git a/geom_bottleneck/tests/data/test_358_A b/geom_bottleneck/tests/data/test_358_A new file mode 100644 index 0000000..2297dae --- /dev/null +++ b/geom_bottleneck/tests/data/test_358_A @@ -0,0 +1,100 @@ +7 12 +6 15 +1 4 +1 5 +7 9 +7 16 +0 2 +2 3 +6 12 +1 9 +9 12 +6 8 +8 9 +2 3 +6 11 +4 6 +7 11 +7 10 +8 9 +5 8 +6 8 +0 6 +9 18 +0 1 +7 14 +7 9 +7 14 +10 15 +3 10 +7 16 +8 15 +6 12 +7 9 +6 11 +3 8 +3 4 +4 6 +5 11 +10 16 +7 9 +2 8 +1 6 +8 9 +7 8 +7 14 +9 19 +4 9 +0 1 +3 4 +5 11 +2 12 +3 9 +9 16 +3 5 +0 8 +7 13 +7 17 +0 1 +4 12 +7 15 +8 11 +8 18 +4 8 +8 12 +8 18 +4 12 +4 10 +6 12 +9 14 +6 12 +9 11 +6 7 +0 5 +1 6 +8 17 +5 9 +5 14 +5 10 +9 19 +6 11 +3 4 +4 14 +1 11 +1 4 +10 19 +6 13 +3 4 +2 3 +2 7 +1 11 +5 11 +6 14 +1 6 +8 9 +7 8 +1 9 +2 8 +3 10 +10 17 +4 5 diff --git a/geom_bottleneck/tests/data/test_358_B b/geom_bottleneck/tests/data/test_358_B new file mode 100644 index 0000000..e2d7d03 --- /dev/null +++ b/geom_bottleneck/tests/data/test_358_B @@ -0,0 +1,100 @@ +6 7 +6 12 +10 13 +3 6 +9 10 +8 11 +3 13 +3 4 +10 16 +8 9 +3 5 +1 8 +4 5 +8 13 +9 18 +3 11 +3 13 +8 12 +7 11 +0 2 +4 7 +8 13 +7 16 +0 10 +1 9 +8 18 +1 9 +3 12 +1 10 +0 9 +9 16 +8 14 +0 7 +9 10 +0 3 +3 4 +6 8 +8 17 +9 16 +5 7 +0 2 +6 7 +1 6 +6 13 +4 5 +8 12 +9 14 +6 16 +9 14 +10 20 +4 14 +0 3 +9 18 +1 11 +6 13 +3 10 +9 13 +9 17 +6 16 +5 8 +3 4 +2 8 +9 15 +6 10 +8 18 +4 5 +3 5 +2 8 +3 11 +9 10 +3 11 +4 11 +9 12 +1 11 +0 10 +0 9 +8 12 +0 3 +9 14 +8 12 +6 14 +10 16 +3 8 +5 11 +1 6 +10 17 +0 2 +9 17 +8 10 +10 11 +9 13 +0 10 +5 11 +9 10 +4 5 +5 7 +4 14 +0 6 +0 1 +5 15 diff --git a/geom_bottleneck/tests/data/test_359_A b/geom_bottleneck/tests/data/test_359_A new file mode 100644 index 0000000..6e990e4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_359_A @@ -0,0 +1,100 @@ +7 8 +8 11 +7 8 +5 6 +4 5 +4 5 +7 8 +3 8 +2 8 +8 10 +2 3 +6 7 +0 5 +2 4 +8 17 +7 15 +8 9 +6 7 +10 11 +7 14 +9 10 +0 8 +3 7 +3 13 +3 12 +4 10 +9 17 +9 19 +5 14 +2 8 +9 19 +4 11 +2 12 +0 2 +4 12 +5 13 +1 3 +6 15 +2 12 +3 4 +0 10 +1 2 +9 19 +5 14 +3 7 +0 7 +10 12 +1 11 +1 8 +0 1 +5 11 +3 4 +1 4 +2 6 +8 12 +9 13 +10 13 +0 7 +9 18 +5 6 +2 4 +10 14 +7 8 +5 15 +9 10 +5 13 +0 9 +4 6 +2 3 +2 11 +9 15 +4 11 +1 7 +4 9 +6 14 +8 15 +3 11 +3 6 +8 13 +6 12 +7 9 +10 20 +9 19 +6 7 +2 12 +0 10 +10 13 +10 13 +5 15 +4 14 +9 15 +0 7 +7 13 +9 10 +5 10 +8 10 +8 17 +8 17 +0 9 +0 1 diff --git a/geom_bottleneck/tests/data/test_359_B b/geom_bottleneck/tests/data/test_359_B new file mode 100644 index 0000000..97c1bfe --- /dev/null +++ b/geom_bottleneck/tests/data/test_359_B @@ -0,0 +1,100 @@ +9 12 +2 11 +9 10 +10 12 +2 7 +4 7 +0 1 +9 11 +10 15 +4 12 +9 15 +9 18 +10 20 +7 8 +6 8 +10 20 +9 10 +8 18 +7 17 +3 4 +5 6 +1 8 +3 4 +9 18 +9 13 +5 15 +9 10 +5 11 +5 11 +9 11 +2 5 +9 16 +7 8 +0 4 +3 11 +1 7 +0 10 +5 12 +5 15 +2 3 +10 19 +9 12 +1 3 +5 11 +3 8 +9 15 +2 12 +9 16 +7 9 +1 2 +1 8 +4 13 +4 8 +0 1 +2 6 +1 6 +8 10 +6 12 +8 16 +8 17 +4 12 +9 12 +0 8 +3 10 +6 13 +4 5 +1 9 +5 9 +0 6 +6 7 +1 10 +7 17 +4 7 +5 15 +2 4 +9 14 +7 17 +5 13 +9 11 +0 7 +1 9 +3 8 +5 14 +1 7 +3 11 +1 10 +8 12 +10 11 +0 7 +7 14 +6 14 +0 10 +3 5 +10 18 +3 10 +6 7 +1 3 +1 3 +8 16 +7 16 diff --git a/geom_bottleneck/tests/data/test_360_A b/geom_bottleneck/tests/data/test_360_A new file mode 100644 index 0000000..d271aaa --- /dev/null +++ b/geom_bottleneck/tests/data/test_360_A @@ -0,0 +1,2 @@ +84 85 +52 129 diff --git a/geom_bottleneck/tests/data/test_360_B b/geom_bottleneck/tests/data/test_360_B new file mode 100644 index 0000000..2408922 --- /dev/null +++ b/geom_bottleneck/tests/data/test_360_B @@ -0,0 +1,2 @@ +74 97 +83 94 diff --git a/geom_bottleneck/tests/data/test_361_A b/geom_bottleneck/tests/data/test_361_A new file mode 100644 index 0000000..b4eea74 --- /dev/null +++ b/geom_bottleneck/tests/data/test_361_A @@ -0,0 +1,2 @@ +97 159 +60 73 diff --git a/geom_bottleneck/tests/data/test_361_B b/geom_bottleneck/tests/data/test_361_B new file mode 100644 index 0000000..3680b00 --- /dev/null +++ b/geom_bottleneck/tests/data/test_361_B @@ -0,0 +1,2 @@ +47 60 +95 167 diff --git a/geom_bottleneck/tests/data/test_362_A b/geom_bottleneck/tests/data/test_362_A new file mode 100644 index 0000000..1c4803d --- /dev/null +++ b/geom_bottleneck/tests/data/test_362_A @@ -0,0 +1,2 @@ +85 121 +2 61 diff --git a/geom_bottleneck/tests/data/test_362_B b/geom_bottleneck/tests/data/test_362_B new file mode 100644 index 0000000..37fc7aa --- /dev/null +++ b/geom_bottleneck/tests/data/test_362_B @@ -0,0 +1,2 @@ +41 67 +80 101 diff --git a/geom_bottleneck/tests/data/test_363_A b/geom_bottleneck/tests/data/test_363_A new file mode 100644 index 0000000..909ac51 --- /dev/null +++ b/geom_bottleneck/tests/data/test_363_A @@ -0,0 +1,2 @@ +77 159 +60 118 diff --git a/geom_bottleneck/tests/data/test_363_B b/geom_bottleneck/tests/data/test_363_B new file mode 100644 index 0000000..4c76429 --- /dev/null +++ b/geom_bottleneck/tests/data/test_363_B @@ -0,0 +1,2 @@ +52 73 +71 103 diff --git a/geom_bottleneck/tests/data/test_364_A b/geom_bottleneck/tests/data/test_364_A new file mode 100644 index 0000000..a6e34b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_364_A @@ -0,0 +1,2 @@ +20 21 +70 88 diff --git a/geom_bottleneck/tests/data/test_364_B b/geom_bottleneck/tests/data/test_364_B new file mode 100644 index 0000000..ba5c4bf --- /dev/null +++ b/geom_bottleneck/tests/data/test_364_B @@ -0,0 +1,2 @@ +65 72 +81 164 diff --git a/geom_bottleneck/tests/data/test_365_A b/geom_bottleneck/tests/data/test_365_A new file mode 100644 index 0000000..6c9d44c --- /dev/null +++ b/geom_bottleneck/tests/data/test_365_A @@ -0,0 +1,2 @@ +9 64 +48 115 diff --git a/geom_bottleneck/tests/data/test_365_B b/geom_bottleneck/tests/data/test_365_B new file mode 100644 index 0000000..f9e51a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_365_B @@ -0,0 +1,2 @@ +87 125 +74 132 diff --git a/geom_bottleneck/tests/data/test_366_A b/geom_bottleneck/tests/data/test_366_A new file mode 100644 index 0000000..fbf146c --- /dev/null +++ b/geom_bottleneck/tests/data/test_366_A @@ -0,0 +1,2 @@ +97 162 +27 43 diff --git a/geom_bottleneck/tests/data/test_366_B b/geom_bottleneck/tests/data/test_366_B new file mode 100644 index 0000000..7385b5f --- /dev/null +++ b/geom_bottleneck/tests/data/test_366_B @@ -0,0 +1,2 @@ +51 149 +65 126 diff --git a/geom_bottleneck/tests/data/test_367_A b/geom_bottleneck/tests/data/test_367_A new file mode 100644 index 0000000..48190bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_367_A @@ -0,0 +1,2 @@ +36 104 +19 85 diff --git a/geom_bottleneck/tests/data/test_367_B b/geom_bottleneck/tests/data/test_367_B new file mode 100644 index 0000000..7e26c08 --- /dev/null +++ b/geom_bottleneck/tests/data/test_367_B @@ -0,0 +1,2 @@ +96 171 +17 21 diff --git a/geom_bottleneck/tests/data/test_368_A b/geom_bottleneck/tests/data/test_368_A new file mode 100644 index 0000000..4b4767d --- /dev/null +++ b/geom_bottleneck/tests/data/test_368_A @@ -0,0 +1,2 @@ +72 156 +84 129 diff --git a/geom_bottleneck/tests/data/test_368_B b/geom_bottleneck/tests/data/test_368_B new file mode 100644 index 0000000..3c72417 --- /dev/null +++ b/geom_bottleneck/tests/data/test_368_B @@ -0,0 +1,2 @@ +32 71 +88 129 diff --git a/geom_bottleneck/tests/data/test_369_A b/geom_bottleneck/tests/data/test_369_A new file mode 100644 index 0000000..d8a01b6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_369_A @@ -0,0 +1,2 @@ +56 128 +69 161 diff --git a/geom_bottleneck/tests/data/test_369_B b/geom_bottleneck/tests/data/test_369_B new file mode 100644 index 0000000..9f7da60 --- /dev/null +++ b/geom_bottleneck/tests/data/test_369_B @@ -0,0 +1,2 @@ +3 84 +92 119 diff --git a/geom_bottleneck/tests/data/test_370_A b/geom_bottleneck/tests/data/test_370_A new file mode 100644 index 0000000..bdc8979 --- /dev/null +++ b/geom_bottleneck/tests/data/test_370_A @@ -0,0 +1,2 @@ +49 140 +100 135 diff --git a/geom_bottleneck/tests/data/test_370_B b/geom_bottleneck/tests/data/test_370_B new file mode 100644 index 0000000..e145eb4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_370_B @@ -0,0 +1,2 @@ +28 51 +55 70 diff --git a/geom_bottleneck/tests/data/test_371_A b/geom_bottleneck/tests/data/test_371_A new file mode 100644 index 0000000..208a164 --- /dev/null +++ b/geom_bottleneck/tests/data/test_371_A @@ -0,0 +1,2 @@ +93 154 +54 138 diff --git a/geom_bottleneck/tests/data/test_371_B b/geom_bottleneck/tests/data/test_371_B new file mode 100644 index 0000000..7a2fc8a --- /dev/null +++ b/geom_bottleneck/tests/data/test_371_B @@ -0,0 +1,2 @@ +31 81 +88 143 diff --git a/geom_bottleneck/tests/data/test_372_A b/geom_bottleneck/tests/data/test_372_A new file mode 100644 index 0000000..dd3597a --- /dev/null +++ b/geom_bottleneck/tests/data/test_372_A @@ -0,0 +1,2 @@ +3 92 +88 127 diff --git a/geom_bottleneck/tests/data/test_372_B b/geom_bottleneck/tests/data/test_372_B new file mode 100644 index 0000000..225c36e --- /dev/null +++ b/geom_bottleneck/tests/data/test_372_B @@ -0,0 +1,2 @@ +6 95 +54 74 diff --git a/geom_bottleneck/tests/data/test_373_A b/geom_bottleneck/tests/data/test_373_A new file mode 100644 index 0000000..0a84fd2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_373_A @@ -0,0 +1,2 @@ +80 109 +36 96 diff --git a/geom_bottleneck/tests/data/test_373_B b/geom_bottleneck/tests/data/test_373_B new file mode 100644 index 0000000..b790337 --- /dev/null +++ b/geom_bottleneck/tests/data/test_373_B @@ -0,0 +1,2 @@ +64 106 +12 78 diff --git a/geom_bottleneck/tests/data/test_374_A b/geom_bottleneck/tests/data/test_374_A new file mode 100644 index 0000000..0df06a4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_374_A @@ -0,0 +1,2 @@ +91 158 +15 61 diff --git a/geom_bottleneck/tests/data/test_374_B b/geom_bottleneck/tests/data/test_374_B new file mode 100644 index 0000000..7bd1bdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_374_B @@ -0,0 +1,2 @@ +85 155 +5 64 diff --git a/geom_bottleneck/tests/data/test_375_A b/geom_bottleneck/tests/data/test_375_A new file mode 100644 index 0000000..77cd274 --- /dev/null +++ b/geom_bottleneck/tests/data/test_375_A @@ -0,0 +1,2 @@ +77 154 +15 27 diff --git a/geom_bottleneck/tests/data/test_375_B b/geom_bottleneck/tests/data/test_375_B new file mode 100644 index 0000000..db3c6ee --- /dev/null +++ b/geom_bottleneck/tests/data/test_375_B @@ -0,0 +1,2 @@ +81 144 +44 79 diff --git a/geom_bottleneck/tests/data/test_376_A b/geom_bottleneck/tests/data/test_376_A new file mode 100644 index 0000000..aca7402 --- /dev/null +++ b/geom_bottleneck/tests/data/test_376_A @@ -0,0 +1,2 @@ +20 47 +61 129 diff --git a/geom_bottleneck/tests/data/test_376_B b/geom_bottleneck/tests/data/test_376_B new file mode 100644 index 0000000..5bbae78 --- /dev/null +++ b/geom_bottleneck/tests/data/test_376_B @@ -0,0 +1,2 @@ +41 98 +76 137 diff --git a/geom_bottleneck/tests/data/test_377_A b/geom_bottleneck/tests/data/test_377_A new file mode 100644 index 0000000..707adfd --- /dev/null +++ b/geom_bottleneck/tests/data/test_377_A @@ -0,0 +1,2 @@ +91 123 +17 50 diff --git a/geom_bottleneck/tests/data/test_377_B b/geom_bottleneck/tests/data/test_377_B new file mode 100644 index 0000000..afbe113 --- /dev/null +++ b/geom_bottleneck/tests/data/test_377_B @@ -0,0 +1,2 @@ +45 116 +18 98 diff --git a/geom_bottleneck/tests/data/test_378_A b/geom_bottleneck/tests/data/test_378_A new file mode 100644 index 0000000..7ac23e9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_378_A @@ -0,0 +1,2 @@ +98 183 +5 58 diff --git a/geom_bottleneck/tests/data/test_378_B b/geom_bottleneck/tests/data/test_378_B new file mode 100644 index 0000000..328b726 --- /dev/null +++ b/geom_bottleneck/tests/data/test_378_B @@ -0,0 +1,2 @@ +58 154 +82 148 diff --git a/geom_bottleneck/tests/data/test_379_A b/geom_bottleneck/tests/data/test_379_A new file mode 100644 index 0000000..0f57258 --- /dev/null +++ b/geom_bottleneck/tests/data/test_379_A @@ -0,0 +1,2 @@ +73 133 +38 52 diff --git a/geom_bottleneck/tests/data/test_379_B b/geom_bottleneck/tests/data/test_379_B new file mode 100644 index 0000000..45e35ba --- /dev/null +++ b/geom_bottleneck/tests/data/test_379_B @@ -0,0 +1,2 @@ +46 95 +50 110 diff --git a/geom_bottleneck/tests/data/test_380_A b/geom_bottleneck/tests/data/test_380_A new file mode 100644 index 0000000..a6d1d31 --- /dev/null +++ b/geom_bottleneck/tests/data/test_380_A @@ -0,0 +1,3 @@ +42 50 +67 107 +6 85 diff --git a/geom_bottleneck/tests/data/test_380_B b/geom_bottleneck/tests/data/test_380_B new file mode 100644 index 0000000..023f533 --- /dev/null +++ b/geom_bottleneck/tests/data/test_380_B @@ -0,0 +1,3 @@ +31 126 +78 132 +15 92 diff --git a/geom_bottleneck/tests/data/test_381_A b/geom_bottleneck/tests/data/test_381_A new file mode 100644 index 0000000..0b5985d --- /dev/null +++ b/geom_bottleneck/tests/data/test_381_A @@ -0,0 +1,3 @@ +7 43 +49 69 +94 119 diff --git a/geom_bottleneck/tests/data/test_381_B b/geom_bottleneck/tests/data/test_381_B new file mode 100644 index 0000000..1f5ffef --- /dev/null +++ b/geom_bottleneck/tests/data/test_381_B @@ -0,0 +1,3 @@ +98 101 +89 113 +80 157 diff --git a/geom_bottleneck/tests/data/test_382_A b/geom_bottleneck/tests/data/test_382_A new file mode 100644 index 0000000..e155629 --- /dev/null +++ b/geom_bottleneck/tests/data/test_382_A @@ -0,0 +1,3 @@ +60 119 +40 77 +52 101 diff --git a/geom_bottleneck/tests/data/test_382_B b/geom_bottleneck/tests/data/test_382_B new file mode 100644 index 0000000..5273c5f --- /dev/null +++ b/geom_bottleneck/tests/data/test_382_B @@ -0,0 +1,3 @@ +9 47 +74 170 +88 93 diff --git a/geom_bottleneck/tests/data/test_383_A b/geom_bottleneck/tests/data/test_383_A new file mode 100644 index 0000000..7579cf6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_383_A @@ -0,0 +1,3 @@ +45 55 +12 57 +38 111 diff --git a/geom_bottleneck/tests/data/test_383_B b/geom_bottleneck/tests/data/test_383_B new file mode 100644 index 0000000..050e76d --- /dev/null +++ b/geom_bottleneck/tests/data/test_383_B @@ -0,0 +1,3 @@ +61 126 +14 94 +58 81 diff --git a/geom_bottleneck/tests/data/test_384_A b/geom_bottleneck/tests/data/test_384_A new file mode 100644 index 0000000..5ba83b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_384_A @@ -0,0 +1,3 @@ +21 105 +7 55 +95 108 diff --git a/geom_bottleneck/tests/data/test_384_B b/geom_bottleneck/tests/data/test_384_B new file mode 100644 index 0000000..f1a0074 --- /dev/null +++ b/geom_bottleneck/tests/data/test_384_B @@ -0,0 +1,3 @@ +73 93 +20 52 +99 187 diff --git a/geom_bottleneck/tests/data/test_385_A b/geom_bottleneck/tests/data/test_385_A new file mode 100644 index 0000000..195db5d --- /dev/null +++ b/geom_bottleneck/tests/data/test_385_A @@ -0,0 +1,3 @@ +28 66 +4 72 +57 155 diff --git a/geom_bottleneck/tests/data/test_385_B b/geom_bottleneck/tests/data/test_385_B new file mode 100644 index 0000000..9234688 --- /dev/null +++ b/geom_bottleneck/tests/data/test_385_B @@ -0,0 +1,3 @@ +75 175 +55 79 +89 178 diff --git a/geom_bottleneck/tests/data/test_386_A b/geom_bottleneck/tests/data/test_386_A new file mode 100644 index 0000000..7a9281c --- /dev/null +++ b/geom_bottleneck/tests/data/test_386_A @@ -0,0 +1,3 @@ +65 87 +11 33 +17 45 diff --git a/geom_bottleneck/tests/data/test_386_B b/geom_bottleneck/tests/data/test_386_B new file mode 100644 index 0000000..86a3caf --- /dev/null +++ b/geom_bottleneck/tests/data/test_386_B @@ -0,0 +1,3 @@ +83 93 +13 46 +67 68 diff --git a/geom_bottleneck/tests/data/test_387_A b/geom_bottleneck/tests/data/test_387_A new file mode 100644 index 0000000..ff92400 --- /dev/null +++ b/geom_bottleneck/tests/data/test_387_A @@ -0,0 +1,3 @@ +33 68 +20 115 +21 25 diff --git a/geom_bottleneck/tests/data/test_387_B b/geom_bottleneck/tests/data/test_387_B new file mode 100644 index 0000000..c2e44a4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_387_B @@ -0,0 +1,3 @@ +44 45 +24 66 +6 45 diff --git a/geom_bottleneck/tests/data/test_388_A b/geom_bottleneck/tests/data/test_388_A new file mode 100644 index 0000000..62b75be --- /dev/null +++ b/geom_bottleneck/tests/data/test_388_A @@ -0,0 +1,3 @@ +89 163 +54 98 +45 86 diff --git a/geom_bottleneck/tests/data/test_388_B b/geom_bottleneck/tests/data/test_388_B new file mode 100644 index 0000000..025fdc6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_388_B @@ -0,0 +1,3 @@ +83 139 +91 174 +74 93 diff --git a/geom_bottleneck/tests/data/test_389_A b/geom_bottleneck/tests/data/test_389_A new file mode 100644 index 0000000..5fa0b26 --- /dev/null +++ b/geom_bottleneck/tests/data/test_389_A @@ -0,0 +1,3 @@ +93 165 +72 168 +84 113 diff --git a/geom_bottleneck/tests/data/test_389_B b/geom_bottleneck/tests/data/test_389_B new file mode 100644 index 0000000..7ebd7f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_389_B @@ -0,0 +1,3 @@ +88 140 +82 133 +69 110 diff --git a/geom_bottleneck/tests/data/test_390_A b/geom_bottleneck/tests/data/test_390_A new file mode 100644 index 0000000..9f2c33d --- /dev/null +++ b/geom_bottleneck/tests/data/test_390_A @@ -0,0 +1,3 @@ +90 139 +28 95 +66 131 diff --git a/geom_bottleneck/tests/data/test_390_B b/geom_bottleneck/tests/data/test_390_B new file mode 100644 index 0000000..833af00 --- /dev/null +++ b/geom_bottleneck/tests/data/test_390_B @@ -0,0 +1,3 @@ +79 116 +46 68 +39 102 diff --git a/geom_bottleneck/tests/data/test_391_A b/geom_bottleneck/tests/data/test_391_A new file mode 100644 index 0000000..f353fda --- /dev/null +++ b/geom_bottleneck/tests/data/test_391_A @@ -0,0 +1,3 @@ +38 51 +43 103 +80 129 diff --git a/geom_bottleneck/tests/data/test_391_B b/geom_bottleneck/tests/data/test_391_B new file mode 100644 index 0000000..edff01f --- /dev/null +++ b/geom_bottleneck/tests/data/test_391_B @@ -0,0 +1,3 @@ +22 116 +2 92 +13 109 diff --git a/geom_bottleneck/tests/data/test_392_A b/geom_bottleneck/tests/data/test_392_A new file mode 100644 index 0000000..317da32 --- /dev/null +++ b/geom_bottleneck/tests/data/test_392_A @@ -0,0 +1,3 @@ +10 15 +48 118 +86 151 diff --git a/geom_bottleneck/tests/data/test_392_B b/geom_bottleneck/tests/data/test_392_B new file mode 100644 index 0000000..c8cb61c --- /dev/null +++ b/geom_bottleneck/tests/data/test_392_B @@ -0,0 +1,3 @@ +73 173 +27 46 +73 146 diff --git a/geom_bottleneck/tests/data/test_393_A b/geom_bottleneck/tests/data/test_393_A new file mode 100644 index 0000000..10b537c --- /dev/null +++ b/geom_bottleneck/tests/data/test_393_A @@ -0,0 +1,3 @@ +68 103 +89 121 +98 113 diff --git a/geom_bottleneck/tests/data/test_393_B b/geom_bottleneck/tests/data/test_393_B new file mode 100644 index 0000000..24bc23a --- /dev/null +++ b/geom_bottleneck/tests/data/test_393_B @@ -0,0 +1,3 @@ +68 100 +41 63 +12 41 diff --git a/geom_bottleneck/tests/data/test_394_A b/geom_bottleneck/tests/data/test_394_A new file mode 100644 index 0000000..e626e4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_394_A @@ -0,0 +1,3 @@ +16 63 +5 58 +73 84 diff --git a/geom_bottleneck/tests/data/test_394_B b/geom_bottleneck/tests/data/test_394_B new file mode 100644 index 0000000..24e086f --- /dev/null +++ b/geom_bottleneck/tests/data/test_394_B @@ -0,0 +1,3 @@ +86 134 +41 102 +14 107 diff --git a/geom_bottleneck/tests/data/test_395_A b/geom_bottleneck/tests/data/test_395_A new file mode 100644 index 0000000..fa5d9e1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_395_A @@ -0,0 +1,3 @@ +76 152 +99 166 +91 110 diff --git a/geom_bottleneck/tests/data/test_395_B b/geom_bottleneck/tests/data/test_395_B new file mode 100644 index 0000000..8cc1049 --- /dev/null +++ b/geom_bottleneck/tests/data/test_395_B @@ -0,0 +1,3 @@ +42 109 +54 89 +51 113 diff --git a/geom_bottleneck/tests/data/test_396_A b/geom_bottleneck/tests/data/test_396_A new file mode 100644 index 0000000..ab2ac42 --- /dev/null +++ b/geom_bottleneck/tests/data/test_396_A @@ -0,0 +1,3 @@ +0 22 +81 139 +26 41 diff --git a/geom_bottleneck/tests/data/test_396_B b/geom_bottleneck/tests/data/test_396_B new file mode 100644 index 0000000..dd8a3d4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_396_B @@ -0,0 +1,3 @@ +76 123 +23 24 +23 118 diff --git a/geom_bottleneck/tests/data/test_397_A b/geom_bottleneck/tests/data/test_397_A new file mode 100644 index 0000000..683bdca --- /dev/null +++ b/geom_bottleneck/tests/data/test_397_A @@ -0,0 +1,3 @@ +53 128 +82 162 +34 127 diff --git a/geom_bottleneck/tests/data/test_397_B b/geom_bottleneck/tests/data/test_397_B new file mode 100644 index 0000000..a7b2d72 --- /dev/null +++ b/geom_bottleneck/tests/data/test_397_B @@ -0,0 +1,3 @@ +49 95 +82 140 +21 92 diff --git a/geom_bottleneck/tests/data/test_398_A b/geom_bottleneck/tests/data/test_398_A new file mode 100644 index 0000000..d802d50 --- /dev/null +++ b/geom_bottleneck/tests/data/test_398_A @@ -0,0 +1,3 @@ +37 98 +42 125 +79 99 diff --git a/geom_bottleneck/tests/data/test_398_B b/geom_bottleneck/tests/data/test_398_B new file mode 100644 index 0000000..9e5b5e1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_398_B @@ -0,0 +1,3 @@ +48 91 +49 115 +65 158 diff --git a/geom_bottleneck/tests/data/test_399_A b/geom_bottleneck/tests/data/test_399_A new file mode 100644 index 0000000..204dfdf --- /dev/null +++ b/geom_bottleneck/tests/data/test_399_A @@ -0,0 +1,3 @@ +87 153 +22 28 +68 72 diff --git a/geom_bottleneck/tests/data/test_399_B b/geom_bottleneck/tests/data/test_399_B new file mode 100644 index 0000000..58cb084 --- /dev/null +++ b/geom_bottleneck/tests/data/test_399_B @@ -0,0 +1,3 @@ +33 93 +3 10 +21 32 diff --git a/geom_bottleneck/tests/data/test_400_A b/geom_bottleneck/tests/data/test_400_A new file mode 100644 index 0000000..b867cf5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_400_A @@ -0,0 +1,4 @@ +55 89 +35 85 +62 84 +84 151 diff --git a/geom_bottleneck/tests/data/test_400_B b/geom_bottleneck/tests/data/test_400_B new file mode 100644 index 0000000..18df91d --- /dev/null +++ b/geom_bottleneck/tests/data/test_400_B @@ -0,0 +1,4 @@ +37 89 +45 56 +4 79 +86 139 diff --git a/geom_bottleneck/tests/data/test_401_A b/geom_bottleneck/tests/data/test_401_A new file mode 100644 index 0000000..0f03308 --- /dev/null +++ b/geom_bottleneck/tests/data/test_401_A @@ -0,0 +1,4 @@ +15 34 +2 72 +14 50 +58 86 diff --git a/geom_bottleneck/tests/data/test_401_B b/geom_bottleneck/tests/data/test_401_B new file mode 100644 index 0000000..b517be8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_401_B @@ -0,0 +1,4 @@ +85 97 +24 54 +44 45 +75 171 diff --git a/geom_bottleneck/tests/data/test_402_A b/geom_bottleneck/tests/data/test_402_A new file mode 100644 index 0000000..6a6f79f --- /dev/null +++ b/geom_bottleneck/tests/data/test_402_A @@ -0,0 +1,4 @@ +97 167 +17 65 +82 157 +88 110 diff --git a/geom_bottleneck/tests/data/test_402_B b/geom_bottleneck/tests/data/test_402_B new file mode 100644 index 0000000..6585f2b --- /dev/null +++ b/geom_bottleneck/tests/data/test_402_B @@ -0,0 +1,4 @@ +69 87 +32 52 +71 92 +38 91 diff --git a/geom_bottleneck/tests/data/test_403_A b/geom_bottleneck/tests/data/test_403_A new file mode 100644 index 0000000..8b5929a --- /dev/null +++ b/geom_bottleneck/tests/data/test_403_A @@ -0,0 +1,4 @@ +75 84 +86 184 +46 132 +79 136 diff --git a/geom_bottleneck/tests/data/test_403_B b/geom_bottleneck/tests/data/test_403_B new file mode 100644 index 0000000..71f089f --- /dev/null +++ b/geom_bottleneck/tests/data/test_403_B @@ -0,0 +1,4 @@ +41 132 +44 72 +6 105 +91 187 diff --git a/geom_bottleneck/tests/data/test_404_A b/geom_bottleneck/tests/data/test_404_A new file mode 100644 index 0000000..10add8e --- /dev/null +++ b/geom_bottleneck/tests/data/test_404_A @@ -0,0 +1,4 @@ +28 95 +43 126 +75 105 +2 101 diff --git a/geom_bottleneck/tests/data/test_404_B b/geom_bottleneck/tests/data/test_404_B new file mode 100644 index 0000000..b38a7a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_404_B @@ -0,0 +1,4 @@ +49 56 +50 116 +54 132 +55 94 diff --git a/geom_bottleneck/tests/data/test_405_A b/geom_bottleneck/tests/data/test_405_A new file mode 100644 index 0000000..6cab1bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_405_A @@ -0,0 +1,4 @@ +53 120 +12 15 +80 83 +79 96 diff --git a/geom_bottleneck/tests/data/test_405_B b/geom_bottleneck/tests/data/test_405_B new file mode 100644 index 0000000..96645aa --- /dev/null +++ b/geom_bottleneck/tests/data/test_405_B @@ -0,0 +1,4 @@ +41 113 +17 18 +22 39 +89 135 diff --git a/geom_bottleneck/tests/data/test_406_A b/geom_bottleneck/tests/data/test_406_A new file mode 100644 index 0000000..cf08c48 --- /dev/null +++ b/geom_bottleneck/tests/data/test_406_A @@ -0,0 +1,4 @@ +88 168 +26 35 +96 126 +84 102 diff --git a/geom_bottleneck/tests/data/test_406_B b/geom_bottleneck/tests/data/test_406_B new file mode 100644 index 0000000..b4ca0a0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_406_B @@ -0,0 +1,4 @@ +81 173 +76 111 +2 15 +44 142 diff --git a/geom_bottleneck/tests/data/test_407_A b/geom_bottleneck/tests/data/test_407_A new file mode 100644 index 0000000..2372aba --- /dev/null +++ b/geom_bottleneck/tests/data/test_407_A @@ -0,0 +1,4 @@ +55 92 +95 170 +51 149 +76 156 diff --git a/geom_bottleneck/tests/data/test_407_B b/geom_bottleneck/tests/data/test_407_B new file mode 100644 index 0000000..bd43334 --- /dev/null +++ b/geom_bottleneck/tests/data/test_407_B @@ -0,0 +1,4 @@ +55 100 +17 86 +37 66 +97 131 diff --git a/geom_bottleneck/tests/data/test_408_A b/geom_bottleneck/tests/data/test_408_A new file mode 100644 index 0000000..91652d4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_408_A @@ -0,0 +1,4 @@ +3 9 +50 134 +50 115 +30 82 diff --git a/geom_bottleneck/tests/data/test_408_B b/geom_bottleneck/tests/data/test_408_B new file mode 100644 index 0000000..5f936a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_408_B @@ -0,0 +1,4 @@ +57 103 +83 173 +20 58 +74 93 diff --git a/geom_bottleneck/tests/data/test_409_A b/geom_bottleneck/tests/data/test_409_A new file mode 100644 index 0000000..b4d01d2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_409_A @@ -0,0 +1,4 @@ +87 144 +33 79 +44 110 +42 92 diff --git a/geom_bottleneck/tests/data/test_409_B b/geom_bottleneck/tests/data/test_409_B new file mode 100644 index 0000000..4e15e41 --- /dev/null +++ b/geom_bottleneck/tests/data/test_409_B @@ -0,0 +1,4 @@ +2 39 +82 170 +1 40 +50 115 diff --git a/geom_bottleneck/tests/data/test_410_A b/geom_bottleneck/tests/data/test_410_A new file mode 100644 index 0000000..c02ab24 --- /dev/null +++ b/geom_bottleneck/tests/data/test_410_A @@ -0,0 +1,4 @@ +15 80 +70 160 +52 144 +100 134 diff --git a/geom_bottleneck/tests/data/test_410_B b/geom_bottleneck/tests/data/test_410_B new file mode 100644 index 0000000..d000095 --- /dev/null +++ b/geom_bottleneck/tests/data/test_410_B @@ -0,0 +1,4 @@ +87 144 +43 91 +68 77 +79 172 diff --git a/geom_bottleneck/tests/data/test_411_A b/geom_bottleneck/tests/data/test_411_A new file mode 100644 index 0000000..8130c4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_411_A @@ -0,0 +1,4 @@ +81 158 +50 142 +83 129 +74 85 diff --git a/geom_bottleneck/tests/data/test_411_B b/geom_bottleneck/tests/data/test_411_B new file mode 100644 index 0000000..e53f61f --- /dev/null +++ b/geom_bottleneck/tests/data/test_411_B @@ -0,0 +1,4 @@ +31 115 +57 108 +83 135 +2 26 diff --git a/geom_bottleneck/tests/data/test_412_A b/geom_bottleneck/tests/data/test_412_A new file mode 100644 index 0000000..34a88b0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_412_A @@ -0,0 +1,4 @@ +5 31 +39 91 +24 75 +93 128 diff --git a/geom_bottleneck/tests/data/test_412_B b/geom_bottleneck/tests/data/test_412_B new file mode 100644 index 0000000..a163ece --- /dev/null +++ b/geom_bottleneck/tests/data/test_412_B @@ -0,0 +1,4 @@ +0 76 +97 144 +55 92 +1 67 diff --git a/geom_bottleneck/tests/data/test_413_A b/geom_bottleneck/tests/data/test_413_A new file mode 100644 index 0000000..61d6f70 --- /dev/null +++ b/geom_bottleneck/tests/data/test_413_A @@ -0,0 +1,4 @@ +44 111 +69 88 +8 80 +78 113 diff --git a/geom_bottleneck/tests/data/test_413_B b/geom_bottleneck/tests/data/test_413_B new file mode 100644 index 0000000..5b9dc54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_413_B @@ -0,0 +1,4 @@ +87 159 +53 114 +70 136 +63 103 diff --git a/geom_bottleneck/tests/data/test_414_A b/geom_bottleneck/tests/data/test_414_A new file mode 100644 index 0000000..933f1e4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_414_A @@ -0,0 +1,4 @@ +39 44 +29 113 +85 158 +59 77 diff --git a/geom_bottleneck/tests/data/test_414_B b/geom_bottleneck/tests/data/test_414_B new file mode 100644 index 0000000..b54a5fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_414_B @@ -0,0 +1,4 @@ +14 109 +5 90 +85 134 +60 88 diff --git a/geom_bottleneck/tests/data/test_415_A b/geom_bottleneck/tests/data/test_415_A new file mode 100644 index 0000000..bbce6b8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_415_A @@ -0,0 +1,4 @@ +23 70 +40 46 +21 109 +50 149 diff --git a/geom_bottleneck/tests/data/test_415_B b/geom_bottleneck/tests/data/test_415_B new file mode 100644 index 0000000..3943a46 --- /dev/null +++ b/geom_bottleneck/tests/data/test_415_B @@ -0,0 +1,4 @@ +14 80 +74 154 +50 70 +90 173 diff --git a/geom_bottleneck/tests/data/test_416_A b/geom_bottleneck/tests/data/test_416_A new file mode 100644 index 0000000..c7a9a3d --- /dev/null +++ b/geom_bottleneck/tests/data/test_416_A @@ -0,0 +1,4 @@ +23 53 +20 94 +89 105 +98 146 diff --git a/geom_bottleneck/tests/data/test_416_B b/geom_bottleneck/tests/data/test_416_B new file mode 100644 index 0000000..6e8c430 --- /dev/null +++ b/geom_bottleneck/tests/data/test_416_B @@ -0,0 +1,4 @@ +73 74 +62 124 +95 126 +62 141 diff --git a/geom_bottleneck/tests/data/test_417_A b/geom_bottleneck/tests/data/test_417_A new file mode 100644 index 0000000..6e5688c --- /dev/null +++ b/geom_bottleneck/tests/data/test_417_A @@ -0,0 +1,4 @@ +66 148 +86 117 +4 32 +95 146 diff --git a/geom_bottleneck/tests/data/test_417_B b/geom_bottleneck/tests/data/test_417_B new file mode 100644 index 0000000..2bfa9c2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_417_B @@ -0,0 +1,4 @@ +87 111 +23 122 +62 95 +12 22 diff --git a/geom_bottleneck/tests/data/test_418_A b/geom_bottleneck/tests/data/test_418_A new file mode 100644 index 0000000..9ab98de --- /dev/null +++ b/geom_bottleneck/tests/data/test_418_A @@ -0,0 +1,4 @@ +29 122 +71 102 +70 109 +43 120 diff --git a/geom_bottleneck/tests/data/test_418_B b/geom_bottleneck/tests/data/test_418_B new file mode 100644 index 0000000..f3231de --- /dev/null +++ b/geom_bottleneck/tests/data/test_418_B @@ -0,0 +1,4 @@ +45 121 +58 64 +57 105 +41 138 diff --git a/geom_bottleneck/tests/data/test_419_A b/geom_bottleneck/tests/data/test_419_A new file mode 100644 index 0000000..825d191 --- /dev/null +++ b/geom_bottleneck/tests/data/test_419_A @@ -0,0 +1,4 @@ +28 111 +100 167 +17 59 +10 38 diff --git a/geom_bottleneck/tests/data/test_419_B b/geom_bottleneck/tests/data/test_419_B new file mode 100644 index 0000000..101be4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_419_B @@ -0,0 +1,4 @@ +63 99 +78 143 +67 150 +24 77 diff --git a/geom_bottleneck/tests/data/test_420_A b/geom_bottleneck/tests/data/test_420_A new file mode 100644 index 0000000..455d829 --- /dev/null +++ b/geom_bottleneck/tests/data/test_420_A @@ -0,0 +1,5 @@ +89 160 +26 36 +37 61 +95 137 +41 68 diff --git a/geom_bottleneck/tests/data/test_420_B b/geom_bottleneck/tests/data/test_420_B new file mode 100644 index 0000000..27e1c6d --- /dev/null +++ b/geom_bottleneck/tests/data/test_420_B @@ -0,0 +1,5 @@ +100 185 +31 112 +78 129 +49 143 +74 171 diff --git a/geom_bottleneck/tests/data/test_421_A b/geom_bottleneck/tests/data/test_421_A new file mode 100644 index 0000000..c08ddf1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_421_A @@ -0,0 +1,5 @@ +27 127 +2 101 +42 52 +5 81 +4 62 diff --git a/geom_bottleneck/tests/data/test_421_B b/geom_bottleneck/tests/data/test_421_B new file mode 100644 index 0000000..37cbda8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_421_B @@ -0,0 +1,5 @@ +27 40 +67 78 +50 122 +41 95 +1 63 diff --git a/geom_bottleneck/tests/data/test_422_A b/geom_bottleneck/tests/data/test_422_A new file mode 100644 index 0000000..348a116 --- /dev/null +++ b/geom_bottleneck/tests/data/test_422_A @@ -0,0 +1,5 @@ +54 143 +21 24 +96 180 +13 113 +93 134 diff --git a/geom_bottleneck/tests/data/test_422_B b/geom_bottleneck/tests/data/test_422_B new file mode 100644 index 0000000..0f33ae9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_422_B @@ -0,0 +1,5 @@ +5 18 +63 106 +29 94 +59 155 +66 155 diff --git a/geom_bottleneck/tests/data/test_423_A b/geom_bottleneck/tests/data/test_423_A new file mode 100644 index 0000000..b3b448e --- /dev/null +++ b/geom_bottleneck/tests/data/test_423_A @@ -0,0 +1,5 @@ +47 88 +80 138 +75 129 +2 90 +58 133 diff --git a/geom_bottleneck/tests/data/test_423_B b/geom_bottleneck/tests/data/test_423_B new file mode 100644 index 0000000..873a875 --- /dev/null +++ b/geom_bottleneck/tests/data/test_423_B @@ -0,0 +1,5 @@ +77 129 +99 174 +93 104 +71 93 +18 26 diff --git a/geom_bottleneck/tests/data/test_424_A b/geom_bottleneck/tests/data/test_424_A new file mode 100644 index 0000000..ab20fc1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_424_A @@ -0,0 +1,5 @@ +73 167 +50 133 +25 41 +46 87 +27 93 diff --git a/geom_bottleneck/tests/data/test_424_B b/geom_bottleneck/tests/data/test_424_B new file mode 100644 index 0000000..a0f5059 --- /dev/null +++ b/geom_bottleneck/tests/data/test_424_B @@ -0,0 +1,5 @@ +71 113 +54 63 +0 33 +27 127 +14 79 diff --git a/geom_bottleneck/tests/data/test_425_A b/geom_bottleneck/tests/data/test_425_A new file mode 100644 index 0000000..7116974 --- /dev/null +++ b/geom_bottleneck/tests/data/test_425_A @@ -0,0 +1,5 @@ +90 168 +44 63 +83 88 +80 81 +13 94 diff --git a/geom_bottleneck/tests/data/test_425_B b/geom_bottleneck/tests/data/test_425_B new file mode 100644 index 0000000..6f1e713 --- /dev/null +++ b/geom_bottleneck/tests/data/test_425_B @@ -0,0 +1,5 @@ +66 161 +99 137 +71 147 +58 80 +42 96 diff --git a/geom_bottleneck/tests/data/test_426_A b/geom_bottleneck/tests/data/test_426_A new file mode 100644 index 0000000..6404cdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_426_A @@ -0,0 +1,5 @@ +90 161 +75 121 +54 111 +21 84 +73 106 diff --git a/geom_bottleneck/tests/data/test_426_B b/geom_bottleneck/tests/data/test_426_B new file mode 100644 index 0000000..06fbc21 --- /dev/null +++ b/geom_bottleneck/tests/data/test_426_B @@ -0,0 +1,5 @@ +82 109 +85 100 +26 92 +52 91 +23 83 diff --git a/geom_bottleneck/tests/data/test_427_A b/geom_bottleneck/tests/data/test_427_A new file mode 100644 index 0000000..ab36b49 --- /dev/null +++ b/geom_bottleneck/tests/data/test_427_A @@ -0,0 +1,5 @@ +15 28 +39 93 +1 43 +16 98 +81 167 diff --git a/geom_bottleneck/tests/data/test_427_B b/geom_bottleneck/tests/data/test_427_B new file mode 100644 index 0000000..eb34e17 --- /dev/null +++ b/geom_bottleneck/tests/data/test_427_B @@ -0,0 +1,5 @@ +57 70 +99 181 +26 81 +13 32 +95 153 diff --git a/geom_bottleneck/tests/data/test_428_A b/geom_bottleneck/tests/data/test_428_A new file mode 100644 index 0000000..12957ab --- /dev/null +++ b/geom_bottleneck/tests/data/test_428_A @@ -0,0 +1,5 @@ +85 155 +86 173 +63 88 +50 84 +75 85 diff --git a/geom_bottleneck/tests/data/test_428_B b/geom_bottleneck/tests/data/test_428_B new file mode 100644 index 0000000..b0fd1c4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_428_B @@ -0,0 +1,5 @@ +70 113 +92 93 +57 103 +40 81 +9 47 diff --git a/geom_bottleneck/tests/data/test_429_A b/geom_bottleneck/tests/data/test_429_A new file mode 100644 index 0000000..0cdda41 --- /dev/null +++ b/geom_bottleneck/tests/data/test_429_A @@ -0,0 +1,5 @@ +90 165 +83 128 +5 28 +68 121 +1 67 diff --git a/geom_bottleneck/tests/data/test_429_B b/geom_bottleneck/tests/data/test_429_B new file mode 100644 index 0000000..0180a92 --- /dev/null +++ b/geom_bottleneck/tests/data/test_429_B @@ -0,0 +1,5 @@ +31 34 +88 147 +17 91 +46 138 +13 81 diff --git a/geom_bottleneck/tests/data/test_430_A b/geom_bottleneck/tests/data/test_430_A new file mode 100644 index 0000000..03029c6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_430_A @@ -0,0 +1,5 @@ +85 181 +93 118 +77 167 +39 110 +21 22 diff --git a/geom_bottleneck/tests/data/test_430_B b/geom_bottleneck/tests/data/test_430_B new file mode 100644 index 0000000..9c58f1f --- /dev/null +++ b/geom_bottleneck/tests/data/test_430_B @@ -0,0 +1,5 @@ +59 88 +28 29 +56 57 +3 73 +78 93 diff --git a/geom_bottleneck/tests/data/test_431_A b/geom_bottleneck/tests/data/test_431_A new file mode 100644 index 0000000..272ec7d --- /dev/null +++ b/geom_bottleneck/tests/data/test_431_A @@ -0,0 +1,5 @@ +26 28 +90 172 +46 118 +25 102 +78 141 diff --git a/geom_bottleneck/tests/data/test_431_B b/geom_bottleneck/tests/data/test_431_B new file mode 100644 index 0000000..9ccc9d1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_431_B @@ -0,0 +1,5 @@ +25 107 +61 128 +24 111 +47 48 +70 96 diff --git a/geom_bottleneck/tests/data/test_432_A b/geom_bottleneck/tests/data/test_432_A new file mode 100644 index 0000000..91dbacb --- /dev/null +++ b/geom_bottleneck/tests/data/test_432_A @@ -0,0 +1,5 @@ +53 78 +16 74 +6 106 +46 145 +33 41 diff --git a/geom_bottleneck/tests/data/test_432_B b/geom_bottleneck/tests/data/test_432_B new file mode 100644 index 0000000..47afd85 --- /dev/null +++ b/geom_bottleneck/tests/data/test_432_B @@ -0,0 +1,5 @@ +16 100 +70 119 +42 137 +94 164 +94 105 diff --git a/geom_bottleneck/tests/data/test_433_A b/geom_bottleneck/tests/data/test_433_A new file mode 100644 index 0000000..1577e13 --- /dev/null +++ b/geom_bottleneck/tests/data/test_433_A @@ -0,0 +1,5 @@ +30 97 +79 93 +42 97 +88 140 +85 131 diff --git a/geom_bottleneck/tests/data/test_433_B b/geom_bottleneck/tests/data/test_433_B new file mode 100644 index 0000000..f63aea0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_433_B @@ -0,0 +1,5 @@ +38 55 +29 129 +30 97 +11 43 +26 59 diff --git a/geom_bottleneck/tests/data/test_434_A b/geom_bottleneck/tests/data/test_434_A new file mode 100644 index 0000000..5ef7655 --- /dev/null +++ b/geom_bottleneck/tests/data/test_434_A @@ -0,0 +1,5 @@ +63 102 +32 38 +98 179 +89 136 +39 67 diff --git a/geom_bottleneck/tests/data/test_434_B b/geom_bottleneck/tests/data/test_434_B new file mode 100644 index 0000000..a089420 --- /dev/null +++ b/geom_bottleneck/tests/data/test_434_B @@ -0,0 +1,5 @@ +92 101 +9 11 +47 138 +95 176 +8 87 diff --git a/geom_bottleneck/tests/data/test_435_A b/geom_bottleneck/tests/data/test_435_A new file mode 100644 index 0000000..9021906 --- /dev/null +++ b/geom_bottleneck/tests/data/test_435_A @@ -0,0 +1,5 @@ +34 98 +33 80 +18 85 +36 100 +60 64 diff --git a/geom_bottleneck/tests/data/test_435_B b/geom_bottleneck/tests/data/test_435_B new file mode 100644 index 0000000..225d87c --- /dev/null +++ b/geom_bottleneck/tests/data/test_435_B @@ -0,0 +1,5 @@ +96 175 +12 80 +79 166 +28 88 +81 150 diff --git a/geom_bottleneck/tests/data/test_436_A b/geom_bottleneck/tests/data/test_436_A new file mode 100644 index 0000000..4004cfe --- /dev/null +++ b/geom_bottleneck/tests/data/test_436_A @@ -0,0 +1,5 @@ +59 101 +23 98 +15 108 +65 119 +67 91 diff --git a/geom_bottleneck/tests/data/test_436_B b/geom_bottleneck/tests/data/test_436_B new file mode 100644 index 0000000..8fbd097 --- /dev/null +++ b/geom_bottleneck/tests/data/test_436_B @@ -0,0 +1,5 @@ +23 86 +58 123 +18 62 +100 165 +6 105 diff --git a/geom_bottleneck/tests/data/test_437_A b/geom_bottleneck/tests/data/test_437_A new file mode 100644 index 0000000..8210316 --- /dev/null +++ b/geom_bottleneck/tests/data/test_437_A @@ -0,0 +1,5 @@ +10 38 +90 165 +35 122 +100 170 +62 93 diff --git a/geom_bottleneck/tests/data/test_437_B b/geom_bottleneck/tests/data/test_437_B new file mode 100644 index 0000000..c7e55b3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_437_B @@ -0,0 +1,5 @@ +27 73 +87 187 +78 176 +44 82 +58 77 diff --git a/geom_bottleneck/tests/data/test_438_A b/geom_bottleneck/tests/data/test_438_A new file mode 100644 index 0000000..e2f48a4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_438_A @@ -0,0 +1,5 @@ +14 74 +65 127 +21 51 +19 42 +58 96 diff --git a/geom_bottleneck/tests/data/test_438_B b/geom_bottleneck/tests/data/test_438_B new file mode 100644 index 0000000..eb84689 --- /dev/null +++ b/geom_bottleneck/tests/data/test_438_B @@ -0,0 +1,5 @@ +97 165 +49 116 +73 83 +6 8 +99 153 diff --git a/geom_bottleneck/tests/data/test_439_A b/geom_bottleneck/tests/data/test_439_A new file mode 100644 index 0000000..fc36518 --- /dev/null +++ b/geom_bottleneck/tests/data/test_439_A @@ -0,0 +1,5 @@ +66 120 +59 119 +40 56 +42 120 +48 140 diff --git a/geom_bottleneck/tests/data/test_439_B b/geom_bottleneck/tests/data/test_439_B new file mode 100644 index 0000000..b9de5b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_439_B @@ -0,0 +1,5 @@ +25 94 +94 157 +64 156 +79 100 +28 98 diff --git a/geom_bottleneck/tests/data/test_440_A b/geom_bottleneck/tests/data/test_440_A new file mode 100644 index 0000000..4f0cdc2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_440_A @@ -0,0 +1,6 @@ +25 32 +90 153 +23 86 +4 29 +52 124 +17 75 diff --git a/geom_bottleneck/tests/data/test_440_B b/geom_bottleneck/tests/data/test_440_B new file mode 100644 index 0000000..c06754e --- /dev/null +++ b/geom_bottleneck/tests/data/test_440_B @@ -0,0 +1,6 @@ +47 132 +64 156 +96 149 +31 94 +86 94 +40 63 diff --git a/geom_bottleneck/tests/data/test_441_A b/geom_bottleneck/tests/data/test_441_A new file mode 100644 index 0000000..f1d7779 --- /dev/null +++ b/geom_bottleneck/tests/data/test_441_A @@ -0,0 +1,6 @@ +45 121 +61 95 +57 68 +10 82 +90 147 +80 179 diff --git a/geom_bottleneck/tests/data/test_441_B b/geom_bottleneck/tests/data/test_441_B new file mode 100644 index 0000000..039c8db --- /dev/null +++ b/geom_bottleneck/tests/data/test_441_B @@ -0,0 +1,6 @@ +97 122 +44 109 +15 48 +49 106 +30 65 +66 70 diff --git a/geom_bottleneck/tests/data/test_442_A b/geom_bottleneck/tests/data/test_442_A new file mode 100644 index 0000000..9a22bd2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_442_A @@ -0,0 +1,6 @@ +44 47 +6 81 +66 163 +74 144 +66 135 +62 63 diff --git a/geom_bottleneck/tests/data/test_442_B b/geom_bottleneck/tests/data/test_442_B new file mode 100644 index 0000000..9663228 --- /dev/null +++ b/geom_bottleneck/tests/data/test_442_B @@ -0,0 +1,6 @@ +41 65 +52 109 +96 175 +80 93 +32 78 +97 124 diff --git a/geom_bottleneck/tests/data/test_443_A b/geom_bottleneck/tests/data/test_443_A new file mode 100644 index 0000000..27d9885 --- /dev/null +++ b/geom_bottleneck/tests/data/test_443_A @@ -0,0 +1,6 @@ +19 38 +86 142 +86 132 +32 118 +73 138 +25 83 diff --git a/geom_bottleneck/tests/data/test_443_B b/geom_bottleneck/tests/data/test_443_B new file mode 100644 index 0000000..c084218 --- /dev/null +++ b/geom_bottleneck/tests/data/test_443_B @@ -0,0 +1,6 @@ +78 165 +88 138 +5 29 +81 109 +4 96 +69 130 diff --git a/geom_bottleneck/tests/data/test_444_A b/geom_bottleneck/tests/data/test_444_A new file mode 100644 index 0000000..86dfb79 --- /dev/null +++ b/geom_bottleneck/tests/data/test_444_A @@ -0,0 +1,6 @@ +22 23 +59 111 +65 91 +0 56 +92 156 +67 69 diff --git a/geom_bottleneck/tests/data/test_444_B b/geom_bottleneck/tests/data/test_444_B new file mode 100644 index 0000000..b7f54f9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_444_B @@ -0,0 +1,6 @@ +20 39 +0 44 +34 84 +3 30 +70 96 +92 127 diff --git a/geom_bottleneck/tests/data/test_445_A b/geom_bottleneck/tests/data/test_445_A new file mode 100644 index 0000000..6ec29f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_445_A @@ -0,0 +1,6 @@ +49 64 +36 102 +43 120 +98 194 +65 110 +49 89 diff --git a/geom_bottleneck/tests/data/test_445_B b/geom_bottleneck/tests/data/test_445_B new file mode 100644 index 0000000..7e5ce8e --- /dev/null +++ b/geom_bottleneck/tests/data/test_445_B @@ -0,0 +1,6 @@ +84 88 +42 132 +26 36 +11 91 +17 114 +37 70 diff --git a/geom_bottleneck/tests/data/test_446_A b/geom_bottleneck/tests/data/test_446_A new file mode 100644 index 0000000..2e66159 --- /dev/null +++ b/geom_bottleneck/tests/data/test_446_A @@ -0,0 +1,6 @@ +48 147 +86 146 +42 64 +39 111 +71 113 +59 63 diff --git a/geom_bottleneck/tests/data/test_446_B b/geom_bottleneck/tests/data/test_446_B new file mode 100644 index 0000000..b4a4baa --- /dev/null +++ b/geom_bottleneck/tests/data/test_446_B @@ -0,0 +1,6 @@ +14 15 +64 163 +23 41 +4 90 +3 23 +66 68 diff --git a/geom_bottleneck/tests/data/test_447_A b/geom_bottleneck/tests/data/test_447_A new file mode 100644 index 0000000..adbca26 --- /dev/null +++ b/geom_bottleneck/tests/data/test_447_A @@ -0,0 +1,6 @@ +91 119 +93 186 +11 53 +85 87 +8 50 +69 84 diff --git a/geom_bottleneck/tests/data/test_447_B b/geom_bottleneck/tests/data/test_447_B new file mode 100644 index 0000000..c996a99 --- /dev/null +++ b/geom_bottleneck/tests/data/test_447_B @@ -0,0 +1,6 @@ +67 71 +77 143 +48 103 +80 121 +73 107 +18 36 diff --git a/geom_bottleneck/tests/data/test_448_A b/geom_bottleneck/tests/data/test_448_A new file mode 100644 index 0000000..3b1d2ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_448_A @@ -0,0 +1,6 @@ +99 127 +80 81 +72 138 +40 123 +76 120 +13 52 diff --git a/geom_bottleneck/tests/data/test_448_B b/geom_bottleneck/tests/data/test_448_B new file mode 100644 index 0000000..358c96b --- /dev/null +++ b/geom_bottleneck/tests/data/test_448_B @@ -0,0 +1,6 @@ +94 105 +31 105 +2 50 +91 132 +63 86 +81 116 diff --git a/geom_bottleneck/tests/data/test_449_A b/geom_bottleneck/tests/data/test_449_A new file mode 100644 index 0000000..1b9fdde --- /dev/null +++ b/geom_bottleneck/tests/data/test_449_A @@ -0,0 +1,6 @@ +99 164 +24 78 +75 119 +62 129 +93 117 +34 124 diff --git a/geom_bottleneck/tests/data/test_449_B b/geom_bottleneck/tests/data/test_449_B new file mode 100644 index 0000000..39ca7bf --- /dev/null +++ b/geom_bottleneck/tests/data/test_449_B @@ -0,0 +1,6 @@ +5 101 +53 86 +58 92 +99 198 +48 57 +34 102 diff --git a/geom_bottleneck/tests/data/test_450_A b/geom_bottleneck/tests/data/test_450_A new file mode 100644 index 0000000..c97d1bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_450_A @@ -0,0 +1,6 @@ +98 112 +27 55 +36 69 +5 32 +36 85 +24 90 diff --git a/geom_bottleneck/tests/data/test_450_B b/geom_bottleneck/tests/data/test_450_B new file mode 100644 index 0000000..038d497 --- /dev/null +++ b/geom_bottleneck/tests/data/test_450_B @@ -0,0 +1,6 @@ +66 156 +74 158 +85 136 +4 53 +61 93 +13 37 diff --git a/geom_bottleneck/tests/data/test_451_A b/geom_bottleneck/tests/data/test_451_A new file mode 100644 index 0000000..1c77ff4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_451_A @@ -0,0 +1,6 @@ +83 99 +42 129 +82 117 +35 132 +1 101 +53 115 diff --git a/geom_bottleneck/tests/data/test_451_B b/geom_bottleneck/tests/data/test_451_B new file mode 100644 index 0000000..37c9b78 --- /dev/null +++ b/geom_bottleneck/tests/data/test_451_B @@ -0,0 +1,6 @@ +18 102 +62 111 +17 40 +78 135 +20 23 +69 77 diff --git a/geom_bottleneck/tests/data/test_452_A b/geom_bottleneck/tests/data/test_452_A new file mode 100644 index 0000000..24159ea --- /dev/null +++ b/geom_bottleneck/tests/data/test_452_A @@ -0,0 +1,6 @@ +12 65 +2 42 +61 93 +22 31 +66 139 +44 106 diff --git a/geom_bottleneck/tests/data/test_452_B b/geom_bottleneck/tests/data/test_452_B new file mode 100644 index 0000000..602fb45 --- /dev/null +++ b/geom_bottleneck/tests/data/test_452_B @@ -0,0 +1,6 @@ +88 156 +1 91 +7 42 +83 94 +50 133 +82 146 diff --git a/geom_bottleneck/tests/data/test_453_A b/geom_bottleneck/tests/data/test_453_A new file mode 100644 index 0000000..aa29541 --- /dev/null +++ b/geom_bottleneck/tests/data/test_453_A @@ -0,0 +1,6 @@ +39 50 +28 76 +83 87 +27 38 +85 120 +57 78 diff --git a/geom_bottleneck/tests/data/test_453_B b/geom_bottleneck/tests/data/test_453_B new file mode 100644 index 0000000..7cce047 --- /dev/null +++ b/geom_bottleneck/tests/data/test_453_B @@ -0,0 +1,6 @@ +59 106 +28 69 +91 189 +43 57 +32 33 +75 156 diff --git a/geom_bottleneck/tests/data/test_454_A b/geom_bottleneck/tests/data/test_454_A new file mode 100644 index 0000000..3e5e41b --- /dev/null +++ b/geom_bottleneck/tests/data/test_454_A @@ -0,0 +1,6 @@ +32 39 +6 50 +72 153 +38 115 +23 45 +18 34 diff --git a/geom_bottleneck/tests/data/test_454_B b/geom_bottleneck/tests/data/test_454_B new file mode 100644 index 0000000..e5e2305 --- /dev/null +++ b/geom_bottleneck/tests/data/test_454_B @@ -0,0 +1,6 @@ +83 180 +76 118 +76 114 +95 192 +19 53 +42 81 diff --git a/geom_bottleneck/tests/data/test_455_A b/geom_bottleneck/tests/data/test_455_A new file mode 100644 index 0000000..d06d256 --- /dev/null +++ b/geom_bottleneck/tests/data/test_455_A @@ -0,0 +1,6 @@ +80 110 +12 104 +89 151 +71 168 +91 95 +27 55 diff --git a/geom_bottleneck/tests/data/test_455_B b/geom_bottleneck/tests/data/test_455_B new file mode 100644 index 0000000..afdab0b --- /dev/null +++ b/geom_bottleneck/tests/data/test_455_B @@ -0,0 +1,6 @@ +68 166 +33 38 +66 158 +72 93 +66 96 +82 88 diff --git a/geom_bottleneck/tests/data/test_456_A b/geom_bottleneck/tests/data/test_456_A new file mode 100644 index 0000000..7a30bf3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_456_A @@ -0,0 +1,6 @@ +72 114 +8 79 +19 50 +72 134 +94 108 +5 24 diff --git a/geom_bottleneck/tests/data/test_456_B b/geom_bottleneck/tests/data/test_456_B new file mode 100644 index 0000000..a1a1329 --- /dev/null +++ b/geom_bottleneck/tests/data/test_456_B @@ -0,0 +1,6 @@ +86 114 +38 105 +46 98 +20 90 +98 118 +52 142 diff --git a/geom_bottleneck/tests/data/test_457_A b/geom_bottleneck/tests/data/test_457_A new file mode 100644 index 0000000..d5339ec --- /dev/null +++ b/geom_bottleneck/tests/data/test_457_A @@ -0,0 +1,6 @@ +70 109 +61 79 +55 152 +88 187 +64 136 +71 110 diff --git a/geom_bottleneck/tests/data/test_457_B b/geom_bottleneck/tests/data/test_457_B new file mode 100644 index 0000000..e96c110 --- /dev/null +++ b/geom_bottleneck/tests/data/test_457_B @@ -0,0 +1,6 @@ +57 128 +47 82 +87 96 +97 132 +23 41 +6 104 diff --git a/geom_bottleneck/tests/data/test_458_A b/geom_bottleneck/tests/data/test_458_A new file mode 100644 index 0000000..a9287b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_458_A @@ -0,0 +1,6 @@ +43 63 +79 80 +77 142 +50 116 +43 46 +45 139 diff --git a/geom_bottleneck/tests/data/test_458_B b/geom_bottleneck/tests/data/test_458_B new file mode 100644 index 0000000..63b7c63 --- /dev/null +++ b/geom_bottleneck/tests/data/test_458_B @@ -0,0 +1,6 @@ +69 79 +9 64 +29 115 +33 87 +5 100 +24 71 diff --git a/geom_bottleneck/tests/data/test_459_A b/geom_bottleneck/tests/data/test_459_A new file mode 100644 index 0000000..f8a82f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_459_A @@ -0,0 +1,6 @@ +90 94 +75 107 +80 88 +35 98 +53 84 +78 93 diff --git a/geom_bottleneck/tests/data/test_459_B b/geom_bottleneck/tests/data/test_459_B new file mode 100644 index 0000000..dc645ee --- /dev/null +++ b/geom_bottleneck/tests/data/test_459_B @@ -0,0 +1,6 @@ +95 101 +29 59 +32 77 +17 19 +92 108 +6 19 diff --git a/geom_bottleneck/tests/data/test_460_A b/geom_bottleneck/tests/data/test_460_A new file mode 100644 index 0000000..000c14e --- /dev/null +++ b/geom_bottleneck/tests/data/test_460_A @@ -0,0 +1,7 @@ +88 127 +65 145 +59 149 +69 152 +61 146 +28 90 +21 104 diff --git a/geom_bottleneck/tests/data/test_460_B b/geom_bottleneck/tests/data/test_460_B new file mode 100644 index 0000000..4a7d4a3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_460_B @@ -0,0 +1,7 @@ +47 131 +59 153 +24 95 +63 96 +6 102 +91 98 +31 118 diff --git a/geom_bottleneck/tests/data/test_461_A b/geom_bottleneck/tests/data/test_461_A new file mode 100644 index 0000000..aaebf2d --- /dev/null +++ b/geom_bottleneck/tests/data/test_461_A @@ -0,0 +1,7 @@ +57 67 +75 82 +63 88 +57 139 +67 103 +15 68 +100 117 diff --git a/geom_bottleneck/tests/data/test_461_B b/geom_bottleneck/tests/data/test_461_B new file mode 100644 index 0000000..183fa51 --- /dev/null +++ b/geom_bottleneck/tests/data/test_461_B @@ -0,0 +1,7 @@ +47 127 +9 35 +14 75 +29 92 +76 171 +9 56 +56 86 diff --git a/geom_bottleneck/tests/data/test_462_A b/geom_bottleneck/tests/data/test_462_A new file mode 100644 index 0000000..df1936d --- /dev/null +++ b/geom_bottleneck/tests/data/test_462_A @@ -0,0 +1,7 @@ +0 90 +50 113 +73 149 +86 105 +20 105 +14 75 +41 115 diff --git a/geom_bottleneck/tests/data/test_462_B b/geom_bottleneck/tests/data/test_462_B new file mode 100644 index 0000000..5be3bf0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_462_B @@ -0,0 +1,7 @@ +88 133 +47 100 +27 48 +54 153 +91 116 +90 150 +0 82 diff --git a/geom_bottleneck/tests/data/test_463_A b/geom_bottleneck/tests/data/test_463_A new file mode 100644 index 0000000..c8776fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_463_A @@ -0,0 +1,7 @@ +34 67 +34 92 +53 99 +64 155 +92 157 +16 55 +75 156 diff --git a/geom_bottleneck/tests/data/test_463_B b/geom_bottleneck/tests/data/test_463_B new file mode 100644 index 0000000..a9f1273 --- /dev/null +++ b/geom_bottleneck/tests/data/test_463_B @@ -0,0 +1,7 @@ +20 72 +99 146 +70 158 +4 38 +92 102 +20 32 +47 135 diff --git a/geom_bottleneck/tests/data/test_464_A b/geom_bottleneck/tests/data/test_464_A new file mode 100644 index 0000000..98ff6a9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_464_A @@ -0,0 +1,7 @@ +69 149 +52 115 +32 82 +22 60 +55 56 +80 116 +62 72 diff --git a/geom_bottleneck/tests/data/test_464_B b/geom_bottleneck/tests/data/test_464_B new file mode 100644 index 0000000..0e57b03 --- /dev/null +++ b/geom_bottleneck/tests/data/test_464_B @@ -0,0 +1,7 @@ +81 121 +17 86 +57 141 +13 15 +66 80 +66 107 +76 80 diff --git a/geom_bottleneck/tests/data/test_465_A b/geom_bottleneck/tests/data/test_465_A new file mode 100644 index 0000000..b164c7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_465_A @@ -0,0 +1,7 @@ +8 34 +48 141 +61 122 +56 130 +58 158 +51 81 +32 100 diff --git a/geom_bottleneck/tests/data/test_465_B b/geom_bottleneck/tests/data/test_465_B new file mode 100644 index 0000000..610a2a5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_465_B @@ -0,0 +1,7 @@ +8 89 +62 160 +27 109 +94 112 +59 140 +51 69 +52 136 diff --git a/geom_bottleneck/tests/data/test_466_A b/geom_bottleneck/tests/data/test_466_A new file mode 100644 index 0000000..3c0052c --- /dev/null +++ b/geom_bottleneck/tests/data/test_466_A @@ -0,0 +1,7 @@ +54 113 +15 32 +94 138 +42 132 +84 136 +81 135 +4 62 diff --git a/geom_bottleneck/tests/data/test_466_B b/geom_bottleneck/tests/data/test_466_B new file mode 100644 index 0000000..e8c16f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_466_B @@ -0,0 +1,7 @@ +51 116 +81 147 +11 51 +76 148 +90 100 +3 100 +62 138 diff --git a/geom_bottleneck/tests/data/test_467_A b/geom_bottleneck/tests/data/test_467_A new file mode 100644 index 0000000..69280bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_467_A @@ -0,0 +1,7 @@ +40 43 +46 99 +90 137 +93 122 +38 45 +87 134 +48 146 diff --git a/geom_bottleneck/tests/data/test_467_B b/geom_bottleneck/tests/data/test_467_B new file mode 100644 index 0000000..c857912 --- /dev/null +++ b/geom_bottleneck/tests/data/test_467_B @@ -0,0 +1,7 @@ +22 23 +57 100 +84 162 +30 92 +65 75 +97 133 +47 117 diff --git a/geom_bottleneck/tests/data/test_468_A b/geom_bottleneck/tests/data/test_468_A new file mode 100644 index 0000000..9f92c43 --- /dev/null +++ b/geom_bottleneck/tests/data/test_468_A @@ -0,0 +1,7 @@ +93 128 +20 66 +72 134 +97 111 +64 99 +17 47 +12 58 diff --git a/geom_bottleneck/tests/data/test_468_B b/geom_bottleneck/tests/data/test_468_B new file mode 100644 index 0000000..b20cdf4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_468_B @@ -0,0 +1,7 @@ +84 156 +42 142 +28 43 +83 179 +15 81 +51 113 +56 136 diff --git a/geom_bottleneck/tests/data/test_469_A b/geom_bottleneck/tests/data/test_469_A new file mode 100644 index 0000000..842bb69 --- /dev/null +++ b/geom_bottleneck/tests/data/test_469_A @@ -0,0 +1,7 @@ +60 115 +77 137 +40 98 +11 59 +16 29 +60 98 +86 149 diff --git a/geom_bottleneck/tests/data/test_469_B b/geom_bottleneck/tests/data/test_469_B new file mode 100644 index 0000000..e6de4fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_469_B @@ -0,0 +1,7 @@ +28 101 +15 65 +55 67 +40 73 +14 69 +87 117 +83 137 diff --git a/geom_bottleneck/tests/data/test_470_A b/geom_bottleneck/tests/data/test_470_A new file mode 100644 index 0000000..5f2fd6b --- /dev/null +++ b/geom_bottleneck/tests/data/test_470_A @@ -0,0 +1,7 @@ +1 17 +80 137 +31 128 +78 83 +95 188 +94 150 +7 103 diff --git a/geom_bottleneck/tests/data/test_470_B b/geom_bottleneck/tests/data/test_470_B new file mode 100644 index 0000000..5db84e8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_470_B @@ -0,0 +1,7 @@ +85 178 +3 52 +99 189 +95 115 +98 183 +0 60 +22 120 diff --git a/geom_bottleneck/tests/data/test_471_A b/geom_bottleneck/tests/data/test_471_A new file mode 100644 index 0000000..e88e5ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_471_A @@ -0,0 +1,7 @@ +58 107 +6 86 +44 47 +12 97 +48 133 +89 111 +94 155 diff --git a/geom_bottleneck/tests/data/test_471_B b/geom_bottleneck/tests/data/test_471_B new file mode 100644 index 0000000..26065c0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_471_B @@ -0,0 +1,7 @@ +51 115 +25 51 +77 165 +21 116 +19 21 +11 77 +5 9 diff --git a/geom_bottleneck/tests/data/test_472_A b/geom_bottleneck/tests/data/test_472_A new file mode 100644 index 0000000..bd2ec1a --- /dev/null +++ b/geom_bottleneck/tests/data/test_472_A @@ -0,0 +1,7 @@ +68 75 +12 88 +15 84 +33 120 +76 160 +23 56 +16 116 diff --git a/geom_bottleneck/tests/data/test_472_B b/geom_bottleneck/tests/data/test_472_B new file mode 100644 index 0000000..3914a18 --- /dev/null +++ b/geom_bottleneck/tests/data/test_472_B @@ -0,0 +1,7 @@ +75 129 +58 68 +36 119 +11 59 +25 42 +50 65 +12 28 diff --git a/geom_bottleneck/tests/data/test_473_A b/geom_bottleneck/tests/data/test_473_A new file mode 100644 index 0000000..d8e4ed1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_473_A @@ -0,0 +1,7 @@ +86 119 +34 71 +91 182 +97 170 +73 104 +71 160 +26 120 diff --git a/geom_bottleneck/tests/data/test_473_B b/geom_bottleneck/tests/data/test_473_B new file mode 100644 index 0000000..1ce2c2f --- /dev/null +++ b/geom_bottleneck/tests/data/test_473_B @@ -0,0 +1,7 @@ +53 111 +78 111 +99 134 +42 70 +70 84 +52 85 +55 154 diff --git a/geom_bottleneck/tests/data/test_474_A b/geom_bottleneck/tests/data/test_474_A new file mode 100644 index 0000000..30c9ad1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_474_A @@ -0,0 +1,7 @@ +84 139 +74 167 +0 76 +6 33 +73 165 +80 173 +28 38 diff --git a/geom_bottleneck/tests/data/test_474_B b/geom_bottleneck/tests/data/test_474_B new file mode 100644 index 0000000..35c507a --- /dev/null +++ b/geom_bottleneck/tests/data/test_474_B @@ -0,0 +1,7 @@ +76 134 +38 118 +37 87 +61 110 +59 79 +67 75 +45 100 diff --git a/geom_bottleneck/tests/data/test_475_A b/geom_bottleneck/tests/data/test_475_A new file mode 100644 index 0000000..05023db --- /dev/null +++ b/geom_bottleneck/tests/data/test_475_A @@ -0,0 +1,7 @@ +17 92 +69 112 +37 83 +62 116 +69 85 +63 92 +31 55 diff --git a/geom_bottleneck/tests/data/test_475_B b/geom_bottleneck/tests/data/test_475_B new file mode 100644 index 0000000..0fcc2d0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_475_B @@ -0,0 +1,7 @@ +18 105 +66 104 +36 67 +50 61 +44 118 +75 99 +41 49 diff --git a/geom_bottleneck/tests/data/test_476_A b/geom_bottleneck/tests/data/test_476_A new file mode 100644 index 0000000..0c4ede1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_476_A @@ -0,0 +1,7 @@ +14 109 +64 142 +98 152 +34 115 +47 100 +85 99 +0 7 diff --git a/geom_bottleneck/tests/data/test_476_B b/geom_bottleneck/tests/data/test_476_B new file mode 100644 index 0000000..ae68bae --- /dev/null +++ b/geom_bottleneck/tests/data/test_476_B @@ -0,0 +1,7 @@ +99 172 +23 91 +0 80 +89 102 +21 56 +86 169 +48 116 diff --git a/geom_bottleneck/tests/data/test_477_A b/geom_bottleneck/tests/data/test_477_A new file mode 100644 index 0000000..719e1b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_477_A @@ -0,0 +1,7 @@ +2 87 +9 51 +78 81 +26 122 +54 126 +66 128 +88 139 diff --git a/geom_bottleneck/tests/data/test_477_B b/geom_bottleneck/tests/data/test_477_B new file mode 100644 index 0000000..6c2e706 --- /dev/null +++ b/geom_bottleneck/tests/data/test_477_B @@ -0,0 +1,7 @@ +9 55 +60 64 +26 57 +6 74 +70 103 +84 87 +35 56 diff --git a/geom_bottleneck/tests/data/test_478_A b/geom_bottleneck/tests/data/test_478_A new file mode 100644 index 0000000..61b09a8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_478_A @@ -0,0 +1,7 @@ +76 114 +41 48 +16 34 +28 80 +100 119 +57 64 +53 104 diff --git a/geom_bottleneck/tests/data/test_478_B b/geom_bottleneck/tests/data/test_478_B new file mode 100644 index 0000000..a302122 --- /dev/null +++ b/geom_bottleneck/tests/data/test_478_B @@ -0,0 +1,7 @@ +81 179 +64 112 +9 49 +64 132 +15 81 +97 137 +17 39 diff --git a/geom_bottleneck/tests/data/test_479_A b/geom_bottleneck/tests/data/test_479_A new file mode 100644 index 0000000..b956a54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_479_A @@ -0,0 +1,7 @@ +31 104 +56 83 +21 87 +76 135 +63 126 +89 134 +74 159 diff --git a/geom_bottleneck/tests/data/test_479_B b/geom_bottleneck/tests/data/test_479_B new file mode 100644 index 0000000..10d8948 --- /dev/null +++ b/geom_bottleneck/tests/data/test_479_B @@ -0,0 +1,7 @@ +98 131 +8 98 +96 101 +78 146 +6 35 +88 116 +82 88 diff --git a/geom_bottleneck/tests/data/test_480_A b/geom_bottleneck/tests/data/test_480_A new file mode 100644 index 0000000..6ad5182 --- /dev/null +++ b/geom_bottleneck/tests/data/test_480_A @@ -0,0 +1,8 @@ +75 137 +100 185 +65 142 +7 8 +25 44 +39 108 +94 99 +6 78 diff --git a/geom_bottleneck/tests/data/test_480_B b/geom_bottleneck/tests/data/test_480_B new file mode 100644 index 0000000..246f278 --- /dev/null +++ b/geom_bottleneck/tests/data/test_480_B @@ -0,0 +1,8 @@ +80 156 +94 180 +55 143 +39 93 +72 170 +76 176 +72 160 +36 59 diff --git a/geom_bottleneck/tests/data/test_481_A b/geom_bottleneck/tests/data/test_481_A new file mode 100644 index 0000000..8e414ab --- /dev/null +++ b/geom_bottleneck/tests/data/test_481_A @@ -0,0 +1,8 @@ +4 61 +27 91 +83 153 +1 25 +25 33 +71 76 +5 103 +8 34 diff --git a/geom_bottleneck/tests/data/test_481_B b/geom_bottleneck/tests/data/test_481_B new file mode 100644 index 0000000..5596312 --- /dev/null +++ b/geom_bottleneck/tests/data/test_481_B @@ -0,0 +1,8 @@ +59 143 +99 148 +21 32 +60 71 +16 51 +78 90 +11 77 +56 145 diff --git a/geom_bottleneck/tests/data/test_482_A b/geom_bottleneck/tests/data/test_482_A new file mode 100644 index 0000000..b40bc32 --- /dev/null +++ b/geom_bottleneck/tests/data/test_482_A @@ -0,0 +1,8 @@ +56 139 +4 18 +16 47 +99 186 +16 63 +44 50 +99 187 +30 85 diff --git a/geom_bottleneck/tests/data/test_482_B b/geom_bottleneck/tests/data/test_482_B new file mode 100644 index 0000000..04b23b5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_482_B @@ -0,0 +1,8 @@ +84 162 +22 52 +12 98 +59 106 +86 155 +93 108 +75 119 +18 20 diff --git a/geom_bottleneck/tests/data/test_483_A b/geom_bottleneck/tests/data/test_483_A new file mode 100644 index 0000000..7ef0f99 --- /dev/null +++ b/geom_bottleneck/tests/data/test_483_A @@ -0,0 +1,8 @@ +10 13 +53 81 +57 151 +81 148 +91 132 +9 89 +11 65 +29 85 diff --git a/geom_bottleneck/tests/data/test_483_B b/geom_bottleneck/tests/data/test_483_B new file mode 100644 index 0000000..eabdee1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_483_B @@ -0,0 +1,8 @@ +87 187 +79 111 +41 93 +54 76 +27 86 +97 150 +97 185 +36 37 diff --git a/geom_bottleneck/tests/data/test_484_A b/geom_bottleneck/tests/data/test_484_A new file mode 100644 index 0000000..11fa5dd --- /dev/null +++ b/geom_bottleneck/tests/data/test_484_A @@ -0,0 +1,8 @@ +58 147 +24 70 +83 171 +78 91 +55 86 +83 168 +40 125 +75 121 diff --git a/geom_bottleneck/tests/data/test_484_B b/geom_bottleneck/tests/data/test_484_B new file mode 100644 index 0000000..2dda740 --- /dev/null +++ b/geom_bottleneck/tests/data/test_484_B @@ -0,0 +1,8 @@ +55 66 +48 100 +69 123 +84 152 +56 155 +87 99 +83 167 +39 49 diff --git a/geom_bottleneck/tests/data/test_485_A b/geom_bottleneck/tests/data/test_485_A new file mode 100644 index 0000000..bd500dd --- /dev/null +++ b/geom_bottleneck/tests/data/test_485_A @@ -0,0 +1,8 @@ +64 81 +52 69 +62 74 +3 79 +24 117 +81 133 +5 37 +53 90 diff --git a/geom_bottleneck/tests/data/test_485_B b/geom_bottleneck/tests/data/test_485_B new file mode 100644 index 0000000..a117670 --- /dev/null +++ b/geom_bottleneck/tests/data/test_485_B @@ -0,0 +1,8 @@ +80 97 +10 69 +49 123 +28 123 +92 135 +19 107 +7 53 +99 165 diff --git a/geom_bottleneck/tests/data/test_486_A b/geom_bottleneck/tests/data/test_486_A new file mode 100644 index 0000000..4dcc3ca --- /dev/null +++ b/geom_bottleneck/tests/data/test_486_A @@ -0,0 +1,8 @@ +76 162 +58 117 +91 152 +96 137 +45 49 +64 156 +35 64 +42 114 diff --git a/geom_bottleneck/tests/data/test_486_B b/geom_bottleneck/tests/data/test_486_B new file mode 100644 index 0000000..c808dc5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_486_B @@ -0,0 +1,8 @@ +35 95 +0 78 +61 78 +100 110 +100 106 +56 91 +97 133 +87 176 diff --git a/geom_bottleneck/tests/data/test_487_A b/geom_bottleneck/tests/data/test_487_A new file mode 100644 index 0000000..7250b20 --- /dev/null +++ b/geom_bottleneck/tests/data/test_487_A @@ -0,0 +1,8 @@ +78 114 +95 110 +22 47 +95 181 +6 76 +47 89 +10 27 +69 102 diff --git a/geom_bottleneck/tests/data/test_487_B b/geom_bottleneck/tests/data/test_487_B new file mode 100644 index 0000000..b0a4119 --- /dev/null +++ b/geom_bottleneck/tests/data/test_487_B @@ -0,0 +1,8 @@ +31 113 +71 115 +10 97 +97 101 +30 61 +79 157 +56 89 +96 184 diff --git a/geom_bottleneck/tests/data/test_488_A b/geom_bottleneck/tests/data/test_488_A new file mode 100644 index 0000000..92f19ab --- /dev/null +++ b/geom_bottleneck/tests/data/test_488_A @@ -0,0 +1,8 @@ +7 28 +32 59 +64 84 +71 156 +89 166 +67 154 +54 89 +49 78 diff --git a/geom_bottleneck/tests/data/test_488_B b/geom_bottleneck/tests/data/test_488_B new file mode 100644 index 0000000..712480d --- /dev/null +++ b/geom_bottleneck/tests/data/test_488_B @@ -0,0 +1,8 @@ +54 128 +20 59 +64 135 +80 106 +35 88 +93 187 +4 5 +73 126 diff --git a/geom_bottleneck/tests/data/test_489_A b/geom_bottleneck/tests/data/test_489_A new file mode 100644 index 0000000..f1c9abf --- /dev/null +++ b/geom_bottleneck/tests/data/test_489_A @@ -0,0 +1,8 @@ +52 74 +59 74 +83 84 +51 135 +41 132 +29 113 +7 65 +97 176 diff --git a/geom_bottleneck/tests/data/test_489_B b/geom_bottleneck/tests/data/test_489_B new file mode 100644 index 0000000..5c5316f --- /dev/null +++ b/geom_bottleneck/tests/data/test_489_B @@ -0,0 +1,8 @@ +43 126 +23 64 +16 111 +96 97 +84 112 +39 85 +33 74 +39 97 diff --git a/geom_bottleneck/tests/data/test_490_A b/geom_bottleneck/tests/data/test_490_A new file mode 100644 index 0000000..e907d09 --- /dev/null +++ b/geom_bottleneck/tests/data/test_490_A @@ -0,0 +1,8 @@ +93 146 +47 99 +6 55 +19 66 +15 28 +2 93 +97 143 +52 125 diff --git a/geom_bottleneck/tests/data/test_490_B b/geom_bottleneck/tests/data/test_490_B new file mode 100644 index 0000000..6368e47 --- /dev/null +++ b/geom_bottleneck/tests/data/test_490_B @@ -0,0 +1,8 @@ +82 172 +98 155 +73 119 +50 133 +13 84 +53 73 +5 21 +82 83 diff --git a/geom_bottleneck/tests/data/test_491_A b/geom_bottleneck/tests/data/test_491_A new file mode 100644 index 0000000..9fdc2fb --- /dev/null +++ b/geom_bottleneck/tests/data/test_491_A @@ -0,0 +1,8 @@ +12 35 +75 82 +45 91 +18 27 +99 178 +35 37 +46 113 +70 94 diff --git a/geom_bottleneck/tests/data/test_491_B b/geom_bottleneck/tests/data/test_491_B new file mode 100644 index 0000000..09cd4ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_491_B @@ -0,0 +1,8 @@ +76 121 +84 172 +70 167 +57 143 +4 52 +69 159 +10 100 +96 153 diff --git a/geom_bottleneck/tests/data/test_492_A b/geom_bottleneck/tests/data/test_492_A new file mode 100644 index 0000000..434683d --- /dev/null +++ b/geom_bottleneck/tests/data/test_492_A @@ -0,0 +1,8 @@ +21 92 +42 105 +79 166 +41 78 +72 87 +25 49 +78 104 +60 115 diff --git a/geom_bottleneck/tests/data/test_492_B b/geom_bottleneck/tests/data/test_492_B new file mode 100644 index 0000000..3f6f5fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_492_B @@ -0,0 +1,8 @@ +80 94 +66 106 +36 79 +12 20 +28 36 +94 155 +62 100 +77 136 diff --git a/geom_bottleneck/tests/data/test_493_A b/geom_bottleneck/tests/data/test_493_A new file mode 100644 index 0000000..12cfc64 --- /dev/null +++ b/geom_bottleneck/tests/data/test_493_A @@ -0,0 +1,8 @@ +14 46 +79 109 +49 92 +100 181 +32 44 +15 16 +59 62 +66 127 diff --git a/geom_bottleneck/tests/data/test_493_B b/geom_bottleneck/tests/data/test_493_B new file mode 100644 index 0000000..43dcf08 --- /dev/null +++ b/geom_bottleneck/tests/data/test_493_B @@ -0,0 +1,8 @@ +18 21 +74 155 +36 57 +28 41 +15 40 +94 133 +72 153 +42 135 diff --git a/geom_bottleneck/tests/data/test_494_A b/geom_bottleneck/tests/data/test_494_A new file mode 100644 index 0000000..b35b505 --- /dev/null +++ b/geom_bottleneck/tests/data/test_494_A @@ -0,0 +1,8 @@ +31 40 +44 129 +74 92 +41 132 +79 105 +18 58 +93 123 +8 39 diff --git a/geom_bottleneck/tests/data/test_494_B b/geom_bottleneck/tests/data/test_494_B new file mode 100644 index 0000000..fb70ed6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_494_B @@ -0,0 +1,8 @@ +86 165 +30 101 +85 185 +15 71 +75 175 +61 141 +43 81 +90 128 diff --git a/geom_bottleneck/tests/data/test_495_A b/geom_bottleneck/tests/data/test_495_A new file mode 100644 index 0000000..c244b7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_495_A @@ -0,0 +1,8 @@ +90 133 +48 84 +48 126 +0 80 +8 17 +60 82 +17 48 +9 74 diff --git a/geom_bottleneck/tests/data/test_495_B b/geom_bottleneck/tests/data/test_495_B new file mode 100644 index 0000000..4bd121d --- /dev/null +++ b/geom_bottleneck/tests/data/test_495_B @@ -0,0 +1,8 @@ +19 25 +39 63 +0 3 +39 86 +72 91 +27 85 +97 141 +79 174 diff --git a/geom_bottleneck/tests/data/test_496_A b/geom_bottleneck/tests/data/test_496_A new file mode 100644 index 0000000..cc2cc0b --- /dev/null +++ b/geom_bottleneck/tests/data/test_496_A @@ -0,0 +1,8 @@ +79 127 +84 146 +58 143 +28 68 +35 100 +38 126 +24 89 +32 70 diff --git a/geom_bottleneck/tests/data/test_496_B b/geom_bottleneck/tests/data/test_496_B new file mode 100644 index 0000000..5b8aeaa --- /dev/null +++ b/geom_bottleneck/tests/data/test_496_B @@ -0,0 +1,8 @@ +9 61 +68 125 +4 98 +98 99 +49 67 +41 50 +38 61 +24 44 diff --git a/geom_bottleneck/tests/data/test_497_A b/geom_bottleneck/tests/data/test_497_A new file mode 100644 index 0000000..b3b511d --- /dev/null +++ b/geom_bottleneck/tests/data/test_497_A @@ -0,0 +1,8 @@ +19 24 +89 174 +47 137 +93 131 +50 127 +6 34 +99 118 +86 98 diff --git a/geom_bottleneck/tests/data/test_497_B b/geom_bottleneck/tests/data/test_497_B new file mode 100644 index 0000000..8870c73 --- /dev/null +++ b/geom_bottleneck/tests/data/test_497_B @@ -0,0 +1,8 @@ +0 69 +39 100 +58 156 +37 74 +47 62 +81 172 +81 175 +56 147 diff --git a/geom_bottleneck/tests/data/test_498_A b/geom_bottleneck/tests/data/test_498_A new file mode 100644 index 0000000..5bef5fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_498_A @@ -0,0 +1,8 @@ +55 140 +94 160 +22 35 +42 89 +50 127 +8 59 +25 87 +35 103 diff --git a/geom_bottleneck/tests/data/test_498_B b/geom_bottleneck/tests/data/test_498_B new file mode 100644 index 0000000..b1ed38a --- /dev/null +++ b/geom_bottleneck/tests/data/test_498_B @@ -0,0 +1,8 @@ +88 164 +14 29 +13 19 +3 49 +86 107 +62 138 +72 77 +2 22 diff --git a/geom_bottleneck/tests/data/test_499_A b/geom_bottleneck/tests/data/test_499_A new file mode 100644 index 0000000..a24f367 --- /dev/null +++ b/geom_bottleneck/tests/data/test_499_A @@ -0,0 +1,8 @@ +35 68 +22 25 +87 132 +23 119 +64 131 +13 106 +8 22 +83 169 diff --git a/geom_bottleneck/tests/data/test_499_B b/geom_bottleneck/tests/data/test_499_B new file mode 100644 index 0000000..24d0d92 --- /dev/null +++ b/geom_bottleneck/tests/data/test_499_B @@ -0,0 +1,8 @@ +27 105 +66 84 +76 101 +96 126 +40 103 +82 159 +41 45 +58 97 diff --git a/geom_bottleneck/tests/data/test_500_A b/geom_bottleneck/tests/data/test_500_A new file mode 100644 index 0000000..ed86941 --- /dev/null +++ b/geom_bottleneck/tests/data/test_500_A @@ -0,0 +1,9 @@ +96 120 +81 139 +35 58 +14 38 +23 33 +44 97 +26 61 +47 74 +75 124 diff --git a/geom_bottleneck/tests/data/test_500_B b/geom_bottleneck/tests/data/test_500_B new file mode 100644 index 0000000..58f0cd6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_500_B @@ -0,0 +1,9 @@ +57 153 +7 107 +56 78 +67 90 +14 86 +97 112 +5 45 +55 151 +51 133 diff --git a/geom_bottleneck/tests/data/test_501_A b/geom_bottleneck/tests/data/test_501_A new file mode 100644 index 0000000..b6f9335 --- /dev/null +++ b/geom_bottleneck/tests/data/test_501_A @@ -0,0 +1,9 @@ +57 145 +1 34 +98 129 +25 26 +19 94 +90 187 +62 160 +70 115 +88 160 diff --git a/geom_bottleneck/tests/data/test_501_B b/geom_bottleneck/tests/data/test_501_B new file mode 100644 index 0000000..af0d32b --- /dev/null +++ b/geom_bottleneck/tests/data/test_501_B @@ -0,0 +1,9 @@ +77 100 +34 41 +79 99 +27 65 +30 69 +58 96 +98 195 +45 144 +82 147 diff --git a/geom_bottleneck/tests/data/test_502_A b/geom_bottleneck/tests/data/test_502_A new file mode 100644 index 0000000..64c4bfe --- /dev/null +++ b/geom_bottleneck/tests/data/test_502_A @@ -0,0 +1,9 @@ +78 102 +66 134 +42 104 +17 68 +33 113 +84 160 +86 119 +32 73 +6 19 diff --git a/geom_bottleneck/tests/data/test_502_B b/geom_bottleneck/tests/data/test_502_B new file mode 100644 index 0000000..4b1bb48 --- /dev/null +++ b/geom_bottleneck/tests/data/test_502_B @@ -0,0 +1,9 @@ +2 25 +80 119 +56 147 +94 99 +51 116 +29 109 +89 180 +45 75 +93 170 diff --git a/geom_bottleneck/tests/data/test_503_A b/geom_bottleneck/tests/data/test_503_A new file mode 100644 index 0000000..7686e8d --- /dev/null +++ b/geom_bottleneck/tests/data/test_503_A @@ -0,0 +1,9 @@ +53 55 +1 67 +100 128 +27 39 +17 62 +66 98 +49 85 +13 14 +72 91 diff --git a/geom_bottleneck/tests/data/test_503_B b/geom_bottleneck/tests/data/test_503_B new file mode 100644 index 0000000..c662290 --- /dev/null +++ b/geom_bottleneck/tests/data/test_503_B @@ -0,0 +1,9 @@ +74 110 +99 192 +22 56 +19 40 +63 99 +31 44 +28 122 +89 161 +85 184 diff --git a/geom_bottleneck/tests/data/test_504_A b/geom_bottleneck/tests/data/test_504_A new file mode 100644 index 0000000..7b0bcd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_504_A @@ -0,0 +1,9 @@ +52 60 +30 76 +55 91 +83 91 +23 53 +64 68 +12 106 +54 99 +0 83 diff --git a/geom_bottleneck/tests/data/test_504_B b/geom_bottleneck/tests/data/test_504_B new file mode 100644 index 0000000..1fb9704 --- /dev/null +++ b/geom_bottleneck/tests/data/test_504_B @@ -0,0 +1,9 @@ +10 57 +0 87 +74 85 +13 91 +48 59 +21 109 +85 141 +70 151 +24 103 diff --git a/geom_bottleneck/tests/data/test_505_A b/geom_bottleneck/tests/data/test_505_A new file mode 100644 index 0000000..fd80b53 --- /dev/null +++ b/geom_bottleneck/tests/data/test_505_A @@ -0,0 +1,9 @@ +90 183 +100 112 +33 120 +94 114 +96 190 +70 109 +22 102 +71 126 +99 150 diff --git a/geom_bottleneck/tests/data/test_505_B b/geom_bottleneck/tests/data/test_505_B new file mode 100644 index 0000000..9bd046e --- /dev/null +++ b/geom_bottleneck/tests/data/test_505_B @@ -0,0 +1,9 @@ +18 83 +61 159 +73 138 +51 137 +20 96 +89 185 +13 52 +54 134 +24 35 diff --git a/geom_bottleneck/tests/data/test_506_A b/geom_bottleneck/tests/data/test_506_A new file mode 100644 index 0000000..1f5e9ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_506_A @@ -0,0 +1,9 @@ +95 117 +41 138 +52 118 +82 163 +9 22 +58 156 +7 74 +24 42 +96 158 diff --git a/geom_bottleneck/tests/data/test_506_B b/geom_bottleneck/tests/data/test_506_B new file mode 100644 index 0000000..0dc89b8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_506_B @@ -0,0 +1,9 @@ +91 134 +78 119 +94 141 +5 57 +34 55 +43 101 +27 116 +41 72 +98 126 diff --git a/geom_bottleneck/tests/data/test_507_A b/geom_bottleneck/tests/data/test_507_A new file mode 100644 index 0000000..a6d164e --- /dev/null +++ b/geom_bottleneck/tests/data/test_507_A @@ -0,0 +1,9 @@ +34 62 +21 105 +41 63 +74 99 +52 95 +89 100 +11 82 +74 83 +78 132 diff --git a/geom_bottleneck/tests/data/test_507_B b/geom_bottleneck/tests/data/test_507_B new file mode 100644 index 0000000..b39a7fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_507_B @@ -0,0 +1,9 @@ +49 76 +24 57 +25 101 +9 99 +65 146 +23 43 +89 165 +63 138 +50 76 diff --git a/geom_bottleneck/tests/data/test_508_A b/geom_bottleneck/tests/data/test_508_A new file mode 100644 index 0000000..c837ce3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_508_A @@ -0,0 +1,9 @@ +59 141 +59 74 +0 5 +11 105 +15 58 +43 117 +47 93 +60 149 +69 92 diff --git a/geom_bottleneck/tests/data/test_508_B b/geom_bottleneck/tests/data/test_508_B new file mode 100644 index 0000000..733b5a0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_508_B @@ -0,0 +1,9 @@ +29 104 +50 67 +43 82 +86 102 +45 81 +19 106 +74 124 +77 150 +80 104 diff --git a/geom_bottleneck/tests/data/test_509_A b/geom_bottleneck/tests/data/test_509_A new file mode 100644 index 0000000..98137f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_509_A @@ -0,0 +1,9 @@ +40 74 +89 138 +20 44 +56 65 +12 14 +87 149 +23 123 +12 28 +56 146 diff --git a/geom_bottleneck/tests/data/test_509_B b/geom_bottleneck/tests/data/test_509_B new file mode 100644 index 0000000..1edd08c --- /dev/null +++ b/geom_bottleneck/tests/data/test_509_B @@ -0,0 +1,9 @@ +89 153 +20 65 +87 128 +27 101 +23 71 +6 53 +50 128 +16 108 +92 157 diff --git a/geom_bottleneck/tests/data/test_510_A b/geom_bottleneck/tests/data/test_510_A new file mode 100644 index 0000000..b1e0e68 --- /dev/null +++ b/geom_bottleneck/tests/data/test_510_A @@ -0,0 +1,9 @@ +67 70 +99 197 +62 111 +25 59 +61 131 +34 108 +99 185 +73 125 +76 130 diff --git a/geom_bottleneck/tests/data/test_510_B b/geom_bottleneck/tests/data/test_510_B new file mode 100644 index 0000000..8e48152 --- /dev/null +++ b/geom_bottleneck/tests/data/test_510_B @@ -0,0 +1,9 @@ +72 74 +57 126 +32 106 +55 88 +75 167 +5 34 +46 72 +86 104 +30 129 diff --git a/geom_bottleneck/tests/data/test_511_A b/geom_bottleneck/tests/data/test_511_A new file mode 100644 index 0000000..a2c6b34 --- /dev/null +++ b/geom_bottleneck/tests/data/test_511_A @@ -0,0 +1,9 @@ +10 56 +84 163 +34 131 +32 106 +61 84 +71 106 +17 32 +23 43 +44 79 diff --git a/geom_bottleneck/tests/data/test_511_B b/geom_bottleneck/tests/data/test_511_B new file mode 100644 index 0000000..ff48216 --- /dev/null +++ b/geom_bottleneck/tests/data/test_511_B @@ -0,0 +1,9 @@ +57 66 +89 124 +93 120 +72 119 +83 125 +1 17 +25 97 +32 90 +89 135 diff --git a/geom_bottleneck/tests/data/test_512_A b/geom_bottleneck/tests/data/test_512_A new file mode 100644 index 0000000..8f875d8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_512_A @@ -0,0 +1,9 @@ +88 136 +21 65 +12 82 +35 48 +97 127 +38 89 +69 71 +47 107 +91 127 diff --git a/geom_bottleneck/tests/data/test_512_B b/geom_bottleneck/tests/data/test_512_B new file mode 100644 index 0000000..c6988c1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_512_B @@ -0,0 +1,9 @@ +59 98 +88 114 +90 122 +83 147 +95 153 +9 56 +14 54 +25 70 +47 60 diff --git a/geom_bottleneck/tests/data/test_513_A b/geom_bottleneck/tests/data/test_513_A new file mode 100644 index 0000000..844c16d --- /dev/null +++ b/geom_bottleneck/tests/data/test_513_A @@ -0,0 +1,9 @@ +34 45 +64 149 +94 147 +34 73 +15 91 +2 53 +46 99 +70 100 +28 62 diff --git a/geom_bottleneck/tests/data/test_513_B b/geom_bottleneck/tests/data/test_513_B new file mode 100644 index 0000000..ee75f8c --- /dev/null +++ b/geom_bottleneck/tests/data/test_513_B @@ -0,0 +1,9 @@ +14 50 +76 112 +46 60 +45 94 +73 150 +79 128 +5 72 +44 87 +25 97 diff --git a/geom_bottleneck/tests/data/test_514_A b/geom_bottleneck/tests/data/test_514_A new file mode 100644 index 0000000..9b58831 --- /dev/null +++ b/geom_bottleneck/tests/data/test_514_A @@ -0,0 +1,9 @@ +4 78 +32 82 +56 106 +56 135 +0 1 +18 103 +29 65 +50 82 +68 82 diff --git a/geom_bottleneck/tests/data/test_514_B b/geom_bottleneck/tests/data/test_514_B new file mode 100644 index 0000000..39c6534 --- /dev/null +++ b/geom_bottleneck/tests/data/test_514_B @@ -0,0 +1,9 @@ +34 63 +63 145 +40 63 +3 93 +57 123 +32 51 +100 115 +23 32 +21 23 diff --git a/geom_bottleneck/tests/data/test_515_A b/geom_bottleneck/tests/data/test_515_A new file mode 100644 index 0000000..fc2578b --- /dev/null +++ b/geom_bottleneck/tests/data/test_515_A @@ -0,0 +1,9 @@ +32 33 +77 131 +64 160 +26 35 +77 106 +69 70 +98 106 +29 107 +65 69 diff --git a/geom_bottleneck/tests/data/test_515_B b/geom_bottleneck/tests/data/test_515_B new file mode 100644 index 0000000..715f6e5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_515_B @@ -0,0 +1,9 @@ +86 101 +89 138 +100 133 +81 103 +9 16 +79 133 +30 113 +98 195 +2 86 diff --git a/geom_bottleneck/tests/data/test_516_A b/geom_bottleneck/tests/data/test_516_A new file mode 100644 index 0000000..bd37e5d --- /dev/null +++ b/geom_bottleneck/tests/data/test_516_A @@ -0,0 +1,9 @@ +80 178 +95 153 +66 133 +12 74 +59 87 +85 165 +36 89 +57 145 +85 177 diff --git a/geom_bottleneck/tests/data/test_516_B b/geom_bottleneck/tests/data/test_516_B new file mode 100644 index 0000000..8d23127 --- /dev/null +++ b/geom_bottleneck/tests/data/test_516_B @@ -0,0 +1,9 @@ +29 85 +39 41 +50 99 +16 76 +82 131 +20 107 +20 25 +91 105 +98 172 diff --git a/geom_bottleneck/tests/data/test_517_A b/geom_bottleneck/tests/data/test_517_A new file mode 100644 index 0000000..17ca01c --- /dev/null +++ b/geom_bottleneck/tests/data/test_517_A @@ -0,0 +1,9 @@ +39 41 +60 128 +14 32 +52 138 +74 79 +52 100 +4 39 +53 145 +33 127 diff --git a/geom_bottleneck/tests/data/test_517_B b/geom_bottleneck/tests/data/test_517_B new file mode 100644 index 0000000..ba82599 --- /dev/null +++ b/geom_bottleneck/tests/data/test_517_B @@ -0,0 +1,9 @@ +31 113 +54 116 +69 151 +9 18 +60 62 +0 22 +93 162 +15 62 +63 148 diff --git a/geom_bottleneck/tests/data/test_518_A b/geom_bottleneck/tests/data/test_518_A new file mode 100644 index 0000000..bb1711c --- /dev/null +++ b/geom_bottleneck/tests/data/test_518_A @@ -0,0 +1,9 @@ +49 70 +63 113 +60 158 +17 111 +37 112 +35 101 +3 51 +89 126 +91 129 diff --git a/geom_bottleneck/tests/data/test_518_B b/geom_bottleneck/tests/data/test_518_B new file mode 100644 index 0000000..5b2e95a --- /dev/null +++ b/geom_bottleneck/tests/data/test_518_B @@ -0,0 +1,9 @@ +7 97 +72 146 +59 147 +89 103 +72 169 +43 65 +29 98 +28 44 +14 40 diff --git a/geom_bottleneck/tests/data/test_519_A b/geom_bottleneck/tests/data/test_519_A new file mode 100644 index 0000000..f0cb6ea --- /dev/null +++ b/geom_bottleneck/tests/data/test_519_A @@ -0,0 +1,9 @@ +6 92 +25 100 +99 156 +12 89 +3 102 +32 107 +13 40 +79 94 +33 118 diff --git a/geom_bottleneck/tests/data/test_519_B b/geom_bottleneck/tests/data/test_519_B new file mode 100644 index 0000000..03396db --- /dev/null +++ b/geom_bottleneck/tests/data/test_519_B @@ -0,0 +1,9 @@ +32 46 +61 155 +98 180 +10 89 +86 127 +0 4 +51 65 +9 85 +32 85 diff --git a/geom_bottleneck/tests/data/test_520_A b/geom_bottleneck/tests/data/test_520_A new file mode 100644 index 0000000..9353285 --- /dev/null +++ b/geom_bottleneck/tests/data/test_520_A @@ -0,0 +1,10 @@ +91 117 +68 132 +36 70 +20 75 +47 97 +50 84 +9 79 +63 70 +0 48 +15 75 diff --git a/geom_bottleneck/tests/data/test_520_B b/geom_bottleneck/tests/data/test_520_B new file mode 100644 index 0000000..1e328cd --- /dev/null +++ b/geom_bottleneck/tests/data/test_520_B @@ -0,0 +1,10 @@ +35 51 +16 23 +4 91 +69 133 +21 30 +80 169 +55 100 +34 76 +24 30 +97 167 diff --git a/geom_bottleneck/tests/data/test_521_A b/geom_bottleneck/tests/data/test_521_A new file mode 100644 index 0000000..d0bea91 --- /dev/null +++ b/geom_bottleneck/tests/data/test_521_A @@ -0,0 +1,10 @@ +22 45 +99 100 +34 81 +41 104 +1 25 +3 93 +26 88 +4 23 +97 159 +7 19 diff --git a/geom_bottleneck/tests/data/test_521_B b/geom_bottleneck/tests/data/test_521_B new file mode 100644 index 0000000..5e584b0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_521_B @@ -0,0 +1,10 @@ +2 40 +31 85 +57 105 +28 61 +18 111 +95 115 +0 66 +81 167 +96 174 +85 170 diff --git a/geom_bottleneck/tests/data/test_522_A b/geom_bottleneck/tests/data/test_522_A new file mode 100644 index 0000000..5631735 --- /dev/null +++ b/geom_bottleneck/tests/data/test_522_A @@ -0,0 +1,10 @@ +99 187 +92 127 +69 157 +82 161 +94 141 +97 108 +70 94 +20 39 +87 172 +87 122 diff --git a/geom_bottleneck/tests/data/test_522_B b/geom_bottleneck/tests/data/test_522_B new file mode 100644 index 0000000..903bcdc --- /dev/null +++ b/geom_bottleneck/tests/data/test_522_B @@ -0,0 +1,10 @@ +39 51 +28 81 +77 78 +17 52 +42 124 +34 37 +96 117 +39 98 +65 142 +4 72 diff --git a/geom_bottleneck/tests/data/test_523_A b/geom_bottleneck/tests/data/test_523_A new file mode 100644 index 0000000..b4da958 --- /dev/null +++ b/geom_bottleneck/tests/data/test_523_A @@ -0,0 +1,10 @@ +73 158 +5 34 +4 67 +88 109 +46 137 +86 152 +61 113 +61 93 +71 77 +65 157 diff --git a/geom_bottleneck/tests/data/test_523_B b/geom_bottleneck/tests/data/test_523_B new file mode 100644 index 0000000..bcc7438 --- /dev/null +++ b/geom_bottleneck/tests/data/test_523_B @@ -0,0 +1,10 @@ +54 78 +6 86 +63 130 +90 183 +59 89 +96 151 +93 117 +74 147 +20 93 +26 110 diff --git a/geom_bottleneck/tests/data/test_524_A b/geom_bottleneck/tests/data/test_524_A new file mode 100644 index 0000000..e260687 --- /dev/null +++ b/geom_bottleneck/tests/data/test_524_A @@ -0,0 +1,10 @@ +25 116 +12 34 +31 39 +56 152 +47 147 +67 112 +60 146 +77 112 +71 120 +67 75 diff --git a/geom_bottleneck/tests/data/test_524_B b/geom_bottleneck/tests/data/test_524_B new file mode 100644 index 0000000..92a2d76 --- /dev/null +++ b/geom_bottleneck/tests/data/test_524_B @@ -0,0 +1,10 @@ +2 10 +32 42 +24 123 +24 32 +84 135 +49 148 +100 181 +81 137 +63 96 +13 16 diff --git a/geom_bottleneck/tests/data/test_525_A b/geom_bottleneck/tests/data/test_525_A new file mode 100644 index 0000000..25d9d8f --- /dev/null +++ b/geom_bottleneck/tests/data/test_525_A @@ -0,0 +1,10 @@ +51 101 +67 155 +84 155 +67 151 +39 122 +93 167 +83 117 +20 67 +39 136 +54 116 diff --git a/geom_bottleneck/tests/data/test_525_B b/geom_bottleneck/tests/data/test_525_B new file mode 100644 index 0000000..d61ee84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_525_B @@ -0,0 +1,10 @@ +69 120 +93 141 +65 96 +8 81 +27 110 +94 178 +9 89 +1 91 +77 86 +33 49 diff --git a/geom_bottleneck/tests/data/test_526_A b/geom_bottleneck/tests/data/test_526_A new file mode 100644 index 0000000..985ba29 --- /dev/null +++ b/geom_bottleneck/tests/data/test_526_A @@ -0,0 +1,10 @@ +10 27 +53 116 +71 93 +88 122 +45 87 +82 167 +89 105 +20 101 +25 71 +61 124 diff --git a/geom_bottleneck/tests/data/test_526_B b/geom_bottleneck/tests/data/test_526_B new file mode 100644 index 0000000..2ebf00a --- /dev/null +++ b/geom_bottleneck/tests/data/test_526_B @@ -0,0 +1,10 @@ +70 95 +68 69 +13 105 +58 156 +51 97 +64 106 +87 95 +63 85 +62 79 +82 87 diff --git a/geom_bottleneck/tests/data/test_527_A b/geom_bottleneck/tests/data/test_527_A new file mode 100644 index 0000000..802b177 --- /dev/null +++ b/geom_bottleneck/tests/data/test_527_A @@ -0,0 +1,10 @@ +5 27 +91 164 +68 91 +11 72 +37 66 +12 27 +30 47 +54 58 +34 80 +43 133 diff --git a/geom_bottleneck/tests/data/test_527_B b/geom_bottleneck/tests/data/test_527_B new file mode 100644 index 0000000..a04d9f1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_527_B @@ -0,0 +1,10 @@ +88 156 +74 105 +64 69 +96 127 +10 93 +52 107 +58 134 +18 108 +80 108 +93 161 diff --git a/geom_bottleneck/tests/data/test_528_A b/geom_bottleneck/tests/data/test_528_A new file mode 100644 index 0000000..da776dc --- /dev/null +++ b/geom_bottleneck/tests/data/test_528_A @@ -0,0 +1,10 @@ +36 107 +14 86 +45 96 +22 58 +57 103 +92 138 +65 150 +33 94 +40 79 +50 54 diff --git a/geom_bottleneck/tests/data/test_528_B b/geom_bottleneck/tests/data/test_528_B new file mode 100644 index 0000000..5329277 --- /dev/null +++ b/geom_bottleneck/tests/data/test_528_B @@ -0,0 +1,10 @@ +39 122 +19 43 +88 130 +48 106 +27 69 +93 140 +1 23 +50 94 +87 139 +97 151 diff --git a/geom_bottleneck/tests/data/test_529_A b/geom_bottleneck/tests/data/test_529_A new file mode 100644 index 0000000..ebbf6fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_529_A @@ -0,0 +1,10 @@ +80 140 +0 97 +28 29 +15 85 +21 35 +34 74 +26 27 +91 135 +21 36 +33 117 diff --git a/geom_bottleneck/tests/data/test_529_B b/geom_bottleneck/tests/data/test_529_B new file mode 100644 index 0000000..6e0f836 --- /dev/null +++ b/geom_bottleneck/tests/data/test_529_B @@ -0,0 +1,10 @@ +22 46 +0 79 +33 86 +14 99 +71 108 +83 91 +40 69 +36 45 +42 112 +44 75 diff --git a/geom_bottleneck/tests/data/test_530_A b/geom_bottleneck/tests/data/test_530_A new file mode 100644 index 0000000..904eac4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_530_A @@ -0,0 +1,10 @@ +89 119 +35 104 +90 95 +6 77 +44 71 +46 100 +40 127 +11 52 +28 81 +39 73 diff --git a/geom_bottleneck/tests/data/test_530_B b/geom_bottleneck/tests/data/test_530_B new file mode 100644 index 0000000..f4cfc4c --- /dev/null +++ b/geom_bottleneck/tests/data/test_530_B @@ -0,0 +1,10 @@ +79 179 +39 89 +5 67 +39 66 +88 162 +82 97 +80 156 +91 182 +44 110 +56 67 diff --git a/geom_bottleneck/tests/data/test_531_A b/geom_bottleneck/tests/data/test_531_A new file mode 100644 index 0000000..416eb0a --- /dev/null +++ b/geom_bottleneck/tests/data/test_531_A @@ -0,0 +1,10 @@ +33 133 +73 98 +77 129 +21 118 +9 21 +68 166 +13 46 +53 84 +48 75 +24 90 diff --git a/geom_bottleneck/tests/data/test_531_B b/geom_bottleneck/tests/data/test_531_B new file mode 100644 index 0000000..afb424a --- /dev/null +++ b/geom_bottleneck/tests/data/test_531_B @@ -0,0 +1,10 @@ +89 148 +25 112 +86 132 +78 106 +57 70 +92 160 +67 86 +94 123 +12 26 +65 117 diff --git a/geom_bottleneck/tests/data/test_532_A b/geom_bottleneck/tests/data/test_532_A new file mode 100644 index 0000000..7eb97c1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_532_A @@ -0,0 +1,10 @@ +8 62 +77 140 +23 60 +13 93 +67 74 +59 152 +22 65 +16 17 +97 98 +76 91 diff --git a/geom_bottleneck/tests/data/test_532_B b/geom_bottleneck/tests/data/test_532_B new file mode 100644 index 0000000..e86a6a0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_532_B @@ -0,0 +1,10 @@ +66 111 +54 74 +95 142 +96 167 +63 84 +76 84 +53 59 +97 130 +20 68 +5 58 diff --git a/geom_bottleneck/tests/data/test_533_A b/geom_bottleneck/tests/data/test_533_A new file mode 100644 index 0000000..0462a89 --- /dev/null +++ b/geom_bottleneck/tests/data/test_533_A @@ -0,0 +1,10 @@ +66 103 +20 42 +30 31 +61 90 +31 129 +49 53 +2 3 +78 122 +36 103 +59 63 diff --git a/geom_bottleneck/tests/data/test_533_B b/geom_bottleneck/tests/data/test_533_B new file mode 100644 index 0000000..d077aa2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_533_B @@ -0,0 +1,10 @@ +51 121 +9 63 +71 121 +66 100 +89 111 +15 23 +98 110 +15 96 +4 52 +96 119 diff --git a/geom_bottleneck/tests/data/test_534_A b/geom_bottleneck/tests/data/test_534_A new file mode 100644 index 0000000..a5c6b69 --- /dev/null +++ b/geom_bottleneck/tests/data/test_534_A @@ -0,0 +1,10 @@ +84 177 +8 103 +81 176 +0 71 +4 80 +59 123 +42 63 +1 98 +86 169 +31 97 diff --git a/geom_bottleneck/tests/data/test_534_B b/geom_bottleneck/tests/data/test_534_B new file mode 100644 index 0000000..10d4e7b --- /dev/null +++ b/geom_bottleneck/tests/data/test_534_B @@ -0,0 +1,10 @@ +8 56 +35 95 +62 104 +26 105 +32 52 +1 48 +87 150 +61 77 +12 66 +62 96 diff --git a/geom_bottleneck/tests/data/test_535_A b/geom_bottleneck/tests/data/test_535_A new file mode 100644 index 0000000..faaf29f --- /dev/null +++ b/geom_bottleneck/tests/data/test_535_A @@ -0,0 +1,10 @@ +40 53 +9 46 +94 119 +85 113 +2 97 +62 162 +74 89 +87 118 +76 120 +33 39 diff --git a/geom_bottleneck/tests/data/test_535_B b/geom_bottleneck/tests/data/test_535_B new file mode 100644 index 0000000..108c8a3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_535_B @@ -0,0 +1,10 @@ +6 82 +22 100 +2 82 +71 123 +91 179 +14 107 +28 38 +71 83 +6 60 +1 5 diff --git a/geom_bottleneck/tests/data/test_536_A b/geom_bottleneck/tests/data/test_536_A new file mode 100644 index 0000000..320f5af --- /dev/null +++ b/geom_bottleneck/tests/data/test_536_A @@ -0,0 +1,10 @@ +87 179 +24 37 +14 64 +10 103 +92 160 +96 136 +86 171 +21 54 +22 32 +71 169 diff --git a/geom_bottleneck/tests/data/test_536_B b/geom_bottleneck/tests/data/test_536_B new file mode 100644 index 0000000..9ce91f5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_536_B @@ -0,0 +1,10 @@ +73 151 +54 87 +79 166 +69 149 +77 132 +49 149 +86 107 +72 119 +35 77 +52 56 diff --git a/geom_bottleneck/tests/data/test_537_A b/geom_bottleneck/tests/data/test_537_A new file mode 100644 index 0000000..c41e293 --- /dev/null +++ b/geom_bottleneck/tests/data/test_537_A @@ -0,0 +1,10 @@ +4 80 +18 78 +55 56 +32 118 +79 151 +5 78 +11 12 +89 113 +99 120 +26 85 diff --git a/geom_bottleneck/tests/data/test_537_B b/geom_bottleneck/tests/data/test_537_B new file mode 100644 index 0000000..a10f64d --- /dev/null +++ b/geom_bottleneck/tests/data/test_537_B @@ -0,0 +1,10 @@ +53 138 +80 135 +34 112 +20 46 +79 122 +21 87 +82 83 +91 112 +59 139 +9 97 diff --git a/geom_bottleneck/tests/data/test_538_A b/geom_bottleneck/tests/data/test_538_A new file mode 100644 index 0000000..0d98495 --- /dev/null +++ b/geom_bottleneck/tests/data/test_538_A @@ -0,0 +1,10 @@ +68 91 +38 132 +6 57 +24 46 +71 79 +61 129 +59 82 +15 105 +77 79 +44 117 diff --git a/geom_bottleneck/tests/data/test_538_B b/geom_bottleneck/tests/data/test_538_B new file mode 100644 index 0000000..6dde6f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_538_B @@ -0,0 +1,10 @@ +0 89 +73 128 +54 150 +79 98 +62 137 +51 66 +67 99 +31 100 +68 105 +19 30 diff --git a/geom_bottleneck/tests/data/test_539_A b/geom_bottleneck/tests/data/test_539_A new file mode 100644 index 0000000..a844d1c --- /dev/null +++ b/geom_bottleneck/tests/data/test_539_A @@ -0,0 +1,10 @@ +72 140 +32 108 +64 99 +78 130 +74 122 +92 134 +71 75 +14 89 +86 134 +1 36 diff --git a/geom_bottleneck/tests/data/test_539_B b/geom_bottleneck/tests/data/test_539_B new file mode 100644 index 0000000..824a004 --- /dev/null +++ b/geom_bottleneck/tests/data/test_539_B @@ -0,0 +1,10 @@ +2 56 +57 82 +6 38 +60 68 +80 101 +27 57 +56 133 +45 75 +42 103 +38 78 diff --git a/geom_bottleneck/tests/data/test_540_A b/geom_bottleneck/tests/data/test_540_A new file mode 100644 index 0000000..26bd782 --- /dev/null +++ b/geom_bottleneck/tests/data/test_540_A @@ -0,0 +1,20 @@ +98 163 +65 109 +99 135 +11 83 +36 76 +57 84 +97 180 +22 87 +27 51 +92 190 +66 102 +32 76 +78 125 +70 144 +72 127 +50 51 +34 112 +3 39 +37 79 +55 143 diff --git a/geom_bottleneck/tests/data/test_540_B b/geom_bottleneck/tests/data/test_540_B new file mode 100644 index 0000000..224839d --- /dev/null +++ b/geom_bottleneck/tests/data/test_540_B @@ -0,0 +1,20 @@ +90 182 +48 122 +34 109 +78 115 +60 110 +78 134 +58 59 +14 27 +48 94 +63 100 +88 171 +29 123 +20 61 +66 115 +46 61 +5 74 +94 189 +46 80 +85 88 +9 75 diff --git a/geom_bottleneck/tests/data/test_541_A b/geom_bottleneck/tests/data/test_541_A new file mode 100644 index 0000000..fe8039b --- /dev/null +++ b/geom_bottleneck/tests/data/test_541_A @@ -0,0 +1,20 @@ +79 102 +50 71 +80 116 +35 44 +54 112 +89 90 +16 90 +14 30 +44 122 +98 135 +45 68 +46 125 +0 11 +46 94 +75 79 +76 89 +15 82 +84 95 +49 61 +68 123 diff --git a/geom_bottleneck/tests/data/test_541_B b/geom_bottleneck/tests/data/test_541_B new file mode 100644 index 0000000..c33af0e --- /dev/null +++ b/geom_bottleneck/tests/data/test_541_B @@ -0,0 +1,20 @@ +39 108 +72 146 +49 50 +31 72 +84 104 +72 90 +57 81 +14 74 +69 74 +88 157 +9 65 +34 46 +44 87 +39 65 +14 77 +22 116 +5 58 +43 113 +62 120 +85 118 diff --git a/geom_bottleneck/tests/data/test_542_A b/geom_bottleneck/tests/data/test_542_A new file mode 100644 index 0000000..d45ea52 --- /dev/null +++ b/geom_bottleneck/tests/data/test_542_A @@ -0,0 +1,20 @@ +17 49 +64 156 +91 96 +83 142 +90 118 +20 59 +26 69 +82 118 +94 179 +1 20 +81 123 +89 165 +17 71 +60 85 +56 147 +94 175 +82 148 +31 118 +51 95 +12 41 diff --git a/geom_bottleneck/tests/data/test_542_B b/geom_bottleneck/tests/data/test_542_B new file mode 100644 index 0000000..9dcdf8a --- /dev/null +++ b/geom_bottleneck/tests/data/test_542_B @@ -0,0 +1,20 @@ +21 47 +41 90 +78 121 +36 93 +8 108 +78 117 +31 92 +97 102 +12 96 +83 89 +36 85 +2 81 +24 86 +26 105 +10 99 +59 101 +45 98 +94 162 +57 60 +29 81 diff --git a/geom_bottleneck/tests/data/test_543_A b/geom_bottleneck/tests/data/test_543_A new file mode 100644 index 0000000..511fbc1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_543_A @@ -0,0 +1,20 @@ +92 188 +94 159 +77 175 +13 23 +92 186 +85 144 +100 191 +34 48 +58 103 +74 113 +73 95 +34 66 +2 98 +80 95 +82 140 +38 133 +67 121 +65 70 +83 86 +90 143 diff --git a/geom_bottleneck/tests/data/test_543_B b/geom_bottleneck/tests/data/test_543_B new file mode 100644 index 0000000..879080c --- /dev/null +++ b/geom_bottleneck/tests/data/test_543_B @@ -0,0 +1,20 @@ +100 168 +52 97 +35 39 +4 38 +42 55 +47 117 +49 145 +16 48 +99 145 +45 54 +69 129 +8 103 +47 108 +25 70 +93 148 +96 133 +44 49 +94 115 +48 53 +44 109 diff --git a/geom_bottleneck/tests/data/test_544_A b/geom_bottleneck/tests/data/test_544_A new file mode 100644 index 0000000..a355d41 --- /dev/null +++ b/geom_bottleneck/tests/data/test_544_A @@ -0,0 +1,20 @@ +31 114 +22 94 +10 88 +82 134 +28 106 +90 188 +78 130 +87 176 +99 155 +71 116 +39 105 +8 40 +96 184 +53 100 +77 79 +26 96 +30 116 +82 167 +62 122 +95 152 diff --git a/geom_bottleneck/tests/data/test_544_B b/geom_bottleneck/tests/data/test_544_B new file mode 100644 index 0000000..83587cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_544_B @@ -0,0 +1,20 @@ +75 125 +7 26 +61 102 +98 99 +12 88 +49 63 +46 61 +77 111 +13 56 +37 89 +7 84 +51 69 +86 142 +98 140 +91 122 +10 65 +9 33 +6 70 +95 101 +26 111 diff --git a/geom_bottleneck/tests/data/test_545_A b/geom_bottleneck/tests/data/test_545_A new file mode 100644 index 0000000..c5351d7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_545_A @@ -0,0 +1,20 @@ +52 89 +34 54 +44 124 +82 128 +75 104 +26 120 +77 159 +11 42 +75 153 +89 189 +52 73 +43 128 +45 132 +80 160 +53 55 +76 122 +96 114 +64 109 +20 119 +99 145 diff --git a/geom_bottleneck/tests/data/test_545_B b/geom_bottleneck/tests/data/test_545_B new file mode 100644 index 0000000..0c60c17 --- /dev/null +++ b/geom_bottleneck/tests/data/test_545_B @@ -0,0 +1,20 @@ +74 118 +29 69 +19 82 +50 124 +82 155 +15 63 +35 51 +38 52 +11 105 +70 114 +19 86 +91 157 +98 151 +14 83 +39 126 +38 52 +57 68 +79 137 +21 66 +68 92 diff --git a/geom_bottleneck/tests/data/test_546_A b/geom_bottleneck/tests/data/test_546_A new file mode 100644 index 0000000..4391c84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_546_A @@ -0,0 +1,20 @@ +60 91 +46 132 +27 127 +4 36 +66 116 +73 113 +56 98 +29 66 +38 88 +18 24 +19 52 +32 119 +39 81 +71 110 +24 46 +81 90 +80 111 +47 88 +94 142 +42 47 diff --git a/geom_bottleneck/tests/data/test_546_B b/geom_bottleneck/tests/data/test_546_B new file mode 100644 index 0000000..3d3dec6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_546_B @@ -0,0 +1,20 @@ +82 101 +14 80 +56 78 +28 113 +61 125 +70 88 +30 47 +88 176 +84 169 +15 92 +17 19 +33 61 +33 34 +60 142 +7 8 +5 34 +99 140 +35 113 +14 46 +74 112 diff --git a/geom_bottleneck/tests/data/test_547_A b/geom_bottleneck/tests/data/test_547_A new file mode 100644 index 0000000..1388d05 --- /dev/null +++ b/geom_bottleneck/tests/data/test_547_A @@ -0,0 +1,20 @@ +36 57 +27 86 +11 103 +73 132 +5 58 +59 66 +26 35 +0 18 +47 138 +49 118 +23 79 +12 99 +9 35 +15 79 +18 25 +94 137 +8 50 +68 78 +79 179 +31 121 diff --git a/geom_bottleneck/tests/data/test_547_B b/geom_bottleneck/tests/data/test_547_B new file mode 100644 index 0000000..dbb925d --- /dev/null +++ b/geom_bottleneck/tests/data/test_547_B @@ -0,0 +1,20 @@ +24 75 +28 29 +35 81 +81 178 +25 79 +78 106 +23 93 +57 151 +96 135 +85 151 +73 149 +37 98 +10 24 +30 61 +39 67 +68 74 +57 79 +66 160 +60 151 +66 139 diff --git a/geom_bottleneck/tests/data/test_548_A b/geom_bottleneck/tests/data/test_548_A new file mode 100644 index 0000000..08c858e --- /dev/null +++ b/geom_bottleneck/tests/data/test_548_A @@ -0,0 +1,20 @@ +15 24 +24 72 +67 142 +71 97 +26 61 +99 158 +61 82 +100 198 +51 114 +10 98 +46 93 +74 171 +14 75 +85 101 +30 40 +37 42 +2 16 +48 64 +48 99 +77 170 diff --git a/geom_bottleneck/tests/data/test_548_B b/geom_bottleneck/tests/data/test_548_B new file mode 100644 index 0000000..b6dda3a --- /dev/null +++ b/geom_bottleneck/tests/data/test_548_B @@ -0,0 +1,20 @@ +51 59 +99 108 +89 148 +82 96 +55 117 +52 148 +74 133 +37 99 +6 71 +0 15 +100 170 +28 56 +12 39 +61 98 +24 92 +18 88 +63 158 +91 129 +79 154 +39 85 diff --git a/geom_bottleneck/tests/data/test_549_A b/geom_bottleneck/tests/data/test_549_A new file mode 100644 index 0000000..b0d5ddf --- /dev/null +++ b/geom_bottleneck/tests/data/test_549_A @@ -0,0 +1,20 @@ +35 44 +1 25 +100 168 +81 169 +40 84 +28 37 +50 58 +60 122 +4 27 +2 99 +67 145 +51 111 +96 148 +47 65 +64 159 +54 114 +90 113 +4 36 +94 178 +19 20 diff --git a/geom_bottleneck/tests/data/test_549_B b/geom_bottleneck/tests/data/test_549_B new file mode 100644 index 0000000..a44a982 --- /dev/null +++ b/geom_bottleneck/tests/data/test_549_B @@ -0,0 +1,20 @@ +68 146 +8 27 +6 64 +76 113 +71 89 +29 65 +74 133 +52 57 +21 26 +2 39 +95 194 +67 113 +14 20 +90 160 +93 171 +72 97 +57 157 +23 42 +13 70 +17 44 diff --git a/geom_bottleneck/tests/data/test_550_A b/geom_bottleneck/tests/data/test_550_A new file mode 100644 index 0000000..b8ba8e8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_550_A @@ -0,0 +1,20 @@ +76 145 +38 79 +44 90 +71 155 +48 63 +88 125 +36 107 +91 136 +25 33 +49 57 +37 70 +69 116 +63 64 +70 118 +43 115 +80 99 +42 71 +86 91 +96 166 +69 121 diff --git a/geom_bottleneck/tests/data/test_550_B b/geom_bottleneck/tests/data/test_550_B new file mode 100644 index 0000000..ed900f0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_550_B @@ -0,0 +1,20 @@ +25 66 +55 107 +62 87 +15 49 +46 99 +25 39 +73 94 +43 126 +85 163 +12 96 +48 127 +21 26 +40 45 +88 188 +77 109 +38 44 +0 66 +57 59 +85 104 +32 54 diff --git a/geom_bottleneck/tests/data/test_551_A b/geom_bottleneck/tests/data/test_551_A new file mode 100644 index 0000000..3002ec2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_551_A @@ -0,0 +1,20 @@ +68 98 +42 48 +4 5 +6 82 +41 83 +94 141 +17 48 +33 105 +71 162 +55 95 +43 132 +81 162 +6 32 +88 101 +76 85 +36 70 +42 45 +60 122 +83 127 +100 148 diff --git a/geom_bottleneck/tests/data/test_551_B b/geom_bottleneck/tests/data/test_551_B new file mode 100644 index 0000000..5a9b2de --- /dev/null +++ b/geom_bottleneck/tests/data/test_551_B @@ -0,0 +1,20 @@ +58 109 +88 154 +56 66 +76 142 +86 125 +95 181 +46 85 +15 43 +55 79 +77 104 +45 113 +66 74 +64 100 +45 138 +6 62 +36 79 +77 106 +82 115 +15 110 +62 156 diff --git a/geom_bottleneck/tests/data/test_552_A b/geom_bottleneck/tests/data/test_552_A new file mode 100644 index 0000000..19de840 --- /dev/null +++ b/geom_bottleneck/tests/data/test_552_A @@ -0,0 +1,20 @@ +10 104 +23 89 +7 13 +66 150 +92 157 +22 43 +35 62 +96 187 +84 89 +75 160 +88 118 +74 99 +43 138 +20 37 +90 176 +85 157 +90 168 +63 157 +59 106 +68 92 diff --git a/geom_bottleneck/tests/data/test_552_B b/geom_bottleneck/tests/data/test_552_B new file mode 100644 index 0000000..54b3e00 --- /dev/null +++ b/geom_bottleneck/tests/data/test_552_B @@ -0,0 +1,20 @@ +57 121 +94 173 +84 133 +61 106 +71 130 +44 114 +55 73 +100 144 +91 126 +60 109 +44 92 +23 87 +52 116 +24 25 +10 93 +60 140 +11 55 +96 155 +76 165 +38 129 diff --git a/geom_bottleneck/tests/data/test_553_A b/geom_bottleneck/tests/data/test_553_A new file mode 100644 index 0000000..deff96a --- /dev/null +++ b/geom_bottleneck/tests/data/test_553_A @@ -0,0 +1,20 @@ +1 4 +23 91 +97 103 +6 68 +13 25 +9 18 +65 122 +91 154 +41 76 +86 132 +31 62 +93 167 +45 50 +70 166 +38 113 +52 132 +77 161 +13 60 +39 65 +60 69 diff --git a/geom_bottleneck/tests/data/test_553_B b/geom_bottleneck/tests/data/test_553_B new file mode 100644 index 0000000..ee7ce9b --- /dev/null +++ b/geom_bottleneck/tests/data/test_553_B @@ -0,0 +1,20 @@ +51 60 +76 151 +87 157 +49 110 +78 112 +3 59 +55 98 +26 121 +69 158 +15 63 +70 109 +30 46 +23 75 +65 138 +87 120 +7 46 +99 187 +43 69 +73 161 +37 93 diff --git a/geom_bottleneck/tests/data/test_554_A b/geom_bottleneck/tests/data/test_554_A new file mode 100644 index 0000000..da38226 --- /dev/null +++ b/geom_bottleneck/tests/data/test_554_A @@ -0,0 +1,20 @@ +69 134 +81 159 +100 168 +96 111 +46 134 +56 61 +8 31 +63 119 +57 137 +16 84 +5 51 +79 128 +20 117 +85 136 +34 88 +23 73 +3 87 +10 34 +72 120 +36 71 diff --git a/geom_bottleneck/tests/data/test_554_B b/geom_bottleneck/tests/data/test_554_B new file mode 100644 index 0000000..8583236 --- /dev/null +++ b/geom_bottleneck/tests/data/test_554_B @@ -0,0 +1,20 @@ +14 62 +54 74 +87 164 +57 87 +70 113 +5 75 +86 185 +3 69 +36 52 +31 93 +85 104 +4 97 +89 149 +19 92 +70 120 +13 18 +48 72 +100 152 +35 48 +94 191 diff --git a/geom_bottleneck/tests/data/test_555_A b/geom_bottleneck/tests/data/test_555_A new file mode 100644 index 0000000..87cd93d --- /dev/null +++ b/geom_bottleneck/tests/data/test_555_A @@ -0,0 +1,20 @@ +23 58 +71 106 +56 155 +37 85 +88 186 +12 75 +23 86 +17 92 +30 96 +13 54 +53 152 +84 153 +15 22 +67 86 +93 147 +17 117 +99 170 +75 108 +18 118 +71 131 diff --git a/geom_bottleneck/tests/data/test_555_B b/geom_bottleneck/tests/data/test_555_B new file mode 100644 index 0000000..2b8c351 --- /dev/null +++ b/geom_bottleneck/tests/data/test_555_B @@ -0,0 +1,20 @@ +9 71 +95 131 +85 156 +86 142 +10 54 +56 119 +49 100 +30 50 +7 64 +27 82 +14 85 +33 35 +22 52 +92 171 +36 62 +85 133 +4 14 +47 124 +70 131 +14 29 diff --git a/geom_bottleneck/tests/data/test_556_A b/geom_bottleneck/tests/data/test_556_A new file mode 100644 index 0000000..182965d --- /dev/null +++ b/geom_bottleneck/tests/data/test_556_A @@ -0,0 +1,20 @@ +79 147 +83 144 +20 30 +92 185 +29 40 +46 90 +21 106 +15 24 +16 63 +62 67 +18 106 +52 127 +47 64 +15 84 +10 87 +16 102 +89 139 +64 68 +57 128 +37 120 diff --git a/geom_bottleneck/tests/data/test_556_B b/geom_bottleneck/tests/data/test_556_B new file mode 100644 index 0000000..f2e3409 --- /dev/null +++ b/geom_bottleneck/tests/data/test_556_B @@ -0,0 +1,20 @@ +84 125 +37 84 +38 46 +32 59 +36 76 +95 107 +82 144 +81 121 +72 145 +1 100 +70 143 +76 167 +8 26 +51 90 +74 165 +88 89 +56 155 +95 165 +24 109 +45 141 diff --git a/geom_bottleneck/tests/data/test_557_A b/geom_bottleneck/tests/data/test_557_A new file mode 100644 index 0000000..ac233bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_557_A @@ -0,0 +1,20 @@ +47 91 +57 100 +93 157 +12 91 +95 109 +26 103 +55 78 +58 106 +5 96 +25 85 +76 97 +20 78 +85 160 +71 144 +81 145 +58 59 +49 86 +31 35 +89 156 +15 82 diff --git a/geom_bottleneck/tests/data/test_557_B b/geom_bottleneck/tests/data/test_557_B new file mode 100644 index 0000000..f838403 --- /dev/null +++ b/geom_bottleneck/tests/data/test_557_B @@ -0,0 +1,20 @@ +31 112 +70 120 +12 49 +95 96 +27 87 +50 120 +78 115 +22 108 +54 82 +31 109 +51 74 +55 140 +7 92 +88 133 +61 82 +90 183 +33 64 +90 121 +26 47 +98 120 diff --git a/geom_bottleneck/tests/data/test_558_A b/geom_bottleneck/tests/data/test_558_A new file mode 100644 index 0000000..7108d09 --- /dev/null +++ b/geom_bottleneck/tests/data/test_558_A @@ -0,0 +1,20 @@ +57 115 +32 131 +32 111 +46 104 +8 12 +20 69 +65 89 +8 37 +88 153 +61 63 +86 139 +74 88 +3 62 +58 104 +31 100 +29 81 +55 59 +11 18 +63 103 +56 110 diff --git a/geom_bottleneck/tests/data/test_558_B b/geom_bottleneck/tests/data/test_558_B new file mode 100644 index 0000000..dd19869 --- /dev/null +++ b/geom_bottleneck/tests/data/test_558_B @@ -0,0 +1,20 @@ +43 134 +43 44 +56 124 +97 118 +34 68 +56 140 +41 140 +24 95 +57 91 +22 28 +94 158 +69 141 +94 110 +7 41 +39 59 +69 107 +76 163 +30 105 +96 142 +46 127 diff --git a/geom_bottleneck/tests/data/test_559_A b/geom_bottleneck/tests/data/test_559_A new file mode 100644 index 0000000..46f07b4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_559_A @@ -0,0 +1,20 @@ +21 99 +7 104 +89 130 +91 181 +19 90 +57 146 +15 60 +66 123 +13 58 +3 57 +39 114 +4 53 +80 125 +83 132 +81 98 +14 99 +81 175 +49 92 +39 125 +31 111 diff --git a/geom_bottleneck/tests/data/test_559_B b/geom_bottleneck/tests/data/test_559_B new file mode 100644 index 0000000..b747fb8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_559_B @@ -0,0 +1,20 @@ +13 43 +81 86 +45 84 +84 111 +39 83 +85 115 +70 150 +97 192 +70 107 +21 74 +71 73 +98 184 +14 114 +63 126 +21 59 +53 147 +70 114 +30 56 +34 35 +61 133 diff --git a/geom_bottleneck/tests/data/test_560_A b/geom_bottleneck/tests/data/test_560_A new file mode 100644 index 0000000..9b704ae --- /dev/null +++ b/geom_bottleneck/tests/data/test_560_A @@ -0,0 +1,30 @@ +35 126 +34 37 +78 84 +70 127 +97 106 +42 49 +49 105 +50 150 +80 140 +30 128 +90 136 +77 173 +42 98 +17 97 +100 181 +30 45 +6 40 +30 75 +66 148 +13 66 +39 113 +53 106 +65 133 +1 17 +61 123 +37 114 +1 77 +6 19 +8 11 +20 95 diff --git a/geom_bottleneck/tests/data/test_560_B b/geom_bottleneck/tests/data/test_560_B new file mode 100644 index 0000000..d4ece9d --- /dev/null +++ b/geom_bottleneck/tests/data/test_560_B @@ -0,0 +1,30 @@ +100 150 +25 32 +99 187 +42 117 +60 84 +22 104 +15 113 +29 58 +91 185 +92 120 +95 133 +42 67 +62 148 +79 122 +27 66 +14 75 +44 142 +10 25 +54 149 +31 38 +97 161 +63 115 +29 76 +100 102 +59 72 +54 140 +8 108 +12 83 +54 127 +43 95 diff --git a/geom_bottleneck/tests/data/test_561_A b/geom_bottleneck/tests/data/test_561_A new file mode 100644 index 0000000..81a3e31 --- /dev/null +++ b/geom_bottleneck/tests/data/test_561_A @@ -0,0 +1,30 @@ +13 66 +67 124 +99 163 +91 163 +42 140 +96 153 +6 77 +6 83 +84 166 +48 79 +50 79 +63 111 +21 85 +55 117 +62 160 +4 101 +30 75 +42 87 +58 60 +88 178 +43 54 +90 120 +72 147 +30 70 +13 66 +89 166 +83 149 +69 160 +66 83 +89 142 diff --git a/geom_bottleneck/tests/data/test_561_B b/geom_bottleneck/tests/data/test_561_B new file mode 100644 index 0000000..c60b08c --- /dev/null +++ b/geom_bottleneck/tests/data/test_561_B @@ -0,0 +1,30 @@ +61 97 +8 94 +32 68 +55 101 +24 56 +25 30 +33 79 +16 111 +72 82 +42 86 +93 143 +94 163 +69 168 +68 100 +3 102 +9 72 +6 74 +4 46 +97 130 +15 27 +12 33 +62 67 +37 74 +0 76 +14 102 +33 95 +46 131 +89 90 +79 97 +100 109 diff --git a/geom_bottleneck/tests/data/test_562_A b/geom_bottleneck/tests/data/test_562_A new file mode 100644 index 0000000..6dadf55 --- /dev/null +++ b/geom_bottleneck/tests/data/test_562_A @@ -0,0 +1,30 @@ +12 41 +99 100 +15 60 +95 108 +9 108 +4 5 +96 161 +88 168 +12 106 +78 167 +80 164 +69 130 +88 161 +49 134 +18 76 +54 134 +45 136 +22 50 +21 78 +17 88 +46 117 +97 174 +25 95 +8 9 +43 123 +25 107 +58 73 +2 7 +89 152 +81 114 diff --git a/geom_bottleneck/tests/data/test_562_B b/geom_bottleneck/tests/data/test_562_B new file mode 100644 index 0000000..48eaf77 --- /dev/null +++ b/geom_bottleneck/tests/data/test_562_B @@ -0,0 +1,30 @@ +5 104 +17 105 +43 120 +87 88 +35 71 +47 55 +57 87 +66 119 +26 114 +4 9 +29 70 +40 95 +61 73 +20 31 +85 148 +47 59 +34 43 +36 50 +70 77 +30 47 +36 56 +9 55 +35 127 +36 84 +83 118 +90 98 +69 85 +34 104 +76 127 +78 99 diff --git a/geom_bottleneck/tests/data/test_563_A b/geom_bottleneck/tests/data/test_563_A new file mode 100644 index 0000000..954685e --- /dev/null +++ b/geom_bottleneck/tests/data/test_563_A @@ -0,0 +1,30 @@ +51 145 +19 119 +94 179 +8 35 +90 155 +34 39 +55 96 +19 27 +84 95 +12 52 +14 101 +72 143 +1 14 +88 138 +95 109 +85 134 +54 149 +35 85 +50 55 +93 173 +81 108 +14 112 +23 67 +13 14 +21 37 +89 177 +63 163 +2 89 +5 61 +18 76 diff --git a/geom_bottleneck/tests/data/test_563_B b/geom_bottleneck/tests/data/test_563_B new file mode 100644 index 0000000..c3d7844 --- /dev/null +++ b/geom_bottleneck/tests/data/test_563_B @@ -0,0 +1,30 @@ +40 75 +52 88 +0 33 +63 134 +19 77 +34 106 +67 164 +6 61 +67 144 +41 105 +30 108 +17 24 +97 105 +61 90 +45 80 +34 52 +58 140 +46 52 +4 13 +43 143 +74 168 +85 148 +24 55 +80 84 +3 56 +39 138 +1 30 +14 20 +14 91 +42 48 diff --git a/geom_bottleneck/tests/data/test_564_A b/geom_bottleneck/tests/data/test_564_A new file mode 100644 index 0000000..a39b7ae --- /dev/null +++ b/geom_bottleneck/tests/data/test_564_A @@ -0,0 +1,30 @@ +85 112 +83 119 +84 128 +36 100 +18 112 +83 89 +17 80 +68 147 +32 76 +42 46 +29 89 +9 49 +40 135 +65 75 +69 113 +87 184 +81 103 +13 81 +44 99 +17 51 +99 102 +86 89 +29 124 +52 140 +19 54 +73 173 +89 172 +6 33 +80 139 +52 58 diff --git a/geom_bottleneck/tests/data/test_564_B b/geom_bottleneck/tests/data/test_564_B new file mode 100644 index 0000000..22adad2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_564_B @@ -0,0 +1,30 @@ +56 66 +92 164 +7 68 +87 135 +45 70 +94 109 +32 103 +44 73 +36 124 +50 139 +88 102 +17 116 +3 61 +90 149 +41 62 +13 42 +19 51 +96 105 +55 143 +67 165 +44 129 +72 171 +20 51 +36 119 +35 96 +33 107 +48 106 +9 30 +36 110 +90 114 diff --git a/geom_bottleneck/tests/data/test_565_A b/geom_bottleneck/tests/data/test_565_A new file mode 100644 index 0000000..34eb265 --- /dev/null +++ b/geom_bottleneck/tests/data/test_565_A @@ -0,0 +1,30 @@ +33 61 +68 78 +90 98 +66 127 +93 152 +21 29 +49 52 +78 171 +42 55 +95 159 +82 141 +85 152 +22 25 +71 132 +24 75 +3 82 +42 131 +24 73 +89 155 +32 132 +77 159 +97 165 +89 92 +50 82 +52 102 +11 64 +47 135 +45 89 +11 52 +11 25 diff --git a/geom_bottleneck/tests/data/test_565_B b/geom_bottleneck/tests/data/test_565_B new file mode 100644 index 0000000..da5ed1d --- /dev/null +++ b/geom_bottleneck/tests/data/test_565_B @@ -0,0 +1,30 @@ +46 66 +86 178 +19 102 +97 140 +22 97 +49 97 +6 48 +23 105 +92 157 +85 103 +67 167 +29 44 +88 183 +85 184 +90 93 +23 113 +30 106 +32 130 +81 154 +76 141 +75 101 +26 84 +9 77 +53 73 +23 84 +83 85 +6 44 +29 31 +26 107 +61 114 diff --git a/geom_bottleneck/tests/data/test_566_A b/geom_bottleneck/tests/data/test_566_A new file mode 100644 index 0000000..55d0a13 --- /dev/null +++ b/geom_bottleneck/tests/data/test_566_A @@ -0,0 +1,30 @@ +4 34 +20 53 +59 101 +40 70 +29 58 +67 107 +92 122 +35 120 +34 98 +34 79 +17 20 +12 53 +69 167 +19 88 +92 118 +21 73 +54 78 +0 83 +41 127 +34 59 +41 106 +4 102 +46 48 +99 189 +15 25 +17 19 +25 33 +25 108 +25 105 +64 99 diff --git a/geom_bottleneck/tests/data/test_566_B b/geom_bottleneck/tests/data/test_566_B new file mode 100644 index 0000000..57c08b6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_566_B @@ -0,0 +1,30 @@ +36 121 +5 33 +47 137 +95 158 +43 105 +4 15 +0 59 +30 36 +29 106 +58 126 +81 129 +63 108 +52 147 +80 163 +93 94 +32 122 +12 92 +74 135 +25 28 +11 107 +91 182 +68 90 +90 106 +96 126 +83 117 +57 147 +89 181 +36 107 +24 68 +83 131 diff --git a/geom_bottleneck/tests/data/test_567_A b/geom_bottleneck/tests/data/test_567_A new file mode 100644 index 0000000..3304c25 --- /dev/null +++ b/geom_bottleneck/tests/data/test_567_A @@ -0,0 +1,30 @@ +67 79 +12 58 +33 85 +25 70 +79 128 +34 59 +22 45 +100 102 +25 57 +30 113 +77 89 +74 83 +43 138 +30 81 +26 64 +91 94 +83 149 +83 119 +44 46 +79 105 +49 140 +58 110 +92 104 +8 65 +40 52 +46 60 +9 17 +25 47 +25 125 +95 109 diff --git a/geom_bottleneck/tests/data/test_567_B b/geom_bottleneck/tests/data/test_567_B new file mode 100644 index 0000000..4a8f5fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_567_B @@ -0,0 +1,30 @@ +46 93 +85 165 +2 24 +29 81 +88 99 +94 109 +78 82 +54 69 +43 139 +3 40 +37 117 +98 138 +12 71 +75 84 +9 100 +56 65 +97 146 +56 105 +17 82 +11 44 +93 100 +6 99 +32 128 +9 35 +9 41 +66 123 +66 163 +34 110 +47 82 +15 97 diff --git a/geom_bottleneck/tests/data/test_568_A b/geom_bottleneck/tests/data/test_568_A new file mode 100644 index 0000000..e6e0ecb --- /dev/null +++ b/geom_bottleneck/tests/data/test_568_A @@ -0,0 +1,30 @@ +20 98 +14 51 +82 116 +80 117 +96 109 +61 101 +44 75 +76 80 +64 96 +100 158 +13 89 +84 138 +0 16 +94 138 +32 117 +68 157 +7 24 +1 56 +72 101 +47 128 +85 90 +66 155 +33 106 +97 144 +50 139 +10 54 +23 77 +87 106 +37 104 +11 37 diff --git a/geom_bottleneck/tests/data/test_568_B b/geom_bottleneck/tests/data/test_568_B new file mode 100644 index 0000000..081ff5e --- /dev/null +++ b/geom_bottleneck/tests/data/test_568_B @@ -0,0 +1,30 @@ +49 147 +26 112 +32 71 +30 50 +77 136 +10 110 +50 71 +14 110 +4 24 +64 125 +54 121 +58 142 +50 51 +0 63 +7 96 +49 146 +64 111 +53 122 +2 84 +56 102 +44 102 +5 78 +61 90 +32 92 +99 157 +100 188 +37 70 +6 7 +58 139 +52 138 diff --git a/geom_bottleneck/tests/data/test_569_A b/geom_bottleneck/tests/data/test_569_A new file mode 100644 index 0000000..7fc96cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_569_A @@ -0,0 +1,30 @@ +83 116 +33 112 +58 86 +3 65 +21 46 +51 58 +47 138 +88 112 +4 84 +4 8 +46 74 +74 132 +54 120 +2 68 +99 119 +5 43 +5 61 +54 75 +83 169 +100 192 +47 133 +27 28 +44 128 +19 77 +60 160 +46 55 +78 169 +16 82 +60 97 +57 60 diff --git a/geom_bottleneck/tests/data/test_569_B b/geom_bottleneck/tests/data/test_569_B new file mode 100644 index 0000000..b732aac --- /dev/null +++ b/geom_bottleneck/tests/data/test_569_B @@ -0,0 +1,30 @@ +51 97 +59 91 +9 11 +49 50 +54 111 +44 132 +22 53 +11 80 +22 101 +76 79 +29 112 +99 123 +67 116 +69 110 +27 51 +22 55 +3 58 +43 84 +18 68 +88 134 +28 29 +70 137 +36 37 +85 168 +4 69 +50 99 +27 117 +12 69 +55 127 +23 28 diff --git a/geom_bottleneck/tests/data/test_570_A b/geom_bottleneck/tests/data/test_570_A new file mode 100644 index 0000000..371835b --- /dev/null +++ b/geom_bottleneck/tests/data/test_570_A @@ -0,0 +1,30 @@ +30 76 +17 43 +84 85 +45 52 +85 117 +95 172 +36 58 +6 12 +70 147 +82 114 +67 163 +1 85 +1 92 +23 80 +58 60 +42 123 +100 148 +52 127 +45 49 +33 47 +48 124 +77 169 +5 64 +24 49 +16 40 +83 130 +86 121 +73 157 +88 124 +59 80 diff --git a/geom_bottleneck/tests/data/test_570_B b/geom_bottleneck/tests/data/test_570_B new file mode 100644 index 0000000..3ce3450 --- /dev/null +++ b/geom_bottleneck/tests/data/test_570_B @@ -0,0 +1,30 @@ +44 134 +28 120 +0 58 +32 41 +64 82 +7 91 +32 123 +22 46 +87 159 +3 13 +79 102 +37 80 +77 91 +64 126 +43 128 +53 107 +50 89 +15 111 +37 101 +6 51 +11 41 +66 110 +99 191 +8 53 +12 59 +53 91 +9 51 +47 57 +35 88 +83 134 diff --git a/geom_bottleneck/tests/data/test_571_A b/geom_bottleneck/tests/data/test_571_A new file mode 100644 index 0000000..6b58a17 --- /dev/null +++ b/geom_bottleneck/tests/data/test_571_A @@ -0,0 +1,30 @@ +73 83 +85 94 +20 39 +62 71 +100 146 +84 95 +21 64 +62 136 +49 90 +39 129 +92 156 +27 105 +48 66 +5 100 +86 186 +74 118 +93 173 +93 143 +91 173 +5 59 +75 78 +98 106 +37 125 +24 60 +24 117 +83 131 +69 137 +1 54 +81 154 +26 124 diff --git a/geom_bottleneck/tests/data/test_571_B b/geom_bottleneck/tests/data/test_571_B new file mode 100644 index 0000000..0bb3b3e --- /dev/null +++ b/geom_bottleneck/tests/data/test_571_B @@ -0,0 +1,30 @@ +90 159 +93 97 +57 109 +87 127 +96 185 +53 142 +59 125 +54 132 +26 48 +54 150 +63 65 +36 50 +3 19 +19 95 +47 76 +25 36 +34 70 +63 126 +99 199 +11 38 +96 120 +89 162 +55 125 +3 98 +11 31 +18 103 +68 101 +47 68 +45 48 +36 59 diff --git a/geom_bottleneck/tests/data/test_572_A b/geom_bottleneck/tests/data/test_572_A new file mode 100644 index 0000000..052ddfe --- /dev/null +++ b/geom_bottleneck/tests/data/test_572_A @@ -0,0 +1,30 @@ +83 96 +59 158 +99 133 +98 139 +71 163 +95 138 +83 97 +46 72 +23 29 +49 133 +60 63 +6 84 +33 86 +33 71 +99 188 +51 61 +79 150 +38 61 +68 147 +98 170 +77 131 +32 97 +57 119 +36 37 +66 75 +37 68 +72 150 +42 99 +28 90 +56 123 diff --git a/geom_bottleneck/tests/data/test_572_B b/geom_bottleneck/tests/data/test_572_B new file mode 100644 index 0000000..d816eab --- /dev/null +++ b/geom_bottleneck/tests/data/test_572_B @@ -0,0 +1,30 @@ +44 61 +72 88 +8 15 +78 155 +90 99 +87 106 +50 57 +60 126 +75 175 +81 135 +94 181 +6 52 +64 152 +63 79 +23 105 +88 104 +68 145 +9 26 +23 68 +49 144 +5 9 +62 156 +6 94 +61 159 +82 130 +26 84 +78 110 +27 75 +41 123 +56 147 diff --git a/geom_bottleneck/tests/data/test_573_A b/geom_bottleneck/tests/data/test_573_A new file mode 100644 index 0000000..fe68d64 --- /dev/null +++ b/geom_bottleneck/tests/data/test_573_A @@ -0,0 +1,30 @@ +43 94 +41 75 +26 69 +43 58 +64 94 +54 98 +19 106 +99 119 +52 115 +79 88 +77 84 +96 118 +55 80 +47 114 +64 137 +79 158 +38 60 +79 136 +57 82 +17 103 +28 82 +28 35 +74 86 +99 121 +96 176 +0 55 +2 76 +85 155 +9 40 +76 118 diff --git a/geom_bottleneck/tests/data/test_573_B b/geom_bottleneck/tests/data/test_573_B new file mode 100644 index 0000000..9824068 --- /dev/null +++ b/geom_bottleneck/tests/data/test_573_B @@ -0,0 +1,30 @@ +60 107 +11 66 +34 94 +40 87 +1 4 +43 67 +25 76 +73 108 +86 178 +25 58 +95 99 +82 97 +13 54 +58 88 +38 78 +44 131 +92 99 +5 88 +98 120 +56 112 +45 112 +69 110 +48 121 +53 83 +20 52 +3 45 +49 126 +13 17 +30 83 +97 121 diff --git a/geom_bottleneck/tests/data/test_574_A b/geom_bottleneck/tests/data/test_574_A new file mode 100644 index 0000000..9dbb066 --- /dev/null +++ b/geom_bottleneck/tests/data/test_574_A @@ -0,0 +1,30 @@ +21 109 +12 79 +44 58 +0 97 +30 124 +58 154 +91 150 +1 92 +34 43 +18 109 +10 11 +0 84 +30 56 +66 166 +43 80 +77 167 +61 94 +58 136 +20 110 +84 144 +100 182 +8 80 +79 124 +89 164 +61 84 +69 129 +30 111 +67 105 +69 70 +38 108 diff --git a/geom_bottleneck/tests/data/test_574_B b/geom_bottleneck/tests/data/test_574_B new file mode 100644 index 0000000..dc0f4c7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_574_B @@ -0,0 +1,30 @@ +24 53 +49 112 +58 149 +49 136 +66 149 +10 87 +36 113 +66 144 +87 150 +20 40 +41 136 +80 111 +99 199 +76 131 +7 72 +99 122 +93 124 +5 8 +97 105 +23 27 +82 102 +30 84 +62 143 +8 48 +40 119 +29 62 +11 68 +75 128 +68 124 +23 26 diff --git a/geom_bottleneck/tests/data/test_575_A b/geom_bottleneck/tests/data/test_575_A new file mode 100644 index 0000000..7703382 --- /dev/null +++ b/geom_bottleneck/tests/data/test_575_A @@ -0,0 +1,30 @@ +78 141 +24 58 +30 120 +71 72 +4 21 +30 61 +7 52 +16 91 +58 109 +28 97 +46 86 +65 134 +86 151 +77 134 +6 32 +31 83 +84 180 +53 118 +78 108 +88 115 +75 137 +92 149 +57 120 +94 109 +59 131 +5 36 +39 91 +65 138 +96 167 +87 164 diff --git a/geom_bottleneck/tests/data/test_575_B b/geom_bottleneck/tests/data/test_575_B new file mode 100644 index 0000000..a5ba6b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_575_B @@ -0,0 +1,30 @@ +77 176 +11 43 +38 70 +64 163 +70 101 +18 66 +50 119 +30 48 +18 88 +85 106 +50 56 +42 134 +25 92 +5 53 +86 101 +44 91 +61 127 +42 55 +31 103 +15 23 +93 117 +45 68 +39 84 +64 135 +86 109 +82 174 +72 73 +43 73 +37 41 +71 76 diff --git a/geom_bottleneck/tests/data/test_576_A b/geom_bottleneck/tests/data/test_576_A new file mode 100644 index 0000000..57eb281 --- /dev/null +++ b/geom_bottleneck/tests/data/test_576_A @@ -0,0 +1,30 @@ +61 135 +79 123 +27 28 +4 48 +44 120 +40 69 +28 82 +4 45 +28 82 +70 145 +14 102 +84 169 +89 121 +67 137 +65 141 +39 60 +97 162 +90 187 +23 78 +71 168 +76 98 +85 101 +9 86 +57 89 +86 109 +55 62 +90 101 +82 110 +100 153 +33 67 diff --git a/geom_bottleneck/tests/data/test_576_B b/geom_bottleneck/tests/data/test_576_B new file mode 100644 index 0000000..fa63de8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_576_B @@ -0,0 +1,30 @@ +83 145 +27 62 +71 125 +78 175 +11 55 +81 94 +91 141 +27 103 +68 97 +54 89 +68 143 +50 100 +65 85 +84 179 +83 96 +44 121 +13 86 +29 86 +72 172 +95 140 +83 161 +83 100 +98 167 +8 66 +75 101 +6 50 +10 58 +5 57 +51 77 +87 140 diff --git a/geom_bottleneck/tests/data/test_577_A b/geom_bottleneck/tests/data/test_577_A new file mode 100644 index 0000000..d086e3f --- /dev/null +++ b/geom_bottleneck/tests/data/test_577_A @@ -0,0 +1,30 @@ +65 94 +1 2 +30 31 +91 131 +75 170 +38 85 +51 73 +78 155 +43 141 +54 109 +53 54 +36 74 +75 80 +51 144 +33 127 +31 89 +0 10 +18 87 +11 18 +51 126 +64 91 +7 51 +26 71 +92 160 +24 44 +0 58 +3 78 +2 67 +12 88 +68 130 diff --git a/geom_bottleneck/tests/data/test_577_B b/geom_bottleneck/tests/data/test_577_B new file mode 100644 index 0000000..e48e09a --- /dev/null +++ b/geom_bottleneck/tests/data/test_577_B @@ -0,0 +1,30 @@ +90 189 +96 195 +64 91 +81 84 +42 76 +17 19 +76 77 +64 149 +85 99 +90 147 +60 95 +59 155 +29 121 +27 104 +10 72 +32 79 +44 129 +9 70 +68 136 +9 75 +27 89 +70 148 +77 149 +8 91 +24 84 +90 123 +86 105 +64 94 +84 109 +31 51 diff --git a/geom_bottleneck/tests/data/test_578_A b/geom_bottleneck/tests/data/test_578_A new file mode 100644 index 0000000..8b9a6fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_578_A @@ -0,0 +1,30 @@ +9 99 +58 83 +62 110 +32 102 +86 169 +95 131 +1 6 +1 55 +88 154 +67 95 +21 22 +31 118 +15 52 +64 92 +36 87 +18 106 +71 150 +10 55 +67 97 +53 145 +31 40 +33 62 +79 116 +70 110 +96 145 +86 182 +43 116 +54 145 +100 172 +74 84 diff --git a/geom_bottleneck/tests/data/test_578_B b/geom_bottleneck/tests/data/test_578_B new file mode 100644 index 0000000..636f20d --- /dev/null +++ b/geom_bottleneck/tests/data/test_578_B @@ -0,0 +1,30 @@ +33 36 +89 175 +83 151 +61 138 +4 15 +9 58 +38 111 +29 117 +22 79 +26 86 +48 55 +65 134 +60 84 +23 96 +69 149 +29 48 +38 137 +39 51 +88 112 +14 41 +29 119 +52 56 +55 96 +58 127 +78 148 +44 64 +35 108 +69 124 +6 80 +43 77 diff --git a/geom_bottleneck/tests/data/test_579_A b/geom_bottleneck/tests/data/test_579_A new file mode 100644 index 0000000..99bbb96 --- /dev/null +++ b/geom_bottleneck/tests/data/test_579_A @@ -0,0 +1,30 @@ +90 170 +5 32 +49 116 +37 88 +19 64 +81 177 +39 77 +37 123 +53 127 +31 76 +67 114 +51 125 +48 121 +59 62 +31 119 +35 90 +100 117 +33 130 +22 74 +23 41 +71 159 +3 57 +22 61 +86 123 +91 115 +66 92 +39 104 +85 134 +72 160 +6 94 diff --git a/geom_bottleneck/tests/data/test_579_B b/geom_bottleneck/tests/data/test_579_B new file mode 100644 index 0000000..6d3e9b6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_579_B @@ -0,0 +1,30 @@ +76 123 +2 17 +41 123 +62 138 +40 70 +92 164 +70 105 +63 109 +14 23 +26 109 +78 141 +85 162 +37 49 +27 96 +62 68 +80 136 +30 72 +44 85 +59 122 +42 137 +67 140 +81 181 +43 84 +91 108 +71 86 +30 45 +76 94 +25 57 +25 71 +70 90 diff --git a/geom_bottleneck/tests/data/test_580_A b/geom_bottleneck/tests/data/test_580_A new file mode 100644 index 0000000..b8d1c86 --- /dev/null +++ b/geom_bottleneck/tests/data/test_580_A @@ -0,0 +1,50 @@ +34 78 +25 82 +42 132 +77 154 +15 52 +54 69 +68 78 +36 111 +9 24 +30 53 +53 117 +84 163 +91 124 +13 76 +20 59 +67 151 +17 103 +76 156 +3 41 +2 37 +65 158 +67 75 +42 125 +83 115 +47 147 +13 44 +83 133 +92 146 +57 125 +66 103 +55 69 +39 63 +16 63 +98 108 +23 93 +12 30 +7 70 +70 131 +49 127 +83 90 +97 171 +35 81 +78 130 +88 143 +62 124 +2 40 +66 110 +51 61 +2 25 +69 74 diff --git a/geom_bottleneck/tests/data/test_580_B b/geom_bottleneck/tests/data/test_580_B new file mode 100644 index 0000000..1fd48af --- /dev/null +++ b/geom_bottleneck/tests/data/test_580_B @@ -0,0 +1,50 @@ +60 156 +65 78 +70 102 +52 113 +64 154 +45 126 +45 86 +6 49 +7 93 +99 127 +15 33 +1 36 +12 30 +30 89 +41 84 +66 131 +8 23 +0 9 +95 149 +47 83 +69 165 +79 91 +74 125 +59 77 +93 137 +33 119 +24 113 +98 116 +10 70 +57 124 +97 126 +48 113 +30 67 +2 15 +56 86 +75 111 +81 82 +99 196 +69 105 +51 147 +5 69 +40 136 +79 147 +44 136 +95 194 +67 93 +0 46 +26 90 +58 115 +40 87 diff --git a/geom_bottleneck/tests/data/test_581_A b/geom_bottleneck/tests/data/test_581_A new file mode 100644 index 0000000..cf1555c --- /dev/null +++ b/geom_bottleneck/tests/data/test_581_A @@ -0,0 +1,50 @@ +79 87 +81 162 +7 74 +53 79 +19 50 +30 106 +68 155 +17 79 +75 90 +55 71 +30 127 +57 145 +78 80 +11 96 +16 47 +56 131 +45 46 +75 136 +17 75 +72 74 +27 114 +28 112 +31 123 +37 110 +89 159 +57 85 +49 52 +72 130 +68 86 +88 152 +5 66 +67 71 +51 91 +72 82 +3 21 +21 38 +47 86 +37 108 +35 123 +49 119 +36 97 +36 119 +9 48 +16 36 +32 37 +38 68 +82 147 +39 79 +23 101 +33 104 diff --git a/geom_bottleneck/tests/data/test_581_B b/geom_bottleneck/tests/data/test_581_B new file mode 100644 index 0000000..853ac92 --- /dev/null +++ b/geom_bottleneck/tests/data/test_581_B @@ -0,0 +1,50 @@ +94 181 +38 90 +83 137 +36 93 +8 53 +59 118 +21 110 +94 175 +18 40 +94 120 +46 81 +54 145 +13 37 +36 100 +73 86 +67 166 +91 187 +11 15 +45 124 +23 29 +89 125 +78 101 +83 98 +52 73 +39 62 +15 86 +80 140 +100 181 +50 55 +80 124 +27 29 +19 76 +92 167 +12 57 +63 134 +45 46 +42 110 +93 179 +31 130 +59 137 +7 99 +77 107 +59 127 +82 160 +27 70 +100 200 +80 101 +16 97 +93 184 +15 48 diff --git a/geom_bottleneck/tests/data/test_582_A b/geom_bottleneck/tests/data/test_582_A new file mode 100644 index 0000000..dcabc9f --- /dev/null +++ b/geom_bottleneck/tests/data/test_582_A @@ -0,0 +1,50 @@ +85 106 +23 89 +31 90 +4 42 +45 104 +100 137 +32 115 +65 112 +25 82 +75 158 +74 147 +6 106 +92 179 +91 110 +94 150 +9 19 +91 110 +82 108 +39 90 +49 69 +73 89 +61 68 +22 85 +13 57 +86 102 +23 43 +29 65 +3 72 +85 131 +71 80 +83 89 +73 119 +28 46 +33 101 +18 24 +38 69 +50 51 +84 85 +75 175 +99 153 +84 86 +97 100 +68 115 +91 108 +62 77 +54 80 +7 49 +26 29 +53 101 +64 73 diff --git a/geom_bottleneck/tests/data/test_582_B b/geom_bottleneck/tests/data/test_582_B new file mode 100644 index 0000000..9420fa9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_582_B @@ -0,0 +1,50 @@ +99 153 +54 92 +64 65 +40 117 +28 70 +33 105 +70 105 +72 109 +9 34 +72 151 +1 46 +57 133 +51 72 +52 119 +44 92 +13 71 +96 191 +80 123 +47 121 +84 162 +69 111 +15 35 +41 45 +23 86 +36 107 +6 18 +63 118 +4 50 +84 107 +90 132 +74 127 +14 37 +75 167 +42 81 +53 76 +32 88 +2 70 +87 129 +7 8 +6 35 +70 115 +69 137 +80 174 +24 107 +66 116 +22 110 +4 90 +0 41 +63 160 +99 142 diff --git a/geom_bottleneck/tests/data/test_583_A b/geom_bottleneck/tests/data/test_583_A new file mode 100644 index 0000000..cc36f56 --- /dev/null +++ b/geom_bottleneck/tests/data/test_583_A @@ -0,0 +1,50 @@ +99 127 +62 97 +4 61 +70 121 +74 149 +79 158 +98 193 +22 53 +66 89 +45 58 +49 80 +56 89 +48 124 +100 166 +76 143 +32 33 +15 59 +16 91 +32 33 +1 21 +73 169 +84 171 +49 69 +52 146 +10 57 +26 112 +54 76 +92 125 +47 49 +53 107 +2 69 +99 186 +67 79 +13 113 +54 73 +1 72 +4 20 +43 112 +0 89 +77 150 +31 61 +24 29 +75 169 +56 143 +88 133 +37 38 +90 160 +97 189 +39 72 +30 38 diff --git a/geom_bottleneck/tests/data/test_583_B b/geom_bottleneck/tests/data/test_583_B new file mode 100644 index 0000000..d021fb3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_583_B @@ -0,0 +1,50 @@ +26 43 +87 160 +74 100 +69 139 +72 87 +22 58 +0 3 +67 133 +52 56 +67 97 +42 117 +30 44 +67 119 +91 164 +45 65 +35 127 +80 91 +75 160 +11 68 +86 92 +24 79 +90 156 +91 94 +64 114 +55 66 +72 80 +36 78 +85 114 +27 69 +40 75 +65 152 +48 106 +72 105 +63 109 +37 108 +48 84 +81 147 +14 91 +46 94 +6 14 +28 100 +41 103 +21 92 +40 111 +42 106 +86 136 +97 113 +24 79 +77 99 +80 89 diff --git a/geom_bottleneck/tests/data/test_584_A b/geom_bottleneck/tests/data/test_584_A new file mode 100644 index 0000000..c934a50 --- /dev/null +++ b/geom_bottleneck/tests/data/test_584_A @@ -0,0 +1,50 @@ +15 100 +30 70 +46 69 +99 128 +25 93 +75 90 +6 31 +47 141 +51 99 +98 133 +50 69 +3 27 +16 91 +36 95 +29 73 +26 76 +24 45 +9 105 +21 103 +46 81 +91 156 +77 141 +36 72 +92 122 +48 98 +34 105 +80 172 +92 136 +16 81 +30 100 +13 111 +1 51 +1 52 +66 140 +81 96 +18 69 +37 123 +82 132 +64 114 +6 26 +46 70 +39 74 +20 108 +70 128 +43 86 +50 71 +73 98 +42 74 +52 79 +42 101 diff --git a/geom_bottleneck/tests/data/test_584_B b/geom_bottleneck/tests/data/test_584_B new file mode 100644 index 0000000..9f07efc --- /dev/null +++ b/geom_bottleneck/tests/data/test_584_B @@ -0,0 +1,50 @@ +99 143 +58 93 +32 121 +23 112 +64 102 +73 110 +76 128 +18 108 +17 97 +82 97 +40 138 +43 92 +18 33 +36 60 +2 27 +67 132 +45 79 +40 78 +90 97 +98 163 +16 86 +74 83 +98 154 +7 74 +3 41 +43 55 +69 123 +54 154 +96 143 +66 98 +26 52 +6 47 +45 84 +17 50 +32 78 +15 25 +46 133 +41 115 +54 144 +19 39 +71 150 +77 133 +42 90 +100 165 +73 113 +63 67 +19 106 +11 18 +11 73 +67 69 diff --git a/geom_bottleneck/tests/data/test_585_A b/geom_bottleneck/tests/data/test_585_A new file mode 100644 index 0000000..903e5b1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_585_A @@ -0,0 +1,50 @@ +50 147 +39 41 +59 153 +79 105 +90 122 +21 31 +34 51 +27 64 +77 125 +46 115 +92 164 +81 167 +91 182 +15 87 +39 115 +43 113 +29 115 +9 60 +81 95 +45 89 +36 101 +29 41 +68 132 +40 110 +33 92 +2 3 +27 113 +90 152 +35 109 +48 90 +63 160 +46 102 +61 146 +48 68 +23 98 +53 91 +80 101 +50 55 +78 163 +89 126 +62 145 +64 129 +18 31 +27 110 +58 91 +6 20 +84 103 +54 120 +87 162 +97 144 diff --git a/geom_bottleneck/tests/data/test_585_B b/geom_bottleneck/tests/data/test_585_B new file mode 100644 index 0000000..69f116a --- /dev/null +++ b/geom_bottleneck/tests/data/test_585_B @@ -0,0 +1,50 @@ +41 56 +85 176 +84 155 +25 40 +33 60 +84 92 +66 123 +63 66 +24 60 +4 51 +74 84 +13 70 +4 15 +86 102 +29 120 +62 70 +29 94 +11 20 +71 162 +87 165 +24 118 +65 93 +28 97 +54 151 +42 126 +55 86 +50 150 +5 35 +80 103 +94 158 +85 147 +73 95 +26 96 +67 151 +38 102 +42 72 +8 36 +78 165 +15 16 +35 67 +0 64 +35 70 +15 69 +75 96 +17 44 +42 66 +41 68 +80 88 +35 128 +34 113 diff --git a/geom_bottleneck/tests/data/test_586_A b/geom_bottleneck/tests/data/test_586_A new file mode 100644 index 0000000..ed8b673 --- /dev/null +++ b/geom_bottleneck/tests/data/test_586_A @@ -0,0 +1,50 @@ +62 74 +15 108 +49 131 +94 134 +5 6 +24 120 +35 79 +48 73 +84 170 +67 86 +30 98 +6 12 +60 107 +8 106 +6 57 +69 74 +24 120 +20 52 +78 147 +24 124 +76 87 +7 46 +20 115 +68 98 +51 87 +87 147 +83 93 +15 108 +70 103 +63 65 +70 90 +52 112 +54 107 +86 114 +58 137 +93 148 +43 120 +3 55 +20 97 +14 25 +59 111 +68 119 +78 165 +16 50 +3 5 +89 173 +84 181 +93 184 +89 185 +23 61 diff --git a/geom_bottleneck/tests/data/test_586_B b/geom_bottleneck/tests/data/test_586_B new file mode 100644 index 0000000..715be5e --- /dev/null +++ b/geom_bottleneck/tests/data/test_586_B @@ -0,0 +1,50 @@ +5 85 +46 116 +51 79 +20 36 +51 96 +83 170 +40 116 +40 128 +55 92 +51 127 +45 111 +56 65 +16 56 +30 52 +38 84 +56 70 +48 88 +0 6 +99 148 +64 159 +30 101 +14 51 +49 116 +66 71 +9 78 +4 35 +84 128 +39 58 +85 96 +54 60 +14 89 +2 46 +40 120 +76 117 +14 80 +47 118 +86 175 +35 126 +77 112 +75 150 +14 52 +90 169 +25 32 +73 95 +92 157 +5 34 +62 131 +16 26 +5 103 +73 106 diff --git a/geom_bottleneck/tests/data/test_587_A b/geom_bottleneck/tests/data/test_587_A new file mode 100644 index 0000000..883ddd7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_587_A @@ -0,0 +1,50 @@ +66 164 +74 81 +56 140 +77 143 +72 139 +77 113 +59 106 +37 42 +58 158 +46 52 +7 30 +73 107 +46 70 +35 120 +74 103 +71 117 +26 93 +11 68 +35 60 +91 151 +33 122 +30 106 +43 134 +90 131 +32 95 +8 72 +4 39 +17 115 +22 32 +28 100 +37 126 +84 152 +72 107 +68 157 +95 193 +93 191 +56 154 +39 42 +5 45 +62 121 +73 166 +14 51 +89 140 +76 166 +85 150 +18 112 +22 103 +65 147 +96 181 +55 123 diff --git a/geom_bottleneck/tests/data/test_587_B b/geom_bottleneck/tests/data/test_587_B new file mode 100644 index 0000000..589512c --- /dev/null +++ b/geom_bottleneck/tests/data/test_587_B @@ -0,0 +1,50 @@ +4 57 +12 64 +65 153 +73 111 +37 134 +11 54 +78 176 +33 77 +31 131 +14 101 +25 107 +83 112 +17 92 +59 139 +4 104 +82 114 +18 64 +13 72 +1 96 +72 112 +19 90 +23 34 +46 63 +45 79 +88 89 +16 105 +100 191 +31 46 +45 133 +86 119 +17 18 +59 140 +49 97 +31 47 +98 154 +70 99 +61 75 +31 34 +4 19 +46 122 +55 57 +81 171 +25 61 +18 89 +0 11 +48 79 +94 128 +73 122 +17 56 +19 39 diff --git a/geom_bottleneck/tests/data/test_588_A b/geom_bottleneck/tests/data/test_588_A new file mode 100644 index 0000000..c486b96 --- /dev/null +++ b/geom_bottleneck/tests/data/test_588_A @@ -0,0 +1,50 @@ +96 166 +5 58 +87 143 +50 104 +31 106 +80 106 +99 106 +46 52 +42 127 +10 86 +17 18 +20 94 +49 65 +10 75 +85 132 +13 54 +75 123 +8 13 +83 153 +25 47 +57 135 +14 57 +1 37 +29 34 +13 26 +52 94 +62 97 +93 153 +69 84 +87 88 +73 100 +54 97 +11 72 +51 143 +66 94 +85 178 +60 73 +36 126 +99 134 +23 68 +72 134 +81 138 +28 42 +65 84 +11 28 +15 38 +18 51 +79 149 +76 114 +33 53 diff --git a/geom_bottleneck/tests/data/test_588_B b/geom_bottleneck/tests/data/test_588_B new file mode 100644 index 0000000..13829bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_588_B @@ -0,0 +1,50 @@ +87 173 +41 85 +10 87 +43 78 +99 128 +35 64 +28 66 +9 67 +100 194 +22 89 +0 15 +77 90 +59 60 +92 93 +32 84 +62 112 +54 151 +46 47 +52 94 +17 113 +21 100 +5 48 +87 114 +71 112 +2 67 +65 120 +26 74 +69 132 +47 83 +14 20 +5 13 +56 137 +57 79 +76 132 +30 31 +89 145 +84 130 +78 158 +44 76 +70 125 +95 127 +6 53 +17 110 +93 158 +61 94 +32 111 +20 113 +26 105 +63 112 +36 37 diff --git a/geom_bottleneck/tests/data/test_589_A b/geom_bottleneck/tests/data/test_589_A new file mode 100644 index 0000000..7743778 --- /dev/null +++ b/geom_bottleneck/tests/data/test_589_A @@ -0,0 +1,50 @@ +71 126 +62 78 +69 164 +34 56 +82 167 +61 138 +63 94 +17 27 +81 135 +94 145 +24 39 +93 134 +99 152 +38 91 +27 100 +21 115 +69 120 +8 42 +93 122 +87 155 +18 104 +0 2 +41 104 +63 159 +93 139 +74 167 +3 94 +68 92 +30 44 +24 101 +8 104 +8 61 +59 111 +53 91 +43 68 +52 143 +11 48 +74 152 +20 115 +27 100 +65 81 +63 67 +84 85 +16 30 +71 80 +58 116 +95 188 +96 106 +7 94 +38 45 diff --git a/geom_bottleneck/tests/data/test_589_B b/geom_bottleneck/tests/data/test_589_B new file mode 100644 index 0000000..bbd5038 --- /dev/null +++ b/geom_bottleneck/tests/data/test_589_B @@ -0,0 +1,50 @@ +28 114 +87 171 +0 35 +94 100 +98 147 +53 68 +64 95 +54 145 +45 76 +22 98 +83 155 +31 89 +27 79 +32 37 +28 58 +77 139 +87 143 +80 152 +25 28 +61 123 +0 4 +25 42 +64 159 +34 37 +84 153 +13 93 +25 69 +80 112 +89 163 +18 77 +35 119 +35 114 +39 60 +90 187 +0 33 +11 80 +52 140 +59 73 +92 168 +76 91 +49 88 +80 130 +37 104 +65 146 +14 56 +66 95 +87 182 +12 102 +78 135 +73 143 diff --git a/geom_bottleneck/tests/data/test_590_A b/geom_bottleneck/tests/data/test_590_A new file mode 100644 index 0000000..3dfb2df --- /dev/null +++ b/geom_bottleneck/tests/data/test_590_A @@ -0,0 +1,50 @@ +31 67 +88 180 +59 105 +31 117 +19 50 +43 59 +9 60 +4 58 +80 144 +47 71 +63 139 +14 68 +38 136 +8 52 +35 81 +56 116 +81 168 +56 99 +95 142 +24 121 +29 100 +88 174 +47 95 +40 93 +7 25 +3 84 +48 94 +90 128 +59 137 +96 164 +95 115 +69 105 +81 139 +59 65 +66 71 +53 84 +20 59 +29 61 +77 150 +48 138 +41 125 +53 86 +5 86 +42 69 +17 54 +70 105 +69 148 +18 58 +72 100 +67 77 diff --git a/geom_bottleneck/tests/data/test_590_B b/geom_bottleneck/tests/data/test_590_B new file mode 100644 index 0000000..18d6a7f --- /dev/null +++ b/geom_bottleneck/tests/data/test_590_B @@ -0,0 +1,50 @@ +79 84 +10 56 +10 18 +78 175 +50 74 +8 104 +77 116 +5 45 +48 116 +17 92 +72 159 +66 113 +51 140 +60 101 +76 120 +52 75 +3 71 +31 53 +75 156 +93 172 +4 93 +11 42 +89 167 +19 49 +62 119 +55 97 +39 68 +74 140 +64 97 +97 154 +30 98 +16 59 +18 68 +66 139 +9 44 +56 74 +61 82 +51 115 +45 51 +89 121 +71 134 +82 119 +13 113 +36 43 +21 121 +24 115 +37 65 +99 100 +36 135 +37 96 diff --git a/geom_bottleneck/tests/data/test_591_A b/geom_bottleneck/tests/data/test_591_A new file mode 100644 index 0000000..411c1bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_591_A @@ -0,0 +1,50 @@ +13 93 +48 89 +12 53 +4 87 +91 181 +15 16 +29 59 +38 57 +8 29 +73 165 +29 44 +45 67 +24 74 +50 91 +88 162 +30 105 +80 134 +58 61 +69 135 +31 107 +0 15 +17 115 +72 74 +45 50 +75 115 +76 97 +61 89 +45 112 +59 97 +32 50 +85 88 +35 124 +95 112 +76 147 +69 84 +12 47 +100 154 +92 163 +4 55 +23 76 +85 100 +96 170 +28 87 +17 116 +44 57 +22 118 +51 134 +32 91 +8 14 +25 80 diff --git a/geom_bottleneck/tests/data/test_591_B b/geom_bottleneck/tests/data/test_591_B new file mode 100644 index 0000000..cc96d2f --- /dev/null +++ b/geom_bottleneck/tests/data/test_591_B @@ -0,0 +1,50 @@ +85 150 +85 96 +57 94 +13 112 +48 89 +7 17 +47 136 +96 173 +100 144 +12 76 +75 90 +51 116 +33 72 +21 65 +41 66 +80 104 +4 53 +71 72 +52 77 +93 94 +20 76 +29 101 +47 104 +33 87 +47 48 +73 161 +32 37 +4 74 +30 57 +56 109 +95 138 +76 135 +70 160 +59 136 +29 105 +75 169 +100 154 +67 139 +28 104 +89 121 +1 18 +7 47 +100 134 +3 4 +29 85 +79 129 +48 89 +97 191 +60 153 +100 199 diff --git a/geom_bottleneck/tests/data/test_592_A b/geom_bottleneck/tests/data/test_592_A new file mode 100644 index 0000000..bac0698 --- /dev/null +++ b/geom_bottleneck/tests/data/test_592_A @@ -0,0 +1,50 @@ +59 132 +83 149 +50 62 +45 103 +28 32 +74 163 +78 151 +19 85 +26 113 +42 136 +87 123 +49 108 +7 69 +45 84 +96 153 +50 112 +3 72 +91 136 +16 79 +56 105 +92 170 +92 177 +15 57 +13 104 +90 112 +16 87 +99 154 +91 174 +49 76 +39 137 +38 59 +25 33 +88 113 +85 136 +38 67 +44 73 +75 166 +60 131 +56 155 +86 105 +69 75 +54 108 +8 79 +68 103 +56 133 +29 91 +57 77 +42 109 +97 170 +89 92 diff --git a/geom_bottleneck/tests/data/test_592_B b/geom_bottleneck/tests/data/test_592_B new file mode 100644 index 0000000..bc8a8c6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_592_B @@ -0,0 +1,50 @@ +73 140 +34 69 +82 101 +44 70 +26 87 +76 151 +18 43 +14 83 +35 126 +31 86 +59 125 +89 160 +33 38 +38 79 +54 77 +51 91 +75 87 +4 94 +2 23 +75 152 +1 8 +65 100 +60 80 +62 96 +40 116 +0 66 +10 99 +21 48 +98 161 +0 35 +18 25 +61 68 +58 152 +97 161 +43 99 +25 35 +55 59 +78 151 +6 94 +17 60 +98 142 +81 119 +2 29 +0 95 +55 141 +29 99 +14 44 +32 68 +31 107 +26 74 diff --git a/geom_bottleneck/tests/data/test_593_A b/geom_bottleneck/tests/data/test_593_A new file mode 100644 index 0000000..e62ec21 --- /dev/null +++ b/geom_bottleneck/tests/data/test_593_A @@ -0,0 +1,50 @@ +15 96 +50 89 +53 59 +42 45 +76 150 +24 110 +27 126 +26 79 +93 132 +65 100 +38 134 +14 68 +88 130 +92 120 +36 122 +24 77 +11 102 +56 91 +12 77 +89 131 +57 137 +86 173 +38 66 +7 27 +49 134 +38 81 +100 122 +85 98 +96 147 +25 80 +49 88 +32 127 +42 122 +3 11 +25 59 +11 31 +82 151 +97 187 +55 99 +11 71 +14 28 +80 105 +4 74 +89 113 +99 127 +40 75 +86 121 +44 52 +74 123 +51 105 diff --git a/geom_bottleneck/tests/data/test_593_B b/geom_bottleneck/tests/data/test_593_B new file mode 100644 index 0000000..a5150da --- /dev/null +++ b/geom_bottleneck/tests/data/test_593_B @@ -0,0 +1,50 @@ +70 127 +81 175 +6 42 +67 74 +18 95 +32 33 +98 188 +25 67 +99 170 +60 119 +35 79 +20 42 +28 64 +92 129 +26 110 +95 123 +37 130 +25 97 +44 136 +30 78 +42 72 +52 139 +80 177 +44 143 +79 122 +100 198 +74 90 +15 73 +48 63 +66 146 +77 168 +28 66 +72 103 +23 77 +84 133 +37 127 +70 139 +85 129 +13 32 +57 151 +26 83 +7 45 +14 16 +23 70 +94 117 +71 148 +9 89 +20 109 +64 85 +27 106 diff --git a/geom_bottleneck/tests/data/test_594_A b/geom_bottleneck/tests/data/test_594_A new file mode 100644 index 0000000..ca81d4c --- /dev/null +++ b/geom_bottleneck/tests/data/test_594_A @@ -0,0 +1,50 @@ +49 127 +45 58 +50 143 +52 55 +32 102 +79 154 +36 134 +61 161 +41 134 +31 71 +51 86 +88 135 +68 93 +30 68 +8 80 +3 68 +36 101 +15 73 +51 132 +95 180 +27 43 +28 56 +58 73 +32 108 +85 179 +11 17 +65 159 +6 40 +27 53 +72 151 +66 114 +17 56 +84 95 +35 80 +85 110 +97 167 +74 84 +96 134 +76 117 +61 99 +20 91 +89 114 +1 32 +0 29 +71 138 +53 123 +78 96 +57 138 +7 89 +92 105 diff --git a/geom_bottleneck/tests/data/test_594_B b/geom_bottleneck/tests/data/test_594_B new file mode 100644 index 0000000..d366e85 --- /dev/null +++ b/geom_bottleneck/tests/data/test_594_B @@ -0,0 +1,50 @@ +46 86 +23 69 +40 50 +66 89 +63 123 +23 108 +61 79 +59 144 +60 156 +49 88 +60 92 +65 101 +56 64 +3 53 +84 141 +39 79 +36 101 +8 82 +61 138 +29 78 +14 108 +29 122 +93 124 +53 95 +70 89 +10 102 +10 104 +23 27 +6 53 +8 41 +86 164 +8 41 +51 120 +27 63 +33 60 +62 99 +56 119 +58 84 +39 118 +25 86 +6 67 +50 56 +91 173 +71 121 +28 51 +88 142 +90 186 +69 149 +87 102 +60 129 diff --git a/geom_bottleneck/tests/data/test_595_A b/geom_bottleneck/tests/data/test_595_A new file mode 100644 index 0000000..805de28 --- /dev/null +++ b/geom_bottleneck/tests/data/test_595_A @@ -0,0 +1,50 @@ +39 91 +72 162 +80 123 +46 113 +51 65 +80 149 +72 132 +27 124 +17 111 +17 71 +86 120 +82 102 +71 117 +33 86 +15 84 +76 146 +69 102 +97 153 +91 185 +5 53 +61 95 +85 107 +92 101 +80 113 +12 63 +62 111 +29 109 +33 77 +91 134 +49 138 +30 57 +70 106 +98 110 +87 168 +76 140 +20 109 +58 71 +56 99 +49 117 +60 118 +63 149 +9 92 +14 94 +12 52 +21 37 +37 91 +65 107 +98 101 +71 131 +54 108 diff --git a/geom_bottleneck/tests/data/test_595_B b/geom_bottleneck/tests/data/test_595_B new file mode 100644 index 0000000..c458a54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_595_B @@ -0,0 +1,50 @@ +92 101 +74 76 +47 115 +99 119 +19 44 +57 156 +21 59 +12 86 +92 168 +73 148 +92 164 +47 130 +32 96 +22 116 +58 99 +85 169 +66 147 +31 117 +17 107 +83 158 +10 54 +95 129 +88 158 +72 78 +98 125 +99 170 +22 79 +10 16 +2 31 +52 62 +16 40 +31 103 +38 100 +32 82 +71 133 +55 135 +74 158 +13 45 +6 12 +13 43 +44 57 +25 51 +88 112 +35 66 +31 83 +28 59 +44 103 +40 131 +100 124 +21 107 diff --git a/geom_bottleneck/tests/data/test_596_A b/geom_bottleneck/tests/data/test_596_A new file mode 100644 index 0000000..3a32cf7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_596_A @@ -0,0 +1,50 @@ +95 140 +26 108 +52 84 +39 95 +18 48 +29 105 +64 114 +75 103 +59 80 +11 95 +41 52 +43 123 +51 77 +31 54 +64 130 +23 79 +82 102 +53 94 +13 14 +19 74 +74 109 +71 140 +93 94 +76 82 +43 48 +46 70 +53 121 +35 68 +30 32 +13 53 +28 60 +51 111 +64 142 +84 153 +15 79 +89 140 +39 136 +15 37 +35 115 +15 105 +16 62 +3 77 +93 107 +88 104 +56 113 +59 142 +11 52 +22 64 +66 138 +32 75 diff --git a/geom_bottleneck/tests/data/test_596_B b/geom_bottleneck/tests/data/test_596_B new file mode 100644 index 0000000..1b9c765 --- /dev/null +++ b/geom_bottleneck/tests/data/test_596_B @@ -0,0 +1,50 @@ +73 154 +65 99 +56 77 +56 70 +67 75 +4 26 +31 64 +89 106 +73 91 +31 43 +98 185 +50 138 +79 131 +47 73 +16 55 +35 98 +24 100 +67 72 +44 95 +66 101 +40 91 +53 90 +6 67 +57 67 +15 111 +2 43 +3 18 +35 116 +44 138 +46 85 +31 41 +16 17 +61 96 +90 100 +45 129 +97 172 +38 70 +47 136 +26 56 +0 95 +100 155 +48 110 +4 60 +16 29 +74 103 +63 113 +93 98 +73 94 +15 86 +40 86 diff --git a/geom_bottleneck/tests/data/test_597_A b/geom_bottleneck/tests/data/test_597_A new file mode 100644 index 0000000..984cc9f --- /dev/null +++ b/geom_bottleneck/tests/data/test_597_A @@ -0,0 +1,50 @@ +75 141 +50 130 +82 143 +98 128 +15 107 +9 22 +27 64 +2 51 +14 42 +15 27 +39 110 +50 95 +62 91 +80 85 +89 92 +56 78 +94 114 +68 130 +80 93 +12 25 +86 88 +33 73 +38 79 +28 100 +65 139 +22 59 +70 169 +45 118 +77 87 +46 49 +87 122 +50 109 +6 101 +8 21 +0 32 +16 81 +89 167 +83 85 +91 185 +85 120 +87 128 +20 58 +76 112 +13 60 +8 15 +93 172 +12 92 +51 132 +92 140 +83 167 diff --git a/geom_bottleneck/tests/data/test_597_B b/geom_bottleneck/tests/data/test_597_B new file mode 100644 index 0000000..d84920c --- /dev/null +++ b/geom_bottleneck/tests/data/test_597_B @@ -0,0 +1,50 @@ +89 118 +56 104 +78 101 +56 103 +13 94 +98 186 +99 137 +58 90 +61 154 +0 12 +7 23 +77 158 +66 157 +70 91 +10 38 +14 23 +21 92 +89 189 +84 105 +79 130 +17 27 +93 102 +62 82 +60 84 +18 28 +49 143 +70 157 +54 119 +32 124 +17 89 +1 49 +4 53 +76 109 +61 113 +71 90 +4 95 +78 125 +21 110 +2 72 +26 106 +35 55 +76 90 +80 127 +80 137 +30 63 +12 81 +48 93 +27 123 +24 57 +56 120 diff --git a/geom_bottleneck/tests/data/test_598_A b/geom_bottleneck/tests/data/test_598_A new file mode 100644 index 0000000..4c4fa46 --- /dev/null +++ b/geom_bottleneck/tests/data/test_598_A @@ -0,0 +1,50 @@ +62 152 +79 161 +64 158 +93 154 +51 99 +69 113 +21 62 +66 156 +48 137 +66 121 +78 165 +56 107 +87 141 +87 159 +42 50 +61 72 +31 61 +26 125 +33 118 +32 88 +98 110 +75 103 +67 130 +94 192 +97 153 +3 4 +48 136 +56 57 +43 53 +29 113 +82 110 +90 103 +54 93 +53 106 +75 143 +32 44 +85 147 +50 72 +22 71 +49 96 +49 132 +32 113 +24 58 +58 142 +60 106 +100 163 +45 123 +27 31 +41 76 +14 40 diff --git a/geom_bottleneck/tests/data/test_598_B b/geom_bottleneck/tests/data/test_598_B new file mode 100644 index 0000000..974d069 --- /dev/null +++ b/geom_bottleneck/tests/data/test_598_B @@ -0,0 +1,50 @@ +8 45 +47 75 +81 128 +60 100 +13 40 +47 96 +97 169 +28 93 +36 92 +80 175 +41 121 +24 55 +94 100 +69 82 +53 97 +64 119 +53 151 +30 51 +11 82 +77 118 +66 113 +54 92 +23 100 +79 82 +44 122 +93 185 +75 169 +98 99 +69 163 +28 100 +66 70 +69 98 +80 99 +23 79 +100 134 +67 126 +57 138 +79 116 +25 44 +48 142 +26 123 +14 51 +93 151 +68 71 +6 27 +4 64 +63 128 +88 166 +59 70 +19 80 diff --git a/geom_bottleneck/tests/data/test_599_A b/geom_bottleneck/tests/data/test_599_A new file mode 100644 index 0000000..984a0ed --- /dev/null +++ b/geom_bottleneck/tests/data/test_599_A @@ -0,0 +1,50 @@ +6 64 +55 70 +74 171 +88 144 +91 170 +61 75 +1 42 +69 72 +99 112 +100 113 +97 165 +78 83 +12 90 +19 103 +91 134 +78 121 +31 75 +57 139 +2 15 +84 129 +73 139 +24 71 +56 135 +17 117 +26 66 +46 110 +21 97 +24 111 +100 177 +59 132 +13 14 +12 73 +4 51 +49 89 +27 82 +23 107 +84 112 +8 52 +96 172 +97 133 +40 80 +21 32 +65 149 +61 125 +92 133 +89 119 +28 37 +46 106 +95 190 +78 91 diff --git a/geom_bottleneck/tests/data/test_599_B b/geom_bottleneck/tests/data/test_599_B new file mode 100644 index 0000000..aaea2a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_599_B @@ -0,0 +1,50 @@ +83 144 +54 114 +6 83 +53 109 +60 159 +33 90 +72 83 +3 5 +72 170 +60 116 +75 172 +19 107 +11 36 +36 109 +25 59 +22 100 +30 127 +57 119 +28 87 +81 144 +10 53 +2 27 +71 117 +60 84 +95 99 +77 81 +56 67 +67 85 +32 42 +28 45 +81 148 +6 33 +60 146 +83 86 +30 48 +89 105 +26 53 +65 89 +41 94 +47 84 +88 130 +51 95 +65 74 +98 107 +99 180 +80 107 +89 94 +25 36 +83 106 +24 112 diff --git a/geom_bottleneck/tests/data/test_600_A b/geom_bottleneck/tests/data/test_600_A new file mode 100644 index 0000000..13c5659 --- /dev/null +++ b/geom_bottleneck/tests/data/test_600_A @@ -0,0 +1,100 @@ +77 125 +40 107 +52 73 +65 77 +96 158 +26 106 +61 138 +1 10 +56 151 +91 161 +1 20 +100 172 +69 152 +26 57 +33 96 +21 98 +2 24 +54 115 +35 116 +17 31 +21 50 +36 93 +61 74 +98 122 +96 151 +90 168 +49 69 +23 24 +2 67 +28 123 +95 181 +60 81 +33 96 +25 103 +44 114 +84 128 +1 45 +90 154 +34 83 +57 149 +49 109 +57 121 +47 74 +57 77 +37 132 +44 48 +61 98 +37 60 +66 84 +71 73 +30 121 +50 150 +44 99 +86 179 +99 137 +53 125 +85 136 +56 126 +99 163 +43 132 +1 66 +90 132 +27 40 +2 10 +65 115 +39 68 +17 89 +90 153 +22 102 +28 78 +56 101 +89 184 +88 125 +83 85 +75 144 +26 89 +56 108 +83 173 +90 106 +7 72 +97 173 +94 131 +31 104 +95 148 +100 102 +37 82 +86 128 +29 56 +54 109 +81 157 +82 126 +62 71 +33 116 +86 126 +20 103 +34 131 +93 107 +26 104 +31 91 +23 115 diff --git a/geom_bottleneck/tests/data/test_600_B b/geom_bottleneck/tests/data/test_600_B new file mode 100644 index 0000000..5de1dfa --- /dev/null +++ b/geom_bottleneck/tests/data/test_600_B @@ -0,0 +1,100 @@ +99 168 +39 113 +73 109 +91 101 +67 144 +17 57 +3 59 +81 155 +100 159 +48 110 +98 128 +73 167 +55 135 +42 140 +84 129 +18 97 +92 103 +33 86 +68 84 +83 111 +72 111 +97 179 +8 58 +6 80 +21 99 +81 124 +37 85 +19 48 +11 14 +53 122 +16 74 +75 113 +47 74 +87 166 +45 69 +51 68 +74 122 +10 47 +50 90 +66 114 +24 115 +40 65 +74 136 +72 146 +24 114 +48 91 +56 68 +78 102 +30 64 +75 159 +16 101 +58 150 +69 126 +80 136 +6 96 +53 121 +15 115 +76 81 +36 59 +63 68 +85 142 +7 50 +20 83 +9 40 +98 163 +70 165 +88 177 +85 149 +0 17 +30 124 +40 113 +35 91 +66 117 +94 108 +11 106 +78 88 +42 107 +60 121 +55 119 +78 110 +0 76 +63 130 +10 105 +23 68 +13 81 +60 142 +3 81 +53 90 +26 99 +95 165 +52 126 +41 70 +6 29 +14 103 +88 170 +79 102 +9 98 +27 124 +12 60 +59 145 diff --git a/geom_bottleneck/tests/data/test_601_A b/geom_bottleneck/tests/data/test_601_A new file mode 100644 index 0000000..9f57dd0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_601_A @@ -0,0 +1,100 @@ +49 135 +27 47 +45 83 +13 49 +15 80 +78 84 +54 128 +20 24 +75 121 +52 90 +15 64 +19 101 +35 80 +35 69 +49 122 +21 49 +51 75 +41 95 +91 162 +26 101 +54 104 +65 164 +74 100 +6 51 +58 68 +99 148 +55 87 +35 51 +51 77 +22 117 +78 141 +80 135 +66 145 +80 145 +68 112 +35 97 +63 91 +10 62 +1 73 +40 106 +76 77 +8 93 +94 136 +57 157 +16 43 +46 92 +49 77 +44 49 +51 120 +68 133 +41 73 +72 109 +42 59 +11 13 +19 86 +24 49 +11 105 +93 113 +81 160 +5 99 +78 159 +37 97 +68 120 +54 111 +41 49 +33 123 +27 35 +71 101 +55 70 +99 183 +68 121 +62 92 +47 53 +4 6 +56 110 +96 113 +85 122 +85 92 +31 97 +1 62 +25 67 +30 39 +16 23 +97 148 +21 22 +21 46 +85 134 +19 23 +12 56 +16 40 +59 138 +9 63 +31 46 +88 161 +72 74 +28 45 +57 95 +90 164 +89 106 +49 134 diff --git a/geom_bottleneck/tests/data/test_601_B b/geom_bottleneck/tests/data/test_601_B new file mode 100644 index 0000000..64d7ef8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_601_B @@ -0,0 +1,100 @@ +45 101 +84 90 +70 98 +64 109 +100 111 +82 87 +26 54 +18 90 +84 133 +92 145 +68 139 +90 154 +85 104 +34 76 +30 79 +21 99 +2 85 +20 75 +12 57 +62 102 +69 148 +18 116 +28 97 +52 88 +40 68 +21 26 +66 73 +8 68 +31 130 +83 174 +89 156 +38 43 +62 153 +4 34 +85 123 +51 99 +39 119 +99 149 +19 81 +51 79 +51 136 +25 52 +63 80 +91 166 +62 126 +86 102 +16 39 +0 66 +26 107 +55 89 +72 100 +73 106 +82 129 +77 112 +44 81 +94 118 +57 136 +1 13 +43 52 +24 112 +39 129 +28 97 +41 105 +59 150 +21 84 +38 92 +39 91 +25 36 +52 125 +56 119 +99 171 +51 142 +6 34 +44 77 +100 170 +23 43 +76 138 +67 77 +26 116 +18 49 +25 92 +42 138 +22 41 +48 112 +81 89 +51 67 +64 90 +51 94 +75 147 +49 96 +47 102 +31 114 +7 92 +48 81 +40 41 +84 117 +34 118 +9 27 +86 145 +56 69 diff --git a/geom_bottleneck/tests/data/test_602_A b/geom_bottleneck/tests/data/test_602_A new file mode 100644 index 0000000..df83de7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_602_A @@ -0,0 +1,100 @@ +8 77 +68 127 +23 104 +15 96 +58 68 +5 77 +70 105 +13 49 +60 133 +31 122 +74 75 +80 132 +72 107 +44 52 +31 124 +32 36 +62 146 +51 98 +31 118 +45 107 +53 85 +76 152 +67 161 +51 92 +10 23 +89 183 +73 117 +47 112 +42 97 +68 101 +82 86 +32 61 +39 134 +9 109 +31 83 +95 137 +82 155 +34 39 +5 6 +24 108 +94 150 +22 68 +95 172 +12 92 +59 107 +31 59 +0 40 +53 64 +32 73 +69 134 +21 63 +13 107 +10 82 +3 94 +85 147 +51 127 +91 169 +17 87 +80 137 +90 178 +89 185 +56 103 +13 18 +83 84 +34 77 +50 148 +1 10 +80 141 +92 191 +9 21 +85 172 +11 50 +98 134 +12 99 +81 137 +66 90 +32 109 +22 73 +39 130 +38 52 +24 68 +71 113 +84 90 +79 102 +92 192 +47 105 +70 132 +4 45 +57 123 +60 125 +48 56 +19 110 +40 130 +36 114 +55 92 +1 66 +77 131 +96 172 +34 85 +79 102 diff --git a/geom_bottleneck/tests/data/test_602_B b/geom_bottleneck/tests/data/test_602_B new file mode 100644 index 0000000..fb19e1c --- /dev/null +++ b/geom_bottleneck/tests/data/test_602_B @@ -0,0 +1,100 @@ +4 97 +46 76 +86 104 +38 75 +73 124 +7 52 +42 105 +72 132 +14 114 +38 136 +77 91 +72 92 +36 64 +53 121 +57 62 +20 49 +55 78 +82 151 +9 95 +6 20 +10 51 +50 110 +38 100 +69 150 +80 102 +78 93 +94 157 +7 55 +39 121 +80 136 +24 49 +33 95 +99 150 +55 119 +97 188 +73 82 +26 42 +84 92 +5 103 +88 167 +7 54 +35 74 +68 141 +31 56 +98 182 +38 116 +0 63 +29 39 +19 62 +41 91 +50 81 +37 106 +22 65 +19 113 +55 125 +59 79 +29 75 +6 48 +12 101 +37 102 +48 126 +34 71 +63 90 +87 139 +97 147 +86 143 +22 69 +7 17 +9 93 +82 109 +12 55 +88 126 +97 102 +6 70 +6 21 +39 105 +4 103 +46 139 +38 111 +44 45 +17 31 +79 150 +83 96 +97 101 +66 152 +15 84 +82 99 +2 102 +62 123 +8 101 +32 92 +76 158 +20 26 +20 106 +17 75 +70 89 +13 22 +57 87 +6 27 +16 25 diff --git a/geom_bottleneck/tests/data/test_603_A b/geom_bottleneck/tests/data/test_603_A new file mode 100644 index 0000000..a81f6cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_603_A @@ -0,0 +1,100 @@ +59 86 +86 166 +73 114 +3 10 +36 59 +0 33 +24 25 +51 70 +83 129 +7 60 +47 58 +20 97 +30 96 +61 161 +83 143 +83 127 +100 188 +6 28 +18 44 +53 54 +58 94 +53 97 +36 86 +83 133 +37 83 +79 125 +19 104 +67 156 +6 99 +44 128 +37 64 +35 92 +36 126 +55 155 +16 48 +37 108 +72 119 +96 111 +10 83 +96 143 +31 65 +41 138 +94 148 +41 74 +6 92 +53 133 +98 113 +2 71 +15 52 +28 54 +46 58 +81 109 +24 85 +60 159 +61 68 +46 96 +45 138 +99 117 +82 145 +69 121 +15 53 +74 174 +51 114 +100 145 +26 82 +32 115 +72 169 +48 144 +75 172 +65 114 +49 74 +45 119 +31 122 +59 146 +62 67 +43 46 +6 69 +23 25 +76 176 +68 164 +36 113 +26 106 +46 134 +71 151 +59 121 +10 99 +71 167 +82 162 +62 79 +97 127 +68 115 +46 90 +83 156 +12 39 +61 87 +90 187 +0 84 +44 85 +41 93 +98 187 diff --git a/geom_bottleneck/tests/data/test_603_B b/geom_bottleneck/tests/data/test_603_B new file mode 100644 index 0000000..0ea6eda --- /dev/null +++ b/geom_bottleneck/tests/data/test_603_B @@ -0,0 +1,100 @@ +67 101 +34 55 +8 100 +52 112 +78 120 +15 71 +17 58 +83 109 +41 137 +41 107 +26 125 +87 111 +82 141 +77 78 +24 50 +49 78 +79 88 +91 110 +75 78 +84 91 +100 199 +34 70 +66 154 +23 34 +46 73 +43 94 +23 65 +89 175 +44 46 +13 24 +8 95 +94 162 +13 27 +74 102 +80 156 +77 124 +44 100 +13 52 +32 43 +23 38 +87 162 +24 52 +67 103 +97 146 +79 94 +21 100 +97 186 +38 39 +67 123 +99 197 +29 46 +52 139 +1 80 +5 34 +67 86 +49 122 +45 50 +64 80 +73 154 +85 164 +23 42 +93 123 +54 123 +63 64 +84 162 +86 103 +47 117 +32 112 +60 152 +96 111 +79 97 +86 130 +0 98 +65 161 +55 83 +73 139 +82 133 +9 108 +24 123 +92 132 +87 91 +23 40 +55 116 +91 176 +49 100 +25 58 +4 65 +28 39 +3 74 +22 37 +34 128 +98 154 +32 122 +9 84 +53 79 +47 61 +76 82 +11 34 +65 128 +28 82 diff --git a/geom_bottleneck/tests/data/test_604_A b/geom_bottleneck/tests/data/test_604_A new file mode 100644 index 0000000..11a7c84 --- /dev/null +++ b/geom_bottleneck/tests/data/test_604_A @@ -0,0 +1,100 @@ +90 168 +97 169 +3 20 +65 71 +61 105 +6 56 +50 122 +9 12 +15 51 +73 121 +54 118 +27 121 +97 135 +38 100 +35 69 +40 57 +64 159 +37 125 +79 116 +11 54 +66 72 +76 162 +69 154 +35 77 +91 177 +77 111 +67 145 +59 100 +94 130 +75 135 +53 106 +43 106 +100 130 +81 159 +14 107 +52 91 +47 136 +83 133 +16 63 +11 98 +4 6 +98 120 +98 117 +69 90 +24 108 +74 138 +100 105 +9 16 +55 81 +86 154 +6 99 +82 85 +86 176 +57 79 +83 136 +70 135 +30 85 +73 126 +73 164 +20 89 +42 93 +97 150 +6 69 +26 66 +43 129 +84 117 +75 132 +68 98 +29 111 +57 140 +15 107 +75 141 +97 180 +47 130 +31 72 +56 150 +30 75 +86 106 +49 50 +16 38 +40 68 +99 176 +10 56 +89 128 +97 124 +35 134 +82 137 +34 97 +34 40 +34 43 +71 149 +33 113 +6 80 +69 160 +54 148 +88 131 +98 141 +91 112 +25 106 +68 149 diff --git a/geom_bottleneck/tests/data/test_604_B b/geom_bottleneck/tests/data/test_604_B new file mode 100644 index 0000000..6e14339 --- /dev/null +++ b/geom_bottleneck/tests/data/test_604_B @@ -0,0 +1,100 @@ +4 69 +24 43 +68 72 +33 77 +96 106 +48 134 +18 38 +1 28 +12 112 +70 76 +6 16 +19 65 +35 49 +91 95 +50 147 +94 174 +87 124 +27 29 +17 116 +50 120 +83 183 +60 129 +92 120 +67 125 +60 73 +17 60 +10 12 +65 158 +19 100 +44 92 +86 139 +98 184 +67 100 +28 115 +16 94 +36 94 +40 99 +20 115 +94 149 +80 135 +47 109 +39 53 +62 159 +25 78 +30 118 +71 89 +86 166 +85 159 +58 120 +45 64 +73 156 +66 107 +31 88 +53 88 +67 167 +49 144 +60 71 +69 151 +44 111 +43 93 +95 102 +78 150 +98 120 +22 92 +70 76 +1 98 +25 44 +93 166 +16 100 +94 134 +37 99 +4 70 +32 47 +61 136 +30 95 +99 133 +91 163 +32 112 +78 91 +55 62 +16 33 +13 48 +45 75 +96 155 +20 82 +39 57 +22 51 +7 31 +73 90 +49 55 +32 65 +16 22 +33 71 +80 97 +85 154 +100 172 +86 114 +98 191 +2 7 +35 113 diff --git a/geom_bottleneck/tests/data/test_605_A b/geom_bottleneck/tests/data/test_605_A new file mode 100644 index 0000000..522dbf9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_605_A @@ -0,0 +1,100 @@ +59 77 +22 53 +70 99 +32 126 +63 100 +72 89 +93 150 +70 83 +35 53 +96 128 +55 151 +30 96 +6 85 +80 131 +76 80 +36 79 +50 72 +70 134 +20 77 +27 33 +35 37 +44 55 +91 165 +68 132 +52 141 +81 142 +43 106 +46 55 +55 100 +21 86 +100 130 +97 173 +56 142 +26 36 +54 68 +17 23 +57 124 +65 122 +11 30 +70 96 +46 47 +52 114 +65 104 +24 39 +2 102 +91 181 +66 107 +27 120 +24 38 +33 94 +87 166 +35 78 +38 92 +56 125 +15 50 +95 129 +85 174 +53 126 +76 171 +71 154 +67 86 +61 133 +99 183 +92 102 +83 103 +80 174 +63 109 +37 60 +12 78 +30 56 +19 117 +33 99 +3 94 +18 52 +44 133 +53 55 +37 95 +43 92 +64 127 +12 79 +65 129 +48 92 +92 136 +25 64 +83 91 +22 91 +66 96 +33 37 +8 45 +4 5 +21 107 +72 171 +6 14 +75 124 +79 140 +52 114 +61 62 +89 151 +98 102 +4 46 diff --git a/geom_bottleneck/tests/data/test_605_B b/geom_bottleneck/tests/data/test_605_B new file mode 100644 index 0000000..34f19db --- /dev/null +++ b/geom_bottleneck/tests/data/test_605_B @@ -0,0 +1,100 @@ +17 96 +1 57 +57 149 +10 24 +76 155 +3 81 +66 101 +79 85 +17 91 +78 105 +78 155 +91 167 +63 84 +41 45 +12 50 +49 107 +13 31 +93 175 +93 105 +33 46 +70 121 +36 57 +43 103 +44 99 +54 91 +25 65 +26 27 +64 119 +94 161 +29 115 +0 14 +81 152 +15 83 +4 50 +56 132 +27 50 +42 61 +28 39 +2 38 +55 87 +52 91 +70 160 +57 94 +32 41 +52 142 +28 37 +81 92 +89 91 +79 127 +94 179 +45 128 +92 120 +61 124 +61 143 +12 31 +2 36 +42 48 +25 55 +89 184 +56 57 +90 154 +55 94 +70 104 +35 135 +10 39 +45 63 +72 102 +0 12 +45 71 +84 126 +89 146 +52 100 +14 93 +16 42 +89 186 +50 77 +64 75 +29 52 +14 81 +55 73 +69 105 +47 144 +70 102 +59 76 +81 94 +63 163 +19 55 +70 146 +58 118 +56 96 +74 93 +24 30 +100 190 +80 115 +88 172 +0 31 +83 124 +53 153 +68 70 +73 108 diff --git a/geom_bottleneck/tests/data/test_606_A b/geom_bottleneck/tests/data/test_606_A new file mode 100644 index 0000000..2f4dec4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_606_A @@ -0,0 +1,100 @@ +49 104 +89 185 +56 72 +44 117 +27 73 +64 87 +30 44 +89 150 +73 105 +80 156 +48 145 +36 87 +62 122 +85 97 +51 144 +48 137 +61 132 +47 66 +78 134 +17 101 +66 119 +74 82 +96 99 +56 57 +66 109 +13 103 +6 40 +55 78 +77 130 +92 133 +65 74 +8 9 +29 123 +6 61 +41 138 +21 98 +85 107 +99 108 +79 95 +93 161 +9 20 +58 150 +33 93 +2 48 +38 40 +83 153 +33 92 +94 155 +44 96 +17 102 +68 99 +32 69 +73 126 +5 43 +86 181 +2 38 +65 163 +86 164 +49 132 +41 86 +96 186 +87 145 +12 81 +11 73 +77 87 +22 116 +14 21 +56 82 +61 120 +2 24 +67 71 +33 93 +89 132 +14 102 +12 29 +7 38 +12 88 +76 123 +46 75 +79 99 +49 74 +27 35 +8 47 +33 84 +79 171 +72 83 +79 106 +96 152 +86 164 +100 128 +7 97 +70 128 +89 156 +15 17 +86 126 +65 110 +53 80 +51 81 +36 85 +50 82 diff --git a/geom_bottleneck/tests/data/test_606_B b/geom_bottleneck/tests/data/test_606_B new file mode 100644 index 0000000..62417b1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_606_B @@ -0,0 +1,100 @@ +35 135 +1 41 +63 72 +43 98 +37 71 +24 87 +14 105 +66 67 +12 79 +60 145 +20 72 +0 70 +67 149 +22 30 +86 151 +20 106 +38 74 +58 133 +40 103 +34 111 +81 126 +55 74 +49 133 +44 128 +54 86 +15 82 +84 89 +87 121 +95 135 +53 104 +91 157 +7 101 +45 124 +87 162 +73 164 +60 123 +77 81 +69 78 +44 118 +0 79 +66 106 +67 85 +85 168 +93 122 +0 42 +10 66 +9 23 +29 80 +46 76 +75 126 +2 32 +99 143 +24 90 +31 120 +73 98 +42 57 +67 86 +44 99 +65 135 +100 167 +33 43 +10 29 +36 63 +79 178 +82 85 +35 49 +24 57 +66 142 +2 29 +73 149 +16 76 +27 53 +86 88 +36 75 +54 56 +11 82 +87 183 +33 72 +84 94 +96 108 +13 63 +34 98 +76 173 +57 114 +63 149 +74 131 +20 21 +48 100 +92 98 +3 41 +66 138 +90 130 +62 152 +26 101 +28 102 +41 139 +85 167 +68 84 +64 74 +64 136 diff --git a/geom_bottleneck/tests/data/test_607_A b/geom_bottleneck/tests/data/test_607_A new file mode 100644 index 0000000..abc3b6b --- /dev/null +++ b/geom_bottleneck/tests/data/test_607_A @@ -0,0 +1,100 @@ +82 154 +80 107 +94 156 +55 58 +84 183 +82 128 +35 97 +32 105 +12 104 +17 57 +54 67 +59 103 +22 106 +50 122 +31 93 +33 123 +9 105 +78 140 +15 101 +67 117 +34 119 +96 123 +71 169 +91 93 +99 119 +85 169 +59 69 +85 169 +32 76 +62 134 +21 77 +79 141 +5 63 +9 72 +21 41 +2 95 +16 92 +22 54 +44 58 +1 24 +26 54 +33 93 +85 135 +74 110 +63 81 +64 113 +3 21 +24 92 +78 82 +54 63 +66 83 +22 38 +41 59 +99 156 +26 34 +67 78 +9 22 +15 62 +25 43 +0 93 +43 44 +54 63 +16 40 +62 136 +35 85 +80 179 +4 103 +21 73 +91 119 +99 188 +16 42 +63 64 +76 137 +58 61 +20 39 +61 72 +0 9 +7 41 +11 61 +39 124 +70 153 +97 121 +66 166 +7 72 +65 140 +96 140 +60 87 +34 35 +14 15 +17 41 +33 69 +5 101 +49 109 +79 102 +22 57 +50 126 +24 119 +76 166 +84 93 +34 70 diff --git a/geom_bottleneck/tests/data/test_607_B b/geom_bottleneck/tests/data/test_607_B new file mode 100644 index 0000000..0f79931 --- /dev/null +++ b/geom_bottleneck/tests/data/test_607_B @@ -0,0 +1,100 @@ +23 33 +0 85 +33 82 +21 38 +41 75 +94 128 +35 107 +9 76 +65 74 +71 133 +83 173 +94 109 +58 83 +61 68 +44 111 +67 107 +97 152 +100 167 +94 105 +94 95 +9 37 +18 47 +87 141 +81 153 +57 90 +10 19 +67 137 +11 75 +86 139 +39 72 +13 51 +65 155 +56 98 +91 149 +58 68 +6 89 +39 95 +82 150 +97 129 +26 73 +87 112 +37 117 +73 137 +68 73 +4 88 +2 70 +79 112 +59 123 +31 93 +36 77 +95 158 +25 52 +33 47 +69 112 +73 160 +95 138 +15 56 +31 96 +1 2 +9 41 +59 129 +48 55 +52 111 +51 139 +38 115 +100 198 +30 46 +77 105 +43 115 +66 151 +69 70 +93 98 +19 59 +10 59 +10 59 +51 89 +21 58 +48 75 +57 58 +0 34 +48 110 +87 152 +9 44 +19 73 +8 76 +82 165 +4 51 +9 24 +62 105 +97 147 +28 102 +37 77 +25 55 +77 86 +80 87 +81 172 +99 152 +57 107 +61 154 +45 93 diff --git a/geom_bottleneck/tests/data/test_608_A b/geom_bottleneck/tests/data/test_608_A new file mode 100644 index 0000000..a4beccc --- /dev/null +++ b/geom_bottleneck/tests/data/test_608_A @@ -0,0 +1,100 @@ +91 111 +71 96 +84 176 +57 123 +7 22 +4 76 +83 171 +79 172 +96 173 +75 76 +19 98 +91 135 +13 54 +10 13 +2 53 +65 128 +96 133 +54 64 +43 112 +72 139 +32 33 +45 89 +82 174 +36 79 +5 89 +90 114 +41 90 +16 30 +78 177 +64 77 +40 67 +57 129 +29 51 +53 54 +86 90 +64 116 +87 92 +73 76 +35 108 +25 81 +57 155 +55 123 +56 99 +96 103 +88 93 +28 101 +74 106 +76 166 +28 126 +34 41 +75 91 +19 119 +59 108 +29 121 +0 66 +9 25 +68 150 +26 51 +19 47 +34 55 +37 127 +66 80 +23 52 +8 19 +65 128 +44 109 +16 70 +17 114 +29 31 +40 100 +20 42 +61 121 +89 153 +35 104 +5 81 +33 95 +17 29 +93 132 +72 133 +100 102 +54 109 +23 53 +85 87 +64 69 +20 67 +30 34 +96 143 +40 134 +60 86 +40 91 +92 133 +73 141 +70 117 +43 78 +52 83 +27 114 +2 88 +48 121 +40 66 +96 159 diff --git a/geom_bottleneck/tests/data/test_608_B b/geom_bottleneck/tests/data/test_608_B new file mode 100644 index 0000000..94f4c9a --- /dev/null +++ b/geom_bottleneck/tests/data/test_608_B @@ -0,0 +1,100 @@ +69 152 +69 122 +74 138 +60 95 +88 127 +98 124 +99 193 +82 85 +17 78 +57 130 +50 71 +62 94 +7 39 +89 137 +26 69 +71 146 +9 73 +37 55 +25 111 +65 145 +94 157 +92 99 +31 51 +50 112 +87 99 +64 76 +55 126 +6 56 +48 124 +89 147 +16 18 +93 172 +53 152 +90 102 +25 123 +81 110 +1 93 +74 150 +61 73 +39 100 +74 148 +58 152 +21 94 +39 112 +96 161 +4 85 +61 79 +90 150 +2 42 +100 110 +81 161 +56 71 +90 162 +2 30 +69 80 +33 99 +27 43 +56 74 +57 138 +63 162 +51 121 +80 153 +75 174 +4 29 +91 122 +45 145 +72 74 +66 130 +13 79 +9 91 +59 100 +35 114 +100 124 +40 80 +40 134 +72 123 +43 63 +43 81 +37 83 +74 128 +5 86 +54 66 +88 133 +6 93 +98 166 +8 104 +100 199 +56 130 +88 128 +41 97 +8 17 +44 123 +7 51 +33 59 +0 80 +16 69 +16 55 +77 141 +75 108 +84 117 diff --git a/geom_bottleneck/tests/data/test_609_A b/geom_bottleneck/tests/data/test_609_A new file mode 100644 index 0000000..a8e841e --- /dev/null +++ b/geom_bottleneck/tests/data/test_609_A @@ -0,0 +1,100 @@ +52 69 +8 75 +78 173 +64 147 +34 126 +24 107 +83 158 +79 135 +39 119 +72 163 +12 78 +45 107 +7 27 +8 48 +65 133 +43 99 +92 116 +46 61 +78 94 +73 122 +30 89 +27 50 +46 142 +58 92 +7 73 +52 123 +53 77 +28 115 +28 111 +65 159 +95 131 +58 82 +47 103 +31 110 +15 37 +90 139 +76 128 +88 131 +76 145 +96 165 +77 154 +11 36 +36 63 +25 122 +100 144 +13 15 +7 65 +50 128 +97 104 +98 183 +39 81 +55 89 +76 78 +46 87 +2 43 +86 151 +61 130 +40 122 +72 111 +14 113 +26 89 +43 61 +80 176 +83 170 +78 153 +93 171 +87 142 +98 101 +60 71 +24 93 +18 94 +86 103 +22 42 +14 104 +2 85 +26 78 +98 190 +91 191 +9 68 +46 124 +50 105 +0 38 +62 138 +26 27 +78 168 +80 87 +64 68 +64 129 +10 48 +77 171 +79 129 +53 89 +30 92 +71 125 +26 125 +12 112 +96 134 +27 114 +62 91 +10 11 diff --git a/geom_bottleneck/tests/data/test_609_B b/geom_bottleneck/tests/data/test_609_B new file mode 100644 index 0000000..574351a --- /dev/null +++ b/geom_bottleneck/tests/data/test_609_B @@ -0,0 +1,100 @@ +64 90 +2 6 +69 77 +35 119 +59 88 +27 127 +39 134 +68 155 +92 151 +5 84 +79 125 +37 66 +31 116 +48 97 +63 88 +92 176 +36 98 +97 135 +67 130 +21 44 +42 114 +42 114 +56 93 +4 78 +91 128 +87 94 +35 69 +5 25 +46 72 +91 151 +96 180 +87 165 +24 32 +72 134 +78 150 +0 3 +100 197 +84 95 +6 31 +61 97 +25 26 +46 114 +91 152 +64 82 +75 78 +73 134 +43 58 +66 157 +82 130 +66 96 +49 61 +55 82 +25 39 +58 153 +93 184 +17 113 +51 123 +51 77 +61 106 +26 111 +94 187 +28 77 +5 95 +100 123 +0 74 +55 91 +60 76 +2 43 +58 110 +82 153 +22 100 +13 92 +7 22 +82 153 +71 84 +16 26 +3 45 +80 97 +51 143 +99 191 +38 67 +14 112 +4 11 +72 141 +4 34 +86 115 +74 134 +53 102 +87 116 +51 119 +5 105 +62 103 +32 116 +64 152 +41 52 +1 38 +3 57 +50 133 +57 132 +57 93 diff --git a/geom_bottleneck/tests/data/test_610_A b/geom_bottleneck/tests/data/test_610_A new file mode 100644 index 0000000..c37fa9c --- /dev/null +++ b/geom_bottleneck/tests/data/test_610_A @@ -0,0 +1,100 @@ +4 71 +61 90 +58 59 +14 102 +53 142 +94 103 +47 71 +72 115 +33 113 +64 142 +82 115 +65 85 +34 101 +78 93 +68 109 +84 112 +45 80 +30 83 +100 164 +88 158 +2 10 +56 135 +22 41 +11 21 +77 128 +34 110 +8 54 +91 184 +57 120 +100 187 +76 115 +52 83 +48 54 +78 173 +10 84 +85 185 +44 129 +100 132 +52 58 +23 84 +65 70 +54 73 +92 167 +91 103 +73 112 +11 85 +38 78 +78 105 +7 22 +3 85 +57 125 +45 77 +15 99 +87 104 +2 70 +11 111 +40 75 +33 47 +99 186 +24 87 +20 78 +14 92 +71 135 +23 30 +58 95 +51 112 +8 21 +75 138 +78 102 +0 48 +86 106 +18 28 +4 103 +75 81 +96 126 +16 88 +83 120 +87 182 +35 48 +31 58 +46 71 +52 73 +71 89 +20 92 +33 107 +10 62 +29 37 +6 22 +0 81 +33 35 +0 81 +20 82 +18 39 +19 84 +88 166 +49 95 +64 74 +58 139 +20 21 +49 105 diff --git a/geom_bottleneck/tests/data/test_610_B b/geom_bottleneck/tests/data/test_610_B new file mode 100644 index 0000000..0745255 --- /dev/null +++ b/geom_bottleneck/tests/data/test_610_B @@ -0,0 +1,100 @@ +44 136 +49 63 +56 122 +67 109 +38 136 +87 96 +23 34 +53 130 +94 108 +67 81 +58 88 +74 158 +20 86 +34 42 +76 128 +33 61 +92 156 +97 107 +39 111 +93 165 +56 144 +36 121 +2 34 +90 136 +91 185 +76 125 +13 26 +59 108 +39 131 +65 138 +49 145 +86 179 +56 138 +62 128 +37 106 +11 22 +27 39 +39 116 +83 127 +20 51 +10 20 +14 79 +96 107 +44 122 +85 122 +85 112 +75 95 +55 100 +56 111 +46 127 +72 157 +49 71 +32 126 +90 144 +94 95 +34 81 +21 64 +37 84 +40 103 +53 76 +88 102 +63 73 +28 31 +42 43 +29 50 +17 61 +59 156 +97 164 +22 50 +45 128 +65 159 +56 123 +10 82 +76 132 +9 86 +97 180 +34 62 +63 70 +68 127 +52 104 +75 168 +54 66 +67 154 +94 113 +34 76 +12 106 +34 69 +31 130 +70 105 +27 52 +47 71 +36 128 +68 156 +47 134 +12 79 +42 139 +85 138 +37 91 +43 68 +23 81 diff --git a/geom_bottleneck/tests/data/test_611_A b/geom_bottleneck/tests/data/test_611_A new file mode 100644 index 0000000..f7cfbbe --- /dev/null +++ b/geom_bottleneck/tests/data/test_611_A @@ -0,0 +1,100 @@ +79 154 +81 116 +71 125 +5 48 +85 176 +76 115 +3 87 +85 102 +17 116 +49 80 +95 183 +82 92 +23 60 +66 97 +4 37 +81 90 +24 50 +64 136 +54 86 +87 160 +33 102 +40 80 +82 127 +97 118 +68 76 +99 160 +92 107 +14 80 +5 45 +42 83 +40 108 +77 163 +39 105 +91 176 +45 73 +96 169 +78 176 +12 90 +53 135 +87 124 +79 172 +52 65 +26 86 +65 112 +1 60 +57 131 +65 135 +45 57 +28 71 +40 50 +17 110 +95 112 +59 156 +38 86 +63 78 +60 112 +28 108 +18 72 +18 91 +33 94 +41 105 +2 37 +36 93 +49 103 +57 131 +10 108 +29 64 +73 83 +79 85 +30 115 +93 111 +47 90 +41 47 +90 158 +72 137 +55 65 +55 136 +40 52 +38 49 +33 57 +82 125 +53 139 +42 87 +43 55 +16 54 +45 61 +6 92 +21 37 +33 84 +37 137 +39 87 +19 70 +62 79 +9 15 +16 48 +39 131 +59 130 +80 94 +56 126 +76 95 diff --git a/geom_bottleneck/tests/data/test_611_B b/geom_bottleneck/tests/data/test_611_B new file mode 100644 index 0000000..ffc3bf6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_611_B @@ -0,0 +1,100 @@ +15 50 +61 137 +52 63 +72 148 +89 101 +93 143 +56 127 +30 99 +72 120 +92 114 +53 106 +43 72 +80 116 +67 136 +33 98 +63 111 +39 55 +84 170 +55 106 +1 8 +96 157 +85 143 +30 95 +66 132 +45 51 +36 128 +69 141 +1 31 +20 97 +14 47 +66 163 +44 125 +45 75 +86 185 +13 78 +28 31 +6 14 +96 108 +62 99 +29 120 +11 20 +55 107 +9 19 +32 105 +4 60 +92 160 +29 80 +68 113 +63 161 +78 95 +24 96 +98 128 +28 81 +87 175 +81 165 +70 137 +55 83 +38 43 +96 158 +40 100 +15 21 +66 70 +22 103 +37 106 +61 126 +52 151 +92 113 +36 61 +11 106 +81 141 +38 135 +48 142 +8 16 +88 89 +80 178 +100 160 +43 91 +71 122 +2 79 +21 27 +74 82 +3 6 +56 109 +94 175 +78 153 +32 117 +78 135 +14 53 +68 70 +53 115 +59 143 +41 63 +18 111 +28 109 +30 65 +42 132 +91 135 +5 43 +47 144 +53 103 diff --git a/geom_bottleneck/tests/data/test_612_A b/geom_bottleneck/tests/data/test_612_A new file mode 100644 index 0000000..1d08d30 --- /dev/null +++ b/geom_bottleneck/tests/data/test_612_A @@ -0,0 +1,100 @@ +29 103 +5 54 +70 158 +33 82 +96 190 +84 184 +49 139 +37 47 +96 159 +75 126 +37 67 +5 28 +41 44 +64 107 +0 88 +32 35 +41 42 +11 14 +82 107 +36 111 +35 80 +69 142 +22 85 +95 191 +48 102 +78 135 +74 151 +71 73 +92 114 +95 152 +52 85 +52 95 +72 147 +33 133 +57 148 +90 155 +94 192 +97 108 +84 172 +3 46 +36 112 +72 129 +80 132 +17 41 +67 113 +27 77 +45 86 +56 135 +41 65 +13 53 +52 84 +54 101 +34 74 +25 99 +86 87 +36 136 +82 124 +5 95 +86 150 +76 90 +66 127 +54 110 +76 82 +82 101 +75 139 +2 28 +68 156 +38 60 +51 75 +96 161 +98 143 +38 66 +43 67 +72 112 +25 27 +96 195 +24 26 +46 85 +71 157 +12 47 +46 92 +72 109 +14 65 +68 144 +53 56 +61 105 +18 111 +51 95 +18 28 +39 121 +67 71 +42 58 +25 106 +88 169 +66 150 +47 114 +36 61 +12 101 +64 137 +8 31 diff --git a/geom_bottleneck/tests/data/test_612_B b/geom_bottleneck/tests/data/test_612_B new file mode 100644 index 0000000..712c645 --- /dev/null +++ b/geom_bottleneck/tests/data/test_612_B @@ -0,0 +1,100 @@ +51 131 +46 143 +100 147 +25 81 +73 151 +74 80 +50 143 +91 157 +46 56 +67 152 +67 75 +78 137 +33 90 +17 45 +82 165 +64 97 +85 168 +44 130 +93 140 +80 137 +68 76 +82 177 +21 60 +73 82 +28 41 +45 121 +6 100 +72 83 +27 74 +53 69 +7 8 +7 93 +30 57 +38 98 +38 44 +58 81 +70 168 +15 112 +25 66 +80 122 +24 38 +60 149 +29 116 +54 75 +53 142 +48 111 +0 21 +82 151 +74 118 +93 155 +14 69 +7 70 +30 125 +9 73 +21 54 +97 144 +14 26 +27 95 +25 74 +60 75 +44 95 +94 168 +82 108 +97 129 +7 49 +86 95 +92 97 +98 166 +31 82 +33 90 +24 47 +48 147 +66 117 +26 66 +29 114 +84 166 +62 127 +72 132 +20 37 +77 170 +21 89 +1 9 +74 83 +96 192 +40 117 +3 8 +38 72 +88 156 +66 109 +22 52 +14 39 +51 92 +65 123 +81 119 +28 43 +75 170 +94 159 +20 96 +63 109 +17 106 diff --git a/geom_bottleneck/tests/data/test_613_A b/geom_bottleneck/tests/data/test_613_A new file mode 100644 index 0000000..909c462 --- /dev/null +++ b/geom_bottleneck/tests/data/test_613_A @@ -0,0 +1,100 @@ +43 47 +47 132 +11 66 +37 81 +99 108 +46 54 +47 80 +96 121 +12 18 +56 128 +7 75 +27 104 +43 110 +100 127 +28 29 +75 174 +62 105 +0 13 +43 62 +5 43 +8 27 +54 56 +43 103 +41 105 +96 156 +42 48 +97 134 +25 67 +79 144 +25 29 +99 140 +98 128 +45 144 +37 46 +4 98 +92 121 +12 77 +14 97 +92 119 +72 167 +14 36 +92 101 +30 38 +94 100 +42 55 +8 97 +8 78 +78 135 +46 83 +78 126 +30 58 +80 175 +49 130 +67 85 +4 24 +100 188 +36 49 +88 179 +45 69 +80 89 +1 73 +30 88 +44 124 +29 81 +15 100 +35 70 +29 87 +73 152 +64 102 +47 136 +50 68 +75 127 +80 152 +34 44 +78 167 +98 162 +18 45 +19 60 +90 120 +68 106 +98 198 +61 130 +3 41 +90 100 +22 68 +19 57 +59 88 +19 77 +60 92 +38 61 +7 45 +23 87 +71 155 +23 57 +97 177 +58 128 +77 109 +13 112 +37 129 +54 61 diff --git a/geom_bottleneck/tests/data/test_613_B b/geom_bottleneck/tests/data/test_613_B new file mode 100644 index 0000000..9569b49 --- /dev/null +++ b/geom_bottleneck/tests/data/test_613_B @@ -0,0 +1,100 @@ +22 108 +62 83 +61 105 +95 188 +77 78 +7 45 +83 149 +1 65 +14 16 +30 89 +84 112 +29 123 +73 173 +5 35 +37 58 +11 56 +83 125 +71 165 +53 103 +88 176 +28 88 +71 141 +93 170 +95 187 +15 84 +57 70 +19 118 +14 51 +37 117 +69 131 +97 143 +20 117 +54 99 +54 146 +62 104 +76 155 +23 75 +77 155 +23 117 +30 42 +97 137 +44 107 +24 33 +99 188 +30 38 +60 129 +83 102 +95 120 +37 71 +72 106 +90 149 +16 73 +97 127 +81 98 +39 101 +64 149 +43 112 +90 182 +8 93 +36 50 +33 45 +63 78 +25 103 +78 125 +47 143 +83 141 +66 153 +51 125 +53 83 +94 125 +99 199 +67 109 +67 99 +29 55 +68 148 +91 159 +65 96 +25 84 +63 134 +40 136 +94 173 +67 154 +14 107 +73 153 +24 79 +85 116 +66 104 +98 166 +0 42 +100 148 +74 168 +31 86 +42 62 +83 182 +48 131 +18 94 +90 134 +84 150 +78 175 +27 121 diff --git a/geom_bottleneck/tests/data/test_614_A b/geom_bottleneck/tests/data/test_614_A new file mode 100644 index 0000000..29c02c8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_614_A @@ -0,0 +1,100 @@ +24 124 +56 99 +57 147 +95 161 +39 104 +63 154 +82 105 +65 89 +82 122 +62 129 +88 181 +75 121 +32 33 +44 68 +12 28 +36 131 +63 64 +23 72 +92 159 +80 112 +2 92 +48 110 +50 98 +23 50 +20 72 +32 39 +32 86 +51 63 +47 114 +61 71 +32 78 +43 110 +69 157 +79 122 +35 48 +74 85 +15 62 +14 72 +29 62 +37 61 +56 75 +35 88 +70 84 +37 91 +45 139 +16 33 +76 145 +8 70 +87 128 +91 183 +29 47 +37 48 +13 102 +88 142 +10 75 +35 109 +84 178 +88 118 +85 93 +17 113 +30 49 +13 47 +83 129 +60 106 +92 154 +29 90 +93 135 +33 66 +60 117 +36 92 +1 22 +13 76 +5 102 +7 102 +76 154 +78 133 +72 135 +93 146 +37 47 +44 103 +68 102 +81 136 +51 58 +92 172 +43 119 +92 140 +62 116 +15 84 +58 82 +94 119 +74 131 +5 42 +37 56 +28 127 +82 85 +60 107 +18 98 +1 80 +95 129 +96 101 diff --git a/geom_bottleneck/tests/data/test_614_B b/geom_bottleneck/tests/data/test_614_B new file mode 100644 index 0000000..f34b836 --- /dev/null +++ b/geom_bottleneck/tests/data/test_614_B @@ -0,0 +1,100 @@ +28 55 +77 152 +40 97 +23 116 +61 120 +59 143 +27 48 +32 88 +92 117 +66 145 +83 132 +2 51 +57 82 +47 122 +7 40 +68 150 +86 156 +68 122 +74 94 +92 113 +14 46 +61 116 +42 133 +15 55 +9 24 +49 70 +41 108 +20 45 +93 177 +87 144 +81 161 +11 60 +64 92 +24 69 +50 79 +39 82 +28 116 +62 122 +38 48 +64 75 +51 62 +22 34 +10 96 +61 73 +72 146 +10 62 +61 86 +5 41 +43 106 +25 66 +30 55 +91 112 +30 76 +96 176 +84 148 +17 81 +51 127 +90 106 +100 177 +67 129 +23 84 +49 99 +100 124 +11 59 +54 106 +19 113 +76 96 +10 96 +15 114 +83 143 +29 57 +82 143 +32 64 +6 73 +94 142 +22 52 +93 100 +57 154 +100 110 +90 165 +69 110 +54 118 +38 47 +92 142 +45 65 +0 19 +100 196 +71 136 +16 78 +53 148 +76 83 +49 81 +86 148 +59 152 +13 69 +25 101 +57 102 +89 113 +15 17 +1 2 diff --git a/geom_bottleneck/tests/data/test_615_A b/geom_bottleneck/tests/data/test_615_A new file mode 100644 index 0000000..d1b55eb --- /dev/null +++ b/geom_bottleneck/tests/data/test_615_A @@ -0,0 +1,100 @@ +98 121 +87 153 +92 109 +60 122 +16 78 +1 43 +29 68 +93 186 +35 121 +95 183 +47 59 +98 129 +57 129 +82 134 +10 104 +20 60 +74 125 +97 158 +96 142 +71 88 +94 192 +37 132 +50 114 +65 96 +43 128 +27 48 +96 180 +10 22 +39 129 +28 29 +36 136 +1 65 +0 80 +3 99 +31 44 +35 94 +73 82 +91 155 +67 166 +36 78 +92 183 +74 157 +46 123 +31 68 +62 72 +21 83 +7 70 +49 137 +23 79 +48 132 +78 171 +51 80 +41 54 +59 108 +82 156 +42 136 +92 163 +27 90 +82 128 +95 96 +20 74 +26 40 +36 86 +29 35 +84 168 +82 151 +80 123 +58 109 +37 74 +53 86 +55 124 +24 91 +52 113 +79 126 +3 82 +68 124 +91 142 +48 85 +36 131 +7 61 +69 150 +66 77 +64 142 +91 95 +11 25 +71 162 +51 58 +20 104 +61 152 +2 19 +26 27 +41 58 +46 102 +29 41 +13 36 +93 145 +7 35 +54 102 +98 158 +85 93 diff --git a/geom_bottleneck/tests/data/test_615_B b/geom_bottleneck/tests/data/test_615_B new file mode 100644 index 0000000..ab204be --- /dev/null +++ b/geom_bottleneck/tests/data/test_615_B @@ -0,0 +1,100 @@ +11 38 +73 143 +46 112 +28 29 +68 96 +49 111 +90 154 +98 189 +25 45 +40 129 +76 104 +72 79 +100 121 +3 73 +73 83 +51 84 +81 102 +55 91 +60 96 +54 139 +80 131 +4 84 +97 125 +75 132 +39 84 +90 153 +29 61 +27 31 +14 71 +86 112 +52 87 +1 100 +66 69 +16 51 +70 93 +91 139 +80 140 +92 144 +20 42 +45 122 +27 115 +51 112 +61 94 +54 140 +85 159 +0 99 +31 59 +9 24 +31 122 +5 13 +51 85 +22 65 +14 42 +79 120 +40 43 +13 85 +78 147 +47 48 +87 109 +94 187 +2 74 +36 95 +41 72 +85 105 +36 103 +41 94 +27 90 +66 72 +42 89 +93 170 +84 151 +66 96 +65 162 +2 3 +25 45 +50 77 +20 78 +21 50 +93 119 +76 150 +65 93 +11 68 +42 61 +28 92 +39 129 +92 112 +91 187 +48 97 +59 62 +0 31 +57 107 +83 140 +80 82 +87 135 +35 48 +23 57 +79 166 +7 81 +97 121 +97 98 diff --git a/geom_bottleneck/tests/data/test_616_A b/geom_bottleneck/tests/data/test_616_A new file mode 100644 index 0000000..2b99b87 --- /dev/null +++ b/geom_bottleneck/tests/data/test_616_A @@ -0,0 +1,100 @@ +74 170 +100 122 +43 126 +66 162 +54 71 +31 122 +49 55 +100 194 +68 142 +83 94 +4 55 +20 79 +90 117 +67 143 +50 51 +40 123 +21 64 +41 114 +35 44 +75 169 +82 162 +52 138 +69 99 +53 107 +36 95 +99 118 +55 69 +86 102 +70 75 +5 94 +55 133 +79 141 +100 171 +6 73 +22 99 +92 185 +5 94 +34 131 +50 143 +97 184 +51 106 +82 158 +85 173 +81 163 +59 85 +50 93 +49 60 +94 128 +83 167 +29 44 +85 164 +62 138 +33 92 +32 114 +74 80 +64 124 +30 117 +22 116 +37 80 +87 142 +65 143 +0 95 +93 131 +70 168 +35 90 +74 169 +79 173 +49 99 +33 120 +30 63 +57 113 +72 97 +71 127 +53 61 +77 139 +85 159 +0 80 +51 120 +3 76 +65 88 +63 121 +55 73 +23 92 +29 98 +2 31 +65 112 +15 86 +47 86 +100 146 +21 49 +76 158 +75 130 +65 141 +73 112 +6 90 +29 110 +89 93 +99 106 +95 135 +39 101 diff --git a/geom_bottleneck/tests/data/test_616_B b/geom_bottleneck/tests/data/test_616_B new file mode 100644 index 0000000..55a8c9f --- /dev/null +++ b/geom_bottleneck/tests/data/test_616_B @@ -0,0 +1,100 @@ +22 54 +34 134 +72 81 +63 68 +99 119 +35 79 +86 177 +39 120 +68 128 +50 115 +59 119 +60 125 +19 91 +82 118 +81 100 +46 144 +99 152 +7 81 +81 113 +29 93 +68 86 +15 54 +52 67 +85 182 +44 76 +2 55 +51 146 +19 32 +39 111 +41 116 +83 112 +97 190 +83 94 +85 133 +31 103 +55 92 +99 150 +49 136 +72 138 +1 53 +25 89 +37 106 +49 149 +2 10 +39 90 +85 143 +4 17 +8 69 +59 120 +70 80 +73 96 +80 119 +57 86 +30 59 +52 60 +13 93 +16 92 +45 103 +14 27 +4 30 +81 117 +22 39 +14 78 +42 120 +19 118 +97 115 +74 164 +70 158 +12 63 +38 79 +80 150 +37 111 +71 97 +7 13 +73 162 +31 75 +61 98 +54 89 +73 110 +87 137 +61 126 +23 71 +97 146 +20 47 +98 181 +63 69 +4 102 +11 50 +17 46 +19 22 +70 167 +98 147 +99 153 +93 144 +44 72 +67 117 +46 133 +15 48 +64 135 +55 122 diff --git a/geom_bottleneck/tests/data/test_617_A b/geom_bottleneck/tests/data/test_617_A new file mode 100644 index 0000000..9eb04ba --- /dev/null +++ b/geom_bottleneck/tests/data/test_617_A @@ -0,0 +1,100 @@ +91 153 +68 149 +3 63 +83 160 +15 40 +13 60 +92 126 +96 190 +2 94 +75 89 +100 141 +12 107 +66 104 +57 120 +65 91 +91 191 +12 93 +50 66 +30 85 +4 5 +63 124 +69 145 +50 131 +61 94 +23 33 +27 91 +43 46 +67 131 +90 106 +47 128 +99 109 +76 133 +62 89 +68 95 +72 125 +37 55 +10 14 +6 55 +9 13 +99 168 +14 47 +24 62 +27 112 +92 133 +95 166 +36 76 +67 152 +72 94 +72 158 +77 175 +93 143 +38 78 +20 71 +68 122 +39 111 +49 120 +0 62 +52 127 +51 142 +81 168 +63 117 +33 52 +47 48 +4 66 +92 166 +51 120 +77 80 +54 89 +83 124 +90 126 +93 122 +6 83 +63 111 +95 146 +3 57 +39 117 +76 105 +71 76 +13 88 +94 185 +77 147 +47 147 +60 123 +64 134 +97 110 +99 111 +75 119 +15 35 +82 130 +92 129 +27 108 +93 94 +91 138 +43 101 +90 160 +90 155 +27 88 +2 17 +20 43 +9 94 diff --git a/geom_bottleneck/tests/data/test_617_B b/geom_bottleneck/tests/data/test_617_B new file mode 100644 index 0000000..eb300a8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_617_B @@ -0,0 +1,100 @@ +100 145 +51 93 +52 55 +73 86 +99 166 +80 151 +75 83 +81 105 +10 11 +52 110 +32 102 +38 124 +83 168 +55 116 +47 101 +71 90 +78 163 +19 98 +58 135 +54 137 +79 114 +91 102 +96 119 +9 10 +30 82 +15 60 +69 106 +56 125 +0 7 +71 74 +37 79 +80 102 +89 177 +43 92 +80 94 +9 92 +37 69 +6 95 +85 111 +27 38 +95 138 +92 157 +51 57 +79 96 +67 123 +56 70 +69 153 +82 151 +96 192 +12 34 +66 78 +75 154 +91 135 +79 179 +67 153 +45 86 +88 144 +91 109 +60 115 +92 176 +45 110 +35 117 +58 61 +91 147 +80 86 +9 80 +65 125 +75 78 +29 105 +69 148 +55 138 +54 60 +89 139 +98 131 +73 104 +29 127 +63 123 +7 69 +82 152 +6 92 +20 37 +41 112 +82 182 +73 128 +48 106 +60 98 +35 65 +13 42 +49 52 +8 36 +6 18 +42 70 +16 60 +30 56 +78 120 +80 94 +38 92 +19 52 +78 89 +49 131 diff --git a/geom_bottleneck/tests/data/test_618_A b/geom_bottleneck/tests/data/test_618_A new file mode 100644 index 0000000..a53c5f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_618_A @@ -0,0 +1,100 @@ +28 78 +66 159 +45 123 +56 140 +67 109 +32 81 +23 101 +44 121 +82 99 +20 28 +59 137 +93 185 +51 103 +75 89 +47 69 +48 94 +23 52 +35 74 +67 161 +67 138 +12 25 +50 73 +90 158 +55 124 +95 120 +36 96 +91 126 +100 114 +15 66 +89 180 +19 54 +81 137 +65 114 +46 51 +42 141 +74 88 +46 76 +38 69 +21 92 +92 97 +16 29 +97 177 +22 75 +94 155 +10 47 +96 174 +98 155 +16 104 +49 88 +36 44 +1 9 +66 83 +71 117 +45 56 +49 146 +29 66 +31 35 +49 133 +43 123 +6 20 +24 103 +14 103 +13 30 +100 101 +8 68 +71 101 +18 52 +33 94 +82 113 +0 36 +1 79 +63 141 +29 113 +41 105 +5 105 +47 142 +98 159 +48 96 +31 43 +29 76 +63 159 +9 72 +39 62 +75 111 +27 37 +72 81 +39 112 +70 88 +78 149 +69 101 +68 136 +72 77 +18 40 +48 72 +53 115 +12 78 +40 63 +75 163 +57 141 +47 140 diff --git a/geom_bottleneck/tests/data/test_618_B b/geom_bottleneck/tests/data/test_618_B new file mode 100644 index 0000000..611fb6a --- /dev/null +++ b/geom_bottleneck/tests/data/test_618_B @@ -0,0 +1,100 @@ +35 126 +40 82 +62 85 +64 72 +55 138 +43 97 +12 41 +75 142 +12 68 +26 114 +69 169 +65 101 +76 161 +20 63 +25 113 +70 153 +54 70 +41 79 +29 91 +85 100 +53 134 +12 13 +38 56 +28 112 +34 118 +56 111 +17 104 +66 108 +23 26 +47 96 +18 100 +18 100 +51 127 +40 87 +63 75 +40 101 +14 48 +72 90 +80 121 +28 56 +91 147 +25 92 +31 55 +25 106 +41 57 +42 52 +65 98 +14 110 +98 188 +39 75 +68 147 +62 148 +16 96 +91 103 +83 109 +55 91 +85 184 +62 73 +9 105 +70 74 +33 132 +6 82 +97 169 +11 90 +98 194 +91 160 +74 133 +25 69 +73 114 +1 27 +100 120 +77 159 +88 187 +31 42 +24 25 +93 140 +44 96 +0 86 +39 55 +52 96 +2 54 +33 97 +63 151 +7 95 +40 54 +89 127 +71 112 +74 162 +55 113 +20 60 +81 106 +36 111 +17 75 +48 69 +6 33 +11 94 +73 150 +5 28 +62 118 +38 78 diff --git a/geom_bottleneck/tests/data/test_619_A b/geom_bottleneck/tests/data/test_619_A new file mode 100644 index 0000000..4dd6557 --- /dev/null +++ b/geom_bottleneck/tests/data/test_619_A @@ -0,0 +1,100 @@ +31 76 +34 130 +70 80 +52 82 +40 116 +77 109 +84 130 +53 111 +63 79 +7 12 +28 70 +35 78 +95 115 +78 123 +23 44 +96 162 +50 139 +58 155 +31 91 +91 129 +82 139 +21 111 +98 117 +75 137 +27 68 +51 125 +93 104 +71 161 +66 147 +97 132 +98 169 +93 186 +22 83 +73 136 +27 70 +100 194 +74 87 +21 31 +11 107 +59 70 +0 77 +99 126 +50 86 +31 123 +62 91 +25 119 +44 104 +68 156 +79 165 +58 89 +66 122 +20 42 +71 77 +97 177 +40 66 +78 122 +73 169 +84 89 +28 107 +58 94 +76 89 +68 103 +50 89 +90 97 +32 94 +30 96 +78 100 +97 186 +99 141 +61 116 +19 32 +19 101 +32 65 +15 67 +69 150 +55 64 +37 53 +76 130 +4 53 +27 79 +90 121 +8 53 +39 75 +90 102 +41 65 +34 124 +16 110 +52 61 +55 58 +23 62 +14 92 +39 88 +5 71 +59 110 +12 100 +14 90 +35 101 +23 105 +50 124 +58 148 diff --git a/geom_bottleneck/tests/data/test_619_B b/geom_bottleneck/tests/data/test_619_B new file mode 100644 index 0000000..711d7cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_619_B @@ -0,0 +1,100 @@ +75 136 +69 74 +21 44 +4 30 +6 70 +27 50 +57 72 +62 67 +50 127 +33 84 +10 71 +87 167 +12 58 +1 41 +86 164 +74 133 +64 132 +80 178 +72 124 +91 165 +4 96 +6 90 +49 97 +87 123 +34 101 +34 66 +94 108 +78 109 +34 87 +23 107 +7 70 +88 108 +100 157 +18 29 +15 38 +81 136 +39 103 +12 96 +56 136 +71 104 +90 137 +100 167 +39 125 +10 102 +8 49 +86 89 +76 153 +21 48 +52 129 +58 61 +41 136 +43 110 +37 39 +20 65 +99 161 +54 82 +17 64 +66 137 +32 44 +13 40 +43 127 +1 21 +41 63 +57 127 +29 126 +64 134 +24 122 +62 73 +20 120 +72 109 +100 156 +35 43 +4 19 +84 174 +64 101 +32 122 +14 43 +68 111 +84 132 +55 92 +21 84 +90 183 +62 63 +10 107 +40 46 +81 124 +62 120 +50 125 +38 112 +72 137 +93 190 +38 57 +27 42 +7 76 +84 169 +45 102 +51 78 +96 111 +84 153 +53 60 diff --git a/geom_bottleneck/tests/data/test_620_A b/geom_bottleneck/tests/data/test_620_A new file mode 100644 index 0000000..74e7856 --- /dev/null +++ b/geom_bottleneck/tests/data/test_620_A @@ -0,0 +1,2 @@ +977 1670 +257 583 diff --git a/geom_bottleneck/tests/data/test_620_B b/geom_bottleneck/tests/data/test_620_B new file mode 100644 index 0000000..e7efa97 --- /dev/null +++ b/geom_bottleneck/tests/data/test_620_B @@ -0,0 +1,2 @@ +519 914 +659 781 diff --git a/geom_bottleneck/tests/data/test_621_A b/geom_bottleneck/tests/data/test_621_A new file mode 100644 index 0000000..6a24523 --- /dev/null +++ b/geom_bottleneck/tests/data/test_621_A @@ -0,0 +1,2 @@ +928 1424 +468 1402 diff --git a/geom_bottleneck/tests/data/test_621_B b/geom_bottleneck/tests/data/test_621_B new file mode 100644 index 0000000..7b49acb --- /dev/null +++ b/geom_bottleneck/tests/data/test_621_B @@ -0,0 +1,2 @@ +946 1838 +602 1466 diff --git a/geom_bottleneck/tests/data/test_622_A b/geom_bottleneck/tests/data/test_622_A new file mode 100644 index 0000000..58d67ac --- /dev/null +++ b/geom_bottleneck/tests/data/test_622_A @@ -0,0 +1,2 @@ +199 1177 +163 743 diff --git a/geom_bottleneck/tests/data/test_622_B b/geom_bottleneck/tests/data/test_622_B new file mode 100644 index 0000000..f9a4fdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_622_B @@ -0,0 +1,2 @@ +502 1478 +838 1480 diff --git a/geom_bottleneck/tests/data/test_623_A b/geom_bottleneck/tests/data/test_623_A new file mode 100644 index 0000000..8d99200 --- /dev/null +++ b/geom_bottleneck/tests/data/test_623_A @@ -0,0 +1,2 @@ +156 443 +264 982 diff --git a/geom_bottleneck/tests/data/test_623_B b/geom_bottleneck/tests/data/test_623_B new file mode 100644 index 0000000..22ab9fd --- /dev/null +++ b/geom_bottleneck/tests/data/test_623_B @@ -0,0 +1,2 @@ +995 1285 +571 1427 diff --git a/geom_bottleneck/tests/data/test_624_A b/geom_bottleneck/tests/data/test_624_A new file mode 100644 index 0000000..49891f6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_624_A @@ -0,0 +1,2 @@ +884 1159 +315 1125 diff --git a/geom_bottleneck/tests/data/test_624_B b/geom_bottleneck/tests/data/test_624_B new file mode 100644 index 0000000..fa3e1ea --- /dev/null +++ b/geom_bottleneck/tests/data/test_624_B @@ -0,0 +1,2 @@ +236 1034 +474 567 diff --git a/geom_bottleneck/tests/data/test_625_A b/geom_bottleneck/tests/data/test_625_A new file mode 100644 index 0000000..4da6ce4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_625_A @@ -0,0 +1,2 @@ +8 375 +509 926 diff --git a/geom_bottleneck/tests/data/test_625_B b/geom_bottleneck/tests/data/test_625_B new file mode 100644 index 0000000..bf587fc --- /dev/null +++ b/geom_bottleneck/tests/data/test_625_B @@ -0,0 +1,2 @@ +805 895 +735 1279 diff --git a/geom_bottleneck/tests/data/test_626_A b/geom_bottleneck/tests/data/test_626_A new file mode 100644 index 0000000..92036c8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_626_A @@ -0,0 +1,2 @@ +821 1025 +74 936 diff --git a/geom_bottleneck/tests/data/test_626_B b/geom_bottleneck/tests/data/test_626_B new file mode 100644 index 0000000..3052b59 --- /dev/null +++ b/geom_bottleneck/tests/data/test_626_B @@ -0,0 +1,2 @@ +155 737 +564 1257 diff --git a/geom_bottleneck/tests/data/test_627_A b/geom_bottleneck/tests/data/test_627_A new file mode 100644 index 0000000..f682247 --- /dev/null +++ b/geom_bottleneck/tests/data/test_627_A @@ -0,0 +1,2 @@ +680 1473 +354 876 diff --git a/geom_bottleneck/tests/data/test_627_B b/geom_bottleneck/tests/data/test_627_B new file mode 100644 index 0000000..7c61fad --- /dev/null +++ b/geom_bottleneck/tests/data/test_627_B @@ -0,0 +1,2 @@ +767 1509 +998 1182 diff --git a/geom_bottleneck/tests/data/test_628_A b/geom_bottleneck/tests/data/test_628_A new file mode 100644 index 0000000..f499ec3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_628_A @@ -0,0 +1,2 @@ +481 1127 +66 1027 diff --git a/geom_bottleneck/tests/data/test_628_B b/geom_bottleneck/tests/data/test_628_B new file mode 100644 index 0000000..5eb5994 --- /dev/null +++ b/geom_bottleneck/tests/data/test_628_B @@ -0,0 +1,2 @@ +961 1197 +123 388 diff --git a/geom_bottleneck/tests/data/test_629_A b/geom_bottleneck/tests/data/test_629_A new file mode 100644 index 0000000..ff42c12 --- /dev/null +++ b/geom_bottleneck/tests/data/test_629_A @@ -0,0 +1,2 @@ +457 1026 +405 1343 diff --git a/geom_bottleneck/tests/data/test_629_B b/geom_bottleneck/tests/data/test_629_B new file mode 100644 index 0000000..b0b983a --- /dev/null +++ b/geom_bottleneck/tests/data/test_629_B @@ -0,0 +1,2 @@ +575 706 +472 965 diff --git a/geom_bottleneck/tests/data/test_630_A b/geom_bottleneck/tests/data/test_630_A new file mode 100644 index 0000000..6ed10cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_630_A @@ -0,0 +1,2 @@ +480 650 +0 307 diff --git a/geom_bottleneck/tests/data/test_630_B b/geom_bottleneck/tests/data/test_630_B new file mode 100644 index 0000000..0583a0c --- /dev/null +++ b/geom_bottleneck/tests/data/test_630_B @@ -0,0 +1,2 @@ +836 1099 +771 1050 diff --git a/geom_bottleneck/tests/data/test_631_A b/geom_bottleneck/tests/data/test_631_A new file mode 100644 index 0000000..d49637c --- /dev/null +++ b/geom_bottleneck/tests/data/test_631_A @@ -0,0 +1,2 @@ +551 1534 +392 820 diff --git a/geom_bottleneck/tests/data/test_631_B b/geom_bottleneck/tests/data/test_631_B new file mode 100644 index 0000000..f522f48 --- /dev/null +++ b/geom_bottleneck/tests/data/test_631_B @@ -0,0 +1,2 @@ +721 1465 +591 781 diff --git a/geom_bottleneck/tests/data/test_632_A b/geom_bottleneck/tests/data/test_632_A new file mode 100644 index 0000000..32c4757 --- /dev/null +++ b/geom_bottleneck/tests/data/test_632_A @@ -0,0 +1,2 @@ +352 417 +814 986 diff --git a/geom_bottleneck/tests/data/test_632_B b/geom_bottleneck/tests/data/test_632_B new file mode 100644 index 0000000..f50a6bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_632_B @@ -0,0 +1,2 @@ +211 264 +517 1443 diff --git a/geom_bottleneck/tests/data/test_633_A b/geom_bottleneck/tests/data/test_633_A new file mode 100644 index 0000000..0199c88 --- /dev/null +++ b/geom_bottleneck/tests/data/test_633_A @@ -0,0 +1,2 @@ +487 1216 +842 1559 diff --git a/geom_bottleneck/tests/data/test_633_B b/geom_bottleneck/tests/data/test_633_B new file mode 100644 index 0000000..d516834 --- /dev/null +++ b/geom_bottleneck/tests/data/test_633_B @@ -0,0 +1,2 @@ +353 982 +437 1421 diff --git a/geom_bottleneck/tests/data/test_634_A b/geom_bottleneck/tests/data/test_634_A new file mode 100644 index 0000000..45493ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_634_A @@ -0,0 +1,2 @@ +367 742 +382 796 diff --git a/geom_bottleneck/tests/data/test_634_B b/geom_bottleneck/tests/data/test_634_B new file mode 100644 index 0000000..8840b3a --- /dev/null +++ b/geom_bottleneck/tests/data/test_634_B @@ -0,0 +1,2 @@ +9 723 +351 901 diff --git a/geom_bottleneck/tests/data/test_635_A b/geom_bottleneck/tests/data/test_635_A new file mode 100644 index 0000000..d65240b --- /dev/null +++ b/geom_bottleneck/tests/data/test_635_A @@ -0,0 +1,2 @@ +984 1272 +952 1384 diff --git a/geom_bottleneck/tests/data/test_635_B b/geom_bottleneck/tests/data/test_635_B new file mode 100644 index 0000000..8cc813d --- /dev/null +++ b/geom_bottleneck/tests/data/test_635_B @@ -0,0 +1,2 @@ +528 622 +88 466 diff --git a/geom_bottleneck/tests/data/test_636_A b/geom_bottleneck/tests/data/test_636_A new file mode 100644 index 0000000..eee9635 --- /dev/null +++ b/geom_bottleneck/tests/data/test_636_A @@ -0,0 +1,2 @@ +285 617 +809 1379 diff --git a/geom_bottleneck/tests/data/test_636_B b/geom_bottleneck/tests/data/test_636_B new file mode 100644 index 0000000..e565845 --- /dev/null +++ b/geom_bottleneck/tests/data/test_636_B @@ -0,0 +1,2 @@ +162 1083 +842 1760 diff --git a/geom_bottleneck/tests/data/test_637_A b/geom_bottleneck/tests/data/test_637_A new file mode 100644 index 0000000..4ba4314 --- /dev/null +++ b/geom_bottleneck/tests/data/test_637_A @@ -0,0 +1,2 @@ +624 1031 +118 423 diff --git a/geom_bottleneck/tests/data/test_637_B b/geom_bottleneck/tests/data/test_637_B new file mode 100644 index 0000000..58aba0f --- /dev/null +++ b/geom_bottleneck/tests/data/test_637_B @@ -0,0 +1,2 @@ +453 958 +310 1149 diff --git a/geom_bottleneck/tests/data/test_638_A b/geom_bottleneck/tests/data/test_638_A new file mode 100644 index 0000000..4d993df --- /dev/null +++ b/geom_bottleneck/tests/data/test_638_A @@ -0,0 +1,2 @@ +683 1251 +811 1566 diff --git a/geom_bottleneck/tests/data/test_638_B b/geom_bottleneck/tests/data/test_638_B new file mode 100644 index 0000000..5750b40 --- /dev/null +++ b/geom_bottleneck/tests/data/test_638_B @@ -0,0 +1,2 @@ +489 1389 +408 858 diff --git a/geom_bottleneck/tests/data/test_639_A b/geom_bottleneck/tests/data/test_639_A new file mode 100644 index 0000000..1e86c9b --- /dev/null +++ b/geom_bottleneck/tests/data/test_639_A @@ -0,0 +1,2 @@ +907 1067 +329 547 diff --git a/geom_bottleneck/tests/data/test_639_B b/geom_bottleneck/tests/data/test_639_B new file mode 100644 index 0000000..758fe2d --- /dev/null +++ b/geom_bottleneck/tests/data/test_639_B @@ -0,0 +1,2 @@ +896 1777 +769 1237 diff --git a/geom_bottleneck/tests/data/test_640_A b/geom_bottleneck/tests/data/test_640_A new file mode 100644 index 0000000..981248a --- /dev/null +++ b/geom_bottleneck/tests/data/test_640_A @@ -0,0 +1,3 @@ +609 1601 +450 549 +123 590 diff --git a/geom_bottleneck/tests/data/test_640_B b/geom_bottleneck/tests/data/test_640_B new file mode 100644 index 0000000..d4f75ec --- /dev/null +++ b/geom_bottleneck/tests/data/test_640_B @@ -0,0 +1,3 @@ +392 752 +844 1720 +51 914 diff --git a/geom_bottleneck/tests/data/test_641_A b/geom_bottleneck/tests/data/test_641_A new file mode 100644 index 0000000..04100b0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_641_A @@ -0,0 +1,3 @@ +344 679 +413 673 +647 1475 diff --git a/geom_bottleneck/tests/data/test_641_B b/geom_bottleneck/tests/data/test_641_B new file mode 100644 index 0000000..840a640 --- /dev/null +++ b/geom_bottleneck/tests/data/test_641_B @@ -0,0 +1,3 @@ +688 1185 +529 598 +382 1269 diff --git a/geom_bottleneck/tests/data/test_642_A b/geom_bottleneck/tests/data/test_642_A new file mode 100644 index 0000000..a7da9ec --- /dev/null +++ b/geom_bottleneck/tests/data/test_642_A @@ -0,0 +1,3 @@ +886 1249 +24 684 +651 895 diff --git a/geom_bottleneck/tests/data/test_642_B b/geom_bottleneck/tests/data/test_642_B new file mode 100644 index 0000000..e25e427 --- /dev/null +++ b/geom_bottleneck/tests/data/test_642_B @@ -0,0 +1,3 @@ +779 977 +2 736 +978 1769 diff --git a/geom_bottleneck/tests/data/test_643_A b/geom_bottleneck/tests/data/test_643_A new file mode 100644 index 0000000..e818bdc --- /dev/null +++ b/geom_bottleneck/tests/data/test_643_A @@ -0,0 +1,3 @@ +891 1186 +391 1185 +921 1300 diff --git a/geom_bottleneck/tests/data/test_643_B b/geom_bottleneck/tests/data/test_643_B new file mode 100644 index 0000000..7a5f620 --- /dev/null +++ b/geom_bottleneck/tests/data/test_643_B @@ -0,0 +1,3 @@ +21 783 +84 583 +133 483 diff --git a/geom_bottleneck/tests/data/test_644_A b/geom_bottleneck/tests/data/test_644_A new file mode 100644 index 0000000..f6bc335 --- /dev/null +++ b/geom_bottleneck/tests/data/test_644_A @@ -0,0 +1,3 @@ +608 1036 +485 1247 +532 1302 diff --git a/geom_bottleneck/tests/data/test_644_B b/geom_bottleneck/tests/data/test_644_B new file mode 100644 index 0000000..109024d --- /dev/null +++ b/geom_bottleneck/tests/data/test_644_B @@ -0,0 +1,3 @@ +639 1059 +177 1044 +680 901 diff --git a/geom_bottleneck/tests/data/test_645_A b/geom_bottleneck/tests/data/test_645_A new file mode 100644 index 0000000..3f62c52 --- /dev/null +++ b/geom_bottleneck/tests/data/test_645_A @@ -0,0 +1,3 @@ +353 877 +730 1291 +610 992 diff --git a/geom_bottleneck/tests/data/test_645_B b/geom_bottleneck/tests/data/test_645_B new file mode 100644 index 0000000..f818161 --- /dev/null +++ b/geom_bottleneck/tests/data/test_645_B @@ -0,0 +1,3 @@ +854 1092 +395 737 +966 1230 diff --git a/geom_bottleneck/tests/data/test_646_A b/geom_bottleneck/tests/data/test_646_A new file mode 100644 index 0000000..7582a95 --- /dev/null +++ b/geom_bottleneck/tests/data/test_646_A @@ -0,0 +1,3 @@ +908 946 +490 875 +115 272 diff --git a/geom_bottleneck/tests/data/test_646_B b/geom_bottleneck/tests/data/test_646_B new file mode 100644 index 0000000..af402f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_646_B @@ -0,0 +1,3 @@ +787 1300 +123 569 +222 235 diff --git a/geom_bottleneck/tests/data/test_647_A b/geom_bottleneck/tests/data/test_647_A new file mode 100644 index 0000000..caa678f --- /dev/null +++ b/geom_bottleneck/tests/data/test_647_A @@ -0,0 +1,3 @@ +165 217 +390 1141 +18 238 diff --git a/geom_bottleneck/tests/data/test_647_B b/geom_bottleneck/tests/data/test_647_B new file mode 100644 index 0000000..a135f9e --- /dev/null +++ b/geom_bottleneck/tests/data/test_647_B @@ -0,0 +1,3 @@ +244 641 +97 859 +575 1088 diff --git a/geom_bottleneck/tests/data/test_648_A b/geom_bottleneck/tests/data/test_648_A new file mode 100644 index 0000000..35e36b8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_648_A @@ -0,0 +1,3 @@ +461 1111 +285 713 +349 943 diff --git a/geom_bottleneck/tests/data/test_648_B b/geom_bottleneck/tests/data/test_648_B new file mode 100644 index 0000000..8a28c4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_648_B @@ -0,0 +1,3 @@ +808 938 +293 374 +580 976 diff --git a/geom_bottleneck/tests/data/test_649_A b/geom_bottleneck/tests/data/test_649_A new file mode 100644 index 0000000..065cc77 --- /dev/null +++ b/geom_bottleneck/tests/data/test_649_A @@ -0,0 +1,3 @@ +57 802 +286 543 +403 1224 diff --git a/geom_bottleneck/tests/data/test_649_B b/geom_bottleneck/tests/data/test_649_B new file mode 100644 index 0000000..b23411e --- /dev/null +++ b/geom_bottleneck/tests/data/test_649_B @@ -0,0 +1,3 @@ +548 551 +21 683 +6 490 diff --git a/geom_bottleneck/tests/data/test_650_A b/geom_bottleneck/tests/data/test_650_A new file mode 100644 index 0000000..d87b7b4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_650_A @@ -0,0 +1,3 @@ +36 367 +273 389 +981 1711 diff --git a/geom_bottleneck/tests/data/test_650_B b/geom_bottleneck/tests/data/test_650_B new file mode 100644 index 0000000..f379676 --- /dev/null +++ b/geom_bottleneck/tests/data/test_650_B @@ -0,0 +1,3 @@ +659 1452 +551 1121 +551 949 diff --git a/geom_bottleneck/tests/data/test_651_A b/geom_bottleneck/tests/data/test_651_A new file mode 100644 index 0000000..ecf506a --- /dev/null +++ b/geom_bottleneck/tests/data/test_651_A @@ -0,0 +1,3 @@ +929 1425 +793 1446 +949 1437 diff --git a/geom_bottleneck/tests/data/test_651_B b/geom_bottleneck/tests/data/test_651_B new file mode 100644 index 0000000..f05128d --- /dev/null +++ b/geom_bottleneck/tests/data/test_651_B @@ -0,0 +1,3 @@ +860 1575 +476 1240 +126 1042 diff --git a/geom_bottleneck/tests/data/test_652_A b/geom_bottleneck/tests/data/test_652_A new file mode 100644 index 0000000..52d5bdf --- /dev/null +++ b/geom_bottleneck/tests/data/test_652_A @@ -0,0 +1,3 @@ +842 1066 +564 764 +68 267 diff --git a/geom_bottleneck/tests/data/test_652_B b/geom_bottleneck/tests/data/test_652_B new file mode 100644 index 0000000..2b12de5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_652_B @@ -0,0 +1,3 @@ +427 528 +404 1245 +800 994 diff --git a/geom_bottleneck/tests/data/test_653_A b/geom_bottleneck/tests/data/test_653_A new file mode 100644 index 0000000..b4bbdd3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_653_A @@ -0,0 +1,3 @@ +792 967 +574 1406 +175 533 diff --git a/geom_bottleneck/tests/data/test_653_B b/geom_bottleneck/tests/data/test_653_B new file mode 100644 index 0000000..f349693 --- /dev/null +++ b/geom_bottleneck/tests/data/test_653_B @@ -0,0 +1,3 @@ +421 822 +339 1231 +723 1052 diff --git a/geom_bottleneck/tests/data/test_654_A b/geom_bottleneck/tests/data/test_654_A new file mode 100644 index 0000000..d090ad8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_654_A @@ -0,0 +1,3 @@ +175 462 +829 1810 +494 1040 diff --git a/geom_bottleneck/tests/data/test_654_B b/geom_bottleneck/tests/data/test_654_B new file mode 100644 index 0000000..f9944d7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_654_B @@ -0,0 +1,3 @@ +656 658 +403 1260 +887 1883 diff --git a/geom_bottleneck/tests/data/test_655_A b/geom_bottleneck/tests/data/test_655_A new file mode 100644 index 0000000..9105397 --- /dev/null +++ b/geom_bottleneck/tests/data/test_655_A @@ -0,0 +1,3 @@ +1 419 +674 970 +633 664 diff --git a/geom_bottleneck/tests/data/test_655_B b/geom_bottleneck/tests/data/test_655_B new file mode 100644 index 0000000..9aa2ab6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_655_B @@ -0,0 +1,3 @@ +194 461 +376 901 +417 723 diff --git a/geom_bottleneck/tests/data/test_656_A b/geom_bottleneck/tests/data/test_656_A new file mode 100644 index 0000000..bcdfd3c --- /dev/null +++ b/geom_bottleneck/tests/data/test_656_A @@ -0,0 +1,3 @@ +707 825 +811 1475 +344 915 diff --git a/geom_bottleneck/tests/data/test_656_B b/geom_bottleneck/tests/data/test_656_B new file mode 100644 index 0000000..5ee0ab0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_656_B @@ -0,0 +1,3 @@ +928 1504 +366 991 +506 1194 diff --git a/geom_bottleneck/tests/data/test_657_A b/geom_bottleneck/tests/data/test_657_A new file mode 100644 index 0000000..7d39a99 --- /dev/null +++ b/geom_bottleneck/tests/data/test_657_A @@ -0,0 +1,3 @@ +101 439 +539 1442 +955 1560 diff --git a/geom_bottleneck/tests/data/test_657_B b/geom_bottleneck/tests/data/test_657_B new file mode 100644 index 0000000..3b9d726 --- /dev/null +++ b/geom_bottleneck/tests/data/test_657_B @@ -0,0 +1,3 @@ +505 966 +757 1602 +615 1309 diff --git a/geom_bottleneck/tests/data/test_658_A b/geom_bottleneck/tests/data/test_658_A new file mode 100644 index 0000000..33f8b08 --- /dev/null +++ b/geom_bottleneck/tests/data/test_658_A @@ -0,0 +1,3 @@ +829 1642 +95 139 +435 558 diff --git a/geom_bottleneck/tests/data/test_658_B b/geom_bottleneck/tests/data/test_658_B new file mode 100644 index 0000000..b131e5d --- /dev/null +++ b/geom_bottleneck/tests/data/test_658_B @@ -0,0 +1,3 @@ +171 1171 +240 780 +363 720 diff --git a/geom_bottleneck/tests/data/test_659_A b/geom_bottleneck/tests/data/test_659_A new file mode 100644 index 0000000..974d216 --- /dev/null +++ b/geom_bottleneck/tests/data/test_659_A @@ -0,0 +1,3 @@ +409 1266 +680 909 +942 1270 diff --git a/geom_bottleneck/tests/data/test_659_B b/geom_bottleneck/tests/data/test_659_B new file mode 100644 index 0000000..c3cfbeb --- /dev/null +++ b/geom_bottleneck/tests/data/test_659_B @@ -0,0 +1,3 @@ +318 1245 +561 1013 +787 1275 diff --git a/geom_bottleneck/tests/data/test_660_A b/geom_bottleneck/tests/data/test_660_A new file mode 100644 index 0000000..1c408f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_660_A @@ -0,0 +1,4 @@ +526 757 +355 743 +250 1221 +35 439 diff --git a/geom_bottleneck/tests/data/test_660_B b/geom_bottleneck/tests/data/test_660_B new file mode 100644 index 0000000..5fffa69 --- /dev/null +++ b/geom_bottleneck/tests/data/test_660_B @@ -0,0 +1,4 @@ +348 611 +127 398 +839 1650 +136 803 diff --git a/geom_bottleneck/tests/data/test_661_A b/geom_bottleneck/tests/data/test_661_A new file mode 100644 index 0000000..df0d8ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_661_A @@ -0,0 +1,4 @@ +769 905 +534 1227 +410 422 +937 1744 diff --git a/geom_bottleneck/tests/data/test_661_B b/geom_bottleneck/tests/data/test_661_B new file mode 100644 index 0000000..56cfa0c --- /dev/null +++ b/geom_bottleneck/tests/data/test_661_B @@ -0,0 +1,4 @@ +19 350 +255 390 +910 1001 +853 1070 diff --git a/geom_bottleneck/tests/data/test_662_A b/geom_bottleneck/tests/data/test_662_A new file mode 100644 index 0000000..cb65a38 --- /dev/null +++ b/geom_bottleneck/tests/data/test_662_A @@ -0,0 +1,4 @@ +394 674 +364 1209 +763 1333 +344 1294 diff --git a/geom_bottleneck/tests/data/test_662_B b/geom_bottleneck/tests/data/test_662_B new file mode 100644 index 0000000..92f0ee6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_662_B @@ -0,0 +1,4 @@ +324 939 +829 987 +210 998 +519 756 diff --git a/geom_bottleneck/tests/data/test_663_A b/geom_bottleneck/tests/data/test_663_A new file mode 100644 index 0000000..ed35031 --- /dev/null +++ b/geom_bottleneck/tests/data/test_663_A @@ -0,0 +1,4 @@ +659 1254 +201 1188 +660 811 +630 1044 diff --git a/geom_bottleneck/tests/data/test_663_B b/geom_bottleneck/tests/data/test_663_B new file mode 100644 index 0000000..6a6126c --- /dev/null +++ b/geom_bottleneck/tests/data/test_663_B @@ -0,0 +1,4 @@ +873 914 +441 1063 +135 468 +584 620 diff --git a/geom_bottleneck/tests/data/test_664_A b/geom_bottleneck/tests/data/test_664_A new file mode 100644 index 0000000..59f6bfa --- /dev/null +++ b/geom_bottleneck/tests/data/test_664_A @@ -0,0 +1,4 @@ +753 1625 +353 1109 +565 650 +321 708 diff --git a/geom_bottleneck/tests/data/test_664_B b/geom_bottleneck/tests/data/test_664_B new file mode 100644 index 0000000..6b34a5f --- /dev/null +++ b/geom_bottleneck/tests/data/test_664_B @@ -0,0 +1,4 @@ +664 794 +572 1058 +754 1119 +899 1445 diff --git a/geom_bottleneck/tests/data/test_665_A b/geom_bottleneck/tests/data/test_665_A new file mode 100644 index 0000000..ff6ce72 --- /dev/null +++ b/geom_bottleneck/tests/data/test_665_A @@ -0,0 +1,4 @@ +661 1260 +232 833 +820 826 +32 139 diff --git a/geom_bottleneck/tests/data/test_665_B b/geom_bottleneck/tests/data/test_665_B new file mode 100644 index 0000000..9a5d4a9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_665_B @@ -0,0 +1,4 @@ +466 1319 +809 1762 +165 235 +636 1460 diff --git a/geom_bottleneck/tests/data/test_666_A b/geom_bottleneck/tests/data/test_666_A new file mode 100644 index 0000000..455e262 --- /dev/null +++ b/geom_bottleneck/tests/data/test_666_A @@ -0,0 +1,4 @@ +496 1447 +606 1017 +578 767 +971 1768 diff --git a/geom_bottleneck/tests/data/test_666_B b/geom_bottleneck/tests/data/test_666_B new file mode 100644 index 0000000..0c9069e --- /dev/null +++ b/geom_bottleneck/tests/data/test_666_B @@ -0,0 +1,4 @@ +578 896 +731 1115 +455 1129 +649 1421 diff --git a/geom_bottleneck/tests/data/test_667_A b/geom_bottleneck/tests/data/test_667_A new file mode 100644 index 0000000..054d14e --- /dev/null +++ b/geom_bottleneck/tests/data/test_667_A @@ -0,0 +1,4 @@ +537 1030 +887 1179 +644 905 +403 1382 diff --git a/geom_bottleneck/tests/data/test_667_B b/geom_bottleneck/tests/data/test_667_B new file mode 100644 index 0000000..a4a432a --- /dev/null +++ b/geom_bottleneck/tests/data/test_667_B @@ -0,0 +1,4 @@ +981 1100 +582 1487 +603 1448 +526 1059 diff --git a/geom_bottleneck/tests/data/test_668_A b/geom_bottleneck/tests/data/test_668_A new file mode 100644 index 0000000..00c5554 --- /dev/null +++ b/geom_bottleneck/tests/data/test_668_A @@ -0,0 +1,4 @@ +376 564 +803 1414 +324 973 +901 1266 diff --git a/geom_bottleneck/tests/data/test_668_B b/geom_bottleneck/tests/data/test_668_B new file mode 100644 index 0000000..5b7e07c --- /dev/null +++ b/geom_bottleneck/tests/data/test_668_B @@ -0,0 +1,4 @@ +901 1627 +805 1168 +867 1069 +156 291 diff --git a/geom_bottleneck/tests/data/test_669_A b/geom_bottleneck/tests/data/test_669_A new file mode 100644 index 0000000..2abb014 --- /dev/null +++ b/geom_bottleneck/tests/data/test_669_A @@ -0,0 +1,4 @@ +282 848 +560 1190 +152 342 +998 1524 diff --git a/geom_bottleneck/tests/data/test_669_B b/geom_bottleneck/tests/data/test_669_B new file mode 100644 index 0000000..5694ce9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_669_B @@ -0,0 +1,4 @@ +398 731 +835 1681 +791 1026 +939 1024 diff --git a/geom_bottleneck/tests/data/test_670_A b/geom_bottleneck/tests/data/test_670_A new file mode 100644 index 0000000..e7ae4f1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_670_A @@ -0,0 +1,4 @@ +665 1146 +512 1332 +375 595 +566 1211 diff --git a/geom_bottleneck/tests/data/test_670_B b/geom_bottleneck/tests/data/test_670_B new file mode 100644 index 0000000..8f6b057 --- /dev/null +++ b/geom_bottleneck/tests/data/test_670_B @@ -0,0 +1,4 @@ +203 469 +966 1146 +342 638 +290 498 diff --git a/geom_bottleneck/tests/data/test_671_A b/geom_bottleneck/tests/data/test_671_A new file mode 100644 index 0000000..8ac70f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_671_A @@ -0,0 +1,4 @@ +533 1333 +682 1127 +928 1703 +487 781 diff --git a/geom_bottleneck/tests/data/test_671_B b/geom_bottleneck/tests/data/test_671_B new file mode 100644 index 0000000..bcb5f1b --- /dev/null +++ b/geom_bottleneck/tests/data/test_671_B @@ -0,0 +1,4 @@ +336 1128 +992 1292 +931 1497 +622 1165 diff --git a/geom_bottleneck/tests/data/test_672_A b/geom_bottleneck/tests/data/test_672_A new file mode 100644 index 0000000..4ca2b19 --- /dev/null +++ b/geom_bottleneck/tests/data/test_672_A @@ -0,0 +1,4 @@ +30 600 +893 1394 +112 776 +434 905 diff --git a/geom_bottleneck/tests/data/test_672_B b/geom_bottleneck/tests/data/test_672_B new file mode 100644 index 0000000..29b8d76 --- /dev/null +++ b/geom_bottleneck/tests/data/test_672_B @@ -0,0 +1,4 @@ +684 1559 +372 1171 +113 700 +180 865 diff --git a/geom_bottleneck/tests/data/test_673_A b/geom_bottleneck/tests/data/test_673_A new file mode 100644 index 0000000..f6e6e4a --- /dev/null +++ b/geom_bottleneck/tests/data/test_673_A @@ -0,0 +1,4 @@ +894 1455 +676 1502 +402 976 +863 1258 diff --git a/geom_bottleneck/tests/data/test_673_B b/geom_bottleneck/tests/data/test_673_B new file mode 100644 index 0000000..01ac9c7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_673_B @@ -0,0 +1,4 @@ +190 473 +420 1059 +187 827 +482 1365 diff --git a/geom_bottleneck/tests/data/test_674_A b/geom_bottleneck/tests/data/test_674_A new file mode 100644 index 0000000..8bbf6ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_674_A @@ -0,0 +1,4 @@ +89 681 +460 781 +500 679 +786 827 diff --git a/geom_bottleneck/tests/data/test_674_B b/geom_bottleneck/tests/data/test_674_B new file mode 100644 index 0000000..ddebd4c --- /dev/null +++ b/geom_bottleneck/tests/data/test_674_B @@ -0,0 +1,4 @@ +445 1261 +769 1735 +5 81 +964 1477 diff --git a/geom_bottleneck/tests/data/test_675_A b/geom_bottleneck/tests/data/test_675_A new file mode 100644 index 0000000..30b36bb --- /dev/null +++ b/geom_bottleneck/tests/data/test_675_A @@ -0,0 +1,4 @@ +507 965 +1000 1816 +946 1201 +926 1637 diff --git a/geom_bottleneck/tests/data/test_675_B b/geom_bottleneck/tests/data/test_675_B new file mode 100644 index 0000000..c0722ef --- /dev/null +++ b/geom_bottleneck/tests/data/test_675_B @@ -0,0 +1,4 @@ +302 1162 +795 1527 +602 747 +646 683 diff --git a/geom_bottleneck/tests/data/test_676_A b/geom_bottleneck/tests/data/test_676_A new file mode 100644 index 0000000..b43ef5e --- /dev/null +++ b/geom_bottleneck/tests/data/test_676_A @@ -0,0 +1,4 @@ +343 1040 +556 758 +286 983 +467 700 diff --git a/geom_bottleneck/tests/data/test_676_B b/geom_bottleneck/tests/data/test_676_B new file mode 100644 index 0000000..59b2fb6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_676_B @@ -0,0 +1,4 @@ +446 1062 +65 988 +159 1102 +920 1553 diff --git a/geom_bottleneck/tests/data/test_677_A b/geom_bottleneck/tests/data/test_677_A new file mode 100644 index 0000000..4d9d36e --- /dev/null +++ b/geom_bottleneck/tests/data/test_677_A @@ -0,0 +1,4 @@ +355 949 +561 704 +153 945 +407 1134 diff --git a/geom_bottleneck/tests/data/test_677_B b/geom_bottleneck/tests/data/test_677_B new file mode 100644 index 0000000..4edf573 --- /dev/null +++ b/geom_bottleneck/tests/data/test_677_B @@ -0,0 +1,4 @@ +758 962 +354 535 +115 782 +309 1207 diff --git a/geom_bottleneck/tests/data/test_678_A b/geom_bottleneck/tests/data/test_678_A new file mode 100644 index 0000000..54ab668 --- /dev/null +++ b/geom_bottleneck/tests/data/test_678_A @@ -0,0 +1,4 @@ +946 1489 +594 1446 +686 986 +200 493 diff --git a/geom_bottleneck/tests/data/test_678_B b/geom_bottleneck/tests/data/test_678_B new file mode 100644 index 0000000..f695f5f --- /dev/null +++ b/geom_bottleneck/tests/data/test_678_B @@ -0,0 +1,4 @@ +708 725 +761 1309 +47 963 +61 320 diff --git a/geom_bottleneck/tests/data/test_679_A b/geom_bottleneck/tests/data/test_679_A new file mode 100644 index 0000000..33e4ce8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_679_A @@ -0,0 +1,4 @@ +153 950 +179 1047 +736 845 +943 1760 diff --git a/geom_bottleneck/tests/data/test_679_B b/geom_bottleneck/tests/data/test_679_B new file mode 100644 index 0000000..a99ec77 --- /dev/null +++ b/geom_bottleneck/tests/data/test_679_B @@ -0,0 +1,4 @@ +744 1423 +669 1350 +989 1062 +57 823 diff --git a/geom_bottleneck/tests/data/test_680_A b/geom_bottleneck/tests/data/test_680_A new file mode 100644 index 0000000..4bb43a8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_680_A @@ -0,0 +1,5 @@ +102 183 +847 1835 +300 1098 +953 1849 +327 1070 diff --git a/geom_bottleneck/tests/data/test_680_B b/geom_bottleneck/tests/data/test_680_B new file mode 100644 index 0000000..efb704f --- /dev/null +++ b/geom_bottleneck/tests/data/test_680_B @@ -0,0 +1,5 @@ +917 1904 +340 1190 +128 516 +695 1474 +450 628 diff --git a/geom_bottleneck/tests/data/test_681_A b/geom_bottleneck/tests/data/test_681_A new file mode 100644 index 0000000..5eb7d6a --- /dev/null +++ b/geom_bottleneck/tests/data/test_681_A @@ -0,0 +1,5 @@ +882 1558 +108 921 +479 653 +329 533 +643 952 diff --git a/geom_bottleneck/tests/data/test_681_B b/geom_bottleneck/tests/data/test_681_B new file mode 100644 index 0000000..092ddc5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_681_B @@ -0,0 +1,5 @@ +155 350 +686 1081 +791 900 +402 653 +364 610 diff --git a/geom_bottleneck/tests/data/test_682_A b/geom_bottleneck/tests/data/test_682_A new file mode 100644 index 0000000..7898cba --- /dev/null +++ b/geom_bottleneck/tests/data/test_682_A @@ -0,0 +1,5 @@ +548 632 +839 990 +856 1008 +719 1091 +532 1445 diff --git a/geom_bottleneck/tests/data/test_682_B b/geom_bottleneck/tests/data/test_682_B new file mode 100644 index 0000000..f5b1d81 --- /dev/null +++ b/geom_bottleneck/tests/data/test_682_B @@ -0,0 +1,5 @@ +341 429 +146 682 +40 962 +543 1339 +277 944 diff --git a/geom_bottleneck/tests/data/test_683_A b/geom_bottleneck/tests/data/test_683_A new file mode 100644 index 0000000..3661bfc --- /dev/null +++ b/geom_bottleneck/tests/data/test_683_A @@ -0,0 +1,5 @@ +227 587 +365 708 +565 1465 +240 248 +610 1328 diff --git a/geom_bottleneck/tests/data/test_683_B b/geom_bottleneck/tests/data/test_683_B new file mode 100644 index 0000000..62c998b --- /dev/null +++ b/geom_bottleneck/tests/data/test_683_B @@ -0,0 +1,5 @@ +741 1553 +314 914 +980 1322 +398 1163 +304 901 diff --git a/geom_bottleneck/tests/data/test_684_A b/geom_bottleneck/tests/data/test_684_A new file mode 100644 index 0000000..b22afe3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_684_A @@ -0,0 +1,5 @@ +196 1047 +489 739 +11 758 +204 1069 +959 976 diff --git a/geom_bottleneck/tests/data/test_684_B b/geom_bottleneck/tests/data/test_684_B new file mode 100644 index 0000000..cbede63 --- /dev/null +++ b/geom_bottleneck/tests/data/test_684_B @@ -0,0 +1,5 @@ +391 1180 +229 906 +246 1219 +564 1171 +797 1273 diff --git a/geom_bottleneck/tests/data/test_685_A b/geom_bottleneck/tests/data/test_685_A new file mode 100644 index 0000000..c4bd0e9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_685_A @@ -0,0 +1,5 @@ +628 762 +148 921 +694 1155 +865 1298 +365 1337 diff --git a/geom_bottleneck/tests/data/test_685_B b/geom_bottleneck/tests/data/test_685_B new file mode 100644 index 0000000..984dd98 --- /dev/null +++ b/geom_bottleneck/tests/data/test_685_B @@ -0,0 +1,5 @@ +504 1226 +608 1576 +256 475 +479 884 +384 656 diff --git a/geom_bottleneck/tests/data/test_686_A b/geom_bottleneck/tests/data/test_686_A new file mode 100644 index 0000000..e498d5c --- /dev/null +++ b/geom_bottleneck/tests/data/test_686_A @@ -0,0 +1,5 @@ +839 1291 +140 808 +539 720 +928 1729 +881 1126 diff --git a/geom_bottleneck/tests/data/test_686_B b/geom_bottleneck/tests/data/test_686_B new file mode 100644 index 0000000..56ada59 --- /dev/null +++ b/geom_bottleneck/tests/data/test_686_B @@ -0,0 +1,5 @@ +280 962 +935 1205 +328 1022 +27 247 +554 732 diff --git a/geom_bottleneck/tests/data/test_687_A b/geom_bottleneck/tests/data/test_687_A new file mode 100644 index 0000000..c31c2d2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_687_A @@ -0,0 +1,5 @@ +323 954 +507 885 +533 1044 +679 1402 +43 918 diff --git a/geom_bottleneck/tests/data/test_687_B b/geom_bottleneck/tests/data/test_687_B new file mode 100644 index 0000000..471eeed --- /dev/null +++ b/geom_bottleneck/tests/data/test_687_B @@ -0,0 +1,5 @@ +243 823 +269 1215 +449 1214 +24 777 +705 1558 diff --git a/geom_bottleneck/tests/data/test_688_A b/geom_bottleneck/tests/data/test_688_A new file mode 100644 index 0000000..7396099 --- /dev/null +++ b/geom_bottleneck/tests/data/test_688_A @@ -0,0 +1,5 @@ +471 989 +319 432 +130 900 +856 1389 +422 635 diff --git a/geom_bottleneck/tests/data/test_688_B b/geom_bottleneck/tests/data/test_688_B new file mode 100644 index 0000000..e133e74 --- /dev/null +++ b/geom_bottleneck/tests/data/test_688_B @@ -0,0 +1,5 @@ +13 373 +575 1199 +553 1347 +158 1148 +111 393 diff --git a/geom_bottleneck/tests/data/test_689_A b/geom_bottleneck/tests/data/test_689_A new file mode 100644 index 0000000..72febe7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_689_A @@ -0,0 +1,5 @@ +451 1035 +293 380 +400 648 +9 681 +85 96 diff --git a/geom_bottleneck/tests/data/test_689_B b/geom_bottleneck/tests/data/test_689_B new file mode 100644 index 0000000..f684387 --- /dev/null +++ b/geom_bottleneck/tests/data/test_689_B @@ -0,0 +1,5 @@ +431 1117 +40 969 +54 1026 +297 710 +722 1143 diff --git a/geom_bottleneck/tests/data/test_690_A b/geom_bottleneck/tests/data/test_690_A new file mode 100644 index 0000000..4106f49 --- /dev/null +++ b/geom_bottleneck/tests/data/test_690_A @@ -0,0 +1,5 @@ +624 1464 +228 1205 +638 876 +896 1632 +564 1378 diff --git a/geom_bottleneck/tests/data/test_690_B b/geom_bottleneck/tests/data/test_690_B new file mode 100644 index 0000000..d452cff --- /dev/null +++ b/geom_bottleneck/tests/data/test_690_B @@ -0,0 +1,5 @@ +745 1386 +574 898 +472 1427 +922 1325 +592 1053 diff --git a/geom_bottleneck/tests/data/test_691_A b/geom_bottleneck/tests/data/test_691_A new file mode 100644 index 0000000..b6c906e --- /dev/null +++ b/geom_bottleneck/tests/data/test_691_A @@ -0,0 +1,5 @@ +291 1111 +75 251 +47 913 +753 1632 +582 739 diff --git a/geom_bottleneck/tests/data/test_691_B b/geom_bottleneck/tests/data/test_691_B new file mode 100644 index 0000000..57e58ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_691_B @@ -0,0 +1,5 @@ +264 911 +478 839 +182 258 +336 1121 +915 1764 diff --git a/geom_bottleneck/tests/data/test_692_A b/geom_bottleneck/tests/data/test_692_A new file mode 100644 index 0000000..1686c25 --- /dev/null +++ b/geom_bottleneck/tests/data/test_692_A @@ -0,0 +1,5 @@ +856 1460 +852 1085 +246 328 +508 1202 +900 1487 diff --git a/geom_bottleneck/tests/data/test_692_B b/geom_bottleneck/tests/data/test_692_B new file mode 100644 index 0000000..bf6174a --- /dev/null +++ b/geom_bottleneck/tests/data/test_692_B @@ -0,0 +1,5 @@ +624 1180 +247 889 +218 373 +823 1637 +439 597 diff --git a/geom_bottleneck/tests/data/test_693_A b/geom_bottleneck/tests/data/test_693_A new file mode 100644 index 0000000..ea16ba6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_693_A @@ -0,0 +1,5 @@ +37 175 +952 1934 +808 843 +742 822 +75 863 diff --git a/geom_bottleneck/tests/data/test_693_B b/geom_bottleneck/tests/data/test_693_B new file mode 100644 index 0000000..52c8f97 --- /dev/null +++ b/geom_bottleneck/tests/data/test_693_B @@ -0,0 +1,5 @@ +431 1287 +490 765 +552 843 +179 1131 +334 732 diff --git a/geom_bottleneck/tests/data/test_694_A b/geom_bottleneck/tests/data/test_694_A new file mode 100644 index 0000000..e577a0f --- /dev/null +++ b/geom_bottleneck/tests/data/test_694_A @@ -0,0 +1,5 @@ +917 1066 +928 1036 +611 1593 +682 1661 +561 810 diff --git a/geom_bottleneck/tests/data/test_694_B b/geom_bottleneck/tests/data/test_694_B new file mode 100644 index 0000000..e406840 --- /dev/null +++ b/geom_bottleneck/tests/data/test_694_B @@ -0,0 +1,5 @@ +754 918 +735 1730 +430 1284 +588 986 +56 791 diff --git a/geom_bottleneck/tests/data/test_695_A b/geom_bottleneck/tests/data/test_695_A new file mode 100644 index 0000000..ef9cacb --- /dev/null +++ b/geom_bottleneck/tests/data/test_695_A @@ -0,0 +1,5 @@ +219 629 +438 1008 +695 1385 +137 844 +394 1126 diff --git a/geom_bottleneck/tests/data/test_695_B b/geom_bottleneck/tests/data/test_695_B new file mode 100644 index 0000000..f2bb91b --- /dev/null +++ b/geom_bottleneck/tests/data/test_695_B @@ -0,0 +1,5 @@ +556 1218 +942 975 +730 1199 +110 947 +867 1613 diff --git a/geom_bottleneck/tests/data/test_696_A b/geom_bottleneck/tests/data/test_696_A new file mode 100644 index 0000000..71fa19f --- /dev/null +++ b/geom_bottleneck/tests/data/test_696_A @@ -0,0 +1,5 @@ +929 1104 +287 561 +801 1419 +549 1265 +758 795 diff --git a/geom_bottleneck/tests/data/test_696_B b/geom_bottleneck/tests/data/test_696_B new file mode 100644 index 0000000..a964c63 --- /dev/null +++ b/geom_bottleneck/tests/data/test_696_B @@ -0,0 +1,5 @@ +446 641 +863 1426 +0 382 +659 945 +707 715 diff --git a/geom_bottleneck/tests/data/test_697_A b/geom_bottleneck/tests/data/test_697_A new file mode 100644 index 0000000..848e417 --- /dev/null +++ b/geom_bottleneck/tests/data/test_697_A @@ -0,0 +1,5 @@ +876 1854 +147 864 +249 1095 +965 1723 +548 865 diff --git a/geom_bottleneck/tests/data/test_697_B b/geom_bottleneck/tests/data/test_697_B new file mode 100644 index 0000000..98a8d15 --- /dev/null +++ b/geom_bottleneck/tests/data/test_697_B @@ -0,0 +1,5 @@ +478 1175 +40 533 +212 388 +865 1736 +697 1335 diff --git a/geom_bottleneck/tests/data/test_698_A b/geom_bottleneck/tests/data/test_698_A new file mode 100644 index 0000000..a90620d --- /dev/null +++ b/geom_bottleneck/tests/data/test_698_A @@ -0,0 +1,5 @@ +714 1561 +967 1649 +57 65 +560 807 +451 1000 diff --git a/geom_bottleneck/tests/data/test_698_B b/geom_bottleneck/tests/data/test_698_B new file mode 100644 index 0000000..ef52ae0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_698_B @@ -0,0 +1,5 @@ +909 1809 +266 758 +894 1395 +495 1481 +91 646 diff --git a/geom_bottleneck/tests/data/test_699_A b/geom_bottleneck/tests/data/test_699_A new file mode 100644 index 0000000..e00215d --- /dev/null +++ b/geom_bottleneck/tests/data/test_699_A @@ -0,0 +1,5 @@ +749 799 +150 307 +463 1009 +503 1047 +613 1549 diff --git a/geom_bottleneck/tests/data/test_699_B b/geom_bottleneck/tests/data/test_699_B new file mode 100644 index 0000000..0fff210 --- /dev/null +++ b/geom_bottleneck/tests/data/test_699_B @@ -0,0 +1,5 @@ +915 1430 +582 685 +994 1491 +227 869 +251 1173 diff --git a/geom_bottleneck/tests/data/test_700_A b/geom_bottleneck/tests/data/test_700_A new file mode 100644 index 0000000..9425b73 --- /dev/null +++ b/geom_bottleneck/tests/data/test_700_A @@ -0,0 +1,6 @@ +313 977 +396 888 +244 339 +474 1072 +191 1069 +519 940 diff --git a/geom_bottleneck/tests/data/test_700_B b/geom_bottleneck/tests/data/test_700_B new file mode 100644 index 0000000..19944b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_700_B @@ -0,0 +1,6 @@ +547 588 +852 1072 +34 817 +54 441 +222 413 +184 888 diff --git a/geom_bottleneck/tests/data/test_701_A b/geom_bottleneck/tests/data/test_701_A new file mode 100644 index 0000000..062d6fb --- /dev/null +++ b/geom_bottleneck/tests/data/test_701_A @@ -0,0 +1,6 @@ +582 910 +701 1226 +195 619 +541 668 +275 1161 +322 1041 diff --git a/geom_bottleneck/tests/data/test_701_B b/geom_bottleneck/tests/data/test_701_B new file mode 100644 index 0000000..3149c7c --- /dev/null +++ b/geom_bottleneck/tests/data/test_701_B @@ -0,0 +1,6 @@ +868 1747 +559 1027 +635 1354 +337 541 +630 1220 +860 1681 diff --git a/geom_bottleneck/tests/data/test_702_A b/geom_bottleneck/tests/data/test_702_A new file mode 100644 index 0000000..2a82935 --- /dev/null +++ b/geom_bottleneck/tests/data/test_702_A @@ -0,0 +1,6 @@ +378 869 +890 1016 +13 941 +706 1365 +879 1261 +334 864 diff --git a/geom_bottleneck/tests/data/test_702_B b/geom_bottleneck/tests/data/test_702_B new file mode 100644 index 0000000..c3854d5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_702_B @@ -0,0 +1,6 @@ +381 525 +852 1350 +825 884 +984 1542 +614 942 +74 652 diff --git a/geom_bottleneck/tests/data/test_703_A b/geom_bottleneck/tests/data/test_703_A new file mode 100644 index 0000000..fb434c0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_703_A @@ -0,0 +1,6 @@ +551 801 +116 205 +364 382 +883 1597 +834 1212 +737 988 diff --git a/geom_bottleneck/tests/data/test_703_B b/geom_bottleneck/tests/data/test_703_B new file mode 100644 index 0000000..f8af9dd --- /dev/null +++ b/geom_bottleneck/tests/data/test_703_B @@ -0,0 +1,6 @@ +661 695 +904 1528 +65 986 +691 785 +98 1000 +102 592 diff --git a/geom_bottleneck/tests/data/test_704_A b/geom_bottleneck/tests/data/test_704_A new file mode 100644 index 0000000..a89a1aa --- /dev/null +++ b/geom_bottleneck/tests/data/test_704_A @@ -0,0 +1,6 @@ +679 1424 +746 1074 +761 1546 +360 934 +139 855 +942 1002 diff --git a/geom_bottleneck/tests/data/test_704_B b/geom_bottleneck/tests/data/test_704_B new file mode 100644 index 0000000..5abc5fa --- /dev/null +++ b/geom_bottleneck/tests/data/test_704_B @@ -0,0 +1,6 @@ +781 1388 +48 645 +242 294 +979 1071 +348 1065 +701 1351 diff --git a/geom_bottleneck/tests/data/test_705_A b/geom_bottleneck/tests/data/test_705_A new file mode 100644 index 0000000..924a661 --- /dev/null +++ b/geom_bottleneck/tests/data/test_705_A @@ -0,0 +1,6 @@ +123 751 +405 935 +708 1217 +540 708 +810 1047 +346 1088 diff --git a/geom_bottleneck/tests/data/test_705_B b/geom_bottleneck/tests/data/test_705_B new file mode 100644 index 0000000..0681a80 --- /dev/null +++ b/geom_bottleneck/tests/data/test_705_B @@ -0,0 +1,6 @@ +175 1150 +840 1056 +180 658 +805 1787 +123 467 +947 1539 diff --git a/geom_bottleneck/tests/data/test_706_A b/geom_bottleneck/tests/data/test_706_A new file mode 100644 index 0000000..0a249be --- /dev/null +++ b/geom_bottleneck/tests/data/test_706_A @@ -0,0 +1,6 @@ +900 1181 +555 663 +1 750 +883 1197 +33 518 +450 808 diff --git a/geom_bottleneck/tests/data/test_706_B b/geom_bottleneck/tests/data/test_706_B new file mode 100644 index 0000000..624923c --- /dev/null +++ b/geom_bottleneck/tests/data/test_706_B @@ -0,0 +1,6 @@ +682 818 +814 1240 +900 1777 +399 967 +420 921 +723 1022 diff --git a/geom_bottleneck/tests/data/test_707_A b/geom_bottleneck/tests/data/test_707_A new file mode 100644 index 0000000..a251b74 --- /dev/null +++ b/geom_bottleneck/tests/data/test_707_A @@ -0,0 +1,6 @@ +991 1398 +632 1322 +635 1448 +97 955 +793 1016 +995 1832 diff --git a/geom_bottleneck/tests/data/test_707_B b/geom_bottleneck/tests/data/test_707_B new file mode 100644 index 0000000..2647b31 --- /dev/null +++ b/geom_bottleneck/tests/data/test_707_B @@ -0,0 +1,6 @@ +320 551 +552 1125 +383 551 +891 1032 +272 1038 +925 1695 diff --git a/geom_bottleneck/tests/data/test_708_A b/geom_bottleneck/tests/data/test_708_A new file mode 100644 index 0000000..ddc601a --- /dev/null +++ b/geom_bottleneck/tests/data/test_708_A @@ -0,0 +1,6 @@ +681 786 +125 980 +146 721 +769 1207 +504 1208 +724 985 diff --git a/geom_bottleneck/tests/data/test_708_B b/geom_bottleneck/tests/data/test_708_B new file mode 100644 index 0000000..0a64a4f --- /dev/null +++ b/geom_bottleneck/tests/data/test_708_B @@ -0,0 +1,6 @@ +571 697 +763 1635 +573 623 +683 1438 +783 1580 +541 1374 diff --git a/geom_bottleneck/tests/data/test_709_A b/geom_bottleneck/tests/data/test_709_A new file mode 100644 index 0000000..2d3aa30 --- /dev/null +++ b/geom_bottleneck/tests/data/test_709_A @@ -0,0 +1,6 @@ +704 1089 +764 1349 +322 1100 +731 1284 +42 525 +49 602 diff --git a/geom_bottleneck/tests/data/test_709_B b/geom_bottleneck/tests/data/test_709_B new file mode 100644 index 0000000..c5f7233 --- /dev/null +++ b/geom_bottleneck/tests/data/test_709_B @@ -0,0 +1,6 @@ +435 502 +150 1140 +356 1273 +592 1292 +552 1331 +905 1713 diff --git a/geom_bottleneck/tests/data/test_710_A b/geom_bottleneck/tests/data/test_710_A new file mode 100644 index 0000000..e611f5a --- /dev/null +++ b/geom_bottleneck/tests/data/test_710_A @@ -0,0 +1,6 @@ +257 589 +18 966 +482 1110 +588 763 +989 1857 +479 494 diff --git a/geom_bottleneck/tests/data/test_710_B b/geom_bottleneck/tests/data/test_710_B new file mode 100644 index 0000000..cd9cedb --- /dev/null +++ b/geom_bottleneck/tests/data/test_710_B @@ -0,0 +1,6 @@ +2 263 +642 884 +72 321 +632 1186 +633 1310 +263 1219 diff --git a/geom_bottleneck/tests/data/test_711_A b/geom_bottleneck/tests/data/test_711_A new file mode 100644 index 0000000..900b87a --- /dev/null +++ b/geom_bottleneck/tests/data/test_711_A @@ -0,0 +1,6 @@ +954 1912 +243 556 +758 967 +836 1102 +184 1134 +401 434 diff --git a/geom_bottleneck/tests/data/test_711_B b/geom_bottleneck/tests/data/test_711_B new file mode 100644 index 0000000..31dd505 --- /dev/null +++ b/geom_bottleneck/tests/data/test_711_B @@ -0,0 +1,6 @@ +454 1045 +606 646 +999 1478 +398 845 +743 1192 +926 1080 diff --git a/geom_bottleneck/tests/data/test_712_A b/geom_bottleneck/tests/data/test_712_A new file mode 100644 index 0000000..15bc0a2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_712_A @@ -0,0 +1,6 @@ +395 1052 +984 1461 +792 801 +652 1183 +411 744 +830 876 diff --git a/geom_bottleneck/tests/data/test_712_B b/geom_bottleneck/tests/data/test_712_B new file mode 100644 index 0000000..3071ea5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_712_B @@ -0,0 +1,6 @@ +16 294 +910 1274 +495 1113 +4 944 +244 512 +164 1074 diff --git a/geom_bottleneck/tests/data/test_713_A b/geom_bottleneck/tests/data/test_713_A new file mode 100644 index 0000000..89ee240 --- /dev/null +++ b/geom_bottleneck/tests/data/test_713_A @@ -0,0 +1,6 @@ +588 1259 +827 1531 +94 877 +171 1137 +482 729 +879 1065 diff --git a/geom_bottleneck/tests/data/test_713_B b/geom_bottleneck/tests/data/test_713_B new file mode 100644 index 0000000..f2b501c --- /dev/null +++ b/geom_bottleneck/tests/data/test_713_B @@ -0,0 +1,6 @@ +222 623 +527 1158 +784 1040 +597 1063 +456 525 +713 1476 diff --git a/geom_bottleneck/tests/data/test_714_A b/geom_bottleneck/tests/data/test_714_A new file mode 100644 index 0000000..73ba892 --- /dev/null +++ b/geom_bottleneck/tests/data/test_714_A @@ -0,0 +1,6 @@ +81 1045 +398 727 +668 1311 +788 1623 +363 1222 +630 757 diff --git a/geom_bottleneck/tests/data/test_714_B b/geom_bottleneck/tests/data/test_714_B new file mode 100644 index 0000000..c495e7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_714_B @@ -0,0 +1,6 @@ +840 1651 +664 995 +984 1812 +501 1183 +859 1373 +224 321 diff --git a/geom_bottleneck/tests/data/test_715_A b/geom_bottleneck/tests/data/test_715_A new file mode 100644 index 0000000..70b698d --- /dev/null +++ b/geom_bottleneck/tests/data/test_715_A @@ -0,0 +1,6 @@ +390 400 +914 963 +118 182 +848 1799 +24 207 +310 917 diff --git a/geom_bottleneck/tests/data/test_715_B b/geom_bottleneck/tests/data/test_715_B new file mode 100644 index 0000000..3cdf2b3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_715_B @@ -0,0 +1,6 @@ +999 1621 +121 432 +878 1064 +454 925 +642 1350 +976 1667 diff --git a/geom_bottleneck/tests/data/test_716_A b/geom_bottleneck/tests/data/test_716_A new file mode 100644 index 0000000..ada9ac0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_716_A @@ -0,0 +1,6 @@ +838 1400 +274 999 +806 1428 +957 1203 +48 503 +600 754 diff --git a/geom_bottleneck/tests/data/test_716_B b/geom_bottleneck/tests/data/test_716_B new file mode 100644 index 0000000..b13c8a1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_716_B @@ -0,0 +1,6 @@ +64 560 +385 907 +324 1041 +611 868 +685 1605 +320 733 diff --git a/geom_bottleneck/tests/data/test_717_A b/geom_bottleneck/tests/data/test_717_A new file mode 100644 index 0000000..f23e351 --- /dev/null +++ b/geom_bottleneck/tests/data/test_717_A @@ -0,0 +1,6 @@ +435 538 +281 369 +230 609 +932 1150 +629 1558 +397 511 diff --git a/geom_bottleneck/tests/data/test_717_B b/geom_bottleneck/tests/data/test_717_B new file mode 100644 index 0000000..150f7ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_717_B @@ -0,0 +1,6 @@ +293 1253 +356 1075 +559 754 +309 911 +726 1445 +539 1249 diff --git a/geom_bottleneck/tests/data/test_718_A b/geom_bottleneck/tests/data/test_718_A new file mode 100644 index 0000000..6efc756 --- /dev/null +++ b/geom_bottleneck/tests/data/test_718_A @@ -0,0 +1,6 @@ +289 455 +404 1182 +924 1629 +961 1779 +392 1078 +881 1571 diff --git a/geom_bottleneck/tests/data/test_718_B b/geom_bottleneck/tests/data/test_718_B new file mode 100644 index 0000000..4e45db1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_718_B @@ -0,0 +1,6 @@ +666 983 +482 1016 +609 1498 +352 882 +92 384 +911 1898 diff --git a/geom_bottleneck/tests/data/test_719_A b/geom_bottleneck/tests/data/test_719_A new file mode 100644 index 0000000..3512e1f --- /dev/null +++ b/geom_bottleneck/tests/data/test_719_A @@ -0,0 +1,6 @@ +589 1272 +999 1340 +628 1428 +112 311 +854 1288 +579 1034 diff --git a/geom_bottleneck/tests/data/test_719_B b/geom_bottleneck/tests/data/test_719_B new file mode 100644 index 0000000..028f44a --- /dev/null +++ b/geom_bottleneck/tests/data/test_719_B @@ -0,0 +1,6 @@ +223 460 +798 1620 +582 901 +542 835 +309 851 +28 133 diff --git a/geom_bottleneck/tests/data/test_720_A b/geom_bottleneck/tests/data/test_720_A new file mode 100644 index 0000000..57e2829 --- /dev/null +++ b/geom_bottleneck/tests/data/test_720_A @@ -0,0 +1,7 @@ +842 955 +876 1162 +447 481 +217 1212 +392 731 +112 940 +462 796 diff --git a/geom_bottleneck/tests/data/test_720_B b/geom_bottleneck/tests/data/test_720_B new file mode 100644 index 0000000..f3f2675 --- /dev/null +++ b/geom_bottleneck/tests/data/test_720_B @@ -0,0 +1,7 @@ +768 1167 +970 1497 +720 809 +848 1278 +264 387 +443 673 +481 643 diff --git a/geom_bottleneck/tests/data/test_721_A b/geom_bottleneck/tests/data/test_721_A new file mode 100644 index 0000000..f8a7f29 --- /dev/null +++ b/geom_bottleneck/tests/data/test_721_A @@ -0,0 +1,7 @@ +712 1082 +573 1189 +468 579 +431 1140 +543 758 +852 1545 +707 1585 diff --git a/geom_bottleneck/tests/data/test_721_B b/geom_bottleneck/tests/data/test_721_B new file mode 100644 index 0000000..35b828c --- /dev/null +++ b/geom_bottleneck/tests/data/test_721_B @@ -0,0 +1,7 @@ +274 999 +671 1640 +687 969 +641 796 +566 1384 +558 1386 +611 1189 diff --git a/geom_bottleneck/tests/data/test_722_A b/geom_bottleneck/tests/data/test_722_A new file mode 100644 index 0000000..6e0719f --- /dev/null +++ b/geom_bottleneck/tests/data/test_722_A @@ -0,0 +1,7 @@ +292 783 +995 1371 +60 662 +506 531 +294 1245 +966 1027 +750 1180 diff --git a/geom_bottleneck/tests/data/test_722_B b/geom_bottleneck/tests/data/test_722_B new file mode 100644 index 0000000..0fd37cc --- /dev/null +++ b/geom_bottleneck/tests/data/test_722_B @@ -0,0 +1,7 @@ +194 750 +520 773 +206 498 +746 1278 +354 643 +812 1219 +547 707 diff --git a/geom_bottleneck/tests/data/test_723_A b/geom_bottleneck/tests/data/test_723_A new file mode 100644 index 0000000..ad94fdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_723_A @@ -0,0 +1,7 @@ +44 715 +470 1287 +692 1635 +849 1409 +636 724 +108 255 +377 1253 diff --git a/geom_bottleneck/tests/data/test_723_B b/geom_bottleneck/tests/data/test_723_B new file mode 100644 index 0000000..247a17e --- /dev/null +++ b/geom_bottleneck/tests/data/test_723_B @@ -0,0 +1,7 @@ +565 1129 +574 725 +387 1204 +990 1093 +548 1447 +547 1294 +394 421 diff --git a/geom_bottleneck/tests/data/test_724_A b/geom_bottleneck/tests/data/test_724_A new file mode 100644 index 0000000..f9a6bcf --- /dev/null +++ b/geom_bottleneck/tests/data/test_724_A @@ -0,0 +1,7 @@ +121 963 +4 934 +471 1403 +78 700 +500 749 +577 1241 +961 1123 diff --git a/geom_bottleneck/tests/data/test_724_B b/geom_bottleneck/tests/data/test_724_B new file mode 100644 index 0000000..71d03b3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_724_B @@ -0,0 +1,7 @@ +597 1424 +232 317 +618 1105 +593 1007 +410 1158 +534 965 +306 782 diff --git a/geom_bottleneck/tests/data/test_725_A b/geom_bottleneck/tests/data/test_725_A new file mode 100644 index 0000000..1e20d9e --- /dev/null +++ b/geom_bottleneck/tests/data/test_725_A @@ -0,0 +1,7 @@ +365 431 +764 1023 +503 1251 +50 557 +899 930 +906 1266 +698 1582 diff --git a/geom_bottleneck/tests/data/test_725_B b/geom_bottleneck/tests/data/test_725_B new file mode 100644 index 0000000..a215c1e --- /dev/null +++ b/geom_bottleneck/tests/data/test_725_B @@ -0,0 +1,7 @@ +591 1250 +643 1388 +429 1007 +953 1625 +604 1075 +486 1455 +999 1790 diff --git a/geom_bottleneck/tests/data/test_726_A b/geom_bottleneck/tests/data/test_726_A new file mode 100644 index 0000000..dd9500a --- /dev/null +++ b/geom_bottleneck/tests/data/test_726_A @@ -0,0 +1,7 @@ +193 1032 +813 1060 +401 672 +819 1490 +913 993 +294 753 +107 807 diff --git a/geom_bottleneck/tests/data/test_726_B b/geom_bottleneck/tests/data/test_726_B new file mode 100644 index 0000000..b3d3e50 --- /dev/null +++ b/geom_bottleneck/tests/data/test_726_B @@ -0,0 +1,7 @@ +57 1011 +861 1503 +669 1185 +630 1360 +636 952 +524 526 +264 1129 diff --git a/geom_bottleneck/tests/data/test_727_A b/geom_bottleneck/tests/data/test_727_A new file mode 100644 index 0000000..dae9ff3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_727_A @@ -0,0 +1,7 @@ +268 505 +525 1512 +131 265 +534 1402 +810 1044 +474 933 +752 1495 diff --git a/geom_bottleneck/tests/data/test_727_B b/geom_bottleneck/tests/data/test_727_B new file mode 100644 index 0000000..551d523 --- /dev/null +++ b/geom_bottleneck/tests/data/test_727_B @@ -0,0 +1,7 @@ +366 1348 +38 470 +594 1547 +97 353 +417 626 +791 1472 +493 1262 diff --git a/geom_bottleneck/tests/data/test_728_A b/geom_bottleneck/tests/data/test_728_A new file mode 100644 index 0000000..8074ce8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_728_A @@ -0,0 +1,7 @@ +798 958 +59 406 +670 868 +533 789 +192 727 +52 109 +997 1981 diff --git a/geom_bottleneck/tests/data/test_728_B b/geom_bottleneck/tests/data/test_728_B new file mode 100644 index 0000000..6d1448a --- /dev/null +++ b/geom_bottleneck/tests/data/test_728_B @@ -0,0 +1,7 @@ +211 624 +198 1095 +150 530 +757 1274 +672 1255 +847 1476 +879 1407 diff --git a/geom_bottleneck/tests/data/test_729_A b/geom_bottleneck/tests/data/test_729_A new file mode 100644 index 0000000..f9de136 --- /dev/null +++ b/geom_bottleneck/tests/data/test_729_A @@ -0,0 +1,7 @@ +574 1387 +241 543 +338 345 +888 1183 +942 1193 +5 802 +357 510 diff --git a/geom_bottleneck/tests/data/test_729_B b/geom_bottleneck/tests/data/test_729_B new file mode 100644 index 0000000..d34621f --- /dev/null +++ b/geom_bottleneck/tests/data/test_729_B @@ -0,0 +1,7 @@ +878 1129 +669 805 +56 973 +201 756 +911 1352 +494 887 +161 541 diff --git a/geom_bottleneck/tests/data/test_730_A b/geom_bottleneck/tests/data/test_730_A new file mode 100644 index 0000000..433cbd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_730_A @@ -0,0 +1,7 @@ +135 1110 +126 417 +647 964 +895 1124 +213 1115 +340 755 +154 605 diff --git a/geom_bottleneck/tests/data/test_730_B b/geom_bottleneck/tests/data/test_730_B new file mode 100644 index 0000000..1b46964 --- /dev/null +++ b/geom_bottleneck/tests/data/test_730_B @@ -0,0 +1,7 @@ +854 866 +212 1211 +180 272 +386 1292 +47 565 +916 1350 +906 912 diff --git a/geom_bottleneck/tests/data/test_731_A b/geom_bottleneck/tests/data/test_731_A new file mode 100644 index 0000000..38d42cd --- /dev/null +++ b/geom_bottleneck/tests/data/test_731_A @@ -0,0 +1,7 @@ +1000 1606 +332 982 +581 1398 +403 1237 +954 1071 +560 890 +980 1624 diff --git a/geom_bottleneck/tests/data/test_731_B b/geom_bottleneck/tests/data/test_731_B new file mode 100644 index 0000000..3017d7a --- /dev/null +++ b/geom_bottleneck/tests/data/test_731_B @@ -0,0 +1,7 @@ +171 558 +391 1367 +177 1159 +130 343 +914 1175 +774 835 +672 1301 diff --git a/geom_bottleneck/tests/data/test_732_A b/geom_bottleneck/tests/data/test_732_A new file mode 100644 index 0000000..75a48cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_732_A @@ -0,0 +1,7 @@ +330 1018 +692 1639 +213 1060 +138 458 +356 1233 +976 1361 +117 365 diff --git a/geom_bottleneck/tests/data/test_732_B b/geom_bottleneck/tests/data/test_732_B new file mode 100644 index 0000000..fada3b9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_732_B @@ -0,0 +1,7 @@ +530 729 +842 926 +375 633 +364 987 +507 1398 +303 1096 +137 344 diff --git a/geom_bottleneck/tests/data/test_733_A b/geom_bottleneck/tests/data/test_733_A new file mode 100644 index 0000000..d97ae0b --- /dev/null +++ b/geom_bottleneck/tests/data/test_733_A @@ -0,0 +1,7 @@ +155 290 +712 904 +154 668 +518 1267 +224 1022 +997 1304 +551 1015 diff --git a/geom_bottleneck/tests/data/test_733_B b/geom_bottleneck/tests/data/test_733_B new file mode 100644 index 0000000..529c7de --- /dev/null +++ b/geom_bottleneck/tests/data/test_733_B @@ -0,0 +1,7 @@ +930 1406 +626 980 +541 1340 +129 1023 +407 615 +105 850 +688 756 diff --git a/geom_bottleneck/tests/data/test_734_A b/geom_bottleneck/tests/data/test_734_A new file mode 100644 index 0000000..9aec4b4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_734_A @@ -0,0 +1,7 @@ +296 1160 +3 574 +642 808 +844 1148 +982 1081 +236 634 +151 904 diff --git a/geom_bottleneck/tests/data/test_734_B b/geom_bottleneck/tests/data/test_734_B new file mode 100644 index 0000000..4cb7206 --- /dev/null +++ b/geom_bottleneck/tests/data/test_734_B @@ -0,0 +1,7 @@ +30 884 +13 769 +406 954 +794 1615 +976 1177 +631 816 +400 1099 diff --git a/geom_bottleneck/tests/data/test_735_A b/geom_bottleneck/tests/data/test_735_A new file mode 100644 index 0000000..f364a21 --- /dev/null +++ b/geom_bottleneck/tests/data/test_735_A @@ -0,0 +1,7 @@ +259 941 +218 975 +286 718 +70 401 +496 830 +220 362 +511 1270 diff --git a/geom_bottleneck/tests/data/test_735_B b/geom_bottleneck/tests/data/test_735_B new file mode 100644 index 0000000..0f93850 --- /dev/null +++ b/geom_bottleneck/tests/data/test_735_B @@ -0,0 +1,7 @@ +489 705 +467 962 +110 116 +817 1521 +571 1059 +426 584 +933 1307 diff --git a/geom_bottleneck/tests/data/test_736_A b/geom_bottleneck/tests/data/test_736_A new file mode 100644 index 0000000..d89c563 --- /dev/null +++ b/geom_bottleneck/tests/data/test_736_A @@ -0,0 +1,7 @@ +624 1466 +288 1004 +552 978 +710 1190 +796 1634 +322 800 +171 197 diff --git a/geom_bottleneck/tests/data/test_736_B b/geom_bottleneck/tests/data/test_736_B new file mode 100644 index 0000000..25427f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_736_B @@ -0,0 +1,7 @@ +385 852 +110 431 +284 646 +803 1541 +436 821 +262 951 +470 1172 diff --git a/geom_bottleneck/tests/data/test_737_A b/geom_bottleneck/tests/data/test_737_A new file mode 100644 index 0000000..2fbdf41 --- /dev/null +++ b/geom_bottleneck/tests/data/test_737_A @@ -0,0 +1,7 @@ +340 942 +812 1103 +129 553 +729 781 +779 1100 +99 1059 +720 1532 diff --git a/geom_bottleneck/tests/data/test_737_B b/geom_bottleneck/tests/data/test_737_B new file mode 100644 index 0000000..42348d5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_737_B @@ -0,0 +1,7 @@ +677 1323 +268 916 +165 674 +594 689 +975 1246 +717 734 +877 1479 diff --git a/geom_bottleneck/tests/data/test_738_A b/geom_bottleneck/tests/data/test_738_A new file mode 100644 index 0000000..d56b09b --- /dev/null +++ b/geom_bottleneck/tests/data/test_738_A @@ -0,0 +1,7 @@ +367 725 +277 1154 +267 994 +780 1005 +293 530 +964 1682 +421 734 diff --git a/geom_bottleneck/tests/data/test_738_B b/geom_bottleneck/tests/data/test_738_B new file mode 100644 index 0000000..834b2cf --- /dev/null +++ b/geom_bottleneck/tests/data/test_738_B @@ -0,0 +1,7 @@ +661 1499 +920 1597 +528 958 +482 957 +143 757 +547 1079 +774 937 diff --git a/geom_bottleneck/tests/data/test_739_A b/geom_bottleneck/tests/data/test_739_A new file mode 100644 index 0000000..84cbd7c --- /dev/null +++ b/geom_bottleneck/tests/data/test_739_A @@ -0,0 +1,7 @@ +414 1244 +395 937 +504 1155 +711 1389 +302 859 +220 731 +725 962 diff --git a/geom_bottleneck/tests/data/test_739_B b/geom_bottleneck/tests/data/test_739_B new file mode 100644 index 0000000..85afe3e --- /dev/null +++ b/geom_bottleneck/tests/data/test_739_B @@ -0,0 +1,7 @@ +598 980 +50 441 +473 1160 +524 1273 +523 1060 +936 1295 +73 910 diff --git a/geom_bottleneck/tests/data/test_740_A b/geom_bottleneck/tests/data/test_740_A new file mode 100644 index 0000000..a99113a --- /dev/null +++ b/geom_bottleneck/tests/data/test_740_A @@ -0,0 +1,8 @@ +569 1119 +905 1475 +608 1595 +469 1334 +501 1299 +306 797 +802 1036 +155 379 diff --git a/geom_bottleneck/tests/data/test_740_B b/geom_bottleneck/tests/data/test_740_B new file mode 100644 index 0000000..5aac504 --- /dev/null +++ b/geom_bottleneck/tests/data/test_740_B @@ -0,0 +1,8 @@ +729 946 +190 1105 +541 1315 +719 1537 +319 1219 +269 468 +638 838 +51 440 diff --git a/geom_bottleneck/tests/data/test_741_A b/geom_bottleneck/tests/data/test_741_A new file mode 100644 index 0000000..7c3f3fc --- /dev/null +++ b/geom_bottleneck/tests/data/test_741_A @@ -0,0 +1,8 @@ +897 1868 +872 1752 +739 1445 +156 178 +256 714 +198 528 +595 1485 +873 1452 diff --git a/geom_bottleneck/tests/data/test_741_B b/geom_bottleneck/tests/data/test_741_B new file mode 100644 index 0000000..9f8d386 --- /dev/null +++ b/geom_bottleneck/tests/data/test_741_B @@ -0,0 +1,8 @@ +193 277 +309 1030 +263 1230 +824 1414 +191 1103 +42 165 +665 690 +414 742 diff --git a/geom_bottleneck/tests/data/test_742_A b/geom_bottleneck/tests/data/test_742_A new file mode 100644 index 0000000..9effd4c --- /dev/null +++ b/geom_bottleneck/tests/data/test_742_A @@ -0,0 +1,8 @@ +268 974 +345 812 +75 359 +178 827 +647 1213 +667 677 +400 521 +703 1302 diff --git a/geom_bottleneck/tests/data/test_742_B b/geom_bottleneck/tests/data/test_742_B new file mode 100644 index 0000000..f17965b --- /dev/null +++ b/geom_bottleneck/tests/data/test_742_B @@ -0,0 +1,8 @@ +577 1161 +635 1057 +395 684 +225 312 +194 475 +550 732 +892 1097 +494 987 diff --git a/geom_bottleneck/tests/data/test_743_A b/geom_bottleneck/tests/data/test_743_A new file mode 100644 index 0000000..3a40cfb --- /dev/null +++ b/geom_bottleneck/tests/data/test_743_A @@ -0,0 +1,8 @@ +593 1306 +117 664 +701 1073 +918 1452 +125 1012 +80 106 +26 904 +525 1251 diff --git a/geom_bottleneck/tests/data/test_743_B b/geom_bottleneck/tests/data/test_743_B new file mode 100644 index 0000000..482d6dd --- /dev/null +++ b/geom_bottleneck/tests/data/test_743_B @@ -0,0 +1,8 @@ +913 1090 +957 1355 +465 559 +490 1102 +957 1559 +535 805 +569 1211 +8 570 diff --git a/geom_bottleneck/tests/data/test_744_A b/geom_bottleneck/tests/data/test_744_A new file mode 100644 index 0000000..25c3e55 --- /dev/null +++ b/geom_bottleneck/tests/data/test_744_A @@ -0,0 +1,8 @@ +648 773 +599 1278 +940 1503 +127 461 +923 1912 +724 939 +609 633 +720 936 diff --git a/geom_bottleneck/tests/data/test_744_B b/geom_bottleneck/tests/data/test_744_B new file mode 100644 index 0000000..da30f30 --- /dev/null +++ b/geom_bottleneck/tests/data/test_744_B @@ -0,0 +1,8 @@ +102 119 +262 460 +568 825 +855 1517 +622 1062 +441 607 +183 1095 +446 1422 diff --git a/geom_bottleneck/tests/data/test_745_A b/geom_bottleneck/tests/data/test_745_A new file mode 100644 index 0000000..f8ef7e6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_745_A @@ -0,0 +1,8 @@ +34 614 +939 1749 +639 698 +16 851 +847 1299 +760 1345 +477 682 +931 1291 diff --git a/geom_bottleneck/tests/data/test_745_B b/geom_bottleneck/tests/data/test_745_B new file mode 100644 index 0000000..f6d32b5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_745_B @@ -0,0 +1,8 @@ +972 1016 +16 293 +116 641 +230 1015 +164 468 +557 700 +1 477 +437 739 diff --git a/geom_bottleneck/tests/data/test_746_A b/geom_bottleneck/tests/data/test_746_A new file mode 100644 index 0000000..dbd677e --- /dev/null +++ b/geom_bottleneck/tests/data/test_746_A @@ -0,0 +1,8 @@ +651 1348 +225 349 +382 755 +986 1090 +601 856 +349 1261 +667 1644 +637 1197 diff --git a/geom_bottleneck/tests/data/test_746_B b/geom_bottleneck/tests/data/test_746_B new file mode 100644 index 0000000..9d02f4b --- /dev/null +++ b/geom_bottleneck/tests/data/test_746_B @@ -0,0 +1,8 @@ +804 1762 +13 403 +615 1487 +810 899 +939 1026 +59 539 +258 803 +199 488 diff --git a/geom_bottleneck/tests/data/test_747_A b/geom_bottleneck/tests/data/test_747_A new file mode 100644 index 0000000..c7886f8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_747_A @@ -0,0 +1,8 @@ +810 1169 +599 1295 +34 243 +41 247 +828 1689 +884 1265 +57 122 +340 1041 diff --git a/geom_bottleneck/tests/data/test_747_B b/geom_bottleneck/tests/data/test_747_B new file mode 100644 index 0000000..1ca1b5e --- /dev/null +++ b/geom_bottleneck/tests/data/test_747_B @@ -0,0 +1,8 @@ +282 836 +663 822 +874 1239 +911 1439 +704 1085 +593 787 +125 683 +790 1041 diff --git a/geom_bottleneck/tests/data/test_748_A b/geom_bottleneck/tests/data/test_748_A new file mode 100644 index 0000000..5fe22c2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_748_A @@ -0,0 +1,8 @@ +713 1382 +941 1859 +531 1460 +239 703 +4 712 +381 1018 +492 1298 +142 765 diff --git a/geom_bottleneck/tests/data/test_748_B b/geom_bottleneck/tests/data/test_748_B new file mode 100644 index 0000000..2e69002 --- /dev/null +++ b/geom_bottleneck/tests/data/test_748_B @@ -0,0 +1,8 @@ +993 1036 +886 1574 +892 1880 +649 1474 +228 1041 +124 730 +197 360 +490 1447 diff --git a/geom_bottleneck/tests/data/test_749_A b/geom_bottleneck/tests/data/test_749_A new file mode 100644 index 0000000..b3bf068 --- /dev/null +++ b/geom_bottleneck/tests/data/test_749_A @@ -0,0 +1,8 @@ +233 929 +150 391 +761 1353 +402 872 +890 1624 +103 482 +855 1150 +173 190 diff --git a/geom_bottleneck/tests/data/test_749_B b/geom_bottleneck/tests/data/test_749_B new file mode 100644 index 0000000..b181d57 --- /dev/null +++ b/geom_bottleneck/tests/data/test_749_B @@ -0,0 +1,8 @@ +304 960 +633 956 +62 250 +678 1085 +582 1509 +267 1159 +555 872 +828 935 diff --git a/geom_bottleneck/tests/data/test_750_A b/geom_bottleneck/tests/data/test_750_A new file mode 100644 index 0000000..3bd3e77 --- /dev/null +++ b/geom_bottleneck/tests/data/test_750_A @@ -0,0 +1,8 @@ +46 814 +299 740 +422 505 +597 674 +626 882 +550 1384 +257 522 +191 537 diff --git a/geom_bottleneck/tests/data/test_750_B b/geom_bottleneck/tests/data/test_750_B new file mode 100644 index 0000000..837ed3d --- /dev/null +++ b/geom_bottleneck/tests/data/test_750_B @@ -0,0 +1,8 @@ +119 1069 +304 1151 +984 1304 +938 1017 +915 1414 +603 1419 +806 1391 +247 563 diff --git a/geom_bottleneck/tests/data/test_751_A b/geom_bottleneck/tests/data/test_751_A new file mode 100644 index 0000000..adb0fe7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_751_A @@ -0,0 +1,8 @@ +161 749 +884 1266 +52 256 +626 1062 +244 1161 +52 651 +429 513 +123 381 diff --git a/geom_bottleneck/tests/data/test_751_B b/geom_bottleneck/tests/data/test_751_B new file mode 100644 index 0000000..1ed1651 --- /dev/null +++ b/geom_bottleneck/tests/data/test_751_B @@ -0,0 +1,8 @@ +646 1122 +980 1686 +3 270 +410 1255 +5 817 +9 390 +601 1013 +786 1675 diff --git a/geom_bottleneck/tests/data/test_752_A b/geom_bottleneck/tests/data/test_752_A new file mode 100644 index 0000000..4b54da2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_752_A @@ -0,0 +1,8 @@ +941 1425 +272 829 +904 1623 +562 1306 +223 245 +534 1385 +903 1274 +531 629 diff --git a/geom_bottleneck/tests/data/test_752_B b/geom_bottleneck/tests/data/test_752_B new file mode 100644 index 0000000..9c05ec9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_752_B @@ -0,0 +1,8 @@ +514 1333 +981 1676 +949 1493 +952 1015 +572 1224 +131 835 +93 335 +306 906 diff --git a/geom_bottleneck/tests/data/test_753_A b/geom_bottleneck/tests/data/test_753_A new file mode 100644 index 0000000..5704668 --- /dev/null +++ b/geom_bottleneck/tests/data/test_753_A @@ -0,0 +1,8 @@ +405 996 +473 1330 +168 804 +516 578 +712 1449 +425 1336 +237 816 +625 1304 diff --git a/geom_bottleneck/tests/data/test_753_B b/geom_bottleneck/tests/data/test_753_B new file mode 100644 index 0000000..1e845f7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_753_B @@ -0,0 +1,8 @@ +291 1031 +70 332 +847 973 +311 398 +815 1512 +996 1375 +720 1388 +518 611 diff --git a/geom_bottleneck/tests/data/test_754_A b/geom_bottleneck/tests/data/test_754_A new file mode 100644 index 0000000..1957784 --- /dev/null +++ b/geom_bottleneck/tests/data/test_754_A @@ -0,0 +1,8 @@ +138 781 +992 1803 +189 1157 +546 1145 +461 1153 +634 1004 +152 947 +706 713 diff --git a/geom_bottleneck/tests/data/test_754_B b/geom_bottleneck/tests/data/test_754_B new file mode 100644 index 0000000..4463862 --- /dev/null +++ b/geom_bottleneck/tests/data/test_754_B @@ -0,0 +1,8 @@ +742 1152 +909 947 +350 1168 +240 769 +415 479 +752 1507 +356 902 +856 1356 diff --git a/geom_bottleneck/tests/data/test_755_A b/geom_bottleneck/tests/data/test_755_A new file mode 100644 index 0000000..d05546d --- /dev/null +++ b/geom_bottleneck/tests/data/test_755_A @@ -0,0 +1,8 @@ +163 1000 +403 624 +628 829 +458 854 +319 778 +180 856 +822 1028 +806 923 diff --git a/geom_bottleneck/tests/data/test_755_B b/geom_bottleneck/tests/data/test_755_B new file mode 100644 index 0000000..47b372a --- /dev/null +++ b/geom_bottleneck/tests/data/test_755_B @@ -0,0 +1,8 @@ +922 1134 +900 1378 +200 780 +184 815 +631 1014 +837 1762 +676 789 +298 486 diff --git a/geom_bottleneck/tests/data/test_756_A b/geom_bottleneck/tests/data/test_756_A new file mode 100644 index 0000000..bac3296 --- /dev/null +++ b/geom_bottleneck/tests/data/test_756_A @@ -0,0 +1,8 @@ +467 1356 +84 188 +215 968 +702 1035 +305 745 +171 880 +724 1223 +916 1487 diff --git a/geom_bottleneck/tests/data/test_756_B b/geom_bottleneck/tests/data/test_756_B new file mode 100644 index 0000000..0579dd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_756_B @@ -0,0 +1,8 @@ +62 816 +781 1333 +496 1018 +211 657 +968 1779 +684 828 +707 816 +133 710 diff --git a/geom_bottleneck/tests/data/test_757_A b/geom_bottleneck/tests/data/test_757_A new file mode 100644 index 0000000..3d0e16e --- /dev/null +++ b/geom_bottleneck/tests/data/test_757_A @@ -0,0 +1,8 @@ +850 1310 +104 459 +439 1185 +320 454 +423 1247 +85 891 +899 1560 +114 246 diff --git a/geom_bottleneck/tests/data/test_757_B b/geom_bottleneck/tests/data/test_757_B new file mode 100644 index 0000000..7ccedc5 --- /dev/null +++ b/geom_bottleneck/tests/data/test_757_B @@ -0,0 +1,8 @@ +797 1761 +642 812 +919 1333 +446 703 +330 1069 +575 668 +735 1258 +723 1330 diff --git a/geom_bottleneck/tests/data/test_758_A b/geom_bottleneck/tests/data/test_758_A new file mode 100644 index 0000000..fdabcdd --- /dev/null +++ b/geom_bottleneck/tests/data/test_758_A @@ -0,0 +1,8 @@ +310 820 +65 766 +892 1802 +459 1216 +237 358 +371 419 +218 375 +27 127 diff --git a/geom_bottleneck/tests/data/test_758_B b/geom_bottleneck/tests/data/test_758_B new file mode 100644 index 0000000..4fb7f60 --- /dev/null +++ b/geom_bottleneck/tests/data/test_758_B @@ -0,0 +1,8 @@ +261 318 +423 669 +485 1330 +814 942 +276 1013 +914 1010 +893 1161 +559 1118 diff --git a/geom_bottleneck/tests/data/test_759_A b/geom_bottleneck/tests/data/test_759_A new file mode 100644 index 0000000..dcf3a28 --- /dev/null +++ b/geom_bottleneck/tests/data/test_759_A @@ -0,0 +1,8 @@ +235 1080 +801 1281 +406 1012 +157 1091 +394 1385 +217 791 +971 1930 +529 1401 diff --git a/geom_bottleneck/tests/data/test_759_B b/geom_bottleneck/tests/data/test_759_B new file mode 100644 index 0000000..e094e35 --- /dev/null +++ b/geom_bottleneck/tests/data/test_759_B @@ -0,0 +1,8 @@ +957 1887 +857 1225 +366 386 +678 1429 +828 876 +250 466 +506 1127 +791 946 diff --git a/geom_bottleneck/tests/data/test_760_A b/geom_bottleneck/tests/data/test_760_A new file mode 100644 index 0000000..38e77f3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_760_A @@ -0,0 +1,9 @@ +754 1750 +559 782 +889 1821 +897 1093 +380 764 +367 932 +854 1721 +815 1633 +803 939 diff --git a/geom_bottleneck/tests/data/test_760_B b/geom_bottleneck/tests/data/test_760_B new file mode 100644 index 0000000..1bb3547 --- /dev/null +++ b/geom_bottleneck/tests/data/test_760_B @@ -0,0 +1,9 @@ +895 1474 +904 1893 +474 832 +238 631 +82 583 +470 797 +461 903 +856 1006 +151 669 diff --git a/geom_bottleneck/tests/data/test_761_A b/geom_bottleneck/tests/data/test_761_A new file mode 100644 index 0000000..4690752 --- /dev/null +++ b/geom_bottleneck/tests/data/test_761_A @@ -0,0 +1,9 @@ +377 1284 +139 699 +50 438 +687 919 +35 957 +652 713 +272 1264 +788 1721 +656 1330 diff --git a/geom_bottleneck/tests/data/test_761_B b/geom_bottleneck/tests/data/test_761_B new file mode 100644 index 0000000..9978d2c --- /dev/null +++ b/geom_bottleneck/tests/data/test_761_B @@ -0,0 +1,9 @@ +670 860 +401 500 +127 995 +594 1023 +638 1052 +727 802 +766 1624 +261 880 +172 663 diff --git a/geom_bottleneck/tests/data/test_762_A b/geom_bottleneck/tests/data/test_762_A new file mode 100644 index 0000000..7918ab6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_762_A @@ -0,0 +1,9 @@ +457 1270 +23 803 +189 293 +113 500 +911 1041 +504 728 +105 492 +514 1222 +753 923 diff --git a/geom_bottleneck/tests/data/test_762_B b/geom_bottleneck/tests/data/test_762_B new file mode 100644 index 0000000..d36f033 --- /dev/null +++ b/geom_bottleneck/tests/data/test_762_B @@ -0,0 +1,9 @@ +393 565 +182 184 +852 1821 +702 1558 +157 245 +456 924 +640 1103 +934 1125 +979 1099 diff --git a/geom_bottleneck/tests/data/test_763_A b/geom_bottleneck/tests/data/test_763_A new file mode 100644 index 0000000..73d90de --- /dev/null +++ b/geom_bottleneck/tests/data/test_763_A @@ -0,0 +1,9 @@ +89 776 +785 1157 +846 1324 +854 1048 +968 1721 +653 1216 +707 718 +958 1397 +247 1245 diff --git a/geom_bottleneck/tests/data/test_763_B b/geom_bottleneck/tests/data/test_763_B new file mode 100644 index 0000000..09d159c --- /dev/null +++ b/geom_bottleneck/tests/data/test_763_B @@ -0,0 +1,9 @@ +730 1315 +831 1373 +669 1287 +125 500 +676 1262 +272 524 +173 651 +38 624 +514 1175 diff --git a/geom_bottleneck/tests/data/test_764_A b/geom_bottleneck/tests/data/test_764_A new file mode 100644 index 0000000..8dead93 --- /dev/null +++ b/geom_bottleneck/tests/data/test_764_A @@ -0,0 +1,9 @@ +104 150 +837 890 +975 1135 +650 697 +202 393 +972 1174 +619 969 +274 891 +16 366 diff --git a/geom_bottleneck/tests/data/test_764_B b/geom_bottleneck/tests/data/test_764_B new file mode 100644 index 0000000..014198d --- /dev/null +++ b/geom_bottleneck/tests/data/test_764_B @@ -0,0 +1,9 @@ +150 432 +45 234 +8 95 +31 712 +331 1329 +184 531 +44 922 +764 1746 +838 919 diff --git a/geom_bottleneck/tests/data/test_765_A b/geom_bottleneck/tests/data/test_765_A new file mode 100644 index 0000000..666d2fe --- /dev/null +++ b/geom_bottleneck/tests/data/test_765_A @@ -0,0 +1,9 @@ +105 587 +505 1209 +617 651 +120 670 +322 1268 +410 1307 +822 1420 +351 1226 +150 633 diff --git a/geom_bottleneck/tests/data/test_765_B b/geom_bottleneck/tests/data/test_765_B new file mode 100644 index 0000000..c0be6d4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_765_B @@ -0,0 +1,9 @@ +274 1006 +627 1237 +21 246 +785 1167 +929 1234 +462 904 +539 997 +453 592 +251 513 diff --git a/geom_bottleneck/tests/data/test_766_A b/geom_bottleneck/tests/data/test_766_A new file mode 100644 index 0000000..48d55d9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_766_A @@ -0,0 +1,9 @@ +49 532 +799 1331 +372 667 +852 1746 +400 834 +182 499 +889 1775 +831 867 +139 227 diff --git a/geom_bottleneck/tests/data/test_766_B b/geom_bottleneck/tests/data/test_766_B new file mode 100644 index 0000000..9943c61 --- /dev/null +++ b/geom_bottleneck/tests/data/test_766_B @@ -0,0 +1,9 @@ +976 1516 +153 908 +103 143 +105 439 +469 744 +981 1387 +267 319 +960 1495 +734 1370 diff --git a/geom_bottleneck/tests/data/test_767_A b/geom_bottleneck/tests/data/test_767_A new file mode 100644 index 0000000..badb767 --- /dev/null +++ b/geom_bottleneck/tests/data/test_767_A @@ -0,0 +1,9 @@ +244 622 +925 1530 +263 455 +189 991 +342 1273 +266 321 +544 962 +613 1019 +592 791 diff --git a/geom_bottleneck/tests/data/test_767_B b/geom_bottleneck/tests/data/test_767_B new file mode 100644 index 0000000..3eb4c39 --- /dev/null +++ b/geom_bottleneck/tests/data/test_767_B @@ -0,0 +1,9 @@ +928 1479 +80 1065 +382 1056 +679 880 +307 891 +685 1466 +278 806 +501 1479 +126 271 diff --git a/geom_bottleneck/tests/data/test_768_A b/geom_bottleneck/tests/data/test_768_A new file mode 100644 index 0000000..69b6425 --- /dev/null +++ b/geom_bottleneck/tests/data/test_768_A @@ -0,0 +1,9 @@ +674 1590 +745 1289 +854 1215 +412 627 +538 992 +135 1053 +385 594 +354 569 +702 1010 diff --git a/geom_bottleneck/tests/data/test_768_B b/geom_bottleneck/tests/data/test_768_B new file mode 100644 index 0000000..a0e8eb0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_768_B @@ -0,0 +1,9 @@ +735 1627 +423 514 +524 1236 +377 412 +372 415 +873 1835 +719 1488 +828 1361 +160 705 diff --git a/geom_bottleneck/tests/data/test_769_A b/geom_bottleneck/tests/data/test_769_A new file mode 100644 index 0000000..08a46bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_769_A @@ -0,0 +1,9 @@ +930 1077 +466 1159 +305 866 +672 1003 +970 1824 +774 1212 +454 611 +702 944 +979 1136 diff --git a/geom_bottleneck/tests/data/test_769_B b/geom_bottleneck/tests/data/test_769_B new file mode 100644 index 0000000..ce18190 --- /dev/null +++ b/geom_bottleneck/tests/data/test_769_B @@ -0,0 +1,9 @@ +293 996 +973 1865 +346 753 +897 1337 +58 1055 +35 647 +892 1158 +59 174 +342 1131 diff --git a/geom_bottleneck/tests/data/test_770_A b/geom_bottleneck/tests/data/test_770_A new file mode 100644 index 0000000..edfdf26 --- /dev/null +++ b/geom_bottleneck/tests/data/test_770_A @@ -0,0 +1,9 @@ +61 130 +770 1196 +740 778 +985 1720 +131 208 +740 1516 +798 1185 +609 1141 +159 389 diff --git a/geom_bottleneck/tests/data/test_770_B b/geom_bottleneck/tests/data/test_770_B new file mode 100644 index 0000000..cd59228 --- /dev/null +++ b/geom_bottleneck/tests/data/test_770_B @@ -0,0 +1,9 @@ +815 1216 +229 652 +696 1309 +585 1011 +882 1621 +398 670 +931 1271 +988 1333 +197 1110 diff --git a/geom_bottleneck/tests/data/test_771_A b/geom_bottleneck/tests/data/test_771_A new file mode 100644 index 0000000..9c3f4ba --- /dev/null +++ b/geom_bottleneck/tests/data/test_771_A @@ -0,0 +1,9 @@ +186 373 +378 642 +448 1022 +866 911 +706 1637 +528 950 +150 216 +327 506 +898 1366 diff --git a/geom_bottleneck/tests/data/test_771_B b/geom_bottleneck/tests/data/test_771_B new file mode 100644 index 0000000..8c07a06 --- /dev/null +++ b/geom_bottleneck/tests/data/test_771_B @@ -0,0 +1,9 @@ +968 1807 +686 1584 +296 347 +695 1143 +614 1205 +310 502 +249 694 +420 457 +743 1113 diff --git a/geom_bottleneck/tests/data/test_772_A b/geom_bottleneck/tests/data/test_772_A new file mode 100644 index 0000000..034ed92 --- /dev/null +++ b/geom_bottleneck/tests/data/test_772_A @@ -0,0 +1,9 @@ +286 399 +38 700 +884 1344 +201 1085 +285 1278 +661 901 +921 966 +3 728 +237 982 diff --git a/geom_bottleneck/tests/data/test_772_B b/geom_bottleneck/tests/data/test_772_B new file mode 100644 index 0000000..bc29bff --- /dev/null +++ b/geom_bottleneck/tests/data/test_772_B @@ -0,0 +1,9 @@ +148 440 +806 1799 +886 1586 +363 1211 +316 683 +229 766 +839 1204 +245 685 +43 841 diff --git a/geom_bottleneck/tests/data/test_773_A b/geom_bottleneck/tests/data/test_773_A new file mode 100644 index 0000000..0601e04 --- /dev/null +++ b/geom_bottleneck/tests/data/test_773_A @@ -0,0 +1,9 @@ +796 1034 +635 1409 +52 141 +974 1000 +341 800 +727 820 +343 1278 +138 153 +446 823 diff --git a/geom_bottleneck/tests/data/test_773_B b/geom_bottleneck/tests/data/test_773_B new file mode 100644 index 0000000..004d2d6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_773_B @@ -0,0 +1,9 @@ +327 384 +214 341 +815 1156 +868 1138 +369 392 +351 1162 +829 1594 +618 783 +47 656 diff --git a/geom_bottleneck/tests/data/test_774_A b/geom_bottleneck/tests/data/test_774_A new file mode 100644 index 0000000..3e211a0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_774_A @@ -0,0 +1,9 @@ +833 1408 +738 1321 +731 825 +670 795 +458 1062 +777 1262 +719 1131 +979 1366 +350 1290 diff --git a/geom_bottleneck/tests/data/test_774_B b/geom_bottleneck/tests/data/test_774_B new file mode 100644 index 0000000..3cf3985 --- /dev/null +++ b/geom_bottleneck/tests/data/test_774_B @@ -0,0 +1,9 @@ +421 1393 +851 1666 +633 1458 +560 1168 +936 1833 +855 1548 +275 1067 +899 1767 +539 947 diff --git a/geom_bottleneck/tests/data/test_775_A b/geom_bottleneck/tests/data/test_775_A new file mode 100644 index 0000000..5676eb4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_775_A @@ -0,0 +1,9 @@ +210 651 +529 1257 +998 1304 +957 1816 +624 800 +200 460 +319 1051 +422 962 +642 1439 diff --git a/geom_bottleneck/tests/data/test_775_B b/geom_bottleneck/tests/data/test_775_B new file mode 100644 index 0000000..5c4e8bc --- /dev/null +++ b/geom_bottleneck/tests/data/test_775_B @@ -0,0 +1,9 @@ +652 1315 +419 981 +912 1832 +578 1215 +317 992 +785 1422 +528 664 +968 1344 +847 993 diff --git a/geom_bottleneck/tests/data/test_776_A b/geom_bottleneck/tests/data/test_776_A new file mode 100644 index 0000000..49370ff --- /dev/null +++ b/geom_bottleneck/tests/data/test_776_A @@ -0,0 +1,9 @@ +707 768 +983 1893 +386 786 +370 914 +45 501 +625 1184 +175 1073 +262 1227 +819 1257 diff --git a/geom_bottleneck/tests/data/test_776_B b/geom_bottleneck/tests/data/test_776_B new file mode 100644 index 0000000..575a2d9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_776_B @@ -0,0 +1,9 @@ +949 1560 +757 1176 +689 1184 +819 1333 +50 884 +872 1695 +992 1145 +909 1889 +516 1376 diff --git a/geom_bottleneck/tests/data/test_777_A b/geom_bottleneck/tests/data/test_777_A new file mode 100644 index 0000000..eb1c980 --- /dev/null +++ b/geom_bottleneck/tests/data/test_777_A @@ -0,0 +1,9 @@ +958 1247 +143 570 +463 1343 +347 1346 +640 1203 +923 964 +489 701 +712 837 +616 978 diff --git a/geom_bottleneck/tests/data/test_777_B b/geom_bottleneck/tests/data/test_777_B new file mode 100644 index 0000000..eb9c8ee --- /dev/null +++ b/geom_bottleneck/tests/data/test_777_B @@ -0,0 +1,9 @@ +781 1080 +494 1278 +123 159 +936 1305 +748 1302 +271 524 +37 953 +758 946 +182 670 diff --git a/geom_bottleneck/tests/data/test_778_A b/geom_bottleneck/tests/data/test_778_A new file mode 100644 index 0000000..8392b2a --- /dev/null +++ b/geom_bottleneck/tests/data/test_778_A @@ -0,0 +1,9 @@ +544 1145 +371 1278 +417 814 +694 1566 +443 1104 +710 827 +617 714 +286 503 +191 568 diff --git a/geom_bottleneck/tests/data/test_778_B b/geom_bottleneck/tests/data/test_778_B new file mode 100644 index 0000000..017b08d --- /dev/null +++ b/geom_bottleneck/tests/data/test_778_B @@ -0,0 +1,9 @@ +746 1177 +291 727 +956 1929 +255 294 +938 1415 +564 1206 +657 1586 +499 1013 +67 1035 diff --git a/geom_bottleneck/tests/data/test_779_A b/geom_bottleneck/tests/data/test_779_A new file mode 100644 index 0000000..221d574 --- /dev/null +++ b/geom_bottleneck/tests/data/test_779_A @@ -0,0 +1,9 @@ +771 1728 +948 1405 +842 1792 +956 1247 +194 841 +152 1145 +683 1458 +854 1851 +817 864 diff --git a/geom_bottleneck/tests/data/test_779_B b/geom_bottleneck/tests/data/test_779_B new file mode 100644 index 0000000..113003e --- /dev/null +++ b/geom_bottleneck/tests/data/test_779_B @@ -0,0 +1,9 @@ +911 955 +410 1292 +972 1259 +128 1011 +362 591 +827 834 +677 1611 +783 1570 +844 1426 diff --git a/geom_bottleneck/tests/data/test_780_A b/geom_bottleneck/tests/data/test_780_A new file mode 100644 index 0000000..3d9a22c --- /dev/null +++ b/geom_bottleneck/tests/data/test_780_A @@ -0,0 +1,10 @@ +183 274 +354 862 +922 1354 +560 1351 +235 292 +695 1560 +29 997 +962 1865 +141 1080 +827 1101 diff --git a/geom_bottleneck/tests/data/test_780_B b/geom_bottleneck/tests/data/test_780_B new file mode 100644 index 0000000..defbae9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_780_B @@ -0,0 +1,10 @@ +42 318 +758 1669 +351 1022 +824 1415 +902 1400 +515 576 +260 586 +28 176 +469 1338 +909 1379 diff --git a/geom_bottleneck/tests/data/test_781_A b/geom_bottleneck/tests/data/test_781_A new file mode 100644 index 0000000..72201a7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_781_A @@ -0,0 +1,10 @@ +329 554 +888 1476 +129 806 +786 990 +328 727 +574 1226 +864 1378 +61 561 +154 823 +922 1810 diff --git a/geom_bottleneck/tests/data/test_781_B b/geom_bottleneck/tests/data/test_781_B new file mode 100644 index 0000000..85c8683 --- /dev/null +++ b/geom_bottleneck/tests/data/test_781_B @@ -0,0 +1,10 @@ +193 306 +784 949 +446 467 +830 891 +36 174 +28 1028 +135 1113 +689 737 +598 669 +808 1618 diff --git a/geom_bottleneck/tests/data/test_782_A b/geom_bottleneck/tests/data/test_782_A new file mode 100644 index 0000000..b376509 --- /dev/null +++ b/geom_bottleneck/tests/data/test_782_A @@ -0,0 +1,10 @@ +488 967 +298 299 +687 942 +225 1184 +375 467 +17 355 +165 658 +911 1012 +970 1538 +26 194 diff --git a/geom_bottleneck/tests/data/test_782_B b/geom_bottleneck/tests/data/test_782_B new file mode 100644 index 0000000..9fba291 --- /dev/null +++ b/geom_bottleneck/tests/data/test_782_B @@ -0,0 +1,10 @@ +191 1062 +253 1153 +930 1745 +736 1486 +274 503 +830 1830 +769 865 +33 921 +160 304 +229 1012 diff --git a/geom_bottleneck/tests/data/test_783_A b/geom_bottleneck/tests/data/test_783_A new file mode 100644 index 0000000..83593db --- /dev/null +++ b/geom_bottleneck/tests/data/test_783_A @@ -0,0 +1,10 @@ +575 1393 +206 817 +209 288 +181 466 +796 861 +885 1340 +110 346 +18 946 +769 1139 +422 1212 diff --git a/geom_bottleneck/tests/data/test_783_B b/geom_bottleneck/tests/data/test_783_B new file mode 100644 index 0000000..d169a48 --- /dev/null +++ b/geom_bottleneck/tests/data/test_783_B @@ -0,0 +1,10 @@ +810 1113 +997 1451 +205 1095 +621 1281 +677 1326 +911 1262 +395 916 +224 882 +708 812 +82 824 diff --git a/geom_bottleneck/tests/data/test_784_A b/geom_bottleneck/tests/data/test_784_A new file mode 100644 index 0000000..b10df8b --- /dev/null +++ b/geom_bottleneck/tests/data/test_784_A @@ -0,0 +1,10 @@ +963 1352 +692 1376 +910 967 +668 831 +840 962 +348 424 +729 1606 +417 514 +350 871 +289 298 diff --git a/geom_bottleneck/tests/data/test_784_B b/geom_bottleneck/tests/data/test_784_B new file mode 100644 index 0000000..ef2b466 --- /dev/null +++ b/geom_bottleneck/tests/data/test_784_B @@ -0,0 +1,10 @@ +754 955 +100 1075 +199 738 +800 1132 +419 949 +729 969 +774 941 +559 1196 +692 1096 +741 1061 diff --git a/geom_bottleneck/tests/data/test_785_A b/geom_bottleneck/tests/data/test_785_A new file mode 100644 index 0000000..3cdfaba --- /dev/null +++ b/geom_bottleneck/tests/data/test_785_A @@ -0,0 +1,10 @@ +797 970 +423 870 +289 692 +856 1132 +465 1409 +521 977 +322 545 +137 608 +934 1682 +77 959 diff --git a/geom_bottleneck/tests/data/test_785_B b/geom_bottleneck/tests/data/test_785_B new file mode 100644 index 0000000..32fe176 --- /dev/null +++ b/geom_bottleneck/tests/data/test_785_B @@ -0,0 +1,10 @@ +554 985 +793 1614 +915 1231 +215 790 +410 1181 +290 830 +733 1352 +717 829 +37 152 +989 1971 diff --git a/geom_bottleneck/tests/data/test_786_A b/geom_bottleneck/tests/data/test_786_A new file mode 100644 index 0000000..2d9fcec --- /dev/null +++ b/geom_bottleneck/tests/data/test_786_A @@ -0,0 +1,10 @@ +274 873 +62 804 +282 663 +517 1295 +906 921 +967 1806 +724 1674 +976 1641 +923 1492 +529 1316 diff --git a/geom_bottleneck/tests/data/test_786_B b/geom_bottleneck/tests/data/test_786_B new file mode 100644 index 0000000..417ee4b --- /dev/null +++ b/geom_bottleneck/tests/data/test_786_B @@ -0,0 +1,10 @@ +185 563 +774 1322 +467 499 +627 1251 +193 228 +528 1146 +957 1286 +882 891 +271 1024 +43 489 diff --git a/geom_bottleneck/tests/data/test_787_A b/geom_bottleneck/tests/data/test_787_A new file mode 100644 index 0000000..7c056b6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_787_A @@ -0,0 +1,10 @@ +297 511 +275 457 +251 1094 +824 1027 +872 1563 +842 1711 +841 1094 +732 1633 +82 105 +397 900 diff --git a/geom_bottleneck/tests/data/test_787_B b/geom_bottleneck/tests/data/test_787_B new file mode 100644 index 0000000..ddc126a --- /dev/null +++ b/geom_bottleneck/tests/data/test_787_B @@ -0,0 +1,10 @@ +152 438 +370 689 +859 1398 +697 1574 +294 635 +414 1138 +656 1516 +543 800 +260 902 +55 193 diff --git a/geom_bottleneck/tests/data/test_788_A b/geom_bottleneck/tests/data/test_788_A new file mode 100644 index 0000000..61a58b0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_788_A @@ -0,0 +1,10 @@ +820 1238 +143 789 +0 482 +20 414 +838 1690 +810 1160 +178 978 +963 1890 +852 1293 +399 609 diff --git a/geom_bottleneck/tests/data/test_788_B b/geom_bottleneck/tests/data/test_788_B new file mode 100644 index 0000000..d0782d9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_788_B @@ -0,0 +1,10 @@ +608 1470 +780 828 +436 513 +373 703 +950 1343 +608 949 +996 1248 +400 407 +911 1501 +660 1273 diff --git a/geom_bottleneck/tests/data/test_789_A b/geom_bottleneck/tests/data/test_789_A new file mode 100644 index 0000000..4805534 --- /dev/null +++ b/geom_bottleneck/tests/data/test_789_A @@ -0,0 +1,10 @@ +354 1062 +357 491 +915 1394 +385 1352 +461 585 +612 1103 +229 327 +741 1148 +572 1245 +399 863 diff --git a/geom_bottleneck/tests/data/test_789_B b/geom_bottleneck/tests/data/test_789_B new file mode 100644 index 0000000..808dab9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_789_B @@ -0,0 +1,10 @@ +806 1352 +254 492 +202 1049 +571 1363 +359 1262 +828 1364 +123 603 +50 581 +502 1455 +218 1133 diff --git a/geom_bottleneck/tests/data/test_790_A b/geom_bottleneck/tests/data/test_790_A new file mode 100644 index 0000000..231f25c --- /dev/null +++ b/geom_bottleneck/tests/data/test_790_A @@ -0,0 +1,10 @@ +411 1365 +920 965 +799 1463 +516 980 +775 1260 +48 353 +828 978 +166 1166 +391 992 +580 970 diff --git a/geom_bottleneck/tests/data/test_790_B b/geom_bottleneck/tests/data/test_790_B new file mode 100644 index 0000000..0892cfe --- /dev/null +++ b/geom_bottleneck/tests/data/test_790_B @@ -0,0 +1,10 @@ +145 299 +605 1499 +534 1303 +440 1163 +628 1355 +2 71 +902 1181 +376 490 +696 1515 +24 40 diff --git a/geom_bottleneck/tests/data/test_791_A b/geom_bottleneck/tests/data/test_791_A new file mode 100644 index 0000000..e12631e --- /dev/null +++ b/geom_bottleneck/tests/data/test_791_A @@ -0,0 +1,10 @@ +806 943 +568 1238 +44 633 +424 491 +361 1057 +583 1403 +754 1333 +843 1653 +512 1431 +768 1390 diff --git a/geom_bottleneck/tests/data/test_791_B b/geom_bottleneck/tests/data/test_791_B new file mode 100644 index 0000000..62aa958 --- /dev/null +++ b/geom_bottleneck/tests/data/test_791_B @@ -0,0 +1,10 @@ +850 1256 +138 1008 +948 1188 +914 1911 +659 1270 +375 986 +994 1160 +835 863 +73 849 +756 1456 diff --git a/geom_bottleneck/tests/data/test_792_A b/geom_bottleneck/tests/data/test_792_A new file mode 100644 index 0000000..3b73b46 --- /dev/null +++ b/geom_bottleneck/tests/data/test_792_A @@ -0,0 +1,10 @@ +610 1074 +927 1375 +497 992 +277 1026 +978 1640 +244 290 +299 814 +80 476 +599 1512 +793 824 diff --git a/geom_bottleneck/tests/data/test_792_B b/geom_bottleneck/tests/data/test_792_B new file mode 100644 index 0000000..517ff30 --- /dev/null +++ b/geom_bottleneck/tests/data/test_792_B @@ -0,0 +1,10 @@ +531 1350 +371 1273 +498 546 +487 1299 +347 1067 +638 1257 +205 802 +240 658 +1 249 +147 878 diff --git a/geom_bottleneck/tests/data/test_793_A b/geom_bottleneck/tests/data/test_793_A new file mode 100644 index 0000000..d9b85ae --- /dev/null +++ b/geom_bottleneck/tests/data/test_793_A @@ -0,0 +1,10 @@ +267 566 +193 1014 +348 534 +640 670 +795 1157 +752 1273 +439 1172 +254 687 +959 1954 +408 1084 diff --git a/geom_bottleneck/tests/data/test_793_B b/geom_bottleneck/tests/data/test_793_B new file mode 100644 index 0000000..66180dd --- /dev/null +++ b/geom_bottleneck/tests/data/test_793_B @@ -0,0 +1,10 @@ +751 1576 +410 1090 +288 1200 +430 1222 +988 1576 +152 1095 +583 596 +799 1296 +828 1022 +217 956 diff --git a/geom_bottleneck/tests/data/test_794_A b/geom_bottleneck/tests/data/test_794_A new file mode 100644 index 0000000..3d5401c --- /dev/null +++ b/geom_bottleneck/tests/data/test_794_A @@ -0,0 +1,10 @@ +1 160 +264 1182 +662 1435 +659 892 +47 845 +383 744 +773 1409 +895 906 +152 735 +344 870 diff --git a/geom_bottleneck/tests/data/test_794_B b/geom_bottleneck/tests/data/test_794_B new file mode 100644 index 0000000..26be9a3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_794_B @@ -0,0 +1,10 @@ +607 934 +865 900 +339 349 +888 1238 +981 1281 +1 554 +514 627 +77 1040 +911 1850 +276 1178 diff --git a/geom_bottleneck/tests/data/test_795_A b/geom_bottleneck/tests/data/test_795_A new file mode 100644 index 0000000..7c73f4d --- /dev/null +++ b/geom_bottleneck/tests/data/test_795_A @@ -0,0 +1,10 @@ +494 905 +440 1385 +496 955 +162 1027 +237 421 +873 1102 +349 1346 +470 880 +364 822 +869 1335 diff --git a/geom_bottleneck/tests/data/test_795_B b/geom_bottleneck/tests/data/test_795_B new file mode 100644 index 0000000..afc371b --- /dev/null +++ b/geom_bottleneck/tests/data/test_795_B @@ -0,0 +1,10 @@ +22 509 +741 1484 +558 982 +862 1077 +856 1695 +4 100 +995 1304 +103 990 +64 439 +883 1258 diff --git a/geom_bottleneck/tests/data/test_796_A b/geom_bottleneck/tests/data/test_796_A new file mode 100644 index 0000000..a326a52 --- /dev/null +++ b/geom_bottleneck/tests/data/test_796_A @@ -0,0 +1,10 @@ +16 636 +823 1691 +880 1198 +967 1441 +501 745 +318 427 +177 192 +944 1596 +229 458 +570 1267 diff --git a/geom_bottleneck/tests/data/test_796_B b/geom_bottleneck/tests/data/test_796_B new file mode 100644 index 0000000..86d2cf9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_796_B @@ -0,0 +1,10 @@ +240 255 +28 64 +713 1016 +577 662 +838 1674 +41 365 +889 1477 +1000 1767 +58 393 +870 1574 diff --git a/geom_bottleneck/tests/data/test_797_A b/geom_bottleneck/tests/data/test_797_A new file mode 100644 index 0000000..b5149bf --- /dev/null +++ b/geom_bottleneck/tests/data/test_797_A @@ -0,0 +1,10 @@ +258 711 +970 1782 +725 883 +626 1199 +785 1502 +713 820 +754 1570 +311 1068 +866 1364 +50 713 diff --git a/geom_bottleneck/tests/data/test_797_B b/geom_bottleneck/tests/data/test_797_B new file mode 100644 index 0000000..45ba81b --- /dev/null +++ b/geom_bottleneck/tests/data/test_797_B @@ -0,0 +1,10 @@ +381 1350 +844 1724 +531 1460 +472 1208 +659 914 +745 757 +627 1608 +69 357 +298 621 +100 760 diff --git a/geom_bottleneck/tests/data/test_798_A b/geom_bottleneck/tests/data/test_798_A new file mode 100644 index 0000000..a053ddd --- /dev/null +++ b/geom_bottleneck/tests/data/test_798_A @@ -0,0 +1,10 @@ +153 558 +364 847 +444 1083 +994 1375 +728 1585 +495 1005 +47 431 +361 1262 +645 646 +816 1742 diff --git a/geom_bottleneck/tests/data/test_798_B b/geom_bottleneck/tests/data/test_798_B new file mode 100644 index 0000000..69c921b --- /dev/null +++ b/geom_bottleneck/tests/data/test_798_B @@ -0,0 +1,10 @@ +416 985 +449 995 +832 1102 +550 775 +367 614 +393 458 +340 890 +264 955 +10 50 +834 1137 diff --git a/geom_bottleneck/tests/data/test_799_A b/geom_bottleneck/tests/data/test_799_A new file mode 100644 index 0000000..374e56a --- /dev/null +++ b/geom_bottleneck/tests/data/test_799_A @@ -0,0 +1,10 @@ +40 603 +309 973 +679 1580 +219 675 +92 934 +537 1366 +63 461 +408 807 +983 1016 +176 789 diff --git a/geom_bottleneck/tests/data/test_799_B b/geom_bottleneck/tests/data/test_799_B new file mode 100644 index 0000000..f92c370 --- /dev/null +++ b/geom_bottleneck/tests/data/test_799_B @@ -0,0 +1,10 @@ +312 772 +963 1630 +613 920 +597 1153 +941 1187 +150 434 +269 804 +885 887 +649 881 +618 973 diff --git a/geom_bottleneck/tests/data/test_800_A b/geom_bottleneck/tests/data/test_800_A new file mode 100644 index 0000000..36aab61 --- /dev/null +++ b/geom_bottleneck/tests/data/test_800_A @@ -0,0 +1,20 @@ +729 1257 +887 1370 +876 1762 +569 878 +13 393 +287 1169 +720 899 +338 892 +594 1438 +248 1204 +315 985 +796 1645 +730 1605 +323 490 +470 1454 +285 1067 +215 757 +92 325 +866 869 +899 1630 diff --git a/geom_bottleneck/tests/data/test_800_B b/geom_bottleneck/tests/data/test_800_B new file mode 100644 index 0000000..2496bcb --- /dev/null +++ b/geom_bottleneck/tests/data/test_800_B @@ -0,0 +1,20 @@ +961 1808 +251 958 +152 851 +834 1250 +727 1719 +968 1220 +107 206 +564 1423 +475 1438 +884 1174 +928 1303 +39 708 +854 1539 +825 1094 +614 989 +281 856 +445 1141 +784 1664 +657 969 +154 1026 diff --git a/geom_bottleneck/tests/data/test_801_A b/geom_bottleneck/tests/data/test_801_A new file mode 100644 index 0000000..66ed176 --- /dev/null +++ b/geom_bottleneck/tests/data/test_801_A @@ -0,0 +1,20 @@ +823 1484 +877 1798 +158 361 +59 670 +365 636 +536 831 +669 1574 +51 690 +243 1047 +579 1472 +450 618 +478 706 +850 1720 +10 822 +502 1081 +815 833 +192 629 +745 909 +936 1924 +619 1215 diff --git a/geom_bottleneck/tests/data/test_801_B b/geom_bottleneck/tests/data/test_801_B new file mode 100644 index 0000000..4376fcf --- /dev/null +++ b/geom_bottleneck/tests/data/test_801_B @@ -0,0 +1,20 @@ +911 924 +564 1044 +939 1177 +226 536 +692 1241 +931 1421 +750 767 +427 630 +594 1388 +751 1751 +933 1190 +379 1220 +63 623 +79 190 +650 993 +508 1351 +961 1710 +619 863 +548 1358 +727 1515 diff --git a/geom_bottleneck/tests/data/test_802_A b/geom_bottleneck/tests/data/test_802_A new file mode 100644 index 0000000..6bfdeda --- /dev/null +++ b/geom_bottleneck/tests/data/test_802_A @@ -0,0 +1,20 @@ +63 288 +994 1416 +92 461 +241 742 +325 877 +466 925 +923 1215 +941 1044 +618 1396 +248 1066 +383 442 +583 1016 +947 1095 +186 602 +291 448 +339 384 +467 1107 +771 942 +92 794 +2 533 diff --git a/geom_bottleneck/tests/data/test_802_B b/geom_bottleneck/tests/data/test_802_B new file mode 100644 index 0000000..eaec985 --- /dev/null +++ b/geom_bottleneck/tests/data/test_802_B @@ -0,0 +1,20 @@ +350 416 +143 1004 +710 1425 +665 1101 +828 1491 +80 449 +977 1801 +497 509 +664 700 +405 670 +688 1502 +102 938 +893 1437 +245 728 +626 1333 +526 1473 +914 1253 +96 268 +693 1302 +982 1487 diff --git a/geom_bottleneck/tests/data/test_803_A b/geom_bottleneck/tests/data/test_803_A new file mode 100644 index 0000000..501248d --- /dev/null +++ b/geom_bottleneck/tests/data/test_803_A @@ -0,0 +1,20 @@ +553 1373 +92 606 +892 1104 +804 1697 +653 953 +421 824 +670 1420 +621 1196 +912 1889 +482 1161 +381 691 +192 1146 +592 670 +920 1293 +754 1475 +217 379 +584 1551 +168 463 +212 251 +303 469 diff --git a/geom_bottleneck/tests/data/test_803_B b/geom_bottleneck/tests/data/test_803_B new file mode 100644 index 0000000..42dadd9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_803_B @@ -0,0 +1,20 @@ +252 701 +398 718 +663 871 +257 475 +998 1850 +292 587 +813 1363 +374 757 +295 749 +405 607 +21 374 +489 1313 +975 1840 +773 1423 +204 693 +149 532 +57 191 +307 618 +509 1109 +308 350 diff --git a/geom_bottleneck/tests/data/test_804_A b/geom_bottleneck/tests/data/test_804_A new file mode 100644 index 0000000..6af9294 --- /dev/null +++ b/geom_bottleneck/tests/data/test_804_A @@ -0,0 +1,20 @@ +518 993 +44 915 +674 768 +122 870 +394 839 +631 1285 +805 1491 +521 802 +456 474 +450 1083 +555 1280 +858 1839 +131 144 +361 953 +600 985 +158 537 +771 1062 +286 1285 +168 397 +748 1722 diff --git a/geom_bottleneck/tests/data/test_804_B b/geom_bottleneck/tests/data/test_804_B new file mode 100644 index 0000000..8470b65 --- /dev/null +++ b/geom_bottleneck/tests/data/test_804_B @@ -0,0 +1,20 @@ +132 843 +202 982 +374 1118 +9 980 +843 852 +537 761 +645 656 +882 1627 +51 619 +217 926 +870 1398 +87 1080 +223 1189 +160 379 +406 561 +536 1522 +353 487 +312 1180 +526 1492 +249 823 diff --git a/geom_bottleneck/tests/data/test_805_A b/geom_bottleneck/tests/data/test_805_A new file mode 100644 index 0000000..45a3198 --- /dev/null +++ b/geom_bottleneck/tests/data/test_805_A @@ -0,0 +1,20 @@ +350 546 +268 1153 +401 757 +503 848 +981 1709 +161 948 +688 1661 +234 471 +397 801 +433 1024 +942 1394 +308 969 +32 690 +797 1248 +182 407 +714 1267 +577 1209 +775 919 +140 976 +366 1300 diff --git a/geom_bottleneck/tests/data/test_805_B b/geom_bottleneck/tests/data/test_805_B new file mode 100644 index 0000000..4967cfd --- /dev/null +++ b/geom_bottleneck/tests/data/test_805_B @@ -0,0 +1,20 @@ +330 1222 +792 1359 +905 1402 +933 1482 +322 933 +440 887 +672 1438 +849 1650 +264 794 +21 219 +437 593 +159 598 +466 675 +712 1347 +566 1363 +244 382 +374 520 +729 1295 +998 1116 +954 1362 diff --git a/geom_bottleneck/tests/data/test_806_A b/geom_bottleneck/tests/data/test_806_A new file mode 100644 index 0000000..8eb1e33 --- /dev/null +++ b/geom_bottleneck/tests/data/test_806_A @@ -0,0 +1,20 @@ +909 1049 +241 667 +928 1287 +838 1606 +159 1145 +395 714 +445 804 +897 1289 +770 1108 +649 714 +643 684 +436 561 +125 637 +704 856 +738 913 +478 1206 +396 1306 +106 213 +840 929 +320 1037 diff --git a/geom_bottleneck/tests/data/test_806_B b/geom_bottleneck/tests/data/test_806_B new file mode 100644 index 0000000..27727b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_806_B @@ -0,0 +1,20 @@ +342 756 +736 1334 +769 1194 +352 967 +165 282 +209 306 +977 1040 +385 604 +141 566 +458 884 +186 477 +869 1651 +143 850 +742 1329 +212 872 +445 1214 +864 870 +836 1772 +534 1338 +338 1244 diff --git a/geom_bottleneck/tests/data/test_807_A b/geom_bottleneck/tests/data/test_807_A new file mode 100644 index 0000000..4979b7d --- /dev/null +++ b/geom_bottleneck/tests/data/test_807_A @@ -0,0 +1,20 @@ +657 1104 +391 1193 +374 1227 +9 94 +458 555 +982 1529 +840 920 +831 1039 +468 1180 +912 1687 +988 1717 +33 324 +577 639 +426 1103 +733 1096 +41 421 +376 784 +823 1180 +389 1204 +788 1243 diff --git a/geom_bottleneck/tests/data/test_807_B b/geom_bottleneck/tests/data/test_807_B new file mode 100644 index 0000000..67610cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_807_B @@ -0,0 +1,20 @@ +295 1223 +755 1585 +860 1191 +281 873 +86 1000 +508 1264 +16 594 +616 747 +522 1196 +34 270 +422 1196 +22 801 +812 947 +91 517 +233 586 +167 475 +173 233 +130 807 +764 1691 +942 1622 diff --git a/geom_bottleneck/tests/data/test_808_A b/geom_bottleneck/tests/data/test_808_A new file mode 100644 index 0000000..b35d354 --- /dev/null +++ b/geom_bottleneck/tests/data/test_808_A @@ -0,0 +1,20 @@ +395 768 +234 477 +627 1516 +353 1158 +108 195 +399 496 +787 1246 +330 553 +840 1835 +474 947 +736 1100 +248 381 +559 575 +716 1583 +873 1336 +927 1293 +857 1611 +691 1202 +293 770 +27 585 diff --git a/geom_bottleneck/tests/data/test_808_B b/geom_bottleneck/tests/data/test_808_B new file mode 100644 index 0000000..fb783cb --- /dev/null +++ b/geom_bottleneck/tests/data/test_808_B @@ -0,0 +1,20 @@ +801 1397 +119 551 +305 964 +706 1119 +586 1050 +925 1532 +595 1000 +898 1753 +491 699 +450 802 +499 1011 +180 468 +616 768 +179 901 +89 144 +828 1466 +927 1852 +151 584 +213 997 +952 1055 diff --git a/geom_bottleneck/tests/data/test_809_A b/geom_bottleneck/tests/data/test_809_A new file mode 100644 index 0000000..e578429 --- /dev/null +++ b/geom_bottleneck/tests/data/test_809_A @@ -0,0 +1,20 @@ +512 1083 +60 706 +61 93 +413 1076 +277 298 +766 1458 +984 1052 +762 1727 +356 422 +263 655 +605 968 +422 1373 +174 1033 +983 1676 +666 1005 +179 336 +553 1267 +987 1269 +756 1753 +842 1754 diff --git a/geom_bottleneck/tests/data/test_809_B b/geom_bottleneck/tests/data/test_809_B new file mode 100644 index 0000000..e4deda8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_809_B @@ -0,0 +1,20 @@ +178 1010 +727 738 +812 1638 +893 1821 +41 650 +797 1295 +174 473 +389 1244 +289 601 +626 1188 +890 1646 +296 318 +861 1582 +860 1410 +670 1574 +310 813 +186 263 +886 1796 +263 760 +396 1314 diff --git a/geom_bottleneck/tests/data/test_810_A b/geom_bottleneck/tests/data/test_810_A new file mode 100644 index 0000000..b7da658 --- /dev/null +++ b/geom_bottleneck/tests/data/test_810_A @@ -0,0 +1,20 @@ +843 1230 +289 770 +614 776 +512 987 +326 1253 +651 932 +827 839 +945 1361 +492 706 +312 1139 +463 1394 +68 1045 +229 1200 +126 898 +494 1095 +893 1824 +548 889 +45 952 +136 725 +304 1154 diff --git a/geom_bottleneck/tests/data/test_810_B b/geom_bottleneck/tests/data/test_810_B new file mode 100644 index 0000000..06e2af4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_810_B @@ -0,0 +1,20 @@ +207 249 +374 690 +287 677 +566 817 +875 1590 +570 1096 +34 543 +344 801 +31 796 +681 1566 +402 835 +404 906 +754 1339 +96 514 +549 1065 +874 1762 +935 1530 +368 1331 +465 831 +890 1413 diff --git a/geom_bottleneck/tests/data/test_811_A b/geom_bottleneck/tests/data/test_811_A new file mode 100644 index 0000000..708fc33 --- /dev/null +++ b/geom_bottleneck/tests/data/test_811_A @@ -0,0 +1,20 @@ +605 650 +57 484 +621 641 +794 1393 +951 1609 +132 656 +639 1132 +419 967 +741 1547 +105 466 +306 1270 +827 1475 +260 376 +418 1180 +458 1136 +957 1237 +363 749 +742 1038 +958 1157 +153 252 diff --git a/geom_bottleneck/tests/data/test_811_B b/geom_bottleneck/tests/data/test_811_B new file mode 100644 index 0000000..69bffab --- /dev/null +++ b/geom_bottleneck/tests/data/test_811_B @@ -0,0 +1,20 @@ +687 1060 +622 650 +544 1212 +38 633 +280 956 +695 791 +120 956 +364 435 +825 1760 +137 303 +701 1432 +967 1395 +566 966 +695 951 +85 262 +82 595 +11 100 +312 1104 +669 1424 +157 285 diff --git a/geom_bottleneck/tests/data/test_812_A b/geom_bottleneck/tests/data/test_812_A new file mode 100644 index 0000000..f592f5f --- /dev/null +++ b/geom_bottleneck/tests/data/test_812_A @@ -0,0 +1,20 @@ +333 661 +942 1519 +825 1088 +68 726 +443 1398 +918 1335 +853 1787 +163 269 +158 214 +444 1036 +163 670 +124 834 +745 890 +728 1254 +981 1370 +858 1117 +159 700 +978 1371 +554 1366 +112 689 diff --git a/geom_bottleneck/tests/data/test_812_B b/geom_bottleneck/tests/data/test_812_B new file mode 100644 index 0000000..7e37dec --- /dev/null +++ b/geom_bottleneck/tests/data/test_812_B @@ -0,0 +1,20 @@ +228 896 +635 880 +250 930 +8 479 +168 214 +366 775 +41 981 +461 692 +337 839 +870 1634 +497 511 +253 389 +807 913 +487 1348 +245 1186 +222 1169 +254 810 +855 1471 +399 1155 +433 1194 diff --git a/geom_bottleneck/tests/data/test_813_A b/geom_bottleneck/tests/data/test_813_A new file mode 100644 index 0000000..94bbbc3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_813_A @@ -0,0 +1,20 @@ +45 843 +606 637 +981 1438 +769 1525 +694 1370 +596 1454 +365 813 +164 704 +198 347 +115 553 +767 1119 +663 1052 +379 697 +294 335 +457 1253 +320 1147 +508 830 +506 738 +381 1010 +896 1376 diff --git a/geom_bottleneck/tests/data/test_813_B b/geom_bottleneck/tests/data/test_813_B new file mode 100644 index 0000000..54ce63b --- /dev/null +++ b/geom_bottleneck/tests/data/test_813_B @@ -0,0 +1,20 @@ +519 1068 +65 460 +199 429 +695 1050 +407 524 +24 581 +54 728 +843 1551 +773 829 +355 644 +145 962 +837 1238 +796 830 +383 791 +86 1028 +461 1145 +270 1231 +374 837 +730 875 +659 1188 diff --git a/geom_bottleneck/tests/data/test_814_A b/geom_bottleneck/tests/data/test_814_A new file mode 100644 index 0000000..3eb0a25 --- /dev/null +++ b/geom_bottleneck/tests/data/test_814_A @@ -0,0 +1,20 @@ +571 1312 +384 842 +418 932 +388 1146 +857 1045 +952 1326 +551 631 +820 1105 +791 884 +50 788 +697 1165 +840 1425 +130 169 +106 615 +429 1085 +428 567 +138 762 +364 1304 +116 1013 +50 983 diff --git a/geom_bottleneck/tests/data/test_814_B b/geom_bottleneck/tests/data/test_814_B new file mode 100644 index 0000000..a65d82f --- /dev/null +++ b/geom_bottleneck/tests/data/test_814_B @@ -0,0 +1,20 @@ +617 718 +320 697 +164 654 +423 821 +444 1368 +211 382 +184 857 +799 1071 +866 924 +48 829 +90 249 +378 1336 +817 832 +6 246 +115 280 +363 447 +422 964 +902 1809 +637 1073 +585 606 diff --git a/geom_bottleneck/tests/data/test_815_A b/geom_bottleneck/tests/data/test_815_A new file mode 100644 index 0000000..ae366c6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_815_A @@ -0,0 +1,20 @@ +911 1198 +516 1091 +421 1381 +257 824 +272 394 +75 841 +659 805 +980 1436 +237 431 +668 1221 +441 1057 +560 849 +305 1270 +572 929 +460 812 +471 640 +50 773 +1 446 +895 1610 +837 1400 diff --git a/geom_bottleneck/tests/data/test_815_B b/geom_bottleneck/tests/data/test_815_B new file mode 100644 index 0000000..6d11d46 --- /dev/null +++ b/geom_bottleneck/tests/data/test_815_B @@ -0,0 +1,20 @@ +589 1196 +872 1375 +473 627 +522 671 +940 1274 +666 1453 +1 861 +656 1221 +669 866 +916 1378 +340 773 +454 1020 +190 561 +828 1606 +356 693 +876 1220 +644 763 +991 1241 +559 1095 +124 406 diff --git a/geom_bottleneck/tests/data/test_816_A b/geom_bottleneck/tests/data/test_816_A new file mode 100644 index 0000000..54dc128 --- /dev/null +++ b/geom_bottleneck/tests/data/test_816_A @@ -0,0 +1,20 @@ +376 1109 +877 1496 +817 1426 +647 703 +92 672 +909 1671 +580 965 +626 1528 +347 1159 +551 1396 +432 941 +7 766 +1 370 +664 1384 +106 448 +763 1190 +768 892 +19 465 +220 1188 +96 554 diff --git a/geom_bottleneck/tests/data/test_816_B b/geom_bottleneck/tests/data/test_816_B new file mode 100644 index 0000000..56f00ce --- /dev/null +++ b/geom_bottleneck/tests/data/test_816_B @@ -0,0 +1,20 @@ +930 1560 +702 1257 +174 988 +712 777 +150 355 +146 617 +265 954 +519 820 +575 1117 +603 1133 +910 1817 +363 415 +102 347 +925 1565 +621 1336 +203 752 +743 1550 +39 310 +904 1206 +696 1445 diff --git a/geom_bottleneck/tests/data/test_817_A b/geom_bottleneck/tests/data/test_817_A new file mode 100644 index 0000000..8c01be3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_817_A @@ -0,0 +1,20 @@ +14 829 +708 1194 +415 1028 +395 1236 +294 792 +319 730 +490 889 +424 1364 +512 864 +820 1563 +461 880 +345 686 +318 407 +993 1857 +833 882 +937 1452 +376 719 +171 852 +457 523 +156 784 diff --git a/geom_bottleneck/tests/data/test_817_B b/geom_bottleneck/tests/data/test_817_B new file mode 100644 index 0000000..1aa1eaa --- /dev/null +++ b/geom_bottleneck/tests/data/test_817_B @@ -0,0 +1,20 @@ +544 1398 +776 1241 +56 1054 +942 1736 +752 1563 +475 1241 +423 923 +553 1023 +101 846 +841 1613 +895 1353 +832 1502 +300 915 +986 1488 +397 648 +823 1196 +457 1079 +371 471 +398 1114 +50 853 diff --git a/geom_bottleneck/tests/data/test_818_A b/geom_bottleneck/tests/data/test_818_A new file mode 100644 index 0000000..44ac7de --- /dev/null +++ b/geom_bottleneck/tests/data/test_818_A @@ -0,0 +1,20 @@ +296 395 +102 172 +9 500 +426 574 +931 1885 +76 901 +202 1197 +462 1135 +87 907 +109 780 +186 238 +297 833 +142 360 +719 1106 +25 775 +626 1219 +911 1619 +9 322 +158 222 +843 1086 diff --git a/geom_bottleneck/tests/data/test_818_B b/geom_bottleneck/tests/data/test_818_B new file mode 100644 index 0000000..83c706c --- /dev/null +++ b/geom_bottleneck/tests/data/test_818_B @@ -0,0 +1,20 @@ +989 1945 +718 1675 +126 965 +27 359 +756 962 +158 737 +149 473 +748 896 +779 1215 +685 933 +742 1449 +717 1575 +834 1467 +80 377 +634 1348 +419 766 +345 733 +111 753 +138 1014 +452 1429 diff --git a/geom_bottleneck/tests/data/test_819_A b/geom_bottleneck/tests/data/test_819_A new file mode 100644 index 0000000..1065f24 --- /dev/null +++ b/geom_bottleneck/tests/data/test_819_A @@ -0,0 +1,20 @@ +119 806 +187 942 +454 844 +581 583 +753 1715 +199 380 +623 697 +63 469 +929 1518 +960 1306 +996 1011 +157 203 +666 1505 +14 693 +414 536 +461 1330 +975 1260 +375 1004 +375 1145 +453 723 diff --git a/geom_bottleneck/tests/data/test_819_B b/geom_bottleneck/tests/data/test_819_B new file mode 100644 index 0000000..f1c8ba3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_819_B @@ -0,0 +1,20 @@ +184 385 +214 473 +11 1007 +301 516 +689 820 +267 1052 +26 720 +414 726 +946 1295 +720 1275 +430 1272 +119 349 +850 1371 +738 1125 +450 1222 +728 1503 +951 1796 +843 947 +856 983 +705 996 diff --git a/geom_bottleneck/tests/data/test_820_A b/geom_bottleneck/tests/data/test_820_A new file mode 100644 index 0000000..1f23572 --- /dev/null +++ b/geom_bottleneck/tests/data/test_820_A @@ -0,0 +1,30 @@ +232 279 +761 1519 +175 773 +522 1293 +336 381 +478 998 +61 328 +450 1350 +669 1085 +602 870 +286 987 +593 897 +358 742 +900 1878 +441 668 +109 977 +847 1651 +41 863 +94 851 +240 491 +335 1150 +135 748 +480 1052 +420 572 +837 1662 +629 1223 +895 1453 +304 1051 +424 553 +308 714 diff --git a/geom_bottleneck/tests/data/test_820_B b/geom_bottleneck/tests/data/test_820_B new file mode 100644 index 0000000..3465e1b --- /dev/null +++ b/geom_bottleneck/tests/data/test_820_B @@ -0,0 +1,30 @@ +309 934 +8 585 +213 1043 +116 589 +436 679 +70 715 +604 1194 +562 1151 +727 1616 +404 632 +948 1712 +934 1186 +690 1385 +636 682 +140 888 +738 884 +704 1593 +868 979 +954 1310 +605 1513 +955 1763 +730 1719 +393 1159 +325 1279 +35 153 +436 838 +249 1157 +394 921 +634 1242 +914 1138 diff --git a/geom_bottleneck/tests/data/test_821_A b/geom_bottleneck/tests/data/test_821_A new file mode 100644 index 0000000..ab4fa20 --- /dev/null +++ b/geom_bottleneck/tests/data/test_821_A @@ -0,0 +1,30 @@ +610 907 +704 897 +228 1047 +459 1435 +105 904 +492 1288 +557 863 +368 622 +715 1240 +627 1465 +823 1003 +823 891 +724 853 +227 933 +88 600 +735 1479 +591 757 +260 347 +314 1130 +342 985 +80 990 +93 137 +153 761 +91 408 +497 1011 +980 1277 +916 1437 +81 1038 +735 1143 +374 773 diff --git a/geom_bottleneck/tests/data/test_821_B b/geom_bottleneck/tests/data/test_821_B new file mode 100644 index 0000000..36073ce --- /dev/null +++ b/geom_bottleneck/tests/data/test_821_B @@ -0,0 +1,30 @@ +575 1235 +999 1599 +78 560 +384 694 +217 646 +709 1344 +772 1755 +542 994 +376 1248 +924 1462 +675 892 +927 1354 +306 1292 +573 1316 +731 1424 +445 911 +145 588 +402 822 +584 920 +374 831 +636 1237 +580 614 +490 1107 +529 1074 +652 1460 +892 1245 +917 1530 +679 1511 +725 820 +620 1439 diff --git a/geom_bottleneck/tests/data/test_822_A b/geom_bottleneck/tests/data/test_822_A new file mode 100644 index 0000000..38b5219 --- /dev/null +++ b/geom_bottleneck/tests/data/test_822_A @@ -0,0 +1,30 @@ +416 1100 +661 1339 +612 962 +593 1233 +642 1509 +574 969 +202 450 +370 787 +14 937 +974 1336 +420 775 +808 1662 +304 319 +492 555 +740 1524 +935 1749 +88 758 +995 1590 +40 963 +141 1031 +695 886 +504 1111 +684 1360 +861 1552 +482 746 +89 547 +493 598 +190 310 +806 1384 +472 1459 diff --git a/geom_bottleneck/tests/data/test_822_B b/geom_bottleneck/tests/data/test_822_B new file mode 100644 index 0000000..c61c33e --- /dev/null +++ b/geom_bottleneck/tests/data/test_822_B @@ -0,0 +1,30 @@ +843 1057 +860 1286 +703 1268 +545 1381 +515 1186 +178 952 +456 907 +713 964 +555 981 +332 1263 +11 112 +291 347 +958 1460 +723 1182 +850 865 +631 677 +227 640 +676 1506 +256 610 +581 1468 +15 619 +233 1100 +35 957 +444 817 +517 1318 +129 318 +765 1584 +733 1001 +932 998 +693 1076 diff --git a/geom_bottleneck/tests/data/test_823_A b/geom_bottleneck/tests/data/test_823_A new file mode 100644 index 0000000..5d441a2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_823_A @@ -0,0 +1,30 @@ +817 1477 +662 1416 +722 1408 +43 588 +583 585 +159 836 +752 922 +529 727 +55 60 +447 1200 +248 735 +520 1121 +541 1379 +704 1640 +681 1454 +234 385 +884 1063 +884 1535 +612 704 +55 102 +214 913 +597 1576 +19 919 +907 951 +785 1577 +185 281 +567 680 +577 1162 +323 495 +321 920 diff --git a/geom_bottleneck/tests/data/test_823_B b/geom_bottleneck/tests/data/test_823_B new file mode 100644 index 0000000..e1ae113 --- /dev/null +++ b/geom_bottleneck/tests/data/test_823_B @@ -0,0 +1,30 @@ +562 1532 +19 557 +758 1238 +732 1011 +116 761 +988 1621 +783 786 +128 964 +208 249 +111 948 +510 719 +711 1630 +99 769 +159 816 +295 807 +485 1332 +848 1845 +721 1534 +344 1341 +678 1465 +665 889 +734 1611 +246 783 +238 618 +401 809 +234 571 +527 1227 +690 1550 +278 729 +454 591 diff --git a/geom_bottleneck/tests/data/test_824_A b/geom_bottleneck/tests/data/test_824_A new file mode 100644 index 0000000..3bfc169 --- /dev/null +++ b/geom_bottleneck/tests/data/test_824_A @@ -0,0 +1,30 @@ +333 858 +230 978 +281 1158 +880 1314 +816 1259 +840 1631 +385 979 +413 537 +378 697 +222 486 +213 285 +664 1109 +7 300 +482 903 +325 338 +616 875 +46 548 +145 965 +126 760 +873 1030 +533 1087 +417 487 +510 919 +760 1722 +144 897 +136 412 +88 137 +704 1084 +457 744 +424 1148 diff --git a/geom_bottleneck/tests/data/test_824_B b/geom_bottleneck/tests/data/test_824_B new file mode 100644 index 0000000..192df92 --- /dev/null +++ b/geom_bottleneck/tests/data/test_824_B @@ -0,0 +1,30 @@ +285 785 +57 516 +410 1131 +794 1019 +732 1499 +391 1297 +104 689 +294 976 +748 1061 +806 1309 +118 995 +7 994 +952 1007 +994 1296 +340 1335 +387 762 +800 946 +757 1299 +167 976 +538 802 +147 808 +51 694 +20 353 +290 376 +575 1395 +294 1074 +754 1042 +461 474 +634 1525 +491 1208 diff --git a/geom_bottleneck/tests/data/test_825_A b/geom_bottleneck/tests/data/test_825_A new file mode 100644 index 0000000..5dc0d10 --- /dev/null +++ b/geom_bottleneck/tests/data/test_825_A @@ -0,0 +1,30 @@ +727 1401 +217 1102 +836 1270 +380 446 +569 1295 +55 504 +239 312 +872 1710 +552 1075 +584 1470 +402 438 +441 1296 +194 1105 +643 1563 +933 1180 +448 735 +749 1583 +725 1624 +533 1043 +952 1467 +548 926 +839 926 +5 724 +768 1115 +557 578 +712 1472 +279 1121 +399 808 +601 951 +293 422 diff --git a/geom_bottleneck/tests/data/test_825_B b/geom_bottleneck/tests/data/test_825_B new file mode 100644 index 0000000..e440801 --- /dev/null +++ b/geom_bottleneck/tests/data/test_825_B @@ -0,0 +1,30 @@ +466 883 +492 1180 +645 1446 +138 604 +469 1261 +110 409 +923 1649 +101 397 +410 440 +655 1223 +280 822 +564 701 +736 1735 +645 1272 +495 982 +339 389 +188 738 +669 1263 +106 658 +981 1256 +815 1378 +914 1482 +193 855 +361 1134 +885 1858 +98 576 +577 897 +528 549 +152 154 +363 886 diff --git a/geom_bottleneck/tests/data/test_826_A b/geom_bottleneck/tests/data/test_826_A new file mode 100644 index 0000000..8fbcf93 --- /dev/null +++ b/geom_bottleneck/tests/data/test_826_A @@ -0,0 +1,30 @@ +669 1220 +577 787 +982 1553 +218 1116 +715 831 +383 780 +328 925 +216 612 +635 1185 +211 707 +915 1130 +223 693 +468 1277 +570 1219 +281 1037 +759 1522 +435 1201 +356 582 +996 1867 +369 833 +584 1415 +472 1174 +6 905 +329 358 +703 1331 +141 180 +136 204 +873 1858 +107 943 +158 1153 diff --git a/geom_bottleneck/tests/data/test_826_B b/geom_bottleneck/tests/data/test_826_B new file mode 100644 index 0000000..10fe424 --- /dev/null +++ b/geom_bottleneck/tests/data/test_826_B @@ -0,0 +1,30 @@ +651 1534 +143 212 +685 962 +100 862 +34 102 +333 1131 +274 651 +142 1075 +312 751 +848 1583 +396 548 +377 1071 +824 1067 +932 1352 +510 1339 +435 561 +259 1223 +434 1080 +974 1509 +618 1604 +795 1363 +668 1299 +532 1157 +326 632 +182 768 +611 1431 +62 528 +832 1370 +413 1373 +153 813 diff --git a/geom_bottleneck/tests/data/test_827_A b/geom_bottleneck/tests/data/test_827_A new file mode 100644 index 0000000..c1c63c9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_827_A @@ -0,0 +1,30 @@ +211 875 +625 678 +698 1671 +942 1243 +129 250 +370 497 +725 1322 +195 1094 +382 1059 +973 1185 +877 1196 +863 1764 +645 1372 +4 484 +29 156 +802 1201 +195 1074 +261 1181 +139 1099 +768 1204 +882 1317 +107 693 +928 1275 +459 1071 +270 633 +384 906 +493 576 +909 1222 +212 437 +74 656 diff --git a/geom_bottleneck/tests/data/test_827_B b/geom_bottleneck/tests/data/test_827_B new file mode 100644 index 0000000..57ea673 --- /dev/null +++ b/geom_bottleneck/tests/data/test_827_B @@ -0,0 +1,30 @@ +804 1730 +244 333 +131 547 +866 1012 +364 546 +530 950 +702 824 +290 418 +636 795 +202 618 +858 1059 +140 687 +76 447 +60 499 +502 1080 +858 1704 +555 585 +503 1152 +151 787 +565 1211 +172 556 +322 422 +176 952 +333 572 +40 982 +656 1365 +553 1493 +600 680 +72 555 +711 769 diff --git a/geom_bottleneck/tests/data/test_828_A b/geom_bottleneck/tests/data/test_828_A new file mode 100644 index 0000000..ee02128 --- /dev/null +++ b/geom_bottleneck/tests/data/test_828_A @@ -0,0 +1,30 @@ +227 983 +778 1655 +311 1256 +462 911 +100 932 +411 895 +738 1086 +375 1308 +899 1896 +742 1425 +909 1290 +68 375 +148 195 +981 1120 +848 1463 +234 616 +45 314 +180 447 +368 1310 +443 734 +721 1345 +617 1376 +340 767 +420 1094 +848 979 +984 1866 +996 1169 +28 895 +203 1153 +535 1241 diff --git a/geom_bottleneck/tests/data/test_828_B b/geom_bottleneck/tests/data/test_828_B new file mode 100644 index 0000000..92fae09 --- /dev/null +++ b/geom_bottleneck/tests/data/test_828_B @@ -0,0 +1,30 @@ +309 789 +405 1405 +610 1330 +213 683 +768 1598 +843 1024 +898 1445 +625 1363 +557 996 +455 1026 +146 1137 +411 617 +155 969 +93 444 +92 206 +470 927 +792 1691 +871 984 +551 1271 +801 1755 +134 505 +270 1081 +382 852 +549 686 +2 314 +146 428 +460 1373 +602 1492 +950 1060 +516 1438 diff --git a/geom_bottleneck/tests/data/test_829_A b/geom_bottleneck/tests/data/test_829_A new file mode 100644 index 0000000..fceb407 --- /dev/null +++ b/geom_bottleneck/tests/data/test_829_A @@ -0,0 +1,30 @@ +222 1184 +346 478 +748 1587 +29 615 +190 1077 +889 1417 +381 1314 +388 448 +654 1525 +876 1242 +306 625 +289 660 +251 355 +4 963 +310 1154 +216 1065 +7 10 +75 525 +249 1084 +972 1796 +938 1780 +218 1156 +959 1810 +530 785 +562 1005 +483 751 +892 1440 +352 493 +676 1329 +718 1688 diff --git a/geom_bottleneck/tests/data/test_829_B b/geom_bottleneck/tests/data/test_829_B new file mode 100644 index 0000000..85f538c --- /dev/null +++ b/geom_bottleneck/tests/data/test_829_B @@ -0,0 +1,30 @@ +910 1441 +681 1671 +845 1784 +354 1210 +4 180 +830 1486 +466 566 +808 1728 +1 589 +808 862 +404 543 +304 879 +618 1013 +905 1788 +912 1187 +228 604 +959 1487 +793 1275 +631 1205 +151 157 +984 1427 +244 578 +875 1741 +654 1288 +506 780 +827 1138 +213 928 +30 420 +670 1438 +448 737 diff --git a/geom_bottleneck/tests/data/test_830_A b/geom_bottleneck/tests/data/test_830_A new file mode 100644 index 0000000..fd54955 --- /dev/null +++ b/geom_bottleneck/tests/data/test_830_A @@ -0,0 +1,30 @@ +35 644 +830 1511 +414 677 +768 1461 +467 1032 +152 1060 +960 1807 +566 831 +550 1210 +521 1018 +250 651 +698 699 +979 1102 +555 1516 +463 1057 +739 896 +330 549 +412 775 +775 1433 +733 1438 +430 1342 +7 751 +338 943 +923 1173 +734 1460 +880 1453 +225 1004 +571 1375 +739 1085 +288 1202 diff --git a/geom_bottleneck/tests/data/test_830_B b/geom_bottleneck/tests/data/test_830_B new file mode 100644 index 0000000..5b9d84b --- /dev/null +++ b/geom_bottleneck/tests/data/test_830_B @@ -0,0 +1,30 @@ +814 1305 +205 1199 +972 1431 +37 488 +673 1079 +630 1288 +698 828 +970 1666 +516 625 +65 209 +752 1716 +12 992 +563 1552 +821 1168 +460 943 +616 682 +386 546 +249 638 +583 1024 +38 889 +491 1020 +179 964 +995 1256 +861 1632 +252 518 +255 344 +480 1200 +89 711 +598 1022 +632 677 diff --git a/geom_bottleneck/tests/data/test_831_A b/geom_bottleneck/tests/data/test_831_A new file mode 100644 index 0000000..fe09be1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_831_A @@ -0,0 +1,30 @@ +772 1298 +705 1567 +946 1693 +632 1045 +752 875 +919 1723 +657 884 +708 1156 +442 1086 +571 1454 +641 894 +371 1152 +762 952 +684 760 +275 369 +858 994 +485 730 +921 1267 +643 928 +353 1307 +384 406 +154 380 +299 998 +378 1208 +27 265 +948 1081 +551 1512 +50 308 +773 1297 +134 514 diff --git a/geom_bottleneck/tests/data/test_831_B b/geom_bottleneck/tests/data/test_831_B new file mode 100644 index 0000000..1f4d148 --- /dev/null +++ b/geom_bottleneck/tests/data/test_831_B @@ -0,0 +1,30 @@ +757 1588 +145 1094 +523 1331 +687 1430 +877 1046 +573 696 +359 1012 +711 734 +368 552 +588 1267 +231 702 +64 429 +901 1202 +93 467 +647 1449 +747 994 +364 692 +384 833 +143 390 +445 1283 +248 696 +397 451 +695 1014 +852 1363 +512 1491 +983 1278 +506 841 +533 1031 +26 813 +850 1601 diff --git a/geom_bottleneck/tests/data/test_832_A b/geom_bottleneck/tests/data/test_832_A new file mode 100644 index 0000000..79d3383 --- /dev/null +++ b/geom_bottleneck/tests/data/test_832_A @@ -0,0 +1,30 @@ +373 1269 +753 1101 +529 825 +462 539 +52 293 +878 1396 +67 683 +106 1096 +973 1589 +129 911 +556 1327 +743 1248 +687 1505 +804 1322 +338 703 +438 1149 +539 730 +802 1046 +462 803 +175 506 +382 796 +470 1219 +608 1146 +12 757 +713 1367 +719 1001 +451 585 +408 1308 +29 510 +67 866 diff --git a/geom_bottleneck/tests/data/test_832_B b/geom_bottleneck/tests/data/test_832_B new file mode 100644 index 0000000..9106904 --- /dev/null +++ b/geom_bottleneck/tests/data/test_832_B @@ -0,0 +1,30 @@ +239 1006 +358 806 +53 229 +529 931 +923 1837 +644 1410 +761 1240 +511 966 +639 1127 +874 1114 +604 995 +916 1100 +634 1043 +317 607 +43 613 +9 216 +349 1035 +48 193 +396 986 +809 1193 +307 832 +86 786 +934 1164 +534 1434 +960 1092 +13 799 +658 1056 +411 1382 +378 568 +808 1400 diff --git a/geom_bottleneck/tests/data/test_833_A b/geom_bottleneck/tests/data/test_833_A new file mode 100644 index 0000000..1dbdd95 --- /dev/null +++ b/geom_bottleneck/tests/data/test_833_A @@ -0,0 +1,30 @@ +505 885 +170 695 +258 297 +652 996 +987 1055 +937 1159 +846 1133 +984 1715 +243 1199 +596 827 +40 585 +589 1356 +305 943 +974 1253 +965 1615 +840 1238 +842 1407 +596 1296 +603 741 +839 966 +300 951 +852 1656 +783 1676 +45 631 +973 1199 +513 725 +133 391 +633 1132 +442 1271 +100 401 diff --git a/geom_bottleneck/tests/data/test_833_B b/geom_bottleneck/tests/data/test_833_B new file mode 100644 index 0000000..a325070 --- /dev/null +++ b/geom_bottleneck/tests/data/test_833_B @@ -0,0 +1,30 @@ +152 524 +210 255 +714 1034 +808 1480 +594 1020 +33 742 +285 562 +437 1341 +716 903 +767 1201 +146 938 +608 1275 +54 601 +752 1037 +896 1514 +113 321 +986 1932 +453 1382 +93 547 +687 1677 +134 1122 +5 268 +31 66 +832 1755 +313 966 +602 834 +433 679 +548 789 +414 1414 +734 1061 diff --git a/geom_bottleneck/tests/data/test_834_A b/geom_bottleneck/tests/data/test_834_A new file mode 100644 index 0000000..7088d54 --- /dev/null +++ b/geom_bottleneck/tests/data/test_834_A @@ -0,0 +1,30 @@ +709 1214 +541 1328 +291 925 +23 570 +334 447 +648 808 +532 1226 +315 509 +796 1147 +435 1417 +336 1183 +401 893 +184 721 +496 509 +274 841 +463 625 +906 1694 +512 1242 +617 1494 +874 1805 +162 621 +802 1074 +904 993 +124 653 +44 818 +577 1417 +520 1294 +574 709 +317 394 +643 1152 diff --git a/geom_bottleneck/tests/data/test_834_B b/geom_bottleneck/tests/data/test_834_B new file mode 100644 index 0000000..5dd4204 --- /dev/null +++ b/geom_bottleneck/tests/data/test_834_B @@ -0,0 +1,30 @@ +176 662 +579 764 +544 706 +68 939 +230 345 +901 1737 +714 1299 +482 1000 +290 802 +760 1461 +647 1412 +781 1498 +354 780 +697 818 +375 709 +794 1664 +989 1869 +320 729 +688 1029 +853 1290 +679 1504 +918 1749 +767 1734 +300 996 +625 900 +123 496 +89 408 +255 679 +329 1248 +659 1003 diff --git a/geom_bottleneck/tests/data/test_835_A b/geom_bottleneck/tests/data/test_835_A new file mode 100644 index 0000000..47e934b --- /dev/null +++ b/geom_bottleneck/tests/data/test_835_A @@ -0,0 +1,30 @@ +554 1108 +257 549 +102 222 +531 715 +977 1231 +292 534 +624 1603 +394 508 +936 1007 +139 427 +457 1069 +873 1535 +789 887 +912 1213 +503 1307 +734 889 +789 1372 +811 1701 +558 1477 +485 763 +711 876 +961 1691 +294 635 +963 1955 +737 1563 +15 980 +23 339 +770 1156 +399 1341 +886 1049 diff --git a/geom_bottleneck/tests/data/test_835_B b/geom_bottleneck/tests/data/test_835_B new file mode 100644 index 0000000..9a3edbe --- /dev/null +++ b/geom_bottleneck/tests/data/test_835_B @@ -0,0 +1,30 @@ +38 645 +994 1933 +145 1066 +900 1210 +691 1208 +672 959 +349 445 +567 1137 +547 1325 +943 1437 +591 712 +526 750 +2 227 +108 667 +137 722 +327 1192 +396 1374 +390 1069 +396 783 +927 1242 +870 1797 +532 1049 +543 1081 +470 917 +738 1731 +814 1558 +794 1555 +439 499 +593 1490 +349 410 diff --git a/geom_bottleneck/tests/data/test_836_A b/geom_bottleneck/tests/data/test_836_A new file mode 100644 index 0000000..1a9885f --- /dev/null +++ b/geom_bottleneck/tests/data/test_836_A @@ -0,0 +1,30 @@ +790 1396 +959 1240 +518 1462 +797 1737 +356 649 +304 716 +773 1583 +888 1299 +355 801 +318 1109 +271 1257 +645 820 +292 1221 +792 968 +879 1494 +253 642 +105 802 +917 1305 +648 1646 +724 1157 +566 1056 +868 1437 +398 1098 +601 917 +436 1368 +26 933 +670 1615 +189 367 +79 1050 +955 1528 diff --git a/geom_bottleneck/tests/data/test_836_B b/geom_bottleneck/tests/data/test_836_B new file mode 100644 index 0000000..8335ddf --- /dev/null +++ b/geom_bottleneck/tests/data/test_836_B @@ -0,0 +1,30 @@ +135 337 +332 1300 +859 1117 +591 988 +441 1441 +174 635 +78 703 +10 648 +188 422 +292 830 +492 1179 +104 276 +263 640 +63 760 +993 1248 +107 644 +723 747 +85 698 +276 410 +407 735 +229 810 +512 561 +802 1555 +542 818 +666 1499 +383 754 +132 216 +581 723 +775 1446 +908 1029 diff --git a/geom_bottleneck/tests/data/test_837_A b/geom_bottleneck/tests/data/test_837_A new file mode 100644 index 0000000..8d3facc --- /dev/null +++ b/geom_bottleneck/tests/data/test_837_A @@ -0,0 +1,30 @@ +456 998 +976 1929 +745 1606 +77 375 +149 692 +508 1466 +68 113 +493 1163 +185 1109 +761 1172 +313 1261 +508 1091 +122 834 +766 1333 +996 1208 +161 468 +688 903 +551 744 +745 1522 +579 1022 +149 722 +458 652 +8 758 +801 1344 +96 696 +589 1125 +589 989 +941 1492 +851 1168 +670 728 diff --git a/geom_bottleneck/tests/data/test_837_B b/geom_bottleneck/tests/data/test_837_B new file mode 100644 index 0000000..8439a1f --- /dev/null +++ b/geom_bottleneck/tests/data/test_837_B @@ -0,0 +1,30 @@ +102 508 +437 603 +199 669 +853 1602 +106 722 +732 771 +301 538 +505 988 +731 1707 +276 1142 +923 1449 +366 1330 +221 833 +107 174 +914 1231 +651 1411 +137 666 +781 1074 +459 655 +509 1344 +74 234 +927 1739 +960 1461 +556 608 +644 805 +457 971 +992 1522 +798 887 +147 944 +96 111 diff --git a/geom_bottleneck/tests/data/test_838_A b/geom_bottleneck/tests/data/test_838_A new file mode 100644 index 0000000..9f6e83e --- /dev/null +++ b/geom_bottleneck/tests/data/test_838_A @@ -0,0 +1,30 @@ +918 952 +225 1163 +801 1184 +786 1485 +512 747 +389 756 +966 1924 +542 720 +742 1207 +329 891 +273 1268 +701 1015 +29 682 +303 1139 +716 1617 +362 1135 +540 1071 +58 497 +725 1445 +46 688 +931 1327 +467 1229 +303 916 +702 1067 +862 1258 +535 1347 +640 1252 +619 1377 +702 1237 +971 1779 diff --git a/geom_bottleneck/tests/data/test_838_B b/geom_bottleneck/tests/data/test_838_B new file mode 100644 index 0000000..227776e --- /dev/null +++ b/geom_bottleneck/tests/data/test_838_B @@ -0,0 +1,30 @@ +898 1448 +295 893 +829 1147 +149 339 +529 1046 +729 1258 +602 1296 +571 672 +953 1890 +26 777 +984 1487 +879 1533 +456 1103 +741 1227 +235 718 +65 102 +432 1037 +307 824 +977 1325 +275 582 +753 1683 +809 1622 +63 478 +648 1273 +945 1446 +234 843 +354 1134 +298 1160 +471 882 +911 1296 diff --git a/geom_bottleneck/tests/data/test_839_A b/geom_bottleneck/tests/data/test_839_A new file mode 100644 index 0000000..073be3c --- /dev/null +++ b/geom_bottleneck/tests/data/test_839_A @@ -0,0 +1,30 @@ +488 765 +890 1359 +573 1009 +876 1603 +430 1408 +774 1380 +786 881 +392 1227 +506 755 +844 1516 +716 1555 +697 1415 +816 908 +981 1231 +775 1437 +224 582 +657 1045 +937 1441 +428 682 +865 1547 +802 1736 +700 1196 +881 1569 +507 875 +884 1852 +176 345 +278 338 +78 384 +562 781 +463 1403 diff --git a/geom_bottleneck/tests/data/test_839_B b/geom_bottleneck/tests/data/test_839_B new file mode 100644 index 0000000..ca5ee3e --- /dev/null +++ b/geom_bottleneck/tests/data/test_839_B @@ -0,0 +1,30 @@ +768 1077 +971 1887 +547 1058 +468 905 +54 250 +727 782 +101 407 +111 1085 +637 826 +209 531 +690 1134 +989 1111 +817 848 +862 952 +530 679 +431 823 +958 1666 +973 1598 +423 766 +42 736 +833 1832 +206 848 +148 336 +804 1691 +186 361 +53 288 +449 1314 +618 904 +759 1339 +8 923 diff --git a/geom_bottleneck/tests/data/test_840_A b/geom_bottleneck/tests/data/test_840_A new file mode 100644 index 0000000..02ed823 --- /dev/null +++ b/geom_bottleneck/tests/data/test_840_A @@ -0,0 +1,50 @@ +121 1010 +730 1566 +866 872 +984 1105 +12 455 +503 963 +956 1410 +986 1887 +929 1377 +809 823 +129 1090 +545 640 +641 921 +786 916 +222 474 +464 677 +357 1055 +199 1046 +327 892 +449 1272 +564 1505 +867 1494 +383 585 +617 1200 +254 997 +528 994 +458 507 +250 1217 +141 1104 +710 1191 +565 1355 +959 1876 +323 665 +290 1141 +749 1035 +641 817 +855 1596 +296 610 +144 215 +563 776 +77 599 +380 1160 +720 811 +55 905 +389 830 +268 1170 +579 1272 +240 811 +552 737 +498 844 diff --git a/geom_bottleneck/tests/data/test_840_B b/geom_bottleneck/tests/data/test_840_B new file mode 100644 index 0000000..4bd5737 --- /dev/null +++ b/geom_bottleneck/tests/data/test_840_B @@ -0,0 +1,50 @@ +156 272 +847 1154 +32 482 +781 1129 +956 1017 +429 1305 +312 1054 +11 979 +495 1463 +645 1524 +521 901 +685 1414 +741 1123 +179 428 +475 1073 +360 1315 +435 524 +897 1422 +668 1253 +538 802 +79 329 +791 1484 +557 772 +831 950 +640 666 +196 358 +214 394 +738 1566 +788 1752 +932 1820 +853 1847 +561 1446 +671 1490 +792 1123 +892 1481 +9 650 +92 308 +760 1021 +807 1449 +721 1693 +932 1892 +674 734 +837 1338 +313 507 +300 686 +264 1045 +210 788 +426 1169 +354 1154 +711 1322 diff --git a/geom_bottleneck/tests/data/test_841_A b/geom_bottleneck/tests/data/test_841_A new file mode 100644 index 0000000..d6b2c08 --- /dev/null +++ b/geom_bottleneck/tests/data/test_841_A @@ -0,0 +1,50 @@ +932 1449 +350 597 +425 503 +858 1265 +781 1372 +293 300 +593 806 +958 1619 +647 819 +598 1284 +160 571 +651 955 +521 1143 +906 1546 +848 1529 +729 1180 +990 1245 +54 398 +404 1096 +88 896 +679 1094 +737 1504 +609 1460 +32 747 +338 1060 +565 1216 +637 1537 +449 1042 +889 1510 +184 241 +103 584 +136 919 +503 659 +848 1333 +890 941 +360 836 +418 506 +750 994 +963 1068 +712 1501 +331 396 +515 617 +555 728 +81 401 +186 654 +934 1122 +649 843 +953 1342 +316 622 +866 1234 diff --git a/geom_bottleneck/tests/data/test_841_B b/geom_bottleneck/tests/data/test_841_B new file mode 100644 index 0000000..9775dd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_841_B @@ -0,0 +1,50 @@ +381 908 +662 956 +316 894 +326 664 +655 1453 +261 430 +385 866 +630 1168 +117 237 +603 1595 +19 419 +375 1154 +982 1372 +897 1324 +347 687 +868 1049 +53 1031 +722 1078 +918 1107 +675 1326 +485 505 +777 1032 +76 273 +231 1113 +751 1180 +937 1635 +156 873 +641 1316 +632 1052 +54 1021 +993 1159 +905 1039 +606 1293 +235 364 +530 540 +326 843 +636 1442 +474 814 +176 942 +924 1685 +668 817 +560 1090 +805 1794 +679 1076 +409 1108 +582 1311 +21 449 +142 622 +614 1153 +570 908 diff --git a/geom_bottleneck/tests/data/test_842_A b/geom_bottleneck/tests/data/test_842_A new file mode 100644 index 0000000..49124dc --- /dev/null +++ b/geom_bottleneck/tests/data/test_842_A @@ -0,0 +1,50 @@ +205 815 +309 971 +468 1170 +602 1127 +239 434 +403 631 +80 500 +14 864 +594 1199 +406 407 +30 360 +188 993 +381 1063 +175 1087 +357 1063 +153 1117 +600 1365 +662 1189 +513 744 +339 1332 +860 1720 +897 1406 +462 808 +191 234 +542 729 +425 738 +159 160 +821 1536 +327 355 +616 1302 +699 1148 +870 1512 +810 1146 +448 564 +881 1246 +364 833 +889 1160 +102 175 +385 731 +86 659 +14 321 +257 1193 +685 1606 +174 925 +165 1021 +116 419 +775 1510 +53 614 +18 39 +561 670 diff --git a/geom_bottleneck/tests/data/test_842_B b/geom_bottleneck/tests/data/test_842_B new file mode 100644 index 0000000..36715f2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_842_B @@ -0,0 +1,50 @@ +577 1182 +779 1169 +525 1384 +851 968 +906 1679 +221 445 +494 653 +813 1061 +478 1174 +37 224 +700 1239 +338 855 +82 670 +159 872 +932 1231 +89 411 +869 1484 +708 966 +814 1075 +108 203 +603 691 +797 1680 +869 1223 +162 165 +281 333 +650 721 +200 665 +692 1332 +497 1331 +948 1098 +351 1188 +844 1508 +319 762 +302 442 +320 617 +220 649 +498 882 +411 711 +833 1373 +943 1586 +310 544 +24 818 +485 903 +58 1028 +84 1023 +69 823 +399 634 +755 945 +460 764 +583 800 diff --git a/geom_bottleneck/tests/data/test_843_A b/geom_bottleneck/tests/data/test_843_A new file mode 100644 index 0000000..aa5cea9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_843_A @@ -0,0 +1,50 @@ +855 1686 +375 653 +487 968 +501 1179 +269 747 +102 128 +756 1241 +934 1507 +707 1166 +438 644 +215 482 +186 1134 +588 1179 +323 806 +260 948 +999 1181 +809 866 +383 618 +667 1211 +697 1543 +216 289 +618 1318 +230 633 +261 439 +36 430 +926 1424 +573 1382 +545 1489 +198 254 +997 1313 +625 1138 +71 216 +123 152 +966 1260 +583 1455 +685 1595 +319 803 +809 1754 +543 672 +973 1482 +282 1191 +94 413 +933 1847 +593 770 +384 463 +301 531 +306 832 +645 679 +863 1024 +257 716 diff --git a/geom_bottleneck/tests/data/test_843_B b/geom_bottleneck/tests/data/test_843_B new file mode 100644 index 0000000..b14eed6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_843_B @@ -0,0 +1,50 @@ +36 726 +683 1328 +991 1393 +822 1642 +499 1065 +41 726 +770 903 +83 190 +993 1392 +584 1281 +520 643 +878 1560 +461 694 +715 1155 +752 1593 +592 622 +8 746 +280 816 +571 797 +24 712 +799 1664 +988 1479 +397 1339 +827 1088 +466 1179 +701 1236 +841 1384 +360 1235 +425 739 +982 1503 +188 345 +161 405 +366 1067 +245 975 +834 1160 +19 508 +594 1292 +149 267 +201 891 +22 922 +984 1108 +731 1251 +871 1092 +946 1519 +772 1388 +738 1194 +924 1862 +35 765 +904 1276 +190 235 diff --git a/geom_bottleneck/tests/data/test_844_A b/geom_bottleneck/tests/data/test_844_A new file mode 100644 index 0000000..753b2fc --- /dev/null +++ b/geom_bottleneck/tests/data/test_844_A @@ -0,0 +1,50 @@ +207 275 +665 774 +655 1360 +274 366 +83 646 +435 599 +479 793 +74 1043 +604 1048 +106 557 +885 1524 +694 1680 +770 833 +38 261 +6 547 +893 1287 +732 1589 +343 1201 +531 1088 +962 1666 +979 1708 +206 538 +73 114 +354 1140 +220 330 +299 833 +694 883 +651 701 +256 425 +551 612 +709 1304 +806 1613 +193 901 +29 916 +257 313 +806 1193 +205 530 +981 1851 +878 1208 +327 799 +958 1874 +783 1109 +466 537 +349 1191 +410 630 +513 837 +587 1033 +777 1202 +90 503 +893 1737 diff --git a/geom_bottleneck/tests/data/test_844_B b/geom_bottleneck/tests/data/test_844_B new file mode 100644 index 0000000..373d26c --- /dev/null +++ b/geom_bottleneck/tests/data/test_844_B @@ -0,0 +1,50 @@ +67 793 +551 1443 +572 1395 +51 149 +805 920 +541 1479 +365 1244 +997 1447 +234 900 +144 1068 +418 929 +720 903 +155 219 +937 1905 +371 1112 +983 1372 +607 1244 +259 1217 +708 850 +992 1713 +398 968 +0 588 +167 742 +465 577 +188 892 +924 1045 +103 892 +489 1072 +170 195 +448 1141 +990 1075 +880 894 +703 1565 +318 785 +843 1614 +326 995 +104 185 +333 1186 +483 631 +246 797 +407 701 +333 545 +73 181 +591 1202 +851 1721 +615 1260 +504 1421 +472 486 +65 189 +986 1801 diff --git a/geom_bottleneck/tests/data/test_845_A b/geom_bottleneck/tests/data/test_845_A new file mode 100644 index 0000000..2015fbb --- /dev/null +++ b/geom_bottleneck/tests/data/test_845_A @@ -0,0 +1,50 @@ +446 1114 +872 1568 +544 1415 +144 507 +256 602 +208 382 +899 1217 +756 1597 +428 574 +201 843 +609 770 +443 531 +479 955 +959 1238 +821 1798 +564 1526 +26 545 +264 633 +34 527 +153 213 +215 703 +925 964 +651 1041 +32 797 +234 1162 +166 544 +407 981 +817 1528 +883 1412 +867 1173 +327 358 +326 330 +540 1054 +632 1503 +632 1465 +240 799 +954 1859 +214 374 +546 1395 +914 1529 +680 1588 +367 377 +890 971 +289 1247 +31 846 +810 1172 +658 1366 +537 1089 +256 1134 +16 1008 diff --git a/geom_bottleneck/tests/data/test_845_B b/geom_bottleneck/tests/data/test_845_B new file mode 100644 index 0000000..b053f52 --- /dev/null +++ b/geom_bottleneck/tests/data/test_845_B @@ -0,0 +1,50 @@ +537 582 +313 723 +386 619 +121 1100 +466 1044 +502 581 +16 838 +599 1395 +899 1523 +589 591 +36 928 +896 1718 +16 252 +99 722 +925 1343 +328 1244 +245 973 +596 1499 +122 763 +945 1563 +38 452 +680 890 +499 1247 +295 803 +385 1357 +885 1780 +597 637 +193 313 +951 1019 +679 1344 +991 1447 +697 1551 +834 1223 +57 795 +657 775 +374 1093 +187 398 +706 1353 +904 1801 +538 932 +843 1632 +370 1250 +590 957 +996 1385 +364 714 +307 689 +866 1687 +547 1072 +451 864 +746 900 diff --git a/geom_bottleneck/tests/data/test_846_A b/geom_bottleneck/tests/data/test_846_A new file mode 100644 index 0000000..520c6d4 --- /dev/null +++ b/geom_bottleneck/tests/data/test_846_A @@ -0,0 +1,50 @@ +659 889 +754 1573 +955 1466 +177 454 +109 235 +107 1086 +741 949 +689 1029 +288 564 +987 1133 +235 240 +398 1178 +27 395 +483 863 +509 1192 +920 1870 +732 1501 +494 1321 +190 362 +278 778 +726 1309 +397 1117 +7 888 +514 1366 +598 902 +48 950 +103 506 +770 1359 +689 1403 +340 1072 +191 850 +512 742 +441 507 +67 201 +50 781 +649 1619 +457 843 +756 993 +343 361 +505 1029 +687 707 +496 1371 +854 990 +555 1488 +217 249 +477 837 +150 258 +514 1286 +170 982 +160 521 diff --git a/geom_bottleneck/tests/data/test_846_B b/geom_bottleneck/tests/data/test_846_B new file mode 100644 index 0000000..3046f20 --- /dev/null +++ b/geom_bottleneck/tests/data/test_846_B @@ -0,0 +1,50 @@ +701 1467 +679 1557 +705 1082 +845 1787 +776 824 +890 1825 +867 1265 +105 710 +282 1235 +900 1455 +598 1253 +642 794 +304 961 +492 778 +16 233 +301 1249 +524 1358 +884 1577 +542 1423 +856 1110 +768 883 +226 755 +18 940 +846 916 +512 1411 +598 1196 +841 1345 +306 891 +571 981 +353 918 +840 1652 +886 1748 +269 1233 +940 1583 +364 1070 +187 683 +350 1141 +730 1223 +333 701 +284 449 +846 1539 +509 1400 +21 696 +543 778 +714 1428 +304 348 +475 1353 +594 1122 +426 946 +418 1312 diff --git a/geom_bottleneck/tests/data/test_847_A b/geom_bottleneck/tests/data/test_847_A new file mode 100644 index 0000000..ee5c8c1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_847_A @@ -0,0 +1,50 @@ +780 1633 +384 1190 +605 779 +787 1716 +504 698 +879 1796 +446 1258 +386 649 +830 1220 +576 717 +888 1126 +457 1259 +975 1588 +717 1266 +737 914 +103 695 +906 1516 +454 516 +696 899 +43 921 +613 781 +325 858 +655 1647 +72 601 +143 707 +293 1064 +13 310 +610 1021 +975 1576 +185 1017 +983 1261 +197 286 +68 472 +997 1630 +197 1191 +11 58 +804 1741 +364 519 +977 1124 +557 1184 +727 1681 +652 918 +928 1838 +675 1074 +551 976 +320 1244 +675 1477 +962 1898 +843 1490 +449 640 diff --git a/geom_bottleneck/tests/data/test_847_B b/geom_bottleneck/tests/data/test_847_B new file mode 100644 index 0000000..de6f45a --- /dev/null +++ b/geom_bottleneck/tests/data/test_847_B @@ -0,0 +1,50 @@ +198 500 +390 1022 +911 1544 +842 1778 +213 793 +173 1093 +61 455 +340 1005 +905 1418 +814 1236 +476 518 +133 382 +291 1249 +350 359 +967 1585 +441 810 +324 836 +769 1325 +828 1770 +758 1471 +9 499 +649 882 +418 1135 +28 97 +703 1400 +316 535 +799 1286 +16 348 +323 536 +113 864 +248 745 +468 597 +689 1618 +278 1208 +978 1589 +339 402 +232 442 +236 928 +856 1570 +709 1560 +34 260 +810 1365 +787 1781 +675 1043 +800 1255 +479 1118 +363 592 +97 729 +929 1430 +860 1219 diff --git a/geom_bottleneck/tests/data/test_848_A b/geom_bottleneck/tests/data/test_848_A new file mode 100644 index 0000000..e9e603b --- /dev/null +++ b/geom_bottleneck/tests/data/test_848_A @@ -0,0 +1,50 @@ +697 1454 +137 892 +466 950 +881 1230 +539 1162 +247 1065 +859 1032 +861 1215 +8 142 +772 1757 +458 1102 +382 730 +166 1086 +606 1008 +74 82 +967 1701 +562 1019 +648 764 +759 1745 +483 1208 +501 808 +942 1717 +569 888 +686 1292 +68 796 +504 1268 +655 1529 +335 451 +139 339 +709 1570 +238 542 +999 1912 +904 1545 +735 1386 +265 909 +935 1749 +745 787 +397 1083 +295 963 +12 523 +769 943 +998 1204 +531 1528 +596 1140 +173 1030 +810 1356 +728 750 +554 1185 +334 643 +879 1368 diff --git a/geom_bottleneck/tests/data/test_848_B b/geom_bottleneck/tests/data/test_848_B new file mode 100644 index 0000000..00005be --- /dev/null +++ b/geom_bottleneck/tests/data/test_848_B @@ -0,0 +1,50 @@ +885 1435 +500 978 +291 765 +353 1157 +527 1446 +734 904 +302 393 +199 918 +561 744 +96 349 +338 631 +503 1162 +286 589 +492 544 +826 1742 +924 1340 +707 877 +691 1487 +883 1530 +233 810 +73 252 +192 595 +271 491 +915 1426 +128 781 +906 1244 +268 308 +979 1349 +823 1647 +993 1177 +318 961 +619 1143 +857 1682 +92 110 +676 1202 +485 1468 +968 1064 +565 634 +49 1043 +487 1316 +668 1425 +552 1443 +589 655 +515 850 +858 1826 +514 779 +322 506 +422 996 +213 1013 +897 1711 diff --git a/geom_bottleneck/tests/data/test_849_A b/geom_bottleneck/tests/data/test_849_A new file mode 100644 index 0000000..7938a96 --- /dev/null +++ b/geom_bottleneck/tests/data/test_849_A @@ -0,0 +1,50 @@ +785 1228 +858 997 +734 1553 +888 1700 +553 1433 +352 385 +851 1468 +803 950 +358 715 +376 1290 +419 784 +38 689 +504 1285 +250 768 +344 1015 +295 1063 +501 1219 +995 1383 +781 1320 +260 1154 +290 942 +683 918 +623 1468 +74 654 +742 1201 +919 974 +718 1316 +591 821 +864 1035 +591 951 +922 1553 +751 1468 +57 832 +809 1103 +243 322 +605 919 +947 1101 +7 1003 +655 1586 +737 1610 +537 935 +185 455 +466 834 +160 599 +386 1035 +381 448 +841 1005 +898 1693 +493 729 +506 685 diff --git a/geom_bottleneck/tests/data/test_849_B b/geom_bottleneck/tests/data/test_849_B new file mode 100644 index 0000000..21da75d --- /dev/null +++ b/geom_bottleneck/tests/data/test_849_B @@ -0,0 +1,50 @@ +87 1055 +578 1265 +657 1071 +939 1551 +679 1032 +768 1665 +668 1163 +689 1159 +229 1083 +358 1158 +515 595 +972 1301 +764 1428 +551 1533 +770 929 +104 172 +948 1359 +48 854 +510 995 +914 1735 +228 440 +854 1064 +351 908 +664 1290 +919 1050 +882 1794 +472 819 +826 1133 +279 944 +363 1081 +296 934 +227 749 +172 931 +583 1524 +409 848 +284 804 +436 1098 +96 768 +632 646 +832 1167 +862 1470 +544 1519 +889 1030 +422 1414 +948 1105 +967 1273 +552 589 +986 1793 +52 252 +430 864 diff --git a/geom_bottleneck/tests/data/test_850_A b/geom_bottleneck/tests/data/test_850_A new file mode 100644 index 0000000..dfb2165 --- /dev/null +++ b/geom_bottleneck/tests/data/test_850_A @@ -0,0 +1,50 @@ +819 907 +322 836 +10 262 +950 1844 +280 419 +724 1489 +982 1737 +183 305 +393 1066 +958 1033 +328 554 +609 1374 +512 835 +563 1444 +671 972 +161 838 +631 851 +867 1362 +995 1134 +990 1841 +479 839 +439 502 +408 917 +879 1633 +725 863 +271 614 +757 1203 +70 980 +745 841 +739 1679 +269 934 +926 1412 +977 1200 +532 1251 +607 708 +524 726 +737 983 +700 1200 +715 1247 +301 596 +136 869 +290 397 +88 764 +250 945 +0 378 +595 1513 +612 874 +706 757 +353 712 +509 953 diff --git a/geom_bottleneck/tests/data/test_850_B b/geom_bottleneck/tests/data/test_850_B new file mode 100644 index 0000000..573788d --- /dev/null +++ b/geom_bottleneck/tests/data/test_850_B @@ -0,0 +1,50 @@ +602 1008 +42 926 +253 1183 +404 631 +779 1700 +698 1638 +92 1004 +296 370 +204 378 +225 593 +685 1259 +982 1447 +544 951 +682 1653 +449 1092 +664 1035 +856 1428 +658 1320 +615 1113 +83 285 +276 745 +297 363 +590 732 +547 999 +440 901 +337 830 +492 595 +487 1018 +159 1115 +853 1350 +139 377 +9 573 +47 505 +187 480 +374 510 +831 1626 +948 1484 +450 1028 +840 1390 +132 288 +472 1025 +74 260 +281 518 +95 248 +699 735 +275 1183 +802 971 +119 1091 +709 1224 +397 855 diff --git a/geom_bottleneck/tests/data/test_851_A b/geom_bottleneck/tests/data/test_851_A new file mode 100644 index 0000000..0a2f88e --- /dev/null +++ b/geom_bottleneck/tests/data/test_851_A @@ -0,0 +1,50 @@ +390 859 +367 1332 +230 1179 +734 1289 +67 554 +186 319 +787 841 +516 1218 +616 1597 +551 1223 +669 862 +265 888 +24 428 +841 1616 +816 1058 +922 1460 +749 1311 +734 1658 +581 973 +780 1708 +99 1091 +851 1503 +161 1118 +944 1804 +456 458 +395 1163 +880 1842 +850 1397 +359 461 +996 1098 +337 1164 +975 994 +512 816 +436 648 +42 59 +586 841 +48 65 +352 821 +58 171 +870 1085 +639 763 +415 1274 +549 913 +37 47 +820 1311 +120 854 +924 1272 +325 800 +483 888 +167 512 diff --git a/geom_bottleneck/tests/data/test_851_B b/geom_bottleneck/tests/data/test_851_B new file mode 100644 index 0000000..8e4b97e --- /dev/null +++ b/geom_bottleneck/tests/data/test_851_B @@ -0,0 +1,50 @@ +173 900 +214 742 +715 941 +288 723 +561 1288 +482 789 +555 1396 +244 1162 +24 229 +897 1127 +809 1700 +785 1558 +76 361 +453 827 +61 728 +600 986 +237 887 +720 1191 +834 1643 +576 1344 +764 1307 +417 1377 +780 1174 +187 235 +776 1010 +952 970 +377 1184 +454 979 +758 970 +330 1179 +364 1105 +101 909 +481 692 +579 1234 +623 1088 +425 464 +360 503 +534 882 +363 1011 +973 1732 +413 504 +171 514 +89 282 +430 1044 +531 610 +713 873 +737 1131 +807 1603 +584 1034 +887 1189 diff --git a/geom_bottleneck/tests/data/test_852_A b/geom_bottleneck/tests/data/test_852_A new file mode 100644 index 0000000..3d8f706 --- /dev/null +++ b/geom_bottleneck/tests/data/test_852_A @@ -0,0 +1,50 @@ +473 535 +32 734 +940 1633 +31 264 +217 284 +963 1618 +780 1453 +436 606 +958 1899 +509 1436 +1000 1824 +793 889 +667 1236 +647 1383 +588 1280 +682 1431 +617 765 +740 799 +640 1082 +724 1466 +540 1456 +772 1324 +551 1437 +270 1096 +709 1110 +317 876 +6 185 +612 686 +220 1032 +55 414 +272 669 +233 973 +264 825 +58 779 +92 330 +837 910 +106 237 +980 1316 +806 1161 +433 1270 +304 900 +569 882 +459 563 +991 1221 +33 686 +228 429 +527 542 +911 1456 +395 938 +825 1625 diff --git a/geom_bottleneck/tests/data/test_852_B b/geom_bottleneck/tests/data/test_852_B new file mode 100644 index 0000000..9de826f --- /dev/null +++ b/geom_bottleneck/tests/data/test_852_B @@ -0,0 +1,50 @@ +380 777 +698 1291 +826 1366 +108 741 +88 586 +50 631 +333 860 +51 355 +746 1232 +864 1129 +312 868 +514 591 +818 940 +561 1106 +997 1618 +986 1648 +417 1273 +544 1325 +343 1332 +852 1788 +740 1072 +890 957 +880 1540 +110 1072 +969 1706 +964 1771 +366 1347 +542 631 +863 1294 +216 864 +766 1148 +436 1431 +227 989 +694 786 +216 801 +119 946 +607 1270 +300 1178 +338 572 +374 509 +233 934 +531 542 +174 504 +521 738 +837 1202 +231 528 +595 1041 +530 1474 +218 852 +874 1675 diff --git a/geom_bottleneck/tests/data/test_853_A b/geom_bottleneck/tests/data/test_853_A new file mode 100644 index 0000000..bcf5afe --- /dev/null +++ b/geom_bottleneck/tests/data/test_853_A @@ -0,0 +1,50 @@ +200 886 +263 814 +456 853 +495 694 +864 1233 +80 743 +147 356 +164 450 +250 1230 +759 792 +417 1228 +572 1002 +854 1634 +806 1057 +522 1196 +684 1295 +999 1547 +301 1014 +772 1685 +816 923 +820 876 +118 348 +340 849 +686 824 +874 1610 +510 1503 +602 1309 +677 1497 +146 1008 +853 1484 +729 1333 +617 1097 +511 935 +143 938 +485 552 +433 980 +859 1077 +3 717 +176 1136 +436 1213 +163 418 +505 889 +303 689 +837 1225 +296 345 +814 1699 +603 1524 +679 1224 +729 1714 +760 953 diff --git a/geom_bottleneck/tests/data/test_853_B b/geom_bottleneck/tests/data/test_853_B new file mode 100644 index 0000000..d294f05 --- /dev/null +++ b/geom_bottleneck/tests/data/test_853_B @@ -0,0 +1,50 @@ +223 899 +821 1752 +179 260 +757 1350 +661 1211 +397 1004 +114 557 +579 1379 +752 1531 +292 818 +459 580 +715 1007 +849 1067 +495 1197 +803 991 +588 1569 +362 1316 +38 961 +899 1762 +325 906 +411 1364 +320 1221 +301 674 +811 1126 +464 1441 +220 1130 +514 784 +196 240 +946 1543 +614 928 +610 626 +628 1059 +576 829 +363 1272 +338 888 +470 497 +767 824 +578 645 +136 573 +563 731 +794 1510 +466 1243 +341 1080 +34 787 +901 1260 +339 1068 +406 746 +135 590 +507 1272 +705 756 diff --git a/geom_bottleneck/tests/data/test_854_A b/geom_bottleneck/tests/data/test_854_A new file mode 100644 index 0000000..4765953 --- /dev/null +++ b/geom_bottleneck/tests/data/test_854_A @@ -0,0 +1,50 @@ +670 1518 +858 1578 +59 559 +503 768 +14 876 +830 858 +978 1670 +648 1003 +620 1028 +522 809 +678 1574 +303 1157 +238 748 +886 987 +445 1100 +994 1772 +50 602 +134 315 +885 1274 +862 1737 +369 1231 +199 594 +611 1387 +517 1513 +731 865 +357 1222 +137 822 +894 1389 +839 1547 +962 1432 +170 512 +596 907 +480 545 +416 889 +311 1213 +897 1057 +394 1075 +943 1054 +342 1014 +137 742 +163 843 +655 763 +642 1182 +753 1458 +200 958 +289 311 +726 808 +614 1330 +796 1506 +292 555 diff --git a/geom_bottleneck/tests/data/test_854_B b/geom_bottleneck/tests/data/test_854_B new file mode 100644 index 0000000..aa949eb --- /dev/null +++ b/geom_bottleneck/tests/data/test_854_B @@ -0,0 +1,50 @@ +232 702 +892 1789 +441 1152 +710 975 +908 1187 +315 530 +255 334 +502 1485 +820 1718 +531 1002 +694 1032 +183 594 +924 1037 +948 1015 +465 906 +854 1761 +257 924 +588 1298 +382 1070 +315 646 +68 997 +924 1788 +927 1813 +522 1496 +667 1585 +884 1720 +373 1104 +140 1087 +988 1426 +690 796 +538 1095 +458 489 +685 805 +554 1389 +708 1480 +155 566 +704 891 +194 356 +607 1330 +512 725 +343 985 +660 1310 +117 1001 +454 1189 +554 1122 +722 1493 +805 1093 +60 419 +403 1277 +847 1750 diff --git a/geom_bottleneck/tests/data/test_855_A b/geom_bottleneck/tests/data/test_855_A new file mode 100644 index 0000000..ab7ec0b --- /dev/null +++ b/geom_bottleneck/tests/data/test_855_A @@ -0,0 +1,50 @@ +614 654 +663 1260 +449 1202 +762 985 +173 235 +219 556 +230 1224 +569 739 +65 145 +814 1671 +395 1280 +224 1211 +349 1209 +628 1611 +680 1532 +644 1398 +971 1611 +574 1353 +832 1740 +866 1082 +822 1654 +786 1770 +200 1071 +709 1343 +955 1924 +78 546 +168 872 +251 735 +505 1392 +719 799 +321 327 +823 1682 +327 788 +85 640 +423 1306 +581 665 +476 665 +257 926 +305 600 +828 1419 +957 1645 +22 783 +760 1281 +890 1141 +756 1272 +852 1339 +162 1155 +661 1360 +328 597 +81 549 diff --git a/geom_bottleneck/tests/data/test_855_B b/geom_bottleneck/tests/data/test_855_B new file mode 100644 index 0000000..be6ff94 --- /dev/null +++ b/geom_bottleneck/tests/data/test_855_B @@ -0,0 +1,50 @@ +758 1131 +201 805 +622 704 +457 770 +211 1153 +604 1593 +658 1229 +845 1733 +3 55 +813 1682 +926 1122 +87 399 +415 1287 +943 1357 +538 884 +39 447 +678 1201 +469 977 +445 1406 +931 992 +137 843 +914 1789 +736 1382 +933 1376 +426 1190 +332 715 +385 1226 +727 1493 +972 1306 +674 1674 +801 1277 +542 1301 +591 1067 +318 1136 +90 552 +168 232 +814 1715 +860 1249 +104 353 +841 1674 +775 1615 +517 693 +103 261 +472 517 +56 570 +767 1433 +839 1303 +683 1605 +311 700 +89 256 diff --git a/geom_bottleneck/tests/data/test_856_A b/geom_bottleneck/tests/data/test_856_A new file mode 100644 index 0000000..3cbfae3 --- /dev/null +++ b/geom_bottleneck/tests/data/test_856_A @@ -0,0 +1,50 @@ +719 1457 +209 663 +890 1735 +774 1570 +582 935 +231 1051 +723 1681 +341 1197 +4 150 +30 263 +38 984 +950 1487 +523 609 +453 854 +956 1422 +180 436 +690 966 +848 1237 +972 1095 +120 843 +523 1438 +49 182 +294 622 +586 1385 +750 786 +856 1407 +327 1270 +655 957 +373 1358 +372 785 +727 1497 +308 567 +784 1046 +315 913 +862 1742 +699 1337 +24 662 +407 455 +24 393 +913 1501 +13 1005 +709 1107 +264 1079 +107 781 +275 805 +164 179 +445 1355 +907 1785 +571 629 +953 1080 diff --git a/geom_bottleneck/tests/data/test_856_B b/geom_bottleneck/tests/data/test_856_B new file mode 100644 index 0000000..ec34ae9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_856_B @@ -0,0 +1,50 @@ +724 1643 +458 1388 +638 1303 +431 1405 +710 861 +659 723 +714 1351 +402 1186 +730 1584 +304 788 +845 850 +331 451 +421 1121 +821 1257 +2 923 +246 1167 +776 1109 +307 963 +553 1262 +841 1061 +27 290 +507 1297 +471 935 +583 1176 +781 955 +286 703 +178 303 +674 1372 +942 968 +521 1497 +6 593 +198 375 +263 1085 +486 1143 +807 1093 +17 795 +921 1559 +577 1316 +45 282 +670 1319 +228 400 +480 1047 +477 1308 +971 1055 +336 396 +731 941 +995 1354 +535 1309 +648 1642 +441 1432 diff --git a/geom_bottleneck/tests/data/test_857_A b/geom_bottleneck/tests/data/test_857_A new file mode 100644 index 0000000..6bbbf0b --- /dev/null +++ b/geom_bottleneck/tests/data/test_857_A @@ -0,0 +1,50 @@ +155 1103 +527 601 +613 714 +27 82 +288 1267 +522 713 +839 925 +554 1132 +148 255 +692 1319 +216 257 +11 251 +199 862 +371 724 +728 1561 +314 918 +452 540 +30 958 +745 1698 +434 1341 +469 1469 +913 1715 +599 1267 +260 953 +182 511 +504 1442 +597 1080 +300 888 +459 1000 +563 1521 +563 1468 +760 1702 +8 519 +393 910 +108 255 +375 1168 +344 1257 +563 1052 +813 1139 +999 1599 +175 785 +847 882 +825 1567 +977 1567 +218 847 +921 1150 +888 1280 +395 761 +495 1444 +195 1091 diff --git a/geom_bottleneck/tests/data/test_857_B b/geom_bottleneck/tests/data/test_857_B new file mode 100644 index 0000000..2d0ac7d --- /dev/null +++ b/geom_bottleneck/tests/data/test_857_B @@ -0,0 +1,50 @@ +781 853 +693 1641 +405 573 +301 1124 +303 1182 +839 1546 +597 1040 +56 318 +13 902 +667 878 +555 979 +486 1277 +647 782 +602 1195 +218 288 +59 487 +581 822 +703 842 +123 587 +173 609 +841 975 +554 641 +828 1660 +872 1486 +511 1069 +454 942 +933 1266 +416 643 +59 582 +278 354 +687 901 +1 930 +473 917 +604 950 +122 639 +126 987 +105 1046 +705 1298 +749 1143 +394 417 +15 16 +356 751 +955 1065 +599 813 +881 1008 +984 1857 +531 1371 +354 668 +747 1406 +738 1675 diff --git a/geom_bottleneck/tests/data/test_858_A b/geom_bottleneck/tests/data/test_858_A new file mode 100644 index 0000000..1d3b9ad --- /dev/null +++ b/geom_bottleneck/tests/data/test_858_A @@ -0,0 +1,50 @@ +997 1050 +873 1795 +636 907 +851 1847 +38 669 +941 1873 +706 814 +776 882 +723 1329 +578 1461 +697 727 +369 1010 +426 1101 +552 720 +196 1177 +346 515 +701 1633 +399 514 +937 1425 +566 1446 +605 962 +260 696 +675 1180 +359 672 +192 355 +919 1323 +38 663 +688 1298 +239 504 +349 402 +842 1446 +831 1046 +442 770 +78 160 +351 1088 +577 1360 +29 290 +290 507 +467 1363 +1000 1796 +58 709 +428 615 +397 470 +628 1481 +874 1036 +32 84 +349 524 +244 821 +552 654 +762 1121 diff --git a/geom_bottleneck/tests/data/test_858_B b/geom_bottleneck/tests/data/test_858_B new file mode 100644 index 0000000..a982114 --- /dev/null +++ b/geom_bottleneck/tests/data/test_858_B @@ -0,0 +1,50 @@ +788 1123 +394 925 +228 647 +718 993 +774 961 +984 1106 +712 1001 +607 1594 +627 967 +971 1710 +166 510 +25 544 +985 1358 +205 1127 +844 1792 +510 518 +479 517 +828 1454 +61 1061 +647 1410 +727 1585 +94 479 +768 922 +162 895 +735 754 +951 1358 +747 1267 +933 980 +319 1007 +183 1000 +521 778 +129 375 +235 1221 +392 808 +872 1465 +380 794 +915 1896 +242 621 +908 1118 +341 593 +393 1304 +469 1169 +733 1077 +979 1477 +786 1583 +923 1650 +867 896 +714 1479 +860 907 +310 461 diff --git a/geom_bottleneck/tests/data/test_859_A b/geom_bottleneck/tests/data/test_859_A new file mode 100644 index 0000000..24bd533 --- /dev/null +++ b/geom_bottleneck/tests/data/test_859_A @@ -0,0 +1,50 @@ +305 883 +599 1497 +157 582 +832 1048 +62 403 +263 1151 +898 962 +258 428 +309 729 +626 1318 +279 415 +635 1029 +898 974 +733 1187 +661 1430 +243 1046 +498 865 +70 189 +834 1801 +820 1278 +972 1686 +255 826 +761 1694 +383 593 +326 491 +442 684 +523 1381 +229 1215 +402 551 +514 1133 +493 677 +415 996 +301 389 +586 1554 +21 956 +861 1058 +625 1082 +599 1208 +672 1147 +335 1229 +119 282 +114 772 +104 250 +236 977 +804 1446 +310 1229 +727 1176 +660 1484 +650 1188 +782 1781 diff --git a/geom_bottleneck/tests/data/test_859_B b/geom_bottleneck/tests/data/test_859_B new file mode 100644 index 0000000..ac8c3b7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_859_B @@ -0,0 +1,50 @@ +676 874 +562 574 +260 841 +590 1249 +517 1185 +85 807 +447 909 +50 185 +961 1522 +825 1594 +159 879 +105 1015 +767 1661 +828 1827 +341 355 +104 716 +1000 1615 +135 156 +580 1099 +898 1322 +797 1442 +145 272 +397 427 +289 717 +147 535 +543 1442 +491 761 +315 888 +943 1377 +941 1582 +703 1561 +873 1055 +981 1494 +933 989 +54 194 +842 1269 +901 1394 +346 1035 +858 1198 +864 1606 +122 873 +587 936 +705 1286 +176 754 +690 1066 +950 1037 +346 781 +474 1279 +180 1172 +957 1613 diff --git a/geom_bottleneck/tests/data/test_860_A b/geom_bottleneck/tests/data/test_860_A new file mode 100644 index 0000000..bef7e26 --- /dev/null +++ b/geom_bottleneck/tests/data/test_860_A @@ -0,0 +1,100 @@ +286 883 +351 366 +209 489 +760 1212 +838 1652 +595 660 +603 1448 +39 243 +601 832 +245 589 +258 1170 +586 1359 +639 1499 +233 1078 +722 781 +998 1722 +867 952 +85 635 +625 1224 +545 1458 +103 885 +227 270 +397 911 +28 776 +893 1191 +600 929 +554 1437 +510 611 +768 769 +396 540 +753 1168 +508 915 +609 874 +804 1177 +777 1596 +547 844 +63 286 +979 1153 +672 1523 +620 1414 +189 629 +841 889 +329 1319 +234 432 +267 1009 +441 1379 +954 1894 +908 1341 +313 1305 +671 1250 +296 992 +518 1355 +596 905 +169 366 +333 524 +73 352 +670 1216 +459 560 +945 1546 +279 561 +27 773 +701 1354 +768 1673 +778 829 +698 1194 +680 1054 +138 954 +957 1332 +873 1110 +215 605 +997 1772 +785 935 +985 1406 +999 1441 +849 924 +547 721 +80 977 +181 321 +44 87 +561 763 +448 1065 +694 711 +539 904 +522 1201 +951 1434 +467 766 +261 1178 +900 1180 +440 1158 +134 1038 +375 383 +383 722 +974 1675 +105 380 +42 94 +855 877 +176 220 +379 952 +415 1095 +273 1064 diff --git a/geom_bottleneck/tests/data/test_860_B b/geom_bottleneck/tests/data/test_860_B new file mode 100644 index 0000000..36f7915 --- /dev/null +++ b/geom_bottleneck/tests/data/test_860_B @@ -0,0 +1,100 @@ +54 531 +338 1142 +464 1266 +979 1648 +714 782 +478 592 +490 1025 +958 1817 +518 1232 +259 955 +628 1122 +47 423 +831 1649 +30 971 +833 1292 +304 784 +824 1612 +267 1156 +839 926 +190 200 +817 1817 +876 1083 +654 1410 +665 1309 +226 671 +584 640 +234 1111 +806 1282 +227 642 +80 717 +608 1151 +60 808 +216 928 +177 644 +218 1177 +690 1266 +450 1313 +309 861 +979 1696 +210 1066 +461 1403 +317 680 +313 722 +112 770 +166 746 +275 515 +566 1020 +575 931 +483 851 +807 1561 +137 467 +539 1148 +539 1511 +323 563 +633 1434 +287 1046 +260 320 +785 1657 +665 1299 +123 1038 +731 1330 +844 1161 +783 785 +212 619 +712 1288 +617 761 +367 381 +613 1128 +249 372 +977 1165 +202 504 +553 1006 +760 1241 +621 1168 +761 1372 +920 1579 +541 1430 +890 1618 +20 801 +495 809 +685 1544 +709 1130 +321 1130 +802 1219 +122 740 +660 1369 +283 810 +424 425 +475 580 +616 1579 +669 1244 +223 1000 +57 188 +365 1019 +775 1711 +451 512 +234 627 +741 1601 +526 1293 +911 1233 diff --git a/geom_bottleneck/tests/data/test_861_A b/geom_bottleneck/tests/data/test_861_A new file mode 100644 index 0000000..1058733 --- /dev/null +++ b/geom_bottleneck/tests/data/test_861_A @@ -0,0 +1,100 @@ +127 281 +555 671 +852 1188 +977 1877 +824 1400 +698 772 +759 1378 +901 1755 +445 1382 +653 1090 +781 1672 +314 1003 +826 861 +86 713 +880 1567 +253 886 +285 1117 +742 1603 +867 1483 +14 632 +845 1280 +649 1074 +322 897 +68 387 +618 679 +918 935 +89 1077 +586 1247 +52 917 +550 1169 +426 952 +535 860 +485 1229 +152 400 +241 1071 +77 181 +795 948 +942 1437 +728 811 +119 577 +433 921 +492 1054 +582 881 +813 1720 +40 497 +389 500 +542 570 +570 580 +672 953 +754 1221 +362 468 +707 1394 +146 927 +142 1098 +820 1494 +539 1194 +422 1194 +277 1109 +975 1238 +718 1181 +1 133 +887 1015 +961 1428 +758 1212 +48 554 +945 1432 +302 1165 +742 1046 +941 1415 +468 634 +964 1097 +220 232 +970 1602 +876 1222 +712 737 +131 471 +939 1209 +579 1496 +953 1937 +295 1269 +757 1470 +141 236 +649 712 +895 1621 +806 1653 +61 736 +695 948 +986 1051 +630 1053 +637 643 +951 1857 +991 1205 +982 1752 +395 549 +216 323 +803 1202 +976 1731 +866 1223 +540 1029 +786 805 diff --git a/geom_bottleneck/tests/data/test_861_B b/geom_bottleneck/tests/data/test_861_B new file mode 100644 index 0000000..a6a11d7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_861_B @@ -0,0 +1,100 @@ +517 1489 +251 612 +436 1287 +158 969 +181 653 +176 187 +494 1323 +174 1154 +896 926 +101 733 +416 984 +583 763 +161 512 +111 495 +991 1712 +827 854 +342 877 +13 212 +808 1594 +423 1182 +219 666 +195 233 +347 708 +979 1787 +758 1254 +414 1279 +421 563 +340 722 +209 552 +258 704 +776 1610 +672 972 +412 1195 +48 846 +946 1569 +844 1094 +891 1866 +430 925 +661 1317 +819 1214 +837 1824 +731 982 +14 53 +333 1086 +512 868 +789 1264 +15 313 +256 973 +678 1052 +259 1229 +969 1150 +602 1255 +302 1291 +257 1082 +756 1579 +103 110 +125 960 +368 1258 +183 1001 +559 1106 +447 944 +784 1446 +947 1735 +982 1775 +586 1368 +239 1171 +210 856 +94 1017 +138 1075 +59 657 +440 1015 +978 1530 +785 1259 +381 963 +463 1115 +785 1398 +0 147 +952 1432 +573 1345 +592 1443 +829 1357 +250 966 +948 1110 +848 1569 +251 904 +945 1606 +99 1025 +799 863 +690 1141 +21 445 +860 1338 +43 130 +148 853 +261 979 +177 324 +400 1084 +277 1098 +888 1223 +948 1629 +573 1197 diff --git a/geom_bottleneck/tests/data/test_862_A b/geom_bottleneck/tests/data/test_862_A new file mode 100644 index 0000000..d37d3ef --- /dev/null +++ b/geom_bottleneck/tests/data/test_862_A @@ -0,0 +1,100 @@ +102 300 +352 359 +521 683 +515 1057 +914 1269 +100 498 +589 1272 +77 129 +417 487 +579 1450 +101 780 +36 807 +588 1009 +556 1004 +875 1497 +488 1097 +842 1462 +221 1204 +328 518 +186 828 +870 992 +309 931 +56 558 +780 1456 +164 1070 +472 934 +412 1210 +842 872 +575 1445 +755 1457 +250 571 +426 1223 +367 1073 +648 749 +303 1009 +147 491 +118 1002 +320 398 +473 1445 +817 1679 +35 369 +170 947 +953 1168 +169 278 +307 547 +260 507 +901 1598 +116 381 +241 765 +98 970 +216 1171 +746 1175 +605 1578 +601 1019 +598 967 +316 723 +838 1609 +78 357 +563 893 +545 1089 +813 1743 +981 1110 +454 514 +613 799 +742 1712 +620 764 +464 702 +643 1186 +674 1638 +418 669 +310 1147 +325 1015 +983 1678 +625 951 +407 750 +973 1792 +552 1354 +391 1120 +463 829 +716 1387 +6 403 +177 756 +505 708 +219 471 +187 714 +852 1248 +913 1610 +971 1722 +943 1812 +452 726 +509 624 +178 767 +699 1085 +771 1634 +140 251 +646 822 +456 754 +263 1179 +430 540 +96 810 diff --git a/geom_bottleneck/tests/data/test_862_B b/geom_bottleneck/tests/data/test_862_B new file mode 100644 index 0000000..a18168e --- /dev/null +++ b/geom_bottleneck/tests/data/test_862_B @@ -0,0 +1,100 @@ +123 340 +973 1465 +652 1288 +89 1046 +165 777 +390 986 +139 396 +378 927 +426 1167 +32 223 +259 1177 +771 1250 +494 1143 +528 759 +515 912 +319 992 +134 169 +851 1595 +676 816 +111 304 +35 872 +58 456 +522 1458 +392 1221 +112 1035 +471 1214 +495 580 +339 1276 +143 268 +12 788 +723 1470 +745 1088 +664 1449 +442 463 +268 1026 +289 910 +141 162 +411 1163 +626 1174 +743 1627 +261 1211 +950 1869 +214 1114 +995 1678 +586 960 +754 1098 +363 1013 +808 1761 +58 601 +267 1109 +571 1518 +639 1092 +565 785 +256 537 +490 509 +467 1036 +931 1450 +891 1584 +701 1280 +939 1642 +416 834 +72 964 +530 553 +224 331 +234 683 +722 1338 +190 496 +282 1201 +174 1133 +348 690 +799 1606 +891 1085 +408 1263 +204 522 +867 1729 +856 1102 +175 589 +827 1559 +880 1479 +558 720 +810 1534 +954 1315 +501 901 +675 1031 +721 1091 +265 1103 +670 1553 +587 614 +712 735 +713 1167 +565 714 +67 594 +928 1456 +375 449 +893 1022 +319 500 +101 783 +637 1572 +26 620 +107 845 diff --git a/geom_bottleneck/tests/data/test_863_A b/geom_bottleneck/tests/data/test_863_A new file mode 100644 index 0000000..011d452 --- /dev/null +++ b/geom_bottleneck/tests/data/test_863_A @@ -0,0 +1,100 @@ +596 1590 +388 1099 +928 1387 +473 1128 +595 925 +188 767 +40 804 +542 1405 +661 1245 +579 666 +526 616 +235 378 +379 477 +257 781 +910 1279 +882 1387 +562 1374 +499 603 +342 1317 +184 581 +315 1198 +987 1072 +696 1049 +498 1250 +782 1609 +771 1330 +203 354 +227 1171 +506 939 +360 1303 +969 1942 +772 850 +615 1079 +542 1186 +644 1583 +676 1131 +496 1300 +825 1120 +492 1332 +408 1051 +768 1110 +466 1044 +795 1594 +56 577 +529 1378 +899 1752 +943 1916 +509 780 +609 1175 +999 1928 +360 1164 +901 1764 +558 592 +665 752 +7 82 +919 1683 +772 1057 +211 928 +494 1347 +568 1412 +661 1649 +466 551 +75 498 +329 577 +143 636 +112 144 +217 221 +340 1208 +259 1177 +36 364 +63 299 +74 513 +67 186 +201 672 +508 1253 +96 129 +301 991 +925 1873 +340 1050 +237 672 +445 816 +836 1594 +649 1458 +227 1152 +880 933 +209 939 +822 890 +760 1131 +274 1096 +706 1604 +33 589 +552 1228 +69 615 +794 914 +305 423 +956 1053 +914 1411 +421 1282 +261 1067 +967 1966 diff --git a/geom_bottleneck/tests/data/test_863_B b/geom_bottleneck/tests/data/test_863_B new file mode 100644 index 0000000..d9daaae --- /dev/null +++ b/geom_bottleneck/tests/data/test_863_B @@ -0,0 +1,100 @@ +986 1775 +226 644 +68 818 +739 1449 +962 1111 +850 1460 +306 1206 +901 1742 +171 513 +83 396 +776 1243 +646 948 +693 1431 +219 627 +247 813 +243 1070 +452 1130 +315 1227 +16 808 +977 1035 +454 583 +566 1521 +437 507 +484 1294 +494 506 +752 1161 +152 1081 +566 1413 +141 331 +706 1243 +258 849 +729 1447 +988 1985 +774 1653 +972 1907 +510 589 +402 905 +981 1420 +688 1112 +291 1016 +975 1800 +240 879 +643 1264 +448 458 +707 1075 +157 654 +51 635 +639 677 +688 1518 +99 198 +914 1734 +445 1036 +897 941 +504 1318 +192 479 +287 1003 +624 1444 +815 961 +956 1436 +445 656 +52 574 +787 987 +994 1875 +354 1317 +189 1072 +264 418 +645 1086 +319 942 +202 676 +841 1204 +695 1354 +289 748 +631 649 +894 1632 +909 1782 +794 1065 +0 430 +4 209 +286 1174 +327 1132 +342 641 +455 1256 +295 819 +749 1381 +811 1469 +69 514 +54 1044 +262 1176 +418 854 +819 1524 +861 1796 +242 996 +990 1068 +19 519 +831 1475 +782 1334 +748 986 +869 1569 +556 1535 +685 1411 diff --git a/geom_bottleneck/tests/data/test_864_A b/geom_bottleneck/tests/data/test_864_A new file mode 100644 index 0000000..f82ed50 --- /dev/null +++ b/geom_bottleneck/tests/data/test_864_A @@ -0,0 +1,100 @@ +698 789 +78 479 +383 639 +731 1686 +306 787 +614 696 +719 1184 +404 852 +317 776 +91 656 +126 806 +19 775 +976 1941 +876 1716 +501 1160 +851 1078 +547 641 +187 372 +654 1080 +745 1229 +151 577 +219 600 +318 1253 +317 362 +720 1487 +147 720 +900 1717 +402 1317 +187 1156 +573 1301 +173 479 +613 889 +956 1747 +583 1203 +478 1031 +498 1031 +394 1197 +118 842 +204 246 +562 1361 +340 835 +749 871 +847 1637 +776 1643 +731 1242 +302 741 +312 369 +903 1276 +814 1418 +205 336 +485 1196 +897 1667 +442 562 +319 1253 +56 469 +674 923 +51 642 +487 739 +32 759 +631 1091 +219 293 +381 419 +179 761 +935 1358 +408 636 +355 831 +677 1286 +98 306 +893 922 +275 1275 +350 923 +583 1490 +562 1545 +213 634 +538 870 +270 301 +536 1323 +663 1279 +286 325 +1 331 +927 1472 +998 1673 +404 484 +368 1234 +650 803 +238 845 +956 1851 +278 1002 +767 1110 +176 190 +808 841 +910 1693 +242 1010 +523 1133 +364 543 +915 1652 +401 1326 +787 1236 +250 985 +884 1153 diff --git a/geom_bottleneck/tests/data/test_864_B b/geom_bottleneck/tests/data/test_864_B new file mode 100644 index 0000000..0b56a95 --- /dev/null +++ b/geom_bottleneck/tests/data/test_864_B @@ -0,0 +1,100 @@ +11 893 +131 282 +718 1633 +802 822 +342 857 +797 1757 +703 704 +296 1271 +439 868 +143 1065 +860 1380 +62 101 +536 1375 +526 533 +482 1222 +338 1199 +665 770 +85 713 +829 930 +366 710 +300 757 +561 1556 +904 905 +711 1575 +30 766 +710 898 +476 897 +592 1142 +731 1153 +799 1176 +31 769 +570 718 +620 1438 +718 1198 +938 1650 +31 296 +342 929 +953 1681 +650 896 +868 1404 +800 1680 +776 1229 +612 1330 +362 1338 +958 1066 +269 978 +981 1035 +160 322 +673 795 +150 1117 +564 1490 +737 1617 +492 1040 +599 954 +261 1094 +691 734 +318 1231 +157 546 +329 916 +982 1956 +211 719 +665 1381 +911 1689 +368 425 +459 749 +706 1410 +103 539 +134 476 +209 341 +469 589 +350 462 +789 1113 +945 1335 +936 1272 +886 1823 +958 1528 +96 492 +532 1243 +119 577 +322 367 +518 1434 +692 839 +509 1104 +668 1357 +139 1127 +258 300 +307 382 +156 403 +171 582 +411 701 +794 944 +937 1602 +6 60 +593 929 +977 1052 +221 1209 +603 832 +881 1176 +394 710 +660 1260 diff --git a/geom_bottleneck/tests/data/test_865_A b/geom_bottleneck/tests/data/test_865_A new file mode 100644 index 0000000..7453ead --- /dev/null +++ b/geom_bottleneck/tests/data/test_865_A @@ -0,0 +1,100 @@ +680 1206 +916 1092 +447 722 +821 1233 +565 1508 +548 1163 +973 1156 +229 1196 +378 542 +334 619 +581 606 +171 644 +143 407 +857 1539 +129 337 +582 780 +378 441 +196 340 +619 746 +28 94 +294 590 +881 1520 +113 174 +1000 1989 +343 395 +633 1542 +348 988 +973 1914 +58 903 +510 767 +440 448 +876 1806 +932 1554 +367 917 +465 820 +359 1185 +793 820 +999 1064 +193 871 +409 1286 +224 631 +381 793 +650 1047 +493 524 +698 1162 +846 1083 +536 1456 +909 1650 +245 982 +714 1104 +867 1447 +709 1527 +831 859 +170 266 +31 541 +578 650 +960 1059 +147 741 +202 407 +110 136 +747 1087 +781 1489 +759 1738 +945 1542 +790 1588 +52 259 +290 1116 +561 1416 +200 740 +50 629 +907 1349 +312 708 +87 433 +33 920 +934 1278 +530 706 +760 879 +834 1301 +819 1372 +656 1622 +950 1152 +452 692 +426 798 +469 811 +158 554 +563 1532 +713 1332 +567 964 +111 921 +237 1102 +156 1100 +113 344 +553 1386 +880 982 +355 655 +81 959 +203 437 +848 1389 +7 377 +305 717 diff --git a/geom_bottleneck/tests/data/test_865_B b/geom_bottleneck/tests/data/test_865_B new file mode 100644 index 0000000..265e3bd --- /dev/null +++ b/geom_bottleneck/tests/data/test_865_B @@ -0,0 +1,100 @@ +121 979 +358 852 +219 696 +216 239 +200 737 +859 1771 +323 826 +192 1007 +129 389 +489 1130 +227 568 +806 1657 +613 1508 +626 1325 +643 1425 +905 1619 +123 372 +26 371 +949 1838 +399 1361 +516 652 +273 485 +346 753 +975 1839 +276 789 +824 893 +937 1262 +34 37 +444 993 +133 860 +190 421 +978 1903 +56 733 +421 756 +583 590 +133 371 +881 1309 +897 1347 +442 979 +700 941 +871 1095 +34 182 +206 603 +858 1533 +284 821 +241 1167 +623 989 +715 1664 +187 822 +970 1681 +26 153 +533 648 +406 873 +791 862 +217 983 +211 930 +781 1001 +973 1393 +204 845 +23 894 +11 772 +863 1663 +126 233 +306 835 +85 370 +802 1738 +526 1171 +429 1118 +697 1462 +196 512 +887 902 +7 401 +881 1262 +743 1392 +676 733 +527 1394 +911 1179 +816 1280 +513 1072 +842 1750 +942 1260 +841 1438 +86 704 +308 639 +478 1085 +56 220 +411 1045 +185 1141 +941 1695 +465 1360 +157 665 +19 599 +540 891 +832 1200 +408 1232 +540 1207 +881 1721 +496 691 +623 1295 +811 873 diff --git a/geom_bottleneck/tests/data/test_866_A b/geom_bottleneck/tests/data/test_866_A new file mode 100644 index 0000000..a05ad71 --- /dev/null +++ b/geom_bottleneck/tests/data/test_866_A @@ -0,0 +1,100 @@ +554 1091 +21 867 +633 899 +500 663 +971 975 +410 1235 +179 1036 +438 917 +434 678 +378 520 +747 1564 +39 131 +748 1408 +581 1266 +818 915 +527 1287 +452 998 +585 1061 +224 244 +554 1427 +859 1079 +613 1539 +522 738 +392 1170 +788 1437 +288 680 +370 1117 +476 1151 +826 1129 +41 551 +96 839 +480 1110 +909 1050 +59 1059 +549 801 +124 198 +991 1323 +122 1026 +573 1345 +701 1061 +40 265 +872 1116 +579 1464 +807 1198 +269 553 +376 786 +711 866 +864 1301 +716 1185 +366 775 +1000 1991 +970 1156 +921 1050 +599 1510 +49 593 +475 1394 +764 1704 +516 912 +721 805 +986 1006 +728 852 +789 1097 +459 597 +967 1276 +261 1126 +906 920 +466 1134 +419 467 +638 818 +243 738 +188 906 +434 1199 +821 892 +885 1241 +7 664 +963 1398 +576 1142 +84 385 +20 308 +845 1162 +79 730 +203 625 +412 1054 +553 898 +752 920 +640 1312 +169 706 +920 1586 +134 246 +352 619 +90 716 +197 616 +819 1101 +805 1686 +543 1178 +482 1411 +297 1259 +957 1763 +355 808 +591 1221 diff --git a/geom_bottleneck/tests/data/test_866_B b/geom_bottleneck/tests/data/test_866_B new file mode 100644 index 0000000..c3e0b3a --- /dev/null +++ b/geom_bottleneck/tests/data/test_866_B @@ -0,0 +1,100 @@ +573 1390 +68 742 +178 1172 +592 975 +294 453 +280 552 +750 1332 +947 1248 +972 1885 +868 942 +269 719 +457 944 +863 1391 +802 1524 +64 235 +161 495 +439 1397 +143 354 +974 1778 +239 643 +831 1814 +216 969 +515 1065 +334 1263 +504 1264 +950 1570 +558 976 +84 242 +125 745 +382 448 +602 1380 +98 211 +994 1767 +140 712 +694 1187 +523 901 +906 970 +65 850 +188 858 +787 1715 +836 1543 +356 1082 +9 932 +945 1142 +653 756 +934 1085 +526 1465 +636 1544 +711 1660 +63 607 +279 482 +716 768 +380 543 +210 885 +597 1476 +172 837 +542 1257 +465 557 +983 1339 +647 1098 +643 1101 +239 688 +658 1241 +448 595 +320 641 +622 673 +788 824 +2 645 +456 1068 +707 984 +334 1093 +81 601 +413 813 +311 345 +129 827 +253 556 +971 1376 +291 534 +846 1646 +61 699 +552 1406 +583 866 +285 635 +772 1351 +937 1014 +688 709 +425 906 +750 1220 +395 685 +93 392 +596 1460 +749 1123 +631 843 +100 311 +774 991 +873 1870 +297 422 +856 1311 +983 1053 +746 1722 diff --git a/geom_bottleneck/tests/data/test_867_A b/geom_bottleneck/tests/data/test_867_A new file mode 100644 index 0000000..0e5ca13 --- /dev/null +++ b/geom_bottleneck/tests/data/test_867_A @@ -0,0 +1,100 @@ +324 1024 +307 1299 +253 1161 +488 662 +711 1205 +481 510 +910 1280 +465 1426 +800 1294 +664 1348 +676 1342 +946 1581 +956 1482 +70 194 +312 636 +477 1373 +465 1242 +720 1446 +850 1798 +354 386 +657 998 +126 306 +800 1781 +695 1218 +69 522 +832 1255 +553 1007 +796 1602 +889 1204 +390 1048 +792 1754 +493 1394 +71 545 +200 996 +28 103 +705 1003 +315 489 +140 903 +161 296 +697 1682 +748 1663 +360 1052 +226 776 +18 564 +417 449 +234 350 +639 1585 +574 788 +862 1581 +950 1575 +268 532 +946 1194 +386 613 +782 1325 +494 1069 +792 846 +453 1409 +444 1022 +268 554 +319 792 +187 932 +491 1155 +93 253 +986 1147 +758 1167 +424 780 +194 891 +360 1218 +59 457 +625 1514 +618 919 +680 1182 +31 358 +544 744 +529 1135 +859 1346 +533 1132 +833 873 +583 733 +695 1156 +102 1023 +542 1132 +317 640 +883 1183 +696 1191 +603 1489 +492 1373 +935 1085 +235 620 +37 549 +802 1022 +211 508 +907 1146 +989 1239 +68 909 +367 919 +626 827 +770 1592 +413 414 +427 620 diff --git a/geom_bottleneck/tests/data/test_867_B b/geom_bottleneck/tests/data/test_867_B new file mode 100644 index 0000000..c8eb5e0 --- /dev/null +++ b/geom_bottleneck/tests/data/test_867_B @@ -0,0 +1,100 @@ +780 1730 +13 771 +347 670 +699 1353 +924 1139 +806 1496 +537 561 +756 1433 +987 1945 +689 1191 +123 972 +46 99 +468 961 +722 997 +675 1491 +626 1171 +315 1095 +582 741 +445 1083 +974 1633 +543 1308 +829 1343 +414 1038 +817 1254 +596 619 +94 438 +545 955 +832 1672 +0 240 +110 729 +444 1151 +331 1174 +684 765 +612 1448 +369 1181 +675 1243 +758 1008 +716 858 +618 931 +642 1279 +219 593 +650 751 +228 998 +40 93 +181 758 +372 658 +87 607 +190 1136 +990 1325 +232 991 +205 1111 +497 965 +767 1480 +896 1862 +777 1234 +790 1452 +734 1521 +457 1207 +934 979 +617 948 +217 767 +654 1122 +902 1565 +951 984 +250 644 +63 299 +726 1472 +406 1249 +749 777 +140 250 +235 1047 +118 1003 +728 833 +158 1021 +243 801 +112 330 +10 912 +629 796 +954 1471 +764 1267 +598 1299 +131 899 +103 405 +187 456 +985 1359 +228 599 +440 1326 +776 852 +156 847 +295 558 +453 786 +236 560 +948 1458 +599 1174 +482 869 +857 1110 +978 1947 +424 446 +699 1688 +886 1793 diff --git a/geom_bottleneck/tests/data/test_868_A b/geom_bottleneck/tests/data/test_868_A new file mode 100644 index 0000000..0a0fad2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_868_A @@ -0,0 +1,100 @@ +430 1257 +813 1021 +677 1089 +222 1147 +837 1410 +931 1488 +664 1192 +946 1885 +492 1036 +808 1524 +389 1210 +953 1056 +96 797 +818 1592 +900 1074 +63 516 +46 961 +999 1353 +797 1101 +343 1142 +355 459 +384 1358 +401 800 +354 1100 +661 1246 +76 437 +19 581 +385 760 +704 1218 +25 332 +406 1275 +838 1648 +57 335 +501 638 +826 1431 +682 1568 +803 1533 +894 1845 +38 580 +54 835 +448 507 +132 538 +226 1080 +307 489 +339 596 +334 1283 +573 891 +844 1119 +674 949 +998 1669 +226 599 +487 527 +401 1224 +785 1065 +270 710 +410 545 +981 1732 +602 704 +38 838 +145 646 +671 1128 +621 787 +782 1217 +932 1014 +935 1117 +923 1561 +79 253 +170 548 +343 937 +966 1919 +847 1290 +41 234 +683 926 +279 457 +243 957 +316 1240 +630 1492 +901 1691 +919 1022 +385 574 +902 1474 +640 1197 +805 973 +943 1173 +24 846 +139 140 +48 425 +124 1016 +880 1326 +175 275 +835 1142 +244 331 +770 969 +386 950 +391 886 +334 1284 +754 1503 +179 842 +955 1780 +330 436 diff --git a/geom_bottleneck/tests/data/test_868_B b/geom_bottleneck/tests/data/test_868_B new file mode 100644 index 0000000..00c87b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_868_B @@ -0,0 +1,100 @@ +166 1061 +527 1335 +325 949 +111 649 +488 697 +766 1222 +709 1440 +141 784 +700 939 +798 1136 +861 1837 +628 1376 +473 1366 +145 643 +194 363 +986 1365 +564 979 +870 1837 +451 928 +797 1196 +521 1453 +0 285 +191 1080 +846 1666 +337 494 +790 1644 +759 1570 +46 871 +886 966 +169 897 +55 627 +538 1463 +114 429 +787 827 +850 1806 +31 827 +482 1012 +120 693 +777 1353 +271 916 +15 717 +660 943 +265 446 +985 1045 +22 519 +715 1571 +604 1475 +141 983 +395 1392 +98 851 +179 766 +237 652 +794 1439 +275 451 +47 631 +183 1091 +500 989 +727 1263 +625 1578 +327 1057 +725 1166 +212 731 +699 1449 +471 472 +787 1014 +714 1402 +412 913 +326 1203 +239 592 +920 1395 +303 410 +197 853 +101 1007 +970 1893 +925 1655 +490 670 +158 428 +413 1207 +722 1712 +776 1727 +548 1012 +891 1253 +329 1285 +576 1098 +357 878 +713 1660 +165 726 +786 1231 +447 600 +103 478 +177 764 +386 1263 +307 327 +812 1500 +685 1462 +973 1935 +973 1024 +848 868 +897 1464 +696 1688 diff --git a/geom_bottleneck/tests/data/test_869_A b/geom_bottleneck/tests/data/test_869_A new file mode 100644 index 0000000..fa16527 --- /dev/null +++ b/geom_bottleneck/tests/data/test_869_A @@ -0,0 +1,100 @@ +723 777 +589 1331 +521 602 +976 1210 +302 783 +550 1430 +254 453 +580 1493 +870 1136 +765 1589 +178 699 +654 1093 +505 739 +285 572 +694 975 +4 681 +733 1644 +258 639 +575 1027 +628 756 +887 1885 +430 1393 +194 371 +57 230 +275 489 +269 458 +254 354 +227 1077 +837 1711 +737 1290 +315 1159 +440 791 +922 1280 +175 615 +137 448 +712 1488 +96 617 +815 1776 +280 540 +595 1107 +545 987 +914 1273 +418 919 +135 1053 +612 653 +194 901 +99 866 +689 1038 +273 789 +350 1046 +433 828 +679 1512 +611 1131 +344 1098 +86 1055 +791 1490 +717 1192 +900 1504 +165 1119 +47 512 +452 858 +290 447 +610 774 +451 1149 +693 809 +513 889 +313 771 +290 604 +419 990 +554 728 +726 1563 +860 1471 +671 767 +735 763 +615 1318 +792 1245 +403 1356 +624 1031 +875 1372 +780 1429 +692 1291 +549 655 +412 1158 +727 982 +780 986 +899 1741 +896 1193 +958 1531 +580 698 +23 296 +735 1275 +400 495 +411 1166 +128 630 +498 1178 +195 459 +829 1674 +678 1531 +329 785 +625 1441 diff --git a/geom_bottleneck/tests/data/test_869_B b/geom_bottleneck/tests/data/test_869_B new file mode 100644 index 0000000..7ffd8c9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_869_B @@ -0,0 +1,100 @@ +979 1349 +400 1004 +925 1748 +266 1261 +562 1050 +591 592 +63 630 +404 603 +971 1511 +352 619 +907 1852 +388 830 +8 145 +14 369 +247 938 +648 1230 +625 1083 +231 1003 +926 1824 +143 879 +689 1615 +340 1273 +565 955 +419 443 +92 867 +554 697 +774 1475 +298 1142 +677 1036 +734 811 +831 1211 +585 757 +328 573 +117 789 +575 614 +191 1007 +457 829 +35 193 +518 1335 +5 799 +505 1285 +48 381 +684 990 +767 1230 +953 1161 +51 556 +391 522 +405 419 +217 877 +793 857 +360 455 +259 791 +507 553 +505 1256 +403 842 +981 1524 +223 246 +780 1102 +707 1010 +584 1474 +529 1074 +384 464 +452 668 +28 321 +181 496 +343 1061 +764 1720 +454 1394 +768 822 +217 741 +176 476 +263 306 +914 1258 +526 584 +823 1116 +82 697 +994 1908 +667 982 +231 463 +230 807 +843 1706 +50 369 +521 740 +599 1004 +72 775 +279 502 +833 1423 +880 1593 +371 1093 +703 1272 +815 1096 +125 1058 +497 899 +991 1183 +300 1016 +394 514 +962 1608 +797 1721 +994 1473 +108 421 diff --git a/geom_bottleneck/tests/data/test_870_A b/geom_bottleneck/tests/data/test_870_A new file mode 100644 index 0000000..72422f7 --- /dev/null +++ b/geom_bottleneck/tests/data/test_870_A @@ -0,0 +1,100 @@ +60 817 +390 412 +83 364 +762 1271 +949 1643 +874 1468 +411 1354 +897 1800 +66 622 +763 1511 +51 1025 +882 1063 +91 96 +309 1302 +646 1599 +721 1157 +923 1112 +907 1582 +434 517 +854 1679 +719 1601 +38 615 +762 1454 +394 438 +2 40 +828 1110 +994 1556 +647 745 +610 1499 +9 27 +4 572 +829 1229 +44 319 +807 1726 +286 1104 +953 1884 +941 1314 +131 1041 +363 883 +825 1168 +975 1168 +561 1292 +151 204 +465 648 +346 459 +252 1179 +766 917 +583 1401 +353 666 +493 739 +809 1531 +391 964 +410 1172 +180 194 +865 1343 +849 1201 +839 1253 +5 590 +674 1029 +821 1333 +711 874 +557 1038 +101 163 +564 834 +696 707 +631 1249 +762 1107 +343 515 +987 1870 +525 1274 +402 1043 +164 220 +940 1422 +840 1281 +50 1012 +275 1062 +472 790 +61 306 +217 661 +283 1281 +436 972 +952 1838 +374 1049 +577 1482 +486 1288 +743 851 +469 1295 +553 1233 +11 774 +687 1381 +243 481 +399 873 +777 1539 +489 742 +293 513 +755 1047 +881 1154 +757 1457 +261 1097 +693 1283 diff --git a/geom_bottleneck/tests/data/test_870_B b/geom_bottleneck/tests/data/test_870_B new file mode 100644 index 0000000..db4847d --- /dev/null +++ b/geom_bottleneck/tests/data/test_870_B @@ -0,0 +1,100 @@ +278 1098 +502 1411 +318 748 +154 189 +605 1475 +556 1482 +377 718 +168 338 +595 921 +962 1686 +301 409 +730 1138 +132 612 +988 1838 +759 1728 +170 465 +654 681 +43 199 +358 1076 +270 316 +602 1382 +657 1138 +211 448 +516 652 +781 1312 +937 1266 +30 227 +769 1102 +91 938 +737 1368 +733 1087 +511 721 +582 997 +261 635 +540 992 +503 590 +189 267 +614 824 +517 1181 +120 447 +545 650 +248 1122 +798 1437 +571 1265 +358 993 +618 1573 +406 861 +540 1382 +213 509 +964 1055 +481 858 +933 1275 +680 1433 +634 665 +963 1365 +612 1163 +895 1316 +95 814 +483 1416 +142 989 +37 588 +17 728 +137 492 +498 1010 +868 1023 +713 1344 +606 1243 +806 1540 +868 1118 +115 780 +329 690 +742 1226 +595 1135 +534 938 +53 175 +627 683 +277 1165 +323 329 +587 869 +308 1234 +266 338 +103 928 +385 863 +628 1620 +157 370 +258 731 +30 588 +202 920 +589 618 +5 221 +882 1659 +68 136 +918 1860 +466 801 +719 1236 +79 664 +562 1234 +258 784 +669 1010 +850 1761 diff --git a/geom_bottleneck/tests/data/test_871_A b/geom_bottleneck/tests/data/test_871_A new file mode 100644 index 0000000..08ce8b2 --- /dev/null +++ b/geom_bottleneck/tests/data/test_871_A @@ -0,0 +1,100 @@ +42 835 +829 1708 +683 1618 +329 527 +127 163 +931 1127 +902 1289 +712 755 +344 415 +991 1939 +8 415 +225 1099 +685 1632 +996 1747 +751 1238 +569 1367 +256 401 +711 1157 +58 745 +112 1087 +226 902 +560 1414 +482 1323 +243 382 +672 1335 +202 962 +803 1090 +398 967 +790 1384 +901 1648 +280 296 +684 1484 +432 498 +599 972 +86 497 +703 1327 +730 1472 +889 946 +1000 1305 +735 1569 +606 1155 +916 1843 +246 286 +102 980 +854 1598 +518 944 +341 973 +426 489 +888 1375 +359 409 +49 660 +619 1187 +635 1439 +338 1297 +347 654 +847 989 +161 915 +846 1341 +196 418 +698 1689 +535 634 +407 419 +767 1110 +154 1127 +912 1214 +982 1797 +824 1331 +38 859 +753 867 +297 988 +784 1479 +407 1024 +884 1054 +894 1476 +674 837 +402 1183 +906 1306 +27 471 +672 1594 +480 830 +174 302 +133 928 +858 1186 +541 950 +395 397 +356 1259 +219 1028 +120 465 +703 1595 +9 234 +790 1682 +322 1197 +314 655 +770 1287 +95 775 +444 520 +118 800 +852 1564 +24 333 +906 1508 diff --git a/geom_bottleneck/tests/data/test_871_B b/geom_bottleneck/tests/data/test_871_B new file mode 100644 index 0000000..23c1dd8 --- /dev/null +++ b/geom_bottleneck/tests/data/test_871_B @@ -0,0 +1,100 @@ +112 365 +974 1486 +76 198 +108 949 +30 308 +221 985 +687 1236 +255 744 +597 1580 +552 1173 +944 1327 +291 494 +867 1053 +73 595 +265 407 +827 1067 +990 1968 +663 948 +555 1506 +469 1046 +909 939 +59 858 +756 986 +101 335 +57 1047 +516 1348 +615 775 +578 1391 +756 1351 +341 1087 +147 471 +893 1879 +68 603 +433 867 +982 1332 +11 464 +710 1435 +337 967 +468 1092 +282 474 +712 1541 +779 1165 +255 872 +590 1550 +255 949 +316 494 +398 1017 +863 1551 +835 1072 +554 1129 +560 854 +862 1403 +97 304 +71 393 +351 1038 +624 1327 +185 1077 +311 601 +640 736 +542 980 +735 884 +78 879 +230 799 +462 1295 +249 678 +736 900 +867 984 +254 405 +408 543 +271 694 +371 1039 +38 598 +888 1058 +876 1612 +697 1333 +650 1183 +910 1895 +884 1723 +922 1772 +911 1770 +788 1139 +981 1024 +962 1552 +389 612 +661 1027 +583 1188 +649 1291 +793 1505 +442 1158 +356 832 +190 589 +643 713 +496 536 +530 1381 +153 641 +162 335 +629 1071 +110 395 +18 833 +8 423 diff --git a/geom_bottleneck/tests/data/test_872_A b/geom_bottleneck/tests/data/test_872_A new file mode 100644 index 0000000..9647bed --- /dev/null +++ b/geom_bottleneck/tests/data/test_872_A @@ -0,0 +1,100 @@ +357 473 +781 1680 +963 1614 +418 582 +427 979 +738 924 +946 1432 +903 1821 +250 279 +570 1065 +305 1090 +750 756 +317 1028 +865 1402 +464 465 +316 1186 +856 1199 +763 1744 +46 424 +954 1654 +602 843 +232 426 +864 1001 +292 495 +72 455 +907 1762 +575 697 +886 1098 +954 1502 +980 1741 +317 527 +72 711 +614 695 +931 1149 +223 229 +684 1073 +221 897 +1000 1806 +165 358 +454 1067 +569 878 +162 950 +910 1768 +329 508 +247 1201 +469 849 +973 1153 +298 670 +682 1515 +230 777 +876 1085 +438 598 +72 775 +668 687 +254 502 +989 1165 +646 1375 +972 1552 +593 1408 +860 1844 +256 469 +982 1530 +834 1562 +195 280 +81 393 +470 802 +570 667 +95 558 +846 1778 +639 1120 +340 804 +527 530 +413 428 +797 1156 +610 780 +113 323 +287 441 +388 838 +418 743 +859 970 +96 898 +29 592 +396 1004 +463 1417 +641 1130 +880 1301 +176 1121 +286 325 +456 1093 +988 1077 +885 1278 +47 828 +617 1089 +595 1071 +870 895 +661 1423 +720 759 +379 924 +892 1184 +583 589 diff --git a/geom_bottleneck/tests/data/test_872_B b/geom_bottleneck/tests/data/test_872_B new file mode 100644 index 0000000..1c58840 --- /dev/null +++ b/geom_bottleneck/tests/data/test_872_B @@ -0,0 +1,100 @@ +153 586 +46 542 +64 130 +498 815 +144 494 +300 1100 +146 383 +431 558 +710 839 +615 648 +680 970 +995 1797 +903 1605 +994 1759 +335 810 +93 670 +928 1252 +754 1015 +941 1668 +105 746 +448 924 +419 1140 +881 1239 +500 831 +794 1571 +780 1613 +892 1155 +133 279 +869 1603 +745 1402 +463 623 +501 686 +510 1155 +806 1373 +302 821 +710 1492 +508 879 +643 787 +494 1172 +427 1018 +37 813 +394 497 +498 1374 +565 1285 +216 453 +315 1039 +356 920 +968 1326 +400 460 +779 964 +179 560 +405 1249 +64 466 +128 978 +99 582 +424 885 +39 675 +912 1624 +531 652 +617 1391 +338 788 +993 1673 +229 301 +879 1305 +356 467 +950 1787 +471 1441 +692 1677 +84 383 +767 1029 +865 1658 +468 988 +854 1028 +483 1097 +898 1321 +605 723 +632 1154 +782 1260 +797 1207 +176 445 +126 827 +333 541 +722 1131 +188 642 +287 1194 +8 607 +955 1136 +44 1000 +515 858 +39 311 +436 1200 +344 1280 +856 1776 +603 1524 +230 617 +953 1413 +592 916 +393 1116 +498 529 +283 734 diff --git a/geom_bottleneck/tests/data/test_873_A b/geom_bottleneck/tests/data/test_873_A new file mode 100644 index 0000000..d9e1da9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_873_A @@ -0,0 +1,100 @@ +871 918 +442 1110 +786 797 +342 1125 +473 1471 +550 737 +956 1854 +259 420 +592 1059 +861 1049 +50 255 +11 163 +254 810 +649 659 +866 1083 +786 1466 +728 1162 +659 1272 +884 1597 +34 1016 +487 679 +765 1214 +145 505 +994 1925 +711 1474 +207 713 +143 567 +935 1009 +62 1036 +168 713 +7 478 +628 1423 +51 693 +391 575 +18 283 +45 308 +971 1067 +934 1548 +604 1154 +4 558 +425 998 +77 439 +513 1485 +354 1302 +317 816 +5 551 +346 804 +872 1197 +309 418 +691 886 +927 1242 +51 491 +88 645 +835 1584 +377 751 +668 684 +226 1026 +418 691 +335 939 +955 1872 +490 1173 +68 355 +689 740 +284 550 +531 1023 +312 390 +127 875 +3 408 +314 458 +907 932 +489 890 +451 1402 +52 849 +709 1325 +373 1367 +390 1030 +707 1272 +25 607 +742 996 +838 1569 +570 1522 +278 1034 +863 1805 +615 823 +865 1726 +902 1367 +81 1011 +619 1462 +18 422 +433 1195 +154 635 +27 975 +690 1465 +447 1308 +686 1058 +204 1164 +572 1531 +202 609 +772 777 +740 1633 diff --git a/geom_bottleneck/tests/data/test_873_B b/geom_bottleneck/tests/data/test_873_B new file mode 100644 index 0000000..a9f3ea1 --- /dev/null +++ b/geom_bottleneck/tests/data/test_873_B @@ -0,0 +1,100 @@ +816 1608 +484 669 +486 883 +131 221 +617 1433 +421 578 +277 879 +587 979 +662 783 +275 1001 +538 1142 +135 857 +984 1296 +163 997 +818 1596 +591 1112 +29 465 +156 374 +805 1436 +709 977 +650 1507 +360 1041 +940 1108 +957 1483 +628 775 +109 461 +680 1562 +457 507 +68 693 +795 935 +505 564 +706 951 +60 977 +501 1258 +441 539 +280 658 +787 1427 +311 866 +722 808 +94 679 +979 1850 +408 1002 +246 1068 +125 815 +520 819 +557 1306 +369 1123 +14 940 +666 931 +589 1555 +430 871 +105 907 +294 469 +798 1528 +30 640 +566 1287 +930 1651 +599 691 +139 256 +938 1775 +173 682 +597 899 +430 924 +201 1194 +164 611 +996 1009 +482 807 +680 1375 +281 704 +422 457 +698 963 +742 876 +839 1814 +901 1360 +775 1461 +612 801 +498 1360 +176 707 +430 596 +134 578 +408 742 +867 1346 +66 912 +390 824 +823 1332 +787 1775 +924 1615 +619 1109 +892 1583 +583 904 +591 1270 +805 815 +913 1698 +557 623 +15 98 +28 862 +775 981 +627 1137 +836 1587 +556 988 diff --git a/geom_bottleneck/tests/data/test_874_A b/geom_bottleneck/tests/data/test_874_A new file mode 100644 index 0000000..4d66819 --- /dev/null +++ b/geom_bottleneck/tests/data/test_874_A @@ -0,0 +1,100 @@ +401 767 +318 1182 +238 653 +420 702 +684 942 +381 618 +263 1108 +275 381 +659 1140 +301 646 +401 432 +68 350 +147 1106 +670 1593 +792 1332 +779 1462 +129 130 +604 665 +800 1027 +631 945 +961 1286 +767 1426 +123 653 +860 1160 +929 1528 +876 1665 +148 1072 +898 1869 +375 386 +135 943 +847 1128 +455 1273 +28 509 +202 1148 +241 462 +612 732 +655 667 +392 726 +525 655 +993 1778 +241 1229 +185 599 +321 836 +773 1506 +632 1023 +885 1663 +868 985 +84 664 +761 1738 +75 641 +988 1791 +178 992 +34 69 +990 1431 +460 957 +352 453 +102 946 +123 883 +535 1360 +961 1232 +825 885 +259 679 +139 620 +946 1073 +690 753 +39 1022 +741 1612 +662 1215 +156 703 +942 1906 +477 496 +499 737 +175 763 +304 563 +317 1266 +918 1673 +646 686 +941 1023 +502 1266 +811 822 +153 688 +892 1832 +737 1518 +53 475 +140 709 +379 871 +138 816 +228 1106 +272 774 +732 1715 +344 849 +580 971 +983 1855 +312 399 +561 1352 +335 1008 +268 1083 +488 921 +327 449 +177 198 diff --git a/geom_bottleneck/tests/data/test_874_B b/geom_bottleneck/tests/data/test_874_B new file mode 100644 index 0000000..2142cbc --- /dev/null +++ b/geom_bottleneck/tests/data/test_874_B @@ -0,0 +1,100 @@ +682 1578 +580 1035 +713 1240 +664 1644 +492 852 +126 441 +113 329 +144 557 +829 1627 +857 1645 +332 1104 +531 773 +616 1523 +568 831 +251 340 +155 1058 +519 1241 +525 571 +182 334 +148 450 +974 1128 +508 1003 +188 738 +763 1502 +726 1288 +892 954 +418 1171 +414 927 +268 591 +529 1371 +10 396 +379 1371 +578 1428 +493 529 +79 364 +340 1082 +84 653 +847 1396 +905 1164 +526 690 +715 1436 +317 823 +161 223 +19 515 +520 1415 +871 1311 +601 1249 +533 1040 +454 1168 +35 919 +191 668 +102 424 +899 1107 +439 558 +145 1108 +138 1085 +633 756 +616 801 +795 1193 +428 892 +712 1066 +451 723 +294 640 +228 1009 +984 1910 +966 1472 +578 771 +403 896 +341 841 +441 671 +513 665 +137 386 +591 750 +881 1549 +753 1355 +66 695 +500 592 +364 715 +275 485 +841 1194 +204 386 +556 1196 +388 1345 +695 1051 +47 494 +505 1386 +427 933 +635 714 +998 1743 +637 822 +355 1048 +430 1086 +905 1747 +906 1612 +590 804 +709 1164 +852 1511 +205 626 +403 978 +706 1085 diff --git a/geom_bottleneck/tests/data/test_875_A b/geom_bottleneck/tests/data/test_875_A new file mode 100644 index 0000000..1748357 --- /dev/null +++ b/geom_bottleneck/tests/data/test_875_A @@ -0,0 +1,100 @@ +501 816 +326 1114 +214 1139 +167 352 +465 1246 +268 284 +830 907 +240 975 +995 1655 +583 822 +320 963 +446 975 +525 1385 +280 1057 +788 978 +238 1027 +731 1643 +154 467 +988 1430 +468 594 +170 779 +931 1377 +332 888 +432 1036 +310 841 +960 1909 +554 1147 +999 1007 +213 626 +667 862 +200 773 +166 657 +830 1352 +698 816 +455 850 +435 1100 +300 584 +935 1403 +544 1425 +78 451 +543 955 +831 1610 +530 633 +443 1150 +16 712 +798 1758 +760 1226 +839 1249 +310 891 +343 553 +341 463 +925 948 +691 851 +899 1768 +486 530 +830 1370 +515 894 +782 1153 +539 1004 +907 1348 +28 395 +335 626 +599 946 +571 1494 +607 1477 +560 1176 +27 63 +190 453 +586 1257 +659 831 +991 1363 +95 851 +226 785 +263 836 +97 531 +768 905 +970 1051 +487 1361 +96 206 +374 979 +539 1321 +837 1108 +776 1081 +381 774 +420 754 +799 983 +636 1239 +863 1608 +531 563 +703 814 +229 958 +874 1208 +553 581 +589 1387 +607 920 +928 1917 +171 351 +571 1035 +528 1318 +168 442 diff --git a/geom_bottleneck/tests/data/test_875_B b/geom_bottleneck/tests/data/test_875_B new file mode 100644 index 0000000..3a5860e --- /dev/null +++ b/geom_bottleneck/tests/data/test_875_B @@ -0,0 +1,100 @@ +380 1025 +918 1126 +119 483 +810 1668 +393 693 +545 1003 +682 862 +357 966 +429 955 +776 1227 +233 522 +559 599 +514 843 +682 906 +535 810 +924 1161 +222 371 +400 741 +561 943 +60 644 +810 1317 +470 1412 +756 1724 +235 1098 +995 1942 +244 776 +189 1011 +549 622 +193 816 +336 535 +232 1076 +614 1332 +38 1001 +764 1255 +337 763 +30 878 +949 1522 +719 741 +446 749 +400 1077 +309 310 +154 677 +458 1246 +476 541 +177 660 +676 1084 +426 968 +422 888 +243 255 +724 901 +994 1350 +623 1151 +387 452 +745 1263 +142 572 +198 388 +789 1416 +445 970 +245 494 +253 499 +401 582 +217 271 +528 1475 +170 850 +978 1681 +68 170 +381 1017 +39 298 +634 1443 +288 447 +867 1061 +24 477 +345 869 +674 1544 +645 1452 +698 723 +838 1195 +419 1214 +468 476 +620 1599 +898 1491 +416 1010 +431 921 +56 242 +867 1451 +759 1102 +396 1226 +559 1364 +212 743 +292 1289 +832 1536 +271 340 +990 1428 +287 1025 +364 839 +471 1138 +17 284 +953 1212 +421 841 +527 1382 diff --git a/geom_bottleneck/tests/data/test_876_A b/geom_bottleneck/tests/data/test_876_A new file mode 100644 index 0000000..1b65f8d --- /dev/null +++ b/geom_bottleneck/tests/data/test_876_A @@ -0,0 +1,100 @@ +466 895 +77 814 +639 1357 +475 1032 +941 1560 +527 749 +839 845 +96 619 +328 455 +385 828 +954 1817 +476 847 +240 463 +477 849 +965 1359 +238 991 +746 1597 +109 529 +567 616 +525 1224 +80 990 +984 1314 +591 1398 +801 1039 +237 332 +529 1232 +8 763 +665 1615 +823 1790 +746 1594 +875 1682 +302 1001 +486 840 +586 1174 +376 903 +782 1083 +680 993 +811 1136 +576 687 +330 1057 +892 963 +547 763 +17 869 +207 455 +162 612 +414 776 +446 498 +455 1151 +292 355 +240 541 +89 545 +672 1017 +375 783 +152 348 +347 525 +678 682 +538 1301 +569 1458 +624 946 +188 283 +300 456 +225 423 +925 1867 +312 600 +849 984 +148 300 +236 862 +336 806 +566 1280 +793 1411 +789 1666 +134 714 +660 1259 +870 1344 +329 1320 +136 684 +743 1016 +904 1005 +271 1059 +28 566 +482 1474 +278 614 +776 1361 +372 1174 +118 589 +793 906 +346 539 +860 892 +588 1255 +590 1394 +258 935 +452 861 +785 1525 +789 1745 +150 622 +720 1458 +486 1477 +937 1381 +317 1224 +37 301 diff --git a/geom_bottleneck/tests/data/test_876_B b/geom_bottleneck/tests/data/test_876_B new file mode 100644 index 0000000..62102e9 --- /dev/null +++ b/geom_bottleneck/tests/data/test_876_B @@ -0,0 +1,100 @@ +162 530 +694 1522 +850 1742 +293 471 +254 1094 +293 856 +392 411 +919 1673 +427 629 +116 390 +583 1089 +31 812 +270 769 +297 435 +933 1186 +625 741 +759 868 +632 749 +41 82 +138 528 +933 1746 +910 1135 +312 868 +955 1464 +208 1044 +84 368 +444 1114 +749 1643 +572 1339 +584 1330 +736 1483 +779 780 +459 473 +481 1392 +537 1402 +254 1114 +637 1366 +381 1339 +808 1517 +858 1513 +116 508 +102 675 +133 327 +283 1196 +126 910 +634 699 +253 1086 +75 1063 +93 247 +194 661 +848 1195 +690 1350 +816 1340 +821 1352 +387 569 +487 870 +160 1012 +483 1120 +916 1704 +519 975 +324 533 +791 1611 +128 1011 +477 741 +884 930 +773 1424 +904 1238 +252 1162 +730 750 +292 441 +747 1242 +525 1071 +373 1261 +706 1402 +877 1639 +848 1474 +652 884 +995 1061 +509 1496 +970 1168 +855 1167 +94 289 +759 1697 +153 239 +483 1315 +694 1110 +93 255 +564 1525 +632 1562 +218 1068 +548 1072 +167 906 +803 1710 +635 914 +923 1918 +99 633 +8 712 +138 565 +698 1179 +928 1611 diff --git a/geom_bottleneck/tests/data/test_877_A b/geom_bottleneck/tests/data/test_877_A new file mode 100644 index 0000000..c60479b --- /dev/null +++ b/geom_bottleneck/tests/data/test_877_A @@ -0,0 +1,100 @@ +300 707 +123 319 +525 876 +685 1396 +289 961 +27 123 +884 1628 +982 1831 +634 1123 +383 831 +279 637 +349 474 +352 856 +253 1047 +431 679 +986 1871 +923 1654 +991 1073 +686 1337 +848 1810 +180 753 +423 529 +318 466 +356 742 +953 997 +861 865 +205 1200 +423 1141 +976 1485 +698 775 +445 1410 +83 322 +11 585 +384 468 +674 1121 +544 1216 +205 648 +474 745 +860 1595 +624 1216 +970 1721 +505 1397 +886 1137 +184 706 +817 1142 +781 1282 +299 965 +835 940 +954 1359 +304 502 +309 949 +347 441 +80 406 +804 910 +895 1394 +835 1328 +586 634 +790 1152 +884 1203 +252 899 +91 828 +501 968 +971 1076 +676 1214 +217 318 +932 1399 +404 451 +235 1091 +765 1022 +974 1189 +353 989 +828 1769 +948 1846 +914 1206 +589 1406 +551 1139 +317 367 +616 1284 +567 895 +229 528 +533 911 +514 1260 +905 1811 +421 863 +681 925 +252 1023 +365 573 +195 886 +169 710 +327 1311 +348 388 +26 56 +534 1014 +187 263 +927 1764 +3 29 +469 1008 +968 1729 +279 611 +944 1650 diff --git a/geom_bottleneck/tests/data/test_877_B b/geom_bottleneck/tests/data/test_877_B new file mode 100644 index 0000000..728311d --- /dev/null +++ b/geom_bottleneck/tests/data/test_877_B @@ -0,0 +1,100 @@ +628 985 +787 1122 +361 604 +695 1462 +712 977 +294 738 +893 1223 +582 1579 +908 1112 +827 1451 +360 465 +273 375 +123 803 +853 1841 +381 948 +549 868 +34 995 +285 1076 +233 561 +232 1170 +663 1129 +17 34 +41 274 +881 1726 +551 1357 +193 916 +754 852 +384 1061 +745 1426 +954 1188 +950 1469 +493 565 +307 1174 +486 1222 +443 1433 +722 973 +912 1453 +973 1474 +398 1142 +85 779 +961 1952 +928 1842 +351 814 +147 519 +729 877 +26 60 +406 1082 +579 602 +893 1692 +837 1802 +306 457 +945 1792 +461 897 +794 894 +767 1178 +469 1423 +129 833 +251 563 +887 1856 +426 1380 +173 539 +398 1249 +890 1101 +40 864 +481 1123 +651 1126 +520 926 +885 1396 +791 896 +416 1283 +646 1571 +246 1002 +249 394 +650 1543 +378 1225 +918 1043 +58 188 +568 671 +256 796 +315 1143 +840 1449 +709 1260 +730 1655 +525 1409 +561 1149 +338 1162 +204 252 +935 1919 +438 1194 +727 1497 +876 1461 +920 1163 +19 767 +379 427 +953 1926 +912 1022 +423 584 +333 642 +726 1473 +421 1106 diff --git a/geom_bottleneck/tests/data/test_878_A b/geom_bottleneck/tests/data/test_878_A new file mode 100644 index 0000000..c8d0724 --- /dev/null +++ b/geom_bottleneck/tests/data/test_878_A @@ -0,0 +1,100 @@ +279 1254 +922 1250 +849 997 +144 505 +218 1071 +540 1361 +681 773 +572 1345 +827 848 +105 244 +299 1253 +172 784 +730 1315 +488 1249 +803 1175 +139 611 +910 1599 +387 1304 +851 1418 +392 1256 +642 655 +323 338 +594 802 +761 1161 +980 1822 +272 811 +385 474 +70 568 +518 1331 +528 1188 +138 465 +71 1033 +258 968 +242 319 +644 1125 +988 1292 +828 1367 +726 1657 +61 520 +734 1189 +142 615 +794 1276 +267 575 +738 1043 +653 753 +484 1337 +680 761 +963 972 +415 1343 +167 685 +93 861 +263 506 +609 829 +145 436 +302 484 +10 881 +431 603 +638 764 +723 1348 +470 581 +418 1249 +61 814 +992 1096 +776 1386 +406 842 +204 1047 +450 710 +639 765 +272 807 +932 1571 +982 1321 +559 770 +255 363 +648 1136 +668 1322 +332 588 +387 390 +309 737 +561 1463 +958 981 +359 1053 +994 1768 +243 381 +971 1245 +96 704 +353 1090 +589 1261 +46 789 +459 519 +262 425 +154 710 +870 1103 +30 653 +672 1521 +824 1677 +763 835 +143 753 +658 1168 +8 563 +971 1095 diff --git a/geom_bottleneck/tests/data/test_878_B b/geom_bottleneck/tests/data/test_878_B new file mode 100644 index 0000000..32723ce --- /dev/null +++ b/geom_bottleneck/tests/data/test_878_B @@ -0,0 +1,100 @@ +284 785 +695 1555 +939 1668 +395 439 +587 754 +586 996 +831 1534 +296 1185 +379 1162 +243 923 +818 1623 +410 644 +43 356 +929 1429 +83 937 +885 1611 +427 526 +225 804 +717 1460 +30 590 +125 1119 +600 1356 +803 1729 +462 542 +225 785 +26 79 +780 1711 +372 1148 +113 547 +589 1288 +673 1638 +56 555 +569 1078 +687 1547 +201 777 +860 1372 +317 1268 +481 1465 +577 1347 +355 639 +199 560 +669 911 +64 1003 +654 1047 +254 700 +126 542 +418 1041 +242 1075 +642 1349 +476 1047 +614 1041 +365 507 +117 842 +147 929 +369 835 +138 1031 +177 707 +857 968 +803 821 +562 1007 +231 1021 +872 1803 +84 613 +315 562 +962 965 +648 1619 +425 574 +303 654 +766 1676 +17 975 +127 960 +439 645 +646 1215 +448 1375 +697 1654 +294 314 +151 661 +800 1084 +760 1457 +944 1538 +224 895 +309 355 +688 1059 +509 1108 +770 793 +884 947 +147 963 +708 1229 +398 816 +8 872 +617 1057 +642 1609 +558 1128 +409 705 +777 1406 +454 640 +882 1002 +391 1241 +609 1380 +455 863 diff --git a/geom_bottleneck/tests/data/test_879_A b/geom_bottleneck/tests/data/test_879_A new file mode 100644 index 0000000..7a92be6 --- /dev/null +++ b/geom_bottleneck/tests/data/test_879_A @@ -0,0 +1,100 @@ +939 1572 +712 1236 +114 128 +992 1777 +566 617 +460 1258 +681 1380 +716 832 +375 960 +912 1414 +63 1058 +943 1482 +278 690 +123 616 +31 641 +382 862 +962 1798 +709 1518 +190 487 +84 723 +419 515 +105 915 +184 641 +952 1441 +139 760 +462 879 +431 577 +502 1482 +252 1124 +166 413 +406 426 +40 921 +538 936 +850 1574 +64 139 +472 1374 +171 944 +81 128 +107 521 +426 855 +273 278 +139 208 +763 893 +623 973 +433 565 +353 915 +404 945 +981 1151 +200 894 +476 1268 +913 1287 +609 1592 +984 1462 +878 1037 +255 1113 +845 1766 +257 265 +550 1385 +753 1597 +412 1269 +251 1120 +167 851 +288 1117 +392 1279 +213 534 +623 987 +975 1806 +924 1066 +52 676 +822 974 +239 557 +679 1158 +268 524 +241 500 +281 401 +993 1711 +539 1414 +677 1108 +377 482 +315 845 +981 1605 +426 447 +479 1372 +820 1416 +916 1423 +677 1165 +388 1322 +990 1641 +909 914 +814 1225 +851 1151 +78 235 +635 1581 +229 431 +125 877 +708 1338 +763 1354 +877 1794 +225 1171 +232 435 diff --git a/geom_bottleneck/tests/data/test_879_B b/geom_bottleneck/tests/data/test_879_B new file mode 100644 index 0000000..f4c4a36 --- /dev/null +++ b/geom_bottleneck/tests/data/test_879_B @@ -0,0 +1,100 @@ +826 1808 +951 1166 +931 1147 +239 288 +607 762 +103 692 +78 132 +14 502 +666 982 +207 961 +303 690 +492 1135 +528 1499 +979 1576 +584 704 +921 1134 +874 1791 +51 789 +824 1574 +534 1078 +304 1104 +288 828 +445 1433 +492 788 +158 159 +374 863 +313 766 +716 1156 +540 624 +963 1803 +144 341 +415 1223 +314 501 +203 739 +674 1323 +604 705 +958 1738 +33 994 +179 1002 +23 278 +387 460 +857 1659 +563 865 +248 1032 +612 1147 +809 1802 +488 1003 +572 1525 +197 664 +120 648 +290 793 +475 1101 +97 479 +517 703 +843 1555 +292 482 +293 846 +969 1431 +525 552 +299 795 +543 1520 +685 1208 +689 1139 +564 1021 +478 969 +219 646 +361 718 +390 1038 +167 677 +968 1814 +663 1192 +446 1405 +337 1080 +403 564 +167 1159 +717 1483 +707 1224 +923 1698 +564 833 +988 1819 +48 300 +5 540 +252 378 +385 1039 +65 366 +473 1119 +369 989 +804 1501 +333 580 +321 1033 +693 1147 +291 408 +498 1244 +923 1204 +758 1214 +85 561 +550 647 +589 1155 +512 687 +110 459 diff --git a/geom_bottleneck/tests/data/test_list.txt b/geom_bottleneck/tests/data/test_list.txt new file mode 100644 index 0000000..24b462a --- /dev/null +++ b/geom_bottleneck/tests/data/test_list.txt @@ -0,0 +1,792 @@ +test_001_A test_001_B 0.01 1 -1 0 0 -1 +test_002_A test_002_B 0.01 0.2 0 0 +test_003_A test_003_B 0.01 2 1 1 +test_004_A test_004_B 0.01 inf -1 -1 +test_005_A test_005_B 0.01 4 5 5 +test_008_A test_008_B 0.01 0.55 0 -1 +test_009_A test_009_B 0.01 0.55 0 -1 +test_010_A test_010_B 0.01 1.32937 +test_011_A test_011_B 0.01 1.03125 +test_014_A test_014_B 0.01 0 +test_015_A test_015_B 0.01 0 +test_016_A test_016_B 0.01 0 +test_100_A test_100_B 0.01 1.5 +test_101_A test_101_B 0.01 1.5 +test_102_A test_102_B 0.01 4.5 +test_103_A test_103_B 0.01 3 +test_104_A test_104_B 0.01 3.5 +test_105_A test_105_B 0.01 3.5 +test_106_A test_106_B 0.01 3 +test_107_A test_107_B 0.01 5 +test_108_A test_108_B 0.01 5 +test_109_A test_109_B 0.01 3 +test_110_A test_110_B 0.01 4.5 +test_111_A test_111_B 0.01 4 +test_112_A test_112_B 0.01 4 +test_113_A test_113_B 0.01 2.5 +test_114_A test_114_B 0.01 4.5 +test_115_A test_115_B 0.01 4 +test_116_A test_116_B 0.01 4 +test_117_A test_117_B 0.01 2.5 +test_118_A test_118_B 0.01 3 +test_119_A test_119_B 0.01 5 +test_120_A test_120_B 0.01 2 +test_121_A test_121_B 0.01 3 +test_122_A test_122_B 0.01 1 +test_123_A test_123_B 0.01 4 +test_124_A test_124_B 0.01 4 +test_125_A test_125_B 0.01 4.5 +test_126_A test_126_B 0.01 3 +test_127_A test_127_B 0.01 2.5 +test_128_A test_128_B 0.01 2 +test_129_A test_129_B 0.01 3 +test_130_A test_130_B 0.01 5 +test_131_A test_131_B 0.01 5 +test_132_A test_132_B 0.01 2 +test_133_A test_133_B 0.01 3 +test_134_A test_134_B 0.01 3 +test_135_A test_135_B 0.01 4 +test_136_A test_136_B 0.01 2 +test_137_A test_137_B 0.01 3 +test_138_A test_138_B 0.01 2 +test_139_A test_139_B 0.01 2.5 +test_140_A test_140_B 0.01 2 +test_141_A test_141_B 0.01 4 +test_142_A test_142_B 0.01 3 +test_143_A test_143_B 0.01 4 +test_144_A test_144_B 0.01 3 +test_145_A test_145_B 0.01 4 +test_146_A test_146_B 0.01 3 +test_147_A test_147_B 0.01 4 +test_148_A test_148_B 0.01 3 +test_149_A test_149_B 0.01 4 +test_150_A test_150_B 0.01 3 +test_151_A test_151_B 0.01 4 +test_152_A test_152_B 0.01 3.5 +test_153_A test_153_B 0.01 4 +test_154_A test_154_B 0.01 3.5 +test_155_A test_155_B 0.01 3 +test_156_A test_156_B 0.01 3 +test_157_A test_157_B 0.01 4.5 +test_158_A test_158_B 0.01 3.5 +test_159_A test_159_B 0.01 1 +test_160_A test_160_B 0.01 4 +test_161_A test_161_B 0.01 4 +test_162_A test_162_B 0.01 3 +test_163_A test_163_B 0.01 5 +test_164_A test_164_B 0.01 4 +test_165_A test_165_B 0.01 4 +test_166_A test_166_B 0.01 4 +test_167_A test_167_B 0.01 4.5 +test_168_A test_168_B 0.01 4 +test_169_A test_169_B 0.01 3.5 +test_170_A test_170_B 0.01 4 +test_171_A test_171_B 0.01 2 +test_172_A test_172_B 0.01 3 +test_173_A test_173_B 0.01 4 +test_174_A test_174_B 0.01 3 +test_175_A test_175_B 0.01 5 +test_176_A test_176_B 0.01 4.5 +test_177_A test_177_B 0.01 4.5 +test_178_A test_178_B 0.01 4.5 +test_179_A test_179_B 0.01 4 +test_180_A test_180_B 0.01 5 +test_181_A test_181_B 0.01 4 +test_182_A test_182_B 0.01 4.5 +test_183_A test_183_B 0.01 5 +test_184_A test_184_B 0.01 4 +test_185_A test_185_B 0.01 4.5 +test_186_A test_186_B 0.01 3 +test_187_A test_187_B 0.01 4.5 +test_188_A test_188_B 0.01 3 +test_189_A test_189_B 0.01 2 +test_190_A test_190_B 0.01 3 +test_191_A test_191_B 0.01 3 +test_192_A test_192_B 0.01 3.5 +test_193_A test_193_B 0.01 4.5 +test_194_A test_194_B 0.01 3 +test_195_A test_195_B 0.01 3 +test_196_A test_196_B 0.01 3 +test_197_A test_197_B 0.01 3 +test_198_A test_198_B 0.01 5 +test_199_A test_199_B 0.01 3.5 +test_200_A test_200_B 0.01 3 +test_201_A test_201_B 0.01 5 +test_202_A test_202_B 0.01 3 +test_203_A test_203_B 0.01 4 +test_204_A test_204_B 0.01 2.5 +test_205_A test_205_B 0.01 4 +test_206_A test_206_B 0.01 3.5 +test_207_A test_207_B 0.01 3 +test_208_A test_208_B 0.01 4 +test_209_A test_209_B 0.01 3 +test_210_A test_210_B 0.01 5 +test_211_A test_211_B 0.01 3 +test_212_A test_212_B 0.01 3 +test_213_A test_213_B 0.01 3.5 +test_214_A test_214_B 0.01 4 +test_215_A test_215_B 0.01 3 +test_216_A test_216_B 0.01 3.5 +test_217_A test_217_B 0.01 4 +test_218_A test_218_B 0.01 4 +test_219_A test_219_B 0.01 4 +test_220_A test_220_B 0.01 3 +test_221_A test_221_B 0.01 4 +test_222_A test_222_B 0.01 4 +test_223_A test_223_B 0.01 4 +test_224_A test_224_B 0.01 3 +test_225_A test_225_B 0.01 3 +test_226_A test_226_B 0.01 4 +test_227_A test_227_B 0.01 4 +test_228_A test_228_B 0.01 4 +test_229_A test_229_B 0.01 3 +test_230_A test_230_B 0.01 3 +test_231_A test_231_B 0.01 4 +test_232_A test_232_B 0.01 4 +test_233_A test_233_B 0.01 2 +test_234_A test_234_B 0.01 3.5 +test_235_A test_235_B 0.01 4 +test_236_A test_236_B 0.01 3 +test_237_A test_237_B 0.01 3.5 +test_238_A test_238_B 0.01 4 +test_239_A test_239_B 0.01 3 +test_240_A test_240_B 0.01 3 +test_241_A test_241_B 0.01 5 +test_242_A test_242_B 0.01 4.5 +test_243_A test_243_B 0.01 4 +test_244_A test_244_B 0.01 3.5 +test_245_A test_245_B 0.01 5 +test_246_A test_246_B 0.01 2.5 +test_247_A test_247_B 0.01 3 +test_248_A test_248_B 0.01 4 +test_249_A test_249_B 0.01 2 +test_250_A test_250_B 0.01 5 +test_251_A test_251_B 0.01 4 +test_252_A test_252_B 0.01 4 +test_253_A test_253_B 0.01 4.5 +test_254_A test_254_B 0.01 4 +test_255_A test_255_B 0.01 3 +test_256_A test_256_B 0.01 4.5 +test_257_A test_257_B 0.01 4 +test_258_A test_258_B 0.01 5 +test_259_A test_259_B 0.01 4 +test_260_A test_260_B 0.01 4 +test_261_A test_261_B 0.01 2.5 +test_262_A test_262_B 0.01 2 +test_263_A test_263_B 0.01 4.5 +test_264_A test_264_B 0.01 3.5 +test_265_A test_265_B 0.01 4 +test_266_A test_266_B 0.01 3 +test_267_A test_267_B 0.01 5 +test_268_A test_268_B 0.01 4 +test_269_A test_269_B 0.01 4 +test_270_A test_270_B 0.01 3 +test_271_A test_271_B 0.01 4 +test_272_A test_272_B 0.01 4 +test_273_A test_273_B 0.01 2 +test_274_A test_274_B 0.01 3 +test_275_A test_275_B 0.01 3 +test_276_A test_276_B 0.01 4 +test_277_A test_277_B 0.01 5 +test_278_A test_278_B 0.01 4 +test_279_A test_279_B 0.01 4.5 +test_280_A test_280_B 0.01 3.5 +test_281_A test_281_B 0.01 2 +test_282_A test_282_B 0.01 3 +test_283_A test_283_B 0.01 3 +test_284_A test_284_B 0.01 3 +test_285_A test_285_B 0.01 3 +test_286_A test_286_B 0.01 3 +test_287_A test_287_B 0.01 3.5 +test_288_A test_288_B 0.01 3 +test_289_A test_289_B 0.01 2 +test_290_A test_290_B 0.01 4 +test_291_A test_291_B 0.01 3 +test_292_A test_292_B 0.01 4 +test_293_A test_293_B 0.01 2.5 +test_294_A test_294_B 0.01 4 +test_295_A test_295_B 0.01 3.5 +test_296_A test_296_B 0.01 3 +test_297_A test_297_B 0.01 3 +test_298_A test_298_B 0.01 4 +test_299_A test_299_B 0.01 4 +test_300_A test_300_B 0.01 3 +test_301_A test_301_B 0.01 2 +test_302_A test_302_B 0.01 2 +test_303_A test_303_B 0.01 3 +test_304_A test_304_B 0.01 3 +test_305_A test_305_B 0.01 3 +test_306_A test_306_B 0.01 3 +test_307_A test_307_B 0.01 2 +test_308_A test_308_B 0.01 3 +test_309_A test_309_B 0.01 2.5 +test_310_A test_310_B 0.01 4 +test_311_A test_311_B 0.01 3 +test_312_A test_312_B 0.01 3.5 +test_313_A test_313_B 0.01 3 +test_314_A test_314_B 0.01 2 +test_315_A test_315_B 0.01 3 +test_316_A test_316_B 0.01 4.5 +test_317_A test_317_B 0.01 3 +test_318_A test_318_B 0.01 3 +test_319_A test_319_B 0.01 3 +test_320_A test_320_B 0.01 4 +test_321_A test_321_B 0.01 2 +test_322_A test_322_B 0.01 3 +test_323_A test_323_B 0.01 3 +test_324_A test_324_B 0.01 2 +test_325_A test_325_B 0.01 3 +test_326_A test_326_B 0.01 2 +test_327_A test_327_B 0.01 3 +test_328_A test_328_B 0.01 3 +test_329_A test_329_B 0.01 4 +test_330_A test_330_B 0.01 3 +test_331_A test_331_B 0.01 3 +test_332_A test_332_B 0.01 2 +test_333_A test_333_B 0.01 2 +test_334_A test_334_B 0.01 3 +test_335_A test_335_B 0.01 2 +test_336_A test_336_B 0.01 3 +test_337_A test_337_B 0.01 2 +test_338_A test_338_B 0.01 2 +test_339_A test_339_B 0.01 2 +test_340_A test_340_B 0.01 1 +test_341_A test_341_B 0.01 2 +test_342_A test_342_B 0.01 2 +test_343_A test_343_B 0.01 2 +test_344_A test_344_B 0.01 2 +test_345_A test_345_B 0.01 2 +test_346_A test_346_B 0.01 2 +test_347_A test_347_B 0.01 2 +test_348_A test_348_B 0.01 2 +test_349_A test_349_B 0.01 2 +test_350_A test_350_B 0.01 2 +test_351_A test_351_B 0.01 2 +test_352_A test_352_B 0.01 2 +test_353_A test_353_B 0.01 2.5 +test_354_A test_354_B 0.01 2 +test_355_A test_355_B 0.01 2 +test_356_A test_356_B 0.01 2 +test_357_A test_357_B 0.01 2 +test_358_A test_358_B 0.01 2 +test_359_A test_359_B 0.01 2 +test_360_A test_360_B 0.01 32 +test_361_A test_361_B 0.01 8 +test_362_A test_362_B 0.01 29.5 +test_363_A test_363_B 0.01 41 +test_364_A test_364_B 0.01 41.5 +test_365_A test_365_B 0.01 27.5 +test_366_A test_366_B 0.01 46 +test_367_A test_367_B 0.01 37.5 +test_368_A test_368_B 0.01 27 +test_369_A test_369_B 0.01 42 +test_370_A test_370_B 0.01 45.5 +test_371_A test_371_B 0.01 34 +test_372_A test_372_B 0.01 19.5 +test_373_A test_373_B 0.01 24 +test_374_A test_374_B 0.01 10 +test_375_A test_375_B 0.01 17.5 +test_376_A test_376_B 0.01 28.5 +test_377_A test_377_B 0.01 40 +test_378_A test_378_B 0.01 40 +test_379_A test_379_B 0.01 24.5 +test_380_A test_380_B 0.01 36 +test_381_A test_381_B 0.01 38 +test_382_A test_382_B 0.01 48 +test_383_A test_383_B 0.01 32.5 +test_384_A test_384_B 0.01 44 +test_385_A test_385_B 0.01 44.5 +test_386_A test_386_B 0.01 11 +test_387_A test_387_B 0.01 47.5 +test_388_A test_388_B 0.01 28 +test_389_A test_389_B 0.01 32 +test_390_A test_390_B 0.01 24.5 +test_391_A test_391_B 0.01 47 +test_392_A test_392_B 0.01 28 +test_393_A test_393_B 0.01 16 +test_394_A test_394_B 0.01 44 +test_395_A test_395_B 0.01 38 +test_396_A test_396_B 0.01 47.5 +test_397_A test_397_B 0.01 35 +test_398_A test_398_B 0.01 33 +test_399_A test_399_B 0.01 33 +test_400_A test_400_B 0.01 31 +test_401_A test_401_B 0.01 48 +test_402_A test_402_B 0.01 37.5 +test_403_A test_403_B 0.01 40 +test_404_A test_404_B 0.01 47 +test_405_A test_405_B 0.01 23 +test_406_A test_406_B 0.01 40 +test_407_A test_407_B 0.01 46 +test_408_A test_408_B 0.01 39 +test_409_A test_409_B 0.01 26 +test_410_A test_410_B 0.01 28 +test_411_A test_411_B 0.01 27 +test_412_A test_412_B 0.01 33 +test_413_A test_413_B 0.01 36 +test_414_A test_414_B 0.01 42.5 +test_415_A test_415_B 0.01 40 +test_416_A test_416_B 0.01 37 +test_417_A test_417_B 0.01 43 +test_418_A test_418_B 0.01 16 +test_419_A test_419_B 0.01 34 +test_420_A test_420_B 0.01 42.5 +test_421_A test_421_B 0.01 38 +test_422_A test_422_B 0.01 30 +test_423_A test_423_B 0.01 44 +test_424_A test_424_B 0.01 46 +test_425_A test_425_B 0.01 38 +test_426_A test_426_B 0.01 35.5 +test_427_A test_427_B 0.01 29 +test_428_A test_428_B 0.01 43.5 +test_429_A test_429_B 0.01 34 +test_430_A test_430_B 0.01 48 +test_431_A test_431_B 0.01 41 +test_432_A test_432_B 0.01 35 +test_433_A test_433_B 0.01 32 +test_434_A test_434_B 0.01 36 +test_435_A test_435_B 0.01 43.5 +test_436_A test_436_B 0.01 32.5 +test_437_A test_437_B 0.01 40 +test_438_A test_438_B 0.01 34 +test_439_A test_439_B 0.01 31.5 +test_440_A test_440_B 0.01 26.5 +test_441_A test_441_B 0.01 49.5 +test_442_A test_442_B 0.01 30 +test_443_A test_443_B 0.01 29 +test_444_A test_444_B 0.01 29 +test_445_A test_445_B 0.01 48 +test_446_A test_446_B 0.01 35 +test_447_A test_447_B 0.01 43 +test_448_A test_448_B 0.01 19 +test_449_A test_449_B 0.01 34 +test_450_A test_450_B 0.01 44 +test_451_A test_451_B 0.01 36 +test_452_A test_452_B 0.01 32 +test_453_A test_453_B 0.01 49 +test_454_A test_454_B 0.01 48.5 +test_455_A test_455_B 0.01 46 +test_456_A test_456_B 0.01 33.5 +test_457_A test_457_B 0.01 49.5 +test_458_A test_458_B 0.01 38 +test_459_A test_459_B 0.01 21 +test_460_A test_460_B 0.01 40 +test_461_A test_461_B 0.01 32 +test_462_A test_462_B 0.01 37 +test_463_A test_463_B 0.01 23 +test_464_A test_464_B 0.01 19 +test_465_A test_465_B 0.01 29 +test_466_A test_466_B 0.01 38 +test_467_A test_467_B 0.01 29 +test_468_A test_468_B 0.01 45 +test_469_A test_469_B 0.01 27.5 +test_470_A test_470_B 0.01 43 +test_471_A test_471_B 0.01 24.5 +test_472_A test_472_B 0.01 42 +test_473_A test_473_B 0.01 36.5 +test_474_A test_474_B 0.01 46.5 +test_475_A test_475_B 0.01 18 +test_476_A test_476_B 0.01 29 +test_477_A test_477_B 0.01 44 +test_478_A test_478_B 0.01 49 +test_479_A test_479_B 0.01 33 +test_480_A test_480_B 0.01 43 +test_481_A test_481_B 0.01 42 +test_482_A test_482_B 0.01 31 +test_483_A test_483_B 0.01 37 +test_484_A test_484_B 0.01 25 +test_485_A test_485_B 0.01 33 +test_486_A test_486_B 0.01 35 +test_487_A test_487_B 0.01 39 +test_488_A test_488_B 0.01 26.5 +test_489_A test_489_B 0.01 39.5 +test_490_A test_490_B 0.01 26 +test_491_A test_491_B 0.01 45 +test_492_A test_492_B 0.01 21 +test_493_A test_493_B 0.01 37 +test_494_A test_494_B 0.01 50 +test_495_A test_495_B 0.01 41 +test_496_A test_496_B 0.01 34 +test_497_A test_497_B 0.01 35 +test_498_A test_498_B 0.01 34 +test_499_A test_499_B 0.01 30 +test_500_A test_500_B 0.01 39 +test_501_A test_501_B 0.01 36 +test_502_A test_502_B 0.01 36 +test_503_A test_503_B 0.01 49.5 +test_504_A test_504_B 0.01 40.5 +test_505_A test_505_B 0.01 29 +test_506_A test_506_B 0.01 33 +test_507_A test_507_B 0.01 38 +test_508_A test_508_B 0.01 21.5 +test_509_A test_509_B 0.01 27 +test_510_A test_510_B 0.01 43 +test_511_A test_511_B 0.01 34 +test_512_A test_512_B 0.01 25.5 +test_513_A test_513_B 0.01 19 +test_514_A test_514_B 0.01 28 +test_515_A test_515_B 0.01 41.5 +test_516_A test_516_B 0.01 46 +test_517_A test_517_B 0.01 34 +test_518_A test_518_B 0.01 33 +test_519_A test_519_B 0.01 37.5 +test_520_A test_520_B 0.01 37 +test_521_A test_521_B 0.01 42.5 +test_522_A test_522_B 0.01 44 +test_523_A test_523_B 0.01 36.5 +test_524_A test_524_B 0.01 40 +test_525_A test_525_B 0.01 36.5 +test_526_A test_526_B 0.01 24 +test_527_A test_527_B 0.01 34 +test_528_A test_528_B 0.01 23.5 +test_529_A test_529_B 0.01 30 +test_530_A test_530_B 0.01 50 +test_531_A test_531_B 0.01 33 +test_532_A test_532_B 0.01 36 +test_533_A test_533_B 0.01 24 +test_534_A test_534_B 0.01 46.5 +test_535_A test_535_B 0.01 39 +test_536_A test_536_B 0.01 26 +test_537_A test_537_B 0.01 30 +test_538_A test_538_B 0.01 27.5 +test_539_A test_539_B 0.01 26 +test_540_A test_540_B 0.01 23 +test_541_A test_541_B 0.01 26.5 +test_542_A test_542_B 0.01 40.5 +test_543_A test_543_B 0.01 41 +test_544_A test_544_B 0.01 46 +test_545_A test_545_B 0.01 33 +test_546_A test_546_B 0.01 38 +test_547_A test_547_B 0.01 33 +test_548_A test_548_B 0.01 28 +test_549_A test_549_B 0.01 29 +test_550_A test_550_B 0.01 33 +test_551_A test_551_B 0.01 20 +test_552_A test_552_B 0.01 27 +test_553_A test_553_B 0.01 21.5 +test_554_A test_554_B 0.01 28 +test_555_A test_555_B 0.01 31 +test_556_A test_556_B 0.01 31 +test_557_A test_557_B 0.01 30 +test_558_A test_558_B 0.01 29 +test_559_A test_559_B 0.01 30 +test_560_A test_560_B 0.01 21 +test_561_A test_561_B 0.01 37.5 +test_562_A test_562_B 0.01 40 +test_563_A test_563_B 0.01 25 +test_564_A test_564_B 0.01 22 +test_565_A test_565_B 0.01 24 +test_566_A test_566_B 0.01 39 +test_567_A test_567_B 0.01 27 +test_568_A test_568_B 0.01 30 +test_569_A test_569_B 0.01 35 +test_570_A test_570_B 0.01 29 +test_571_A test_571_B 0.01 27 +test_572_A test_572_B 0.01 23 +test_573_A test_573_B 0.01 34 +test_574_A test_574_B 0.01 26 +test_575_A test_575_B 0.01 28 +test_576_A test_576_B 0.01 22 +test_577_A test_577_B 0.01 29 +test_578_A test_578_B 0.01 24 +test_579_A test_579_B 0.01 22 +test_580_A test_580_B 0.01 31 +test_581_A test_581_B 0.01 39 +test_582_A test_582_B 0.01 21 +test_583_A test_583_B 0.01 32 +test_584_A test_584_B 0.01 22 +test_585_A test_585_B 0.01 26 +test_586_A test_586_B 0.01 20 +test_587_A test_587_B 0.01 28 +test_588_A test_588_B 0.01 22 +test_589_A test_589_B 0.01 20 +test_590_A test_590_B 0.01 17 +test_591_A test_591_B 0.01 24 +test_592_A test_592_B 0.01 27.5 +test_593_A test_593_B 0.01 31 +test_594_A test_594_B 0.01 18 +test_595_A test_595_B 0.01 18 +test_596_A test_596_B 0.01 32 +test_597_A test_597_B 0.01 17 +test_598_A test_598_B 0.01 19 +test_599_A test_599_B 0.01 23 +test_600_A test_600_B 0.01 16 +test_601_A test_601_B 0.01 13 +test_602_A test_602_B 0.01 25 +test_603_A test_603_B 0.01 17 +test_604_A test_604_B 0.01 18 +test_605_A test_605_B 0.01 20 +test_606_A test_606_B 0.01 16 +test_607_A test_607_B 0.01 19 +test_608_A test_608_B 0.01 22 +test_609_A test_609_B 0.01 18 +test_610_A test_610_B 0.01 22 +test_611_A test_611_B 0.01 18 +test_612_A test_612_B 0.01 21 +test_613_A test_613_B 0.01 23 +test_614_A test_614_B 0.01 14 +test_615_A test_615_B 0.01 21 +test_616_A test_616_B 0.01 20 +test_617_A test_617_B 0.01 17 +test_618_A test_618_B 0.01 15 +test_619_A test_619_B 0.01 18 +test_620_A test_620_B 0.01 346.5 +test_621_A test_621_B 0.01 414 +test_622_A test_622_B 0.01 321 +test_623_A test_623_B 0.01 428 +test_624_A test_624_B 0.01 137.5 +test_625_A test_625_B 0.01 272 +test_626_A test_626_B 0.01 257 +test_627_A test_627_B 0.01 261 +test_628_A test_628_B 0.01 480.5 +test_629_A test_629_B 0.01 378 +test_630_A test_630_B 0.01 153.5 +test_631_A test_631_B 0.01 199 +test_632_A test_632_B 0.01 457 +test_633_A test_633_B 0.01 358.5 +test_634_A test_634_B 0.01 357 +test_635_A test_635_B 0.01 216 +test_636_A test_636_B 0.01 460.5 +test_637_A test_637_B 0.01 314 +test_638_A test_638_B 0.01 322 +test_639_A test_639_B 0.01 440.5 +test_640_A test_640_B 0.01 324 +test_641_A test_641_B 0.01 265 +test_642_A test_642_B 0.01 395.5 +test_643_A test_643_B 0.01 397 +test_644_A test_644_B 0.01 308 +test_645_A test_645_B 0.01 199 +test_646_A test_646_B 0.01 256.5 +test_647_A test_647_B 0.01 293 +test_648_A test_648_B 0.01 297 +test_649_A test_649_B 0.01 410.5 +test_650_A test_650_B 0.01 322 +test_651_A test_651_B 0.01 458 +test_652_A test_652_B 0.01 420.5 +test_653_A test_653_B 0.01 235 +test_654_A test_654_B 0.01 220 +test_655_A test_655_B 0.01 257 +test_656_A test_656_B 0.01 305 +test_657_A test_657_B 0.01 230.5 +test_658_A test_658_B 0.01 500 +test_659_A test_659_B 0.01 155 +test_660_A test_660_B 0.01 418 +test_661_A test_661_B 0.01 403.5 +test_662_A test_662_B 0.01 296 +test_663_A test_663_B 0.01 297.5 +test_664_A test_664_B 0.01 219 +test_665_A test_665_B 0.01 476.5 +test_666_A test_666_B 0.01 347 +test_667_A test_667_B 0.01 284 +test_668_A test_668_B 0.01 324.5 +test_669_A test_669_B 0.01 231 +test_670_A test_670_B 0.01 410 +test_671_A test_671_B 0.01 206 +test_672_A test_672_B 0.01 266 +test_673_A test_673_B 0.01 319.5 +test_674_A test_674_B 0.01 483 +test_675_A test_675_B 0.01 355.5 +test_676_A test_676_B 0.01 316.5 +test_677_A test_677_B 0.01 297 +test_678_A test_678_B 0.01 458 +test_679_A test_679_B 0.01 398.5 +test_680_A test_680_B 0.01 371.5 +test_681_A test_681_B 0.01 338 +test_682_A test_682_B 0.01 461 +test_683_A test_683_B 0.01 298.5 +test_684_A test_684_B 0.01 303.5 +test_685_A test_685_B 0.01 265 +test_686_A test_686_B 0.01 400.5 +test_687_A test_687_B 0.01 264 +test_688_A test_688_B 0.01 303 +test_689_A test_689_B 0.01 360 +test_690_A test_690_B 0.01 325 +test_691_A test_691_B 0.01 217 +test_692_A test_692_B 0.01 313 +test_693_A test_693_B 0.01 491 +test_694_A test_694_B 0.01 367.5 +test_695_A test_695_B 0.01 285 +test_696_A test_696_B 0.01 314 +test_697_A test_697_B 0.01 379 +test_698_A test_698_B 0.01 277.5 +test_699_A test_699_B 0.01 302 +test_700_A test_700_B 0.01 299 +test_701_A test_701_B 0.01 439.5 +test_702_A test_702_B 0.01 289 +test_703_A test_703_B 0.01 460.5 +test_704_A test_704_B 0.01 210 +test_705_A test_705_B 0.01 491 +test_706_A test_706_B 0.01 438.5 +test_707_A test_707_B 0.01 323 +test_708_A test_708_B 0.01 427 +test_709_A test_709_B 0.01 364 +test_710_A test_710_B 0.01 434 +test_711_A test_711_B 0.01 434 +test_712_A test_712_B 0.01 391 +test_713_A test_713_B 0.01 356 +test_714_A test_714_B 0.01 420 +test_715_A test_715_B 0.01 354 +test_716_A test_716_B 0.01 281 +test_717_A test_717_B 0.01 359.5 +test_718_A test_718_B 0.01 345 +test_719_A test_719_B 0.01 341.5 +test_720_A test_720_B 0.01 497.5 +test_721_A test_721_B 0.01 199 +test_722_A test_722_B 0.01 452 +test_723_A test_723_B 0.01 335.5 +test_724_A test_724_B 0.01 311 +test_725_A test_725_B 0.01 336 +test_726_A test_726_B 0.01 300 +test_727_A test_727_B 0.01 317 +test_728_A test_728_B 0.01 492 +test_729_A test_729_B 0.01 304 +test_730_A test_730_B 0.01 217 +test_731_A test_731_B 0.01 322 +test_732_A test_732_B 0.01 289 +test_733_A test_733_B 0.01 182 +test_734_A test_734_B 0.01 410.5 +test_735_A test_735_B 0.01 306 +test_736_A test_736_B 0.01 294 +test_737_A test_737_B 0.01 254 +test_738_A test_738_B 0.01 338.5 +test_739_A test_739_B 0.01 225 +test_740_A test_740_B 0.01 280 +test_741_A test_741_B 0.01 454 +test_742_A test_742_B 0.01 226 +test_743_A test_743_B 0.01 365 +test_744_A test_744_B 0.01 456 +test_745_A test_745_B 0.01 405 +test_746_A test_746_B 0.01 322 +test_747_A test_747_B 0.01 279 +test_748_A test_748_B 0.01 311.5 +test_749_A test_749_B 0.01 308 +test_750_A test_750_B 0.01 322 +test_751_A test_751_B 0.01 409 +test_752_A test_752_B 0.01 277 +test_753_A test_753_B 0.01 318 +test_754_A test_754_B 0.01 299.5 +test_755_A test_755_B 0.01 462.5 +test_756_A test_756_B 0.01 314 +test_757_A test_757_B 0.01 300 +test_758_A test_758_B 0.01 455 +test_759_A test_759_B 0.01 422.5 +test_760_A test_760_B 0.01 433.5 +test_761_A test_761_B 0.01 278 +test_762_A test_762_B 0.01 484.5 +test_763_A test_763_B 0.01 348 +test_764_A test_764_B 0.01 491 +test_765_A test_765_B 0.01 280 +test_766_A test_766_B 0.01 259 +test_767_A test_767_B 0.01 275.5 +test_768_A test_768_B 0.01 348 +test_769_A test_769_B 0.01 330 +test_770_A test_770_B 0.01 412 +test_771_A test_771_B 0.01 262 +test_772_A test_772_B 0.01 455 +test_773_A test_773_B 0.01 294 +test_774_A test_774_B 0.01 425 +test_775_A test_775_B 0.01 220.5 +test_776_A test_776_B 0.01 411.5 +test_777_A test_777_B 0.01 383 +test_778_A test_778_B 0.01 363 +test_779_A test_779_B 0.01 302 +test_780_A test_780_B 0.01 328 +test_781_A test_781_B 0.01 294 +test_782_A test_782_B 0.01 407.5 +test_783_A test_783_B 0.01 260.5 +test_784_A test_784_B 0.01 410 +test_785_A test_785_B 0.01 328 +test_786_A test_786_B 0.01 419.5 +test_787_A test_787_B 0.01 165 +test_788_A test_788_B 0.01 389 +test_789_A test_789_B 0.01 254 +test_790_A test_790_B 0.01 311 +test_791_A test_791_B 0.01 258 +test_792_A test_792_B 0.01 331 +test_793_A test_793_B 0.01 378 +test_794_A test_794_B 0.01 415 +test_795_A test_795_B 0.01 364 +test_796_A test_796_B 0.01 279 +test_797_A test_797_B 0.01 249 +test_798_A test_798_B 0.01 463 +test_799_A test_799_B 0.01 304 +test_800_A test_800_B 0.01 187 +test_801_A test_801_B 0.01 305.5 +test_802_A test_802_B 0.01 385 +test_803_A test_803_B 0.01 360.5 +test_804_A test_804_B 0.01 269 +test_805_A test_805_B 0.01 294 +test_806_A test_806_B 0.01 362 +test_807_A test_807_B 0.01 354 +test_808_A test_808_B 0.01 196 +test_809_A test_809_B 0.01 248 +test_810_A test_810_B 0.01 297.5 +test_811_A test_811_B 0.01 243 +test_812_A test_812_B 0.01 312 +test_813_A test_813_B 0.01 241 +test_814_A test_814_B 0.01 384 +test_815_A test_815_B 0.01 250 +test_816_A test_816_B 0.01 205 +test_817_A test_817_B 0.01 308 +test_818_A test_818_B 0.01 356 +test_819_A test_819_B 0.01 230 +test_820_A test_820_B 0.01 178 +test_821_A test_821_B 0.01 294 +test_822_A test_822_B 0.01 227 +test_823_A test_823_B 0.01 234 +test_824_A test_824_B 0.01 241 +test_825_A test_825_B 0.01 233 +test_826_A test_826_B 0.01 284 +test_827_A test_827_B 0.01 287 +test_828_A test_828_B 0.01 192 +test_829_A test_829_B 0.01 359 +test_830_A test_830_B 0.01 225 +test_831_A test_831_B 0.01 273 +test_832_A test_832_B 0.01 248 +test_833_A test_833_B 0.01 217 +test_834_A test_834_B 0.01 332 +test_835_A test_835_B 0.01 218 +test_836_A test_836_B 0.01 335 +test_837_A test_837_B 0.01 192 +test_838_A test_838_B 0.01 188 +test_839_A test_839_B 0.01 347 +test_840_A test_840_B 0.01 273 +test_841_A test_841_B 0.01 187 +test_842_A test_842_B 0.01 170 +test_843_A test_843_B 0.01 230 +test_844_A test_844_B 0.01 206.5 +test_845_A test_845_B 0.01 177 +test_846_A test_846_B 0.01 251 +test_847_A test_847_B 0.01 163 +test_848_A test_848_B 0.01 174 +test_849_A test_849_B 0.01 177 +test_850_A test_850_B 0.01 252 +test_851_A test_851_B 0.01 262 +test_852_A test_852_B 0.01 174 +test_853_A test_853_B 0.01 169 +test_854_A test_854_B 0.01 200 +test_855_A test_855_B 0.01 189 +test_856_A test_856_B 0.01 206.5 +test_857_A test_857_B 0.01 260 +test_858_A test_858_B 0.01 191 +test_859_A test_859_B 0.01 216 +test_860_A test_860_B 0.01 181.5 +test_861_A test_861_B 0.01 219 +test_862_A test_862_B 0.01 143 +test_863_A test_863_B 0.01 173 +test_864_A test_864_B 0.01 134 +test_865_A test_865_B 0.01 159 +test_866_A test_866_B 0.01 205 +test_867_A test_867_B 0.01 178 +test_868_A test_868_B 0.01 189.5 +test_869_A test_869_B 0.01 145 +test_870_A test_870_B 0.01 179 +test_871_A test_871_B 0.01 167 +test_872_A test_872_B 0.01 149 +test_873_A test_873_B 0.01 149 +test_874_A test_874_B 0.01 187 +test_875_A test_875_B 0.01 193 +test_876_A test_876_B 0.01 165 +test_877_A test_877_B 0.01 190 +test_878_A test_878_B 0.01 242 +test_879_A test_879_B 0.01 187 diff --git a/geom_bottleneck/tests/data/test_list.txt.bak b/geom_bottleneck/tests/data/test_list.txt.bak new file mode 100644 index 0000000..71b89ed --- /dev/null +++ b/geom_bottleneck/tests/data/test_list.txt.bak @@ -0,0 +1,792 @@ +test_001_A test_001_B 0.01 1 -1 0 0 -1 +test_002_A test_002_B 0.01 0.2 0 0 +test_003_A test_003_B 0.01 2 1 1 +test_004_A test_004_B 0.01 inf -1 -1 +test_005_A test_005_B 0.01 4 5 5 +test_010_A test_010_B 0.01 1.32937 +test_011_A test_011_B 0.01 1.03125 +test_012_A test_012_B 0.01 0.56679 +test_013_A test_013_B 0.01 1.26332 +test_014_A test_014_B 0.01 0 +test_015_A test_015_B 0.01 0 +test_016_A test_016_B 0.01 0 +test_100_A test_100_B 0.01 1.5 +test_101_A test_101_B 0.01 1.5 +test_102_A test_102_B 0.01 4.5 +test_103_A test_103_B 0.01 3 +test_104_A test_104_B 0.01 3.5 +test_105_A test_105_B 0.01 3.5 +test_106_A test_106_B 0.01 3 +test_107_A test_107_B 0.01 5 +test_108_A test_108_B 0.01 5 +test_109_A test_109_B 0.01 3 +test_110_A test_110_B 0.01 4.5 +test_111_A test_111_B 0.01 4 +test_112_A test_112_B 0.01 4 +test_113_A test_113_B 0.01 2.5 +test_114_A test_114_B 0.01 4.5 +test_115_A test_115_B 0.01 4 +test_116_A test_116_B 0.01 4 +test_117_A test_117_B 0.01 2.5 +test_118_A test_118_B 0.01 3 +test_119_A test_119_B 0.01 5 +test_120_A test_120_B 0.01 2 +test_121_A test_121_B 0.01 3 +test_122_A test_122_B 0.01 1 +test_123_A test_123_B 0.01 4 +test_124_A test_124_B 0.01 4 +test_125_A test_125_B 0.01 4.5 +test_126_A test_126_B 0.01 3 +test_127_A test_127_B 0.01 2.5 +test_128_A test_128_B 0.01 2 +test_129_A test_129_B 0.01 3 +test_130_A test_130_B 0.01 5 +test_131_A test_131_B 0.01 5 +test_132_A test_132_B 0.01 2 +test_133_A test_133_B 0.01 3 +test_134_A test_134_B 0.01 3 +test_135_A test_135_B 0.01 4 +test_136_A test_136_B 0.01 2 +test_137_A test_137_B 0.01 3 +test_138_A test_138_B 0.01 2 +test_139_A test_139_B 0.01 2.5 +test_140_A test_140_B 0.01 2 +test_141_A test_141_B 0.01 4 +test_142_A test_142_B 0.01 3 +test_143_A test_143_B 0.01 4 +test_144_A test_144_B 0.01 3 +test_145_A test_145_B 0.01 4 +test_146_A test_146_B 0.01 3 +test_147_A test_147_B 0.01 4 +test_148_A test_148_B 0.01 3 +test_149_A test_149_B 0.01 4 +test_150_A test_150_B 0.01 3 +test_151_A test_151_B 0.01 4 +test_152_A test_152_B 0.01 3.5 +test_153_A test_153_B 0.01 4 +test_154_A test_154_B 0.01 3.5 +test_155_A test_155_B 0.01 3 +test_156_A test_156_B 0.01 3 +test_157_A test_157_B 0.01 4.5 +test_158_A test_158_B 0.01 3.5 +test_159_A test_159_B 0.01 1 +test_160_A test_160_B 0.01 4 +test_161_A test_161_B 0.01 4 +test_162_A test_162_B 0.01 3 +test_163_A test_163_B 0.01 5 +test_164_A test_164_B 0.01 4 +test_165_A test_165_B 0.01 4 +test_166_A test_166_B 0.01 4 +test_167_A test_167_B 0.01 4.5 +test_168_A test_168_B 0.01 4 +test_169_A test_169_B 0.01 3.5 +test_170_A test_170_B 0.01 4 +test_171_A test_171_B 0.01 2 +test_172_A test_172_B 0.01 3 +test_173_A test_173_B 0.01 4 +test_174_A test_174_B 0.01 3 +test_175_A test_175_B 0.01 5 +test_176_A test_176_B 0.01 4.5 +test_177_A test_177_B 0.01 4.5 +test_178_A test_178_B 0.01 4.5 +test_179_A test_179_B 0.01 4 +test_180_A test_180_B 0.01 5 +test_181_A test_181_B 0.01 4 +test_182_A test_182_B 0.01 4.5 +test_183_A test_183_B 0.01 5 +test_184_A test_184_B 0.01 4 +test_185_A test_185_B 0.01 4.5 +test_186_A test_186_B 0.01 3 +test_187_A test_187_B 0.01 4.5 +test_188_A test_188_B 0.01 3 +test_189_A test_189_B 0.01 2 +test_190_A test_190_B 0.01 3 +test_191_A test_191_B 0.01 3 +test_192_A test_192_B 0.01 3.5 +test_193_A test_193_B 0.01 4.5 +test_194_A test_194_B 0.01 3 +test_195_A test_195_B 0.01 3 +test_196_A test_196_B 0.01 3 +test_197_A test_197_B 0.01 3 +test_198_A test_198_B 0.01 5 +test_199_A test_199_B 0.01 3.5 +test_200_A test_200_B 0.01 3 +test_201_A test_201_B 0.01 5 +test_202_A test_202_B 0.01 3 +test_203_A test_203_B 0.01 4 +test_204_A test_204_B 0.01 2.5 +test_205_A test_205_B 0.01 4 +test_206_A test_206_B 0.01 3.5 +test_207_A test_207_B 0.01 3 +test_208_A test_208_B 0.01 4 +test_209_A test_209_B 0.01 3 +test_210_A test_210_B 0.01 5 +test_211_A test_211_B 0.01 3 +test_212_A test_212_B 0.01 3 +test_213_A test_213_B 0.01 3.5 +test_214_A test_214_B 0.01 4 +test_215_A test_215_B 0.01 3 +test_216_A test_216_B 0.01 3.5 +test_217_A test_217_B 0.01 4 +test_218_A test_218_B 0.01 4 +test_219_A test_219_B 0.01 4 +test_220_A test_220_B 0.01 3 +test_221_A test_221_B 0.01 4 +test_222_A test_222_B 0.01 4 +test_223_A test_223_B 0.01 4 +test_224_A test_224_B 0.01 3 +test_225_A test_225_B 0.01 3 +test_226_A test_226_B 0.01 4 +test_227_A test_227_B 0.01 4 +test_228_A test_228_B 0.01 4 +test_229_A test_229_B 0.01 3 +test_230_A test_230_B 0.01 3 +test_231_A test_231_B 0.01 4 +test_232_A test_232_B 0.01 4 +test_233_A test_233_B 0.01 2 +test_234_A test_234_B 0.01 3.5 +test_235_A test_235_B 0.01 4 +test_236_A test_236_B 0.01 3 +test_237_A test_237_B 0.01 3.5 +test_238_A test_238_B 0.01 4 +test_239_A test_239_B 0.01 3 +test_240_A test_240_B 0.01 3 +test_241_A test_241_B 0.01 5 +test_242_A test_242_B 0.01 4.5 +test_243_A test_243_B 0.01 4 +test_244_A test_244_B 0.01 3.5 +test_245_A test_245_B 0.01 5 +test_246_A test_246_B 0.01 2.5 +test_247_A test_247_B 0.01 3 +test_248_A test_248_B 0.01 4 +test_249_A test_249_B 0.01 2 +test_250_A test_250_B 0.01 5 +test_251_A test_251_B 0.01 4 +test_252_A test_252_B 0.01 4 +test_253_A test_253_B 0.01 4.5 +test_254_A test_254_B 0.01 4 +test_255_A test_255_B 0.01 3 +test_256_A test_256_B 0.01 4.5 +test_257_A test_257_B 0.01 4 +test_258_A test_258_B 0.01 5 +test_259_A test_259_B 0.01 4 +test_260_A test_260_B 0.01 4 +test_261_A test_261_B 0.01 2.5 +test_262_A test_262_B 0.01 2 +test_263_A test_263_B 0.01 4.5 +test_264_A test_264_B 0.01 3.5 +test_265_A test_265_B 0.01 4 +test_266_A test_266_B 0.01 3 +test_267_A test_267_B 0.01 5 +test_268_A test_268_B 0.01 4 +test_269_A test_269_B 0.01 4 +test_270_A test_270_B 0.01 3 +test_271_A test_271_B 0.01 4 +test_272_A test_272_B 0.01 4 +test_273_A test_273_B 0.01 2 +test_274_A test_274_B 0.01 3 +test_275_A test_275_B 0.01 3 +test_276_A test_276_B 0.01 4 +test_277_A test_277_B 0.01 5 +test_278_A test_278_B 0.01 4 +test_279_A test_279_B 0.01 4.5 +test_280_A test_280_B 0.01 3.5 +test_281_A test_281_B 0.01 2 +test_282_A test_282_B 0.01 3 +test_283_A test_283_B 0.01 3 +test_284_A test_284_B 0.01 3 +test_285_A test_285_B 0.01 3 +test_286_A test_286_B 0.01 3 +test_287_A test_287_B 0.01 3.5 +test_288_A test_288_B 0.01 3 +test_289_A test_289_B 0.01 2 +test_290_A test_290_B 0.01 4 +test_291_A test_291_B 0.01 3 +test_292_A test_292_B 0.01 4 +test_293_A test_293_B 0.01 2.5 +test_294_A test_294_B 0.01 4 +test_295_A test_295_B 0.01 3.5 +test_296_A test_296_B 0.01 3 +test_297_A test_297_B 0.01 3 +test_298_A test_298_B 0.01 4 +test_299_A test_299_B 0.01 4 +test_300_A test_300_B 0.01 3 +test_301_A test_301_B 0.01 2 +test_302_A test_302_B 0.01 2 +test_303_A test_303_B 0.01 3 +test_304_A test_304_B 0.01 3 +test_305_A test_305_B 0.01 3 +test_306_A test_306_B 0.01 3 +test_307_A test_307_B 0.01 2 +test_308_A test_308_B 0.01 3 +test_309_A test_309_B 0.01 2.5 +test_310_A test_310_B 0.01 4 +test_311_A test_311_B 0.01 3 +test_312_A test_312_B 0.01 3.5 +test_313_A test_313_B 0.01 3 +test_314_A test_314_B 0.01 2 +test_315_A test_315_B 0.01 3 +test_316_A test_316_B 0.01 4.5 +test_317_A test_317_B 0.01 3 +test_318_A test_318_B 0.01 3 +test_319_A test_319_B 0.01 3 +test_320_A test_320_B 0.01 4 +test_321_A test_321_B 0.01 2 +test_322_A test_322_B 0.01 3 +test_323_A test_323_B 0.01 3 +test_324_A test_324_B 0.01 2 +test_325_A test_325_B 0.01 3 +test_326_A test_326_B 0.01 2 +test_327_A test_327_B 0.01 3 +test_328_A test_328_B 0.01 3 +test_329_A test_329_B 0.01 4 +test_330_A test_330_B 0.01 3 +test_331_A test_331_B 0.01 3 +test_332_A test_332_B 0.01 2 +test_333_A test_333_B 0.01 2 +test_334_A test_334_B 0.01 3 +test_335_A test_335_B 0.01 2 +test_336_A test_336_B 0.01 3 +test_337_A test_337_B 0.01 2 +test_338_A test_338_B 0.01 2 +test_339_A test_339_B 0.01 2 +test_340_A test_340_B 0.01 1 +test_341_A test_341_B 0.01 2 +test_342_A test_342_B 0.01 2 +test_343_A test_343_B 0.01 2 +test_344_A test_344_B 0.01 2 +test_345_A test_345_B 0.01 2 +test_346_A test_346_B 0.01 2 +test_347_A test_347_B 0.01 2 +test_348_A test_348_B 0.01 2 +test_349_A test_349_B 0.01 2 +test_350_A test_350_B 0.01 2 +test_351_A test_351_B 0.01 2 +test_352_A test_352_B 0.01 2 +test_353_A test_353_B 0.01 2.5 +test_354_A test_354_B 0.01 2 +test_355_A test_355_B 0.01 2 +test_356_A test_356_B 0.01 2 +test_357_A test_357_B 0.01 2 +test_358_A test_358_B 0.01 2 +test_359_A test_359_B 0.01 2 +test_360_A test_360_B 0.01 32 +test_361_A test_361_B 0.01 8 +test_362_A test_362_B 0.01 29.5 +test_363_A test_363_B 0.01 41 +test_364_A test_364_B 0.01 41.5 +test_365_A test_365_B 0.01 27.5 +test_366_A test_366_B 0.01 46 +test_367_A test_367_B 0.01 37.5 +test_368_A test_368_B 0.01 27 +test_369_A test_369_B 0.01 42 +test_370_A test_370_B 0.01 45.5 +test_371_A test_371_B 0.01 34 +test_372_A test_372_B 0.01 19.5 +test_373_A test_373_B 0.01 24 +test_374_A test_374_B 0.01 10 +test_375_A test_375_B 0.01 17.5 +test_376_A test_376_B 0.01 28.5 +test_377_A test_377_B 0.01 40 +test_378_A test_378_B 0.01 40 +test_379_A test_379_B 0.01 24.5 +test_380_A test_380_B 0.01 36 +test_381_A test_381_B 0.01 38 +test_382_A test_382_B 0.01 48 +test_383_A test_383_B 0.01 32.5 +test_384_A test_384_B 0.01 44 +test_385_A test_385_B 0.01 44.5 +test_386_A test_386_B 0.01 11 +test_387_A test_387_B 0.01 47.5 +test_388_A test_388_B 0.01 28 +test_389_A test_389_B 0.01 32 +test_390_A test_390_B 0.01 24.5 +test_391_A test_391_B 0.01 47 +test_392_A test_392_B 0.01 28 +test_393_A test_393_B 0.01 16 +test_394_A test_394_B 0.01 44 +test_395_A test_395_B 0.01 38 +test_396_A test_396_B 0.01 47.5 +test_397_A test_397_B 0.01 35 +test_398_A test_398_B 0.01 33 +test_399_A test_399_B 0.01 33 +test_400_A test_400_B 0.01 31 +test_401_A test_401_B 0.01 48 +test_402_A test_402_B 0.01 37.5 +test_403_A test_403_B 0.01 40 +test_404_A test_404_B 0.01 47 +test_405_A test_405_B 0.01 23 +test_406_A test_406_B 0.01 40 +test_407_A test_407_B 0.01 46 +test_408_A test_408_B 0.01 39 +test_409_A test_409_B 0.01 26 +test_410_A test_410_B 0.01 28 +test_411_A test_411_B 0.01 27 +test_412_A test_412_B 0.01 33 +test_413_A test_413_B 0.01 36 +test_414_A test_414_B 0.01 42.5 +test_415_A test_415_B 0.01 40 +test_416_A test_416_B 0.01 37 +test_417_A test_417_B 0.01 43 +test_418_A test_418_B 0.01 16 +test_419_A test_419_B 0.01 34 +test_420_A test_420_B 0.01 42.5 +test_421_A test_421_B 0.01 38 +test_422_A test_422_B 0.01 30 +test_423_A test_423_B 0.01 44 +test_424_A test_424_B 0.01 46 +test_425_A test_425_B 0.01 38 +test_426_A test_426_B 0.01 35.5 +test_427_A test_427_B 0.01 29 +test_428_A test_428_B 0.01 43.5 +test_429_A test_429_B 0.01 34 +test_430_A test_430_B 0.01 48 +test_431_A test_431_B 0.01 41 +test_432_A test_432_B 0.01 35 +test_433_A test_433_B 0.01 32 +test_434_A test_434_B 0.01 36 +test_435_A test_435_B 0.01 43.5 +test_436_A test_436_B 0.01 32.5 +test_437_A test_437_B 0.01 40 +test_438_A test_438_B 0.01 34 +test_439_A test_439_B 0.01 31.5 +test_440_A test_440_B 0.01 26.5 +test_441_A test_441_B 0.01 49.5 +test_442_A test_442_B 0.01 30 +test_443_A test_443_B 0.01 29 +test_444_A test_444_B 0.01 29 +test_445_A test_445_B 0.01 48 +test_446_A test_446_B 0.01 35 +test_447_A test_447_B 0.01 43 +test_448_A test_448_B 0.01 19 +test_449_A test_449_B 0.01 34 +test_450_A test_450_B 0.01 44 +test_451_A test_451_B 0.01 36 +test_452_A test_452_B 0.01 32 +test_453_A test_453_B 0.01 49 +test_454_A test_454_B 0.01 48.5 +test_455_A test_455_B 0.01 46 +test_456_A test_456_B 0.01 33.5 +test_457_A test_457_B 0.01 49.5 +test_458_A test_458_B 0.01 38 +test_459_A test_459_B 0.01 21 +test_460_A test_460_B 0.01 40 +test_461_A test_461_B 0.01 32 +test_462_A test_462_B 0.01 37 +test_463_A test_463_B 0.01 23 +test_464_A test_464_B 0.01 19 +test_465_A test_465_B 0.01 29 +test_466_A test_466_B 0.01 38 +test_467_A test_467_B 0.01 29 +test_468_A test_468_B 0.01 45 +test_469_A test_469_B 0.01 27.5 +test_470_A test_470_B 0.01 43 +test_471_A test_471_B 0.01 24.5 +test_472_A test_472_B 0.01 42 +test_473_A test_473_B 0.01 36.5 +test_474_A test_474_B 0.01 46.5 +test_475_A test_475_B 0.01 18 +test_476_A test_476_B 0.01 29 +test_477_A test_477_B 0.01 44 +test_478_A test_478_B 0.01 49 +test_479_A test_479_B 0.01 33 +test_480_A test_480_B 0.01 43 +test_481_A test_481_B 0.01 42 +test_482_A test_482_B 0.01 31 +test_483_A test_483_B 0.01 37 +test_484_A test_484_B 0.01 25 +test_485_A test_485_B 0.01 33 +test_486_A test_486_B 0.01 35 +test_487_A test_487_B 0.01 39 +test_488_A test_488_B 0.01 26.5 +test_489_A test_489_B 0.01 39.5 +test_490_A test_490_B 0.01 26 +test_491_A test_491_B 0.01 45 +test_492_A test_492_B 0.01 21 +test_493_A test_493_B 0.01 37 +test_494_A test_494_B 0.01 50 +test_495_A test_495_B 0.01 41 +test_496_A test_496_B 0.01 34 +test_497_A test_497_B 0.01 35 +test_498_A test_498_B 0.01 34 +test_499_A test_499_B 0.01 30 +test_500_A test_500_B 0.01 39 +test_501_A test_501_B 0.01 36 +test_502_A test_502_B 0.01 36 +test_503_A test_503_B 0.01 49.5 +test_504_A test_504_B 0.01 40.5 +test_505_A test_505_B 0.01 29 +test_506_A test_506_B 0.01 33 +test_507_A test_507_B 0.01 38 +test_508_A test_508_B 0.01 21.5 +test_509_A test_509_B 0.01 27 +test_510_A test_510_B 0.01 43 +test_511_A test_511_B 0.01 34 +test_512_A test_512_B 0.01 25.5 +test_513_A test_513_B 0.01 19 +test_514_A test_514_B 0.01 28 +test_515_A test_515_B 0.01 41.5 +test_516_A test_516_B 0.01 46 +test_517_A test_517_B 0.01 34 +test_518_A test_518_B 0.01 33 +test_519_A test_519_B 0.01 37.5 +test_520_A test_520_B 0.01 37 +test_521_A test_521_B 0.01 42.5 +test_522_A test_522_B 0.01 44 +test_523_A test_523_B 0.01 36.5 +test_524_A test_524_B 0.01 40 +test_525_A test_525_B 0.01 36.5 +test_526_A test_526_B 0.01 24 +test_527_A test_527_B 0.01 34 +test_528_A test_528_B 0.01 23.5 +test_529_A test_529_B 0.01 30 +test_530_A test_530_B 0.01 50 +test_531_A test_531_B 0.01 33 +test_532_A test_532_B 0.01 36 +test_533_A test_533_B 0.01 24 +test_534_A test_534_B 0.01 46.5 +test_535_A test_535_B 0.01 39 +test_536_A test_536_B 0.01 26 +test_537_A test_537_B 0.01 30 +test_538_A test_538_B 0.01 27.5 +test_539_A test_539_B 0.01 26 +test_540_A test_540_B 0.01 23 +test_541_A test_541_B 0.01 26.5 +test_542_A test_542_B 0.01 40.5 +test_543_A test_543_B 0.01 41 +test_544_A test_544_B 0.01 46 +test_545_A test_545_B 0.01 33 +test_546_A test_546_B 0.01 38 +test_547_A test_547_B 0.01 33 +test_548_A test_548_B 0.01 28 +test_549_A test_549_B 0.01 29 +test_550_A test_550_B 0.01 33 +test_551_A test_551_B 0.01 20 +test_552_A test_552_B 0.01 27 +test_553_A test_553_B 0.01 21.5 +test_554_A test_554_B 0.01 28 +test_555_A test_555_B 0.01 31 +test_556_A test_556_B 0.01 31 +test_557_A test_557_B 0.01 30 +test_558_A test_558_B 0.01 29 +test_559_A test_559_B 0.01 30 +test_560_A test_560_B 0.01 21 +test_561_A test_561_B 0.01 37.5 +test_562_A test_562_B 0.01 40 +test_563_A test_563_B 0.01 25 +test_564_A test_564_B 0.01 22 +test_565_A test_565_B 0.01 24 +test_566_A test_566_B 0.01 39 +test_567_A test_567_B 0.01 27 +test_568_A test_568_B 0.01 30 +test_569_A test_569_B 0.01 35 +test_570_A test_570_B 0.01 29 +test_571_A test_571_B 0.01 27 +test_572_A test_572_B 0.01 23 +test_573_A test_573_B 0.01 34 +test_574_A test_574_B 0.01 26 +test_575_A test_575_B 0.01 28 +test_576_A test_576_B 0.01 22 +test_577_A test_577_B 0.01 29 +test_578_A test_578_B 0.01 24 +test_579_A test_579_B 0.01 22 +test_580_A test_580_B 0.01 31 +test_581_A test_581_B 0.01 39 +test_582_A test_582_B 0.01 21 +test_583_A test_583_B 0.01 32 +test_584_A test_584_B 0.01 22 +test_585_A test_585_B 0.01 26 +test_586_A test_586_B 0.01 20 +test_587_A test_587_B 0.01 28 +test_588_A test_588_B 0.01 22 +test_589_A test_589_B 0.01 20 +test_590_A test_590_B 0.01 17 +test_591_A test_591_B 0.01 24 +test_592_A test_592_B 0.01 27.5 +test_593_A test_593_B 0.01 31 +test_594_A test_594_B 0.01 18 +test_595_A test_595_B 0.01 18 +test_596_A test_596_B 0.01 32 +test_597_A test_597_B 0.01 17 +test_598_A test_598_B 0.01 19 +test_599_A test_599_B 0.01 23 +test_600_A test_600_B 0.01 16 +test_601_A test_601_B 0.01 13 +test_602_A test_602_B 0.01 25 +test_603_A test_603_B 0.01 17 +test_604_A test_604_B 0.01 18 +test_605_A test_605_B 0.01 20 +test_606_A test_606_B 0.01 16 +test_607_A test_607_B 0.01 19 +test_608_A test_608_B 0.01 22 +test_609_A test_609_B 0.01 18 +test_610_A test_610_B 0.01 22 +test_611_A test_611_B 0.01 18 +test_612_A test_612_B 0.01 21 +test_613_A test_613_B 0.01 23 +test_614_A test_614_B 0.01 14 +test_615_A test_615_B 0.01 21 +test_616_A test_616_B 0.01 20 +test_617_A test_617_B 0.01 17 +test_618_A test_618_B 0.01 15 +test_619_A test_619_B 0.01 18 +test_620_A test_620_B 0.01 346.5 +test_621_A test_621_B 0.01 414 +test_622_A test_622_B 0.01 321 +test_623_A test_623_B 0.01 428 +test_624_A test_624_B 0.01 137.5 +test_625_A test_625_B 0.01 272 +test_626_A test_626_B 0.01 257 +test_627_A test_627_B 0.01 261 +test_628_A test_628_B 0.01 480.5 +test_629_A test_629_B 0.01 378 +test_630_A test_630_B 0.01 153.5 +test_631_A test_631_B 0.01 199 +test_632_A test_632_B 0.01 457 +test_633_A test_633_B 0.01 358.5 +test_634_A test_634_B 0.01 357 +test_635_A test_635_B 0.01 216 +test_636_A test_636_B 0.01 460.5 +test_637_A test_637_B 0.01 314 +test_638_A test_638_B 0.01 322 +test_639_A test_639_B 0.01 440.5 +test_640_A test_640_B 0.01 324 +test_641_A test_641_B 0.01 265 +test_642_A test_642_B 0.01 395.5 +test_643_A test_643_B 0.01 397 +test_644_A test_644_B 0.01 308 +test_645_A test_645_B 0.01 199 +test_646_A test_646_B 0.01 256.5 +test_647_A test_647_B 0.01 293 +test_648_A test_648_B 0.01 297 +test_649_A test_649_B 0.01 410.5 +test_650_A test_650_B 0.01 322 +test_651_A test_651_B 0.01 458 +test_652_A test_652_B 0.01 420.5 +test_653_A test_653_B 0.01 235 +test_654_A test_654_B 0.01 220 +test_655_A test_655_B 0.01 257 +test_656_A test_656_B 0.01 305 +test_657_A test_657_B 0.01 230.5 +test_658_A test_658_B 0.01 500 +test_659_A test_659_B 0.01 155 +test_660_A test_660_B 0.01 418 +test_661_A test_661_B 0.01 403.5 +test_662_A test_662_B 0.01 296 +test_663_A test_663_B 0.01 297.5 +test_664_A test_664_B 0.01 219 +test_665_A test_665_B 0.01 476.5 +test_666_A test_666_B 0.01 347 +test_667_A test_667_B 0.01 284 +test_668_A test_668_B 0.01 324.5 +test_669_A test_669_B 0.01 231 +test_670_A test_670_B 0.01 410 +test_671_A test_671_B 0.01 206 +test_672_A test_672_B 0.01 266 +test_673_A test_673_B 0.01 319.5 +test_674_A test_674_B 0.01 483 +test_675_A test_675_B 0.01 355.5 +test_676_A test_676_B 0.01 316.5 +test_677_A test_677_B 0.01 297 +test_678_A test_678_B 0.01 458 +test_679_A test_679_B 0.01 398.5 +test_680_A test_680_B 0.01 371.5 +test_681_A test_681_B 0.01 338 +test_682_A test_682_B 0.01 461 +test_683_A test_683_B 0.01 298.5 +test_684_A test_684_B 0.01 303.5 +test_685_A test_685_B 0.01 265 +test_686_A test_686_B 0.01 400.5 +test_687_A test_687_B 0.01 264 +test_688_A test_688_B 0.01 303 +test_689_A test_689_B 0.01 360 +test_690_A test_690_B 0.01 325 +test_691_A test_691_B 0.01 217 +test_692_A test_692_B 0.01 313 +test_693_A test_693_B 0.01 491 +test_694_A test_694_B 0.01 367.5 +test_695_A test_695_B 0.01 285 +test_696_A test_696_B 0.01 314 +test_697_A test_697_B 0.01 379 +test_698_A test_698_B 0.01 277.5 +test_699_A test_699_B 0.01 302 +test_700_A test_700_B 0.01 299 +test_701_A test_701_B 0.01 439.5 +test_702_A test_702_B 0.01 289 +test_703_A test_703_B 0.01 460.5 +test_704_A test_704_B 0.01 210 +test_705_A test_705_B 0.01 491 +test_706_A test_706_B 0.01 438.5 +test_707_A test_707_B 0.01 323 +test_708_A test_708_B 0.01 427 +test_709_A test_709_B 0.01 364 +test_710_A test_710_B 0.01 434 +test_711_A test_711_B 0.01 434 +test_712_A test_712_B 0.01 391 +test_713_A test_713_B 0.01 356 +test_714_A test_714_B 0.01 420 +test_715_A test_715_B 0.01 354 +test_716_A test_716_B 0.01 281 +test_717_A test_717_B 0.01 359.5 +test_718_A test_718_B 0.01 345 +test_719_A test_719_B 0.01 341.5 +test_720_A test_720_B 0.01 497.5 +test_721_A test_721_B 0.01 199 +test_722_A test_722_B 0.01 452 +test_723_A test_723_B 0.01 335.5 +test_724_A test_724_B 0.01 311 +test_725_A test_725_B 0.01 336 +test_726_A test_726_B 0.01 300 +test_727_A test_727_B 0.01 317 +test_728_A test_728_B 0.01 492 +test_729_A test_729_B 0.01 304 +test_730_A test_730_B 0.01 217 +test_731_A test_731_B 0.01 322 +test_732_A test_732_B 0.01 289 +test_733_A test_733_B 0.01 182 +test_734_A test_734_B 0.01 410.5 +test_735_A test_735_B 0.01 306 +test_736_A test_736_B 0.01 294 +test_737_A test_737_B 0.01 254 +test_738_A test_738_B 0.01 338.5 +test_739_A test_739_B 0.01 225 +test_740_A test_740_B 0.01 280 +test_741_A test_741_B 0.01 454 +test_742_A test_742_B 0.01 226 +test_743_A test_743_B 0.01 365 +test_744_A test_744_B 0.01 456 +test_745_A test_745_B 0.01 405 +test_746_A test_746_B 0.01 322 +test_747_A test_747_B 0.01 279 +test_748_A test_748_B 0.01 311.5 +test_749_A test_749_B 0.01 308 +test_750_A test_750_B 0.01 322 +test_751_A test_751_B 0.01 409 +test_752_A test_752_B 0.01 277 +test_753_A test_753_B 0.01 318 +test_754_A test_754_B 0.01 299.5 +test_755_A test_755_B 0.01 462.5 +test_756_A test_756_B 0.01 314 +test_757_A test_757_B 0.01 300 +test_758_A test_758_B 0.01 455 +test_759_A test_759_B 0.01 422.5 +test_760_A test_760_B 0.01 433.5 +test_761_A test_761_B 0.01 278 +test_762_A test_762_B 0.01 484.5 +test_763_A test_763_B 0.01 348 +test_764_A test_764_B 0.01 491 +test_765_A test_765_B 0.01 280 +test_766_A test_766_B 0.01 259 +test_767_A test_767_B 0.01 275.5 +test_768_A test_768_B 0.01 348 +test_769_A test_769_B 0.01 330 +test_770_A test_770_B 0.01 412 +test_771_A test_771_B 0.01 262 +test_772_A test_772_B 0.01 455 +test_773_A test_773_B 0.01 294 +test_774_A test_774_B 0.01 425 +test_775_A test_775_B 0.01 220.5 +test_776_A test_776_B 0.01 411.5 +test_777_A test_777_B 0.01 383 +test_778_A test_778_B 0.01 363 +test_779_A test_779_B 0.01 302 +test_780_A test_780_B 0.01 328 +test_781_A test_781_B 0.01 294 +test_782_A test_782_B 0.01 407.5 +test_783_A test_783_B 0.01 260.5 +test_784_A test_784_B 0.01 410 +test_785_A test_785_B 0.01 328 +test_786_A test_786_B 0.01 419.5 +test_787_A test_787_B 0.01 165 +test_788_A test_788_B 0.01 389 +test_789_A test_789_B 0.01 254 +test_790_A test_790_B 0.01 311 +test_791_A test_791_B 0.01 258 +test_792_A test_792_B 0.01 331 +test_793_A test_793_B 0.01 378 +test_794_A test_794_B 0.01 415 +test_795_A test_795_B 0.01 364 +test_796_A test_796_B 0.01 279 +test_797_A test_797_B 0.01 249 +test_798_A test_798_B 0.01 463 +test_799_A test_799_B 0.01 304 +test_800_A test_800_B 0.01 187 +test_801_A test_801_B 0.01 305.5 +test_802_A test_802_B 0.01 385 +test_803_A test_803_B 0.01 360.5 +test_804_A test_804_B 0.01 269 +test_805_A test_805_B 0.01 294 +test_806_A test_806_B 0.01 362 +test_807_A test_807_B 0.01 354 +test_808_A test_808_B 0.01 196 +test_809_A test_809_B 0.01 248 +test_810_A test_810_B 0.01 297.5 +test_811_A test_811_B 0.01 243 +test_812_A test_812_B 0.01 312 +test_813_A test_813_B 0.01 241 +test_814_A test_814_B 0.01 384 +test_815_A test_815_B 0.01 250 +test_816_A test_816_B 0.01 205 +test_817_A test_817_B 0.01 308 +test_818_A test_818_B 0.01 356 +test_819_A test_819_B 0.01 230 +test_820_A test_820_B 0.01 178 +test_821_A test_821_B 0.01 294 +test_822_A test_822_B 0.01 227 +test_823_A test_823_B 0.01 234 +test_824_A test_824_B 0.01 241 +test_825_A test_825_B 0.01 233 +test_826_A test_826_B 0.01 284 +test_827_A test_827_B 0.01 287 +test_828_A test_828_B 0.01 192 +test_829_A test_829_B 0.01 359 +test_830_A test_830_B 0.01 225 +test_831_A test_831_B 0.01 273 +test_832_A test_832_B 0.01 248 +test_833_A test_833_B 0.01 217 +test_834_A test_834_B 0.01 332 +test_835_A test_835_B 0.01 218 +test_836_A test_836_B 0.01 335 +test_837_A test_837_B 0.01 192 +test_838_A test_838_B 0.01 188 +test_839_A test_839_B 0.01 347 +test_840_A test_840_B 0.01 273 +test_841_A test_841_B 0.01 187 +test_842_A test_842_B 0.01 170 +test_843_A test_843_B 0.01 230 +test_844_A test_844_B 0.01 206.5 +test_845_A test_845_B 0.01 177 +test_846_A test_846_B 0.01 251 +test_847_A test_847_B 0.01 163 +test_848_A test_848_B 0.01 174 +test_849_A test_849_B 0.01 177 +test_850_A test_850_B 0.01 252 +test_851_A test_851_B 0.01 262 +test_852_A test_852_B 0.01 174 +test_853_A test_853_B 0.01 169 +test_854_A test_854_B 0.01 200 +test_855_A test_855_B 0.01 189 +test_856_A test_856_B 0.01 206.5 +test_857_A test_857_B 0.01 260 +test_858_A test_858_B 0.01 191 +test_859_A test_859_B 0.01 216 +test_860_A test_860_B 0.01 181.5 +test_861_A test_861_B 0.01 219 +test_862_A test_862_B 0.01 143 +test_863_A test_863_B 0.01 173 +test_864_A test_864_B 0.01 134 +test_865_A test_865_B 0.01 159 +test_866_A test_866_B 0.01 205 +test_867_A test_867_B 0.01 178 +test_868_A test_868_B 0.01 189.5 +test_869_A test_869_B 0.01 145 +test_870_A test_870_B 0.01 179 +test_871_A test_871_B 0.01 167 +test_872_A test_872_B 0.01 149 +test_873_A test_873_B 0.01 149 +test_874_A test_874_B 0.01 187 +test_875_A test_875_B 0.01 193 +test_876_A test_876_B 0.01 165 +test_877_A test_877_B 0.01 190 +test_878_A test_878_B 0.01 242 +test_879_A test_879_B 0.01 187 diff --git a/geom_bottleneck/tests/data/ws_tests/test_100_A b/geom_bottleneck/tests/data/ws_tests/test_100_A new file mode 100644 index 0000000..8d126f0 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_100_A @@ -0,0 +1,100 @@ +7.50638 7.78005 +0.991758 2.12178 +5.18481 6.61702 +6.14703 7.08581 +4.09936 4.83024 +3.79915 4.51283 +3.17645 3.75321 +0.61305 0.998622 +0.445643 1.13781 +6.38205 6.53669 +5.96392 6.44093 +7.21047 7.26005 +0.6703 1.26593 +0.529933 1.7027 +7.92495 8.83023 +2.1382 2.71695 +3.79209 4.5197 +5.23354 5.82214 +-0.395097 2.18831 +3.22028 3.88648 +5.56262 5.79949 +8.39623 9.37185 +2.7452 3.84539 +9.5022 10.2414 +1.01374 1.40504 +3.2029 3.89559 +7.61236 8.28485 +6.4371 6.909 +4.45616 5.35067 +1.57802 1.77895 +6.5991 7.76339 +6.66729 6.71714 +6.11898 6.57121 +2.60663 4.36396 +-0.259613 1.17683 +7.72857 9.48862 +4.68398 5.51521 +4.87447 5.4233 +6.86301 6.88244 +4.17814 4.25886 +8.70558 9.72902 +4.40873 4.57389 +6.1824 7.05049 +7.97557 8.79739 +8.52591 8.6985 +5.15336 5.27796 +9.70144 9.77031 +0.561778 1.39045 +9.32553 10.2456 +7.01495 7.74521 +6.83355 7.28255 +1.96721 3.01504 +5.78411 7.59464 +5.64012 6.10721 +3.7249 5.17086 +4.33297 5.91657 +7.11793 7.2545 +5.109 6.76878 +3.02787 3.04077 +0.999365 2.05566 +8.81392 8.9086 +6.20106 6.78943 +6.7987 7.05794 +0.438805 0.449602 +8.71793 9.79853 +-0.150282 0.51997 +5.72257 5.93156 +5.71098 6.09535 +9.0378 9.45942 +0.534987 0.872885 +7.72276 8.57754 +9.26069 9.40289 +4.148 4.80519 +1.04579 3.18109 +0.259767 0.93215 +0.250608 0.511569 +4.88108 5.62239 +4.6731 5.3348 +7.84979 7.93545 +0.912521 1.48142 +4.82553 5.38108 +6.02179 7.61665 +3.85848 6.39418 +5.10754 6.02118 +1.71956 1.86238 +6.47336 6.74034 +-0.0371018 0.212738 +3.97259 4.15465 +2.17413 3.20188 +4.49098 6.09812 +6.62445 7.84196 +6.57541 7.432 +6.81052 9.6653 +3.67502 4.69734 +3.92378 4.14743 +5.93127 6.46154 +0.63424 0.705454 +7.60129 9.23263 +4.23064 4.74575 +0.397705 1.24458 diff --git a/geom_bottleneck/tests/data/ws_tests/test_100_A.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_100_A.pd.dipha Binary files differnew file mode 100644 index 0000000..e94f5fe --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_100_A.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_100_B b/geom_bottleneck/tests/data/ws_tests/test_100_B new file mode 100644 index 0000000..852799d --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_100_B @@ -0,0 +1,100 @@ +5.8232 6.36308 +2.16066 2.48668 +2.38754 4.91418 +4.77403 5.43982 +0.291412 1.11147 +3.77337 5.2686 +8.31344 9.05384 +0.734064 1.14844 +7.57606 7.8521 +3.16719 3.86953 +2.55072 2.64932 +9.51707 9.6071 +0.304643 2.41784 +2.79925 3.28234 +5.32901 7.7576 +5.19903 6.30449 +1.87819 2.99454 +8.92272 9.67105 +4.62414 5.05592 +4.0079 4.64148 +2.26369 3.44573 +2.69335 3.13426 +1.90706 2.42652 +2.68113 2.79133 +1.41065 1.56018 +6.55282 7.18725 +5.72986 6.37151 +7.26968 8.22623 +3.32643 3.73606 +3.77325 4.63115 +1.05457 1.83651 +8.6815 8.85251 +3.91285 4.17139 +0.380936 0.842109 +7.33227 7.69334 +8.45635 8.923 +4.1769 5.08373 +0.501374 2.23328 +-0.161782 1.28908 +3.44716 3.4662 +3.15394 4.30243 +8.71416 9.3781 +6.3034 8.62893 +6.53824 7.04611 +0.6386 1.35269 +0.862088 0.960371 +5.12963 5.20203 +1.58695 2.0452 +6.57698 6.63228 +3.87747 4.45669 +1.51273 3.25669 +-0.0992804 0.667302 +4.7489 4.80059 +0.0280559 1.90471 +6.7462 8.27612 +0.915652 1.30007 +2.79556 3.77404 +9.87989 10.0722 +9.39105 9.84229 +7.57235 9.37122 +5.09426 6.44266 +6.3994 6.72037 +5.73441 6.99341 +6.9079 7.88049 +4.2003 4.41933 +-1.72447 2.25877 +9.04907 9.64323 +4.40473 5.3593 +9.31201 9.96079 +7.28343 8.74163 +3.0172 6.23779 +8.08422 8.56069 +6.83038 6.99863 +2.32038 3.1289 +7.42302 8.26286 +6.66905 7.18496 +0.730748 1.61335 +4.00564 5.73993 +2.81231 3.67489 +2.33178 2.37845 +9.03302 9.68681 +0.567816 0.755485 +7.89783 8.7621 +0.177662 0.332833 +-0.181569 1.36821 +6.22158 6.55787 +4.67115 5.16995 +0.806432 0.820738 +7.69636 7.87402 +4.40933 4.54995 +9.1329 9.15037 +8.87416 9.04329 +1.14349 1.8993 +3.29756 4.7172 +6.67873 8.31364 +6.91238 7.1654 +0.483084 1.55006 +2.66058 3.86294 +5.93347 6.06085 +7.40514 9.05071 diff --git a/geom_bottleneck/tests/data/ws_tests/test_100_B.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_100_B.pd.dipha Binary files differnew file mode 100644 index 0000000..25d6734 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_100_B.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_200_A b/geom_bottleneck/tests/data/ws_tests/test_200_A new file mode 100644 index 0000000..164b71d --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_200_A @@ -0,0 +1,200 @@ +0.471299 1.89241 +2.82136 3.97846 +8.81923 9.20678 +1.42474 1.65425 +8.36963 9.16097 +-0.236476 0.692489 +7.57182 8.06148 +2.89878 3.21958 +7.1285 7.51707 +5.75496 7.09461 +6.00081 6.10914 +9.60869 9.64676 +7.42889 8.97174 +7.26061 8.55944 +2.41226 2.5146 +8.5616 9.44847 +7.4946 8.86962 +5.42244 6.98028 +9.62386 9.96039 +7.70591 9.92849 +1.34119 3.2048 +3.92169 5.15228 +8.82955 9.60318 +7.94213 9.39997 +2.6716 4.02057 +0.375206 0.497663 +1.94572 3.65599 +1.03366 1.46356 +8.91855 10.1838 +7.11087 8.64425 +2.63266 2.78706 +8.93611 10.2943 +8.51999 9.28356 +1.31436 3.13725 +1.92871 4.00178 +8.30503 8.45555 +2.58739 2.82076 +3.20419 5.29453 +7.4015 8.13225 +9.07991 9.74729 +0.822366 0.938371 +2.90508 4.29367 +4.32385 5.4787 +3.63054 4.6918 +8.52962 9.87004 +1.16994 2.39465 +2.61903 3.33772 +4.15505 4.52942 +8.7068 9.66579 +8.10373 9.31351 +0.7954 1.23001 +7.82253 8.69505 +4.59616 5.91996 +1.02032 1.93931 +6.98421 8.46017 +8.42263 11.3447 +2.63444 3.7158 +7.49059 9.1137 +-0.122109 1.41074 +8.29578 8.81161 +6.24793 6.32368 +4.07212 4.39695 +5.32453 7.457 +8.3892 9.82048 +4.35981 4.78063 +5.49932 6.08321 +1.0107 1.53369 +2.48759 2.94139 +4.24977 5.52034 +1.93104 3.35207 +-0.733247 1.22412 +-0.354283 2.36812 +6.34728 6.44213 +5.98172 7.8753 +5.47963 6.82986 +6.01986 6.6588 +4.62793 5.22134 +7.73923 8.29761 +8.85565 9.51494 +5.55307 6.15804 +6.30963 7.17248 +9.4775 10.2636 +7.45333 7.74006 +1.79317 2.33273 +7.73056 8.44999 +3.94172 5.02778 +8.36177 9.85172 +5.91765 8.12935 +7.95436 8.97583 +5.06238 5.37907 +4.56153 4.97175 +9.47572 9.65038 +9.54745 9.922 +7.82271 8.66299 +4.19056 4.75156 +4.15657 5.72352 +0.213845 0.312444 +2.30944 2.6806 +2.42391 3.41888 +6.00512 6.88274 +6.64546 7.61145 +-0.204229 2.78228 +-0.417104 0.667252 +8.18696 8.67785 +9.27818 9.67924 +-0.0174685 0.21355 +5.91137 6.39606 +9.49268 10.1457 +2.11362 4.36526 +6.51084 7.82167 +6.07066 6.44843 +-0.653518 1.08588 +7.46736 7.87137 +5.26045 7.92188 +6.4171 6.8133 +6.73709 7.70383 +3.46451 4.23679 +0.122365 0.809853 +7.98627 8.0505 +1.71192 2.63047 +1.20624 2.12087 +4.6812 5.51566 +2.62672 2.67648 +4.203 5.1052 +5.26482 6.5186 +3.68166 3.74701 +2.72011 3.98338 +3.41652 3.71477 +2.26211 2.90374 +0.930209 1.43211 +1.98603 3.36662 +4.55838 5.9933 +5.66292 6.59838 +3.12432 3.87457 +6.54384 8.38959 +0.205059 0.331022 +8.70617 9.34121 +7.02182 7.38679 +2.36908 2.84197 +9.13221 9.76563 +7.50113 9.49245 +8.15671 8.45093 +1.9517 2.20923 +3.23368 3.43695 +2.97273 4.10133 +7.36338 8.96733 +4.77525 5.18347 +9.47774 10.3537 +1.75218 1.97051 +5.42544 6.18939 +9.75801 10.0151 +6.31285 6.38327 +8.43389 8.721 +7.6108 7.81113 +8.72029 10.3153 +5.18655 7.1101 +7.96243 8.43151 +0.798103 0.860125 +1.1289 2.77549 +5.91084 6.03085 +4.95884 5.46913 +5.88125 6.49667 +7.9394 8.9545 +5.07492 5.55063 +5.92251 6.08548 +3.88602 5.41487 +1.40122 2.15276 +8.74244 8.83223 +4.75577 6.60338 +0.921272 1.44873 +3.77361 3.90348 +8.8999 9.8518 +3.11077 4.85674 +8.56185 10.6345 +8.76335 9.00169 +6.8734 8.60197 +4.54408 4.93892 +5.57849 6.31727 +7.95161 8.30843 +1.55798 2.4957 +3.86082 3.97131 +6.45433 7.17065 +0.96021 2.32897 +6.84576 6.89531 +8.59095 8.70199 +3.57754 4.26457 +5.27979 5.74385 +2.06602 2.90525 +3.0856 4.18179 +2.76214 3.9982 +2.11943 5.4285 +3.1197 3.24389 +0.495798 1.23632 +3.18253 3.99433 +7.02072 8.37949 +2.77905 3.42643 +1.57093 2.30655 +7.10979 7.14006 +6.20994 6.72092 +8.15136 8.33899 diff --git a/geom_bottleneck/tests/data/ws_tests/test_200_B b/geom_bottleneck/tests/data/ws_tests/test_200_B new file mode 100644 index 0000000..761943d --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_200_B @@ -0,0 +1,200 @@ +1.17434 1.46837 +2.58198 4.16589 +0.234041 0.968658 +1.52703 1.59579 +6.7103 7.44033 +3.19227 4.41539 +5.42556 5.57369 +3.45417 4.86089 +3.82256 4.1092 +7.82551 7.90784 +3.9384 4.71796 +5.60335 5.9054 +7.96663 9.8987 +6.30305 6.64853 +7.33246 10.5316 +0.623312 1.09008 +2.63041 2.64616 +5.36028 6.28956 +4.64202 5.91858 +7.55219 7.96304 +7.73736 9.18221 +1.67114 1.84851 +5.07514 5.12159 +7.03732 7.05228 +7.5006 7.59212 +0.244947 1.55875 +0.0170454 1.10485 +1.95394 3.53669 +5.66015 6.01949 +5.88211 7.64639 +7.46698 9.27085 +6.37429 7.10154 +4.54535 4.81932 +8.21203 9.35896 +4.89933 6.20802 +3.68683 4.17831 +0.477467 0.828394 +6.17871 6.77834 +9.77523 9.92676 +0.854808 2.38709 +7.93326 8.3553 +2.10917 2.27771 +4.07045 4.72793 +8.2016 8.8011 +2.9205 3.95746 +2.89806 4.39725 +5.5654 5.78669 +9.5219 9.98543 +7.08591 7.19588 +8.35359 9.57893 +9.81348 10.0345 +8.5994 9.71835 +5.43903 7.25234 +1.82768 2.92724 +4.44952 6.79754 +5.66747 7.34386 +5.88153 6.39253 +3.34008 4.22032 +2.46068 2.76051 +0.370778 2.61681 +6.02508 6.26809 +4.32654 4.93262 +7.41536 7.99616 +8.84229 9.87911 +3.8551 5.84353 +1.56832 2.34694 +6.96099 7.42028 +8.15753 8.72014 +9.23141 10.3815 +7.4484 7.80228 +0.473671 0.874895 +3.15689 3.50687 +3.58122 4.09945 +3.55022 3.74767 +4.42708 5.80211 +4.40956 4.68699 +3.80576 4.61856 +7.29965 8.28614 +7.40582 8.15308 +1.69789 1.77669 +1.66419 3.44308 +0.473997 0.872506 +7.83959 8.52898 +6.22416 6.36949 +-0.187159 0.871822 +0.232336 0.585965 +9.29905 9.44357 +1.4459 2.40589 +2.83008 3.19758 +1.15291 2.12112 +2.58686 3.33896 +6.79362 7.88068 +0.228178 1.48318 +5.60001 6.20258 +4.97803 7.10992 +1.70429 1.962 +2.72659 3.13886 +9.22714 9.25889 +3.84694 3.88778 +-0.282077 1.48155 +9.28756 9.58517 +4.34069 5.59751 +8.63909 8.76839 +8.86236 10.7642 +6.77597 8.41888 +7.30621 8.64164 +0.685607 1.22755 +2.91514 3.22638 +2.72098 3.66837 +8.17528 8.32638 +5.19632 5.7506 +7.34177 8.70639 +5.74082 6.35524 +5.95975 6.69284 +9.40187 10.4488 +2.92761 3.36735 +0.399531 3.13082 +4.83399 4.92635 +7.74539 8.56852 +1.76322 3.5086 +6.54479 6.72963 +7.64362 8.12404 +1.35542 1.45313 +0.214385 0.718085 +1.7006 3.21962 +5.91009 6.47862 +2.21093 2.34636 +5.96919 6.79365 +6.59951 8.22203 +1.54571 1.59397 +3.27012 3.79128 +0.32455 0.622995 +1.73926 2.78017 +9.81035 9.84077 +7.38441 7.85171 +8.90372 9.34186 +7.26323 8.41174 +5.7363 5.97348 +8.25473 10.1281 +2.3981 2.52096 +8.53783 9.63442 +8.51755 9.2735 +6.48614 6.773 +3.40182 3.65137 +2.1353 3.04852 +2.95397 3.73285 +6.98063 7.4963 +4.50189 5.26384 +0.21416 1.49363 +0.632196 1.36307 +6.57833 6.60481 +8.0634 9.33903 +2.79759 2.94462 +4.43747 4.58861 +6.48733 6.86569 +2.28008 3.47037 +6.87452 7.77431 +-0.156821 2.71557 +0.72595 1.78862 +1.97586 2.38196 +8.61839 9.1468 +4.55496 5.68986 +0.26923 1.15728 +9.63757 9.7236 +1.39497 1.96698 +4.8643 5.04172 +6.64675 7.66435 +2.56256 2.6015 +-0.381989 0.611211 +0.676336 1.26896 +8.95304 9.03243 +5.62058 6.07997 +3.36522 4.04276 +8.64868 10.5024 +4.75813 5.19834 +1.96608 2.05864 +9.01449 9.10397 +3.72786 4.51921 +5.6938 6.96584 +1.73499 2.9314 +2.73099 3.41409 +8.77171 9.07665 +4.63865 4.67649 +8.6698 9.30782 +-0.168259 2.09581 +9.29672 9.56 +0.372544 2.60567 +0.450487 1.32919 +6.95341 7.6399 +3.4403 5.24993 +5.53469 6.97831 +-0.79664 1.21306 +5.68831 6.14413 +8.85601 8.95444 +3.83309 5.211 +5.51573 6.5114 +3.64009 3.99648 +4.40759 4.99283 +1.85198 2.6457 +2.72645 3.74803 diff --git a/geom_bottleneck/tests/data/ws_tests/test_5000_A b/geom_bottleneck/tests/data/ws_tests/test_5000_A new file mode 100644 index 0000000..094c6e0 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5000_A @@ -0,0 +1,5000 @@ +0.471299 1.89241 +2.82136 3.97846 +8.81923 9.20678 +1.42474 1.65425 +8.36963 9.16097 +-0.236476 0.692489 +7.57182 8.06148 +2.89878 3.21958 +7.1285 7.51707 +5.75496 7.09461 +6.00081 6.10914 +9.60869 9.64676 +7.42889 8.97174 +7.26061 8.55944 +2.41226 2.5146 +8.5616 9.44847 +7.4946 8.86962 +5.42244 6.98028 +9.62386 9.96039 +7.70591 9.92849 +1.34119 3.2048 +3.92169 5.15228 +8.82955 9.60318 +7.94213 9.39997 +2.6716 4.02057 +0.375206 0.497663 +1.94572 3.65599 +1.03366 1.46356 +8.91855 10.1838 +7.11087 8.64425 +2.63266 2.78706 +8.93611 10.2943 +8.51999 9.28356 +1.31436 3.13725 +1.92871 4.00178 +8.30503 8.45555 +2.58739 2.82076 +3.20419 5.29453 +7.4015 8.13225 +9.07991 9.74729 +0.822366 0.938371 +2.90508 4.29367 +4.32385 5.4787 +3.63054 4.6918 +8.52962 9.87004 +1.16994 2.39465 +2.61903 3.33772 +4.15505 4.52942 +8.7068 9.66579 +8.10373 9.31351 +0.7954 1.23001 +7.82253 8.69505 +4.59616 5.91996 +1.02032 1.93931 +6.98421 8.46017 +8.42263 11.3447 +2.63444 3.7158 +7.49059 9.1137 +-0.122109 1.41074 +8.29578 8.81161 +6.24793 6.32368 +4.07212 4.39695 +5.32453 7.457 +8.3892 9.82048 +4.35981 4.78063 +5.49932 6.08321 +1.0107 1.53369 +2.48759 2.94139 +4.24977 5.52034 +1.93104 3.35207 +-0.733247 1.22412 +-0.354283 2.36812 +6.34728 6.44213 +5.98172 7.8753 +5.47963 6.82986 +6.01986 6.6588 +4.62793 5.22134 +7.73923 8.29761 +8.85565 9.51494 +5.55307 6.15804 +6.30963 7.17248 +9.4775 10.2636 +7.45333 7.74006 +1.79317 2.33273 +7.73056 8.44999 +3.94172 5.02778 +8.36177 9.85172 +5.91765 8.12935 +7.95436 8.97583 +5.06238 5.37907 +4.56153 4.97175 +9.47572 9.65038 +9.54745 9.922 +7.82271 8.66299 +4.19056 4.75156 +4.15657 5.72352 +0.213845 0.312444 +2.30944 2.6806 +2.42391 3.41888 +6.00512 6.88274 +6.64546 7.61145 +-0.204229 2.78228 +-0.417104 0.667252 +8.18696 8.67785 +9.27818 9.67924 +-0.0174685 0.21355 +5.91137 6.39606 +9.49268 10.1457 +2.11362 4.36526 +6.51084 7.82167 +6.07066 6.44843 +-0.653518 1.08588 +7.46736 7.87137 +5.26045 7.92188 +6.4171 6.8133 +6.73709 7.70383 +3.46451 4.23679 +0.122365 0.809853 +7.98627 8.0505 +1.71192 2.63047 +1.20624 2.12087 +4.6812 5.51566 +2.62672 2.67648 +4.203 5.1052 +5.26482 6.5186 +3.68166 3.74701 +2.72011 3.98338 +3.41652 3.71477 +2.26211 2.90374 +0.930209 1.43211 +1.98603 3.36662 +4.55838 5.9933 +5.66292 6.59838 +3.12432 3.87457 +6.54384 8.38959 +0.205059 0.331022 +8.70617 9.34121 +7.02182 7.38679 +2.36908 2.84197 +9.13221 9.76563 +7.50113 9.49245 +8.15671 8.45093 +1.9517 2.20923 +3.23368 3.43695 +2.97273 4.10133 +7.36338 8.96733 +4.77525 5.18347 +9.47774 10.3537 +1.75218 1.97051 +5.42544 6.18939 +9.75801 10.0151 +6.31285 6.38327 +8.43389 8.721 +7.6108 7.81113 +8.72029 10.3153 +5.18655 7.1101 +7.96243 8.43151 +0.798103 0.860125 +1.1289 2.77549 +5.91084 6.03085 +4.95884 5.46913 +5.88125 6.49667 +7.9394 8.9545 +5.07492 5.55063 +5.92251 6.08548 +3.88602 5.41487 +1.40122 2.15276 +8.74244 8.83223 +4.75577 6.60338 +0.921272 1.44873 +3.77361 3.90348 +8.8999 9.8518 +3.11077 4.85674 +8.56185 10.6345 +8.76335 9.00169 +6.8734 8.60197 +4.54408 4.93892 +5.57849 6.31727 +7.95161 8.30843 +1.55798 2.4957 +3.86082 3.97131 +6.45433 7.17065 +0.96021 2.32897 +6.84576 6.89531 +8.59095 8.70199 +3.57754 4.26457 +5.27979 5.74385 +2.06602 2.90525 +3.0856 4.18179 +2.76214 3.9982 +2.11943 5.4285 +3.1197 3.24389 +0.495798 1.23632 +3.18253 3.99433 +7.02072 8.37949 +2.77905 3.42643 +1.57093 2.30655 +7.10979 7.14006 +6.20994 6.72092 +8.15136 8.33899 +0.903753 1.57921 +0.380744 1.88053 +1.3164 1.79885 +0.199366 0.576639 +5.53683 6.49433 +8.8705 9.14396 +3.1401 3.98761 +4.82675 6.69396 +7.28593 8.08916 +8.11312 9.92914 +3.25737 3.42109 +2.58413 4.57223 +2.65202 2.77196 +-0.31616 1.51568 +4.1621 5.29563 +4.49155 5.21037 +7.28481 7.31722 +9.70568 10.0406 +2.39057 2.85874 +2.30626 3.16244 +1.15896 2.09616 +5.91343 7.33024 +-0.172181 0.177363 +5.08934 6.10928 +7.15508 7.55315 +4.43036 4.68093 +6.00772 6.49566 +7.9247 8.43809 +1.57028 2.52328 +3.45458 4.43692 +3.18257 4.83824 +1.48243 1.91225 +2.59025 2.99596 +6.93059 8.34359 +4.53752 7.51216 +6.42857 6.51513 +5.5663 6.13877 +7.54367 7.56485 +9.01229 9.19913 +2.84158 3.23347 +0.42959 0.620618 +8.77033 9.33787 +8.06103 8.30989 +6.48425 7.83668 +4.66949 6.00205 +4.46683 4.66247 +8.96738 9.07714 +0.463093 0.514808 +7.72986 9.44537 +6.31391 6.8289 +0.883295 1.70946 +3.73278 3.98015 +6.73453 6.92514 +3.58434 4.43262 +0.236286 1.4601 +2.00505 2.38684 +3.845 4.20708 +1.18852 3.04911 +0.766784 1.00641 +7.38781 8.11216 +8.9396 9.27589 +0.369822 1.53322 +8.76527 9.23987 +0.663408 0.803445 +9.69209 10.1455 +9.73379 10.234 +3.47602 4.89968 +4.12754 5.45249 +7.31984 8.57369 +0.989101 1.47678 +5.57662 5.83292 +4.99092 6.85044 +4.35272 4.3683 +0.0517815 1.92227 +7.2694 7.80634 +1.35565 1.42783 +8.5638 8.91707 +1.74557 2.74123 +2.18226 2.19664 +-0.901334 1.32691 +0.866613 1.03788 +5.30895 6.31774 +7.70178 8.5675 +4.06894 4.16071 +2.59697 3.53162 +4.30201 5.34212 +4.08762 4.19091 +-0.516192 0.848397 +9.85911 10.1066 +0.472991 1.40069 +6.26012 7.0054 +0.707801 2.15445 +1.73825 1.87193 +0.206301 0.831746 +7.77872 7.92715 +4.94477 5.60361 +3.86216 5.16839 +1.35166 1.54482 +2.91721 3.56193 +4.57242 4.75913 +7.09303 8.29678 +8.18431 8.92151 +6.80303 10.87 +1.29208 1.72027 +1.22224 1.31693 +5.26756 6.26459 +2.55221 3.94397 +6.58902 6.78354 +7.85917 8.89791 +6.59279 7.63115 +4.45787 7.26828 +3.48759 5.33991 +2.13838 3.86589 +1.53368 3.57313 +1.41722 3.19336 +3.48388 4.11958 +1.53756 2.98451 +7.29083 8.22109 +1.2713 2.16915 +6.94685 7.31029 +6.2494 7.04676 +3.00376 3.02028 +1.25232 1.43301 +1.50413 2.25 +2.89098 4.77198 +4.50766 5.89294 +5.5403 6.07893 +-0.101858 0.409209 +3.87963 6.1053 +-0.19564 1.46589 +-0.342077 0.694623 +6.63875 7.42223 +7.89982 9.05857 +4.91121 5.48031 +5.90743 8.35815 +7.13881 8.21597 +4.11493 5.08147 +3.59673 3.77176 +8.08236 8.3237 +1.35842 1.48934 +5.42963 5.85906 +4.60778 4.9734 +-0.607198 0.91225 +5.40263 5.7017 +5.08624 5.63236 +7.34529 9.02233 +7.30013 8.12907 +6.56106 6.75585 +6.82576 7.25434 +2.96037 3.56454 +3.60283 4.09137 +6.35408 6.71888 +-0.688103 0.84579 +8.45128 8.69771 +6.31749 7.3294 +5.82223 6.04761 +1.72983 2.38205 +6.94974 7.76985 +9.681 10.0141 +8.65394 9.2456 +2.52904 3.39548 +6.66609 7.35785 +4.18963 4.5473 +3.58643 3.80513 +2.88796 3.82413 +0.992066 1.1477 +4.57942 5.15419 +3.02826 4.32268 +5.91565 6.82087 +4.13694 5.13393 +6.28717 6.53257 +1.3149 2.36944 +0.488974 0.981461 +4.32763 4.98272 +-0.420836 0.63619 +7.13406 7.31362 +0.367782 1.91138 +6.14763 6.16713 +0.837933 1.92794 +9.3781 10.0609 +3.22887 5.44584 +5.91554 6.65974 +5.68608 6.02435 +7.99715 8.55953 +5.37106 5.38574 +0.254544 0.374268 +0.184701 0.917061 +9.38005 9.54042 +6.86741 7.35628 +0.87398 1.69093 +7.75845 8.53773 +0.370425 1.35335 +0.699837 0.810893 +3.73223 4.32089 +3.81804 3.85752 +4.85936 5.10097 +2.70381 3.10519 +3.82523 5.27699 +9.13422 10.3317 +4.62775 4.77988 +7.91139 7.95504 +2.72614 4.79958 +0.863357 1.88643 +4.14155 5.02327 +2.49683 4.11585 +1.06741 1.11516 +6.20979 8.38443 +0.936362 2.46703 +6.58231 7.85063 +1.89469 2.31422 +8.70668 9.14006 +5.76486 6.1122 +3.15778 3.76679 +0.248282 2.19881 +1.25317 1.92694 +7.81837 9.53067 +-0.582906 0.818904 +8.34194 8.37845 +4.4913 5.10164 +3.86376 5.5453 +6.94054 7.68699 +2.07462 2.5811 +0.518698 2.1529 +3.51773 4.60946 +8.39915 8.98446 +1.63685 2.19755 +6.60737 9.05917 +2.06667 3.23994 +3.18822 3.31219 +2.44332 3.22088 +4.755 4.87118 +4.34245 4.91565 +4.64562 4.8104 +2.73282 3.35646 +9.48057 9.86441 +0.640899 1.03356 +0.789475 0.925731 +1.4247 1.58347 +1.47747 2.25408 +8.8612 9.81597 +8.44147 10.6885 +9.07046 10.0877 +0.350125 1.15765 +4.45375 5.73964 +4.06526 4.26457 +7.50776 8.23491 +1.55452 1.63786 +2.8399 4.52559 +1.34319 1.47951 +5.21572 5.65702 +5.85695 6.75574 +8.21826 10.657 +-0.0479956 1.79162 +1.72905 1.78113 +3.35685 4.03797 +3.7123 5.82296 +8.56751 10.2992 +4.07987 4.25273 +5.8347 6.07253 +3.25283 3.99065 +9.31995 10.3647 +0.649025 1.14496 +1.06966 2.04182 +7.59831 7.85826 +3.35263 3.84374 +4.91371 5.10148 +8.0875 9.23421 +3.00484 5.14282 +8.60448 9.09442 +5.61429 6.24037 +3.4729 4.17907 +7.18702 7.26274 +0.729966 0.928899 +2.27264 2.81241 +2.67248 3.91661 +3.98443 4.64406 +5.50463 6.92435 +-0.257961 0.905736 +5.71363 6.67387 +4.12643 4.66467 +3.97623 4.64917 +9.71227 9.8243 +8.66674 8.97634 +7.94673 8.73904 +7.45228 8.14466 +3.78405 4.81189 +4.05505 5.00011 +2.84957 3.15451 +6.93785 7.58172 +1.85006 1.96814 +6.82256 7.00166 +2.42727 2.68161 +8.06129 8.76308 +1.53758 3.67482 +2.5057 4.18495 +7.09618 7.79664 +1.12843 1.46228 +1.61447 2.2668 +5.58639 5.70776 +8.15398 8.34959 +2.49733 2.57643 +5.18817 5.32462 +5.62963 5.86377 +1.95215 2.26641 +7.22129 7.23255 +5.99833 6.18639 +6.20875 7.13868 +6.814 7.6597 +7.41314 9.49798 +5.48819 6.31634 +4.81318 5.08156 +9.15434 9.42787 +4.83201 5.43295 +1.44477 2.6455 +8.8907 10.4727 +3.19487 3.21255 +1.47291 3.13113 +4.14796 5.10058 +5.85016 8.41212 +7.58183 8.53659 +9.5978 10.2877 +1.5954 2.58394 +2.65561 4.0975 +-0.157024 0.16627 +7.04379 7.75368 +2.39896 2.7728 +2.42376 3.58085 +0.158653 0.857045 +7.82101 9.01833 +6.80499 7.35261 +6.62833 6.66255 +4.90229 5.45681 +8.50205 8.69236 +2.01845 2.06924 +8.2503 9.04222 +4.58265 5.52758 +8.6176 9.74887 +1.28468 1.77019 +5.40424 6.20705 +0.943905 1.98023 +4.2702 4.41287 +3.89454 4.4814 +0.585132 1.56351 +9.45354 10.5374 +3.7501 5.07553 +7.53248 8.14004 +4.60026 4.78921 +1.61073 4.22368 +6.22591 7.40966 +0.57866 1.0522 +5.877 6.55882 +3.54573 3.7731 +7.64294 7.66103 +8.2399 9.14032 +0.307808 0.571367 +7.89791 9.25734 +5.2852 5.84332 +0.45713 2.42223 +7.73426 8.48158 +8.0058 9.46405 +8.03189 8.41868 +1.54624 1.98914 +7.24167 7.27699 +8.61226 8.83199 +5.38365 6.52599 +0.827018 1.51428 +7.19285 7.48372 +-0.0969552 2.16007 +4.08084 6.32563 +9.16026 10.2604 +0.206147 0.717435 +4.00643 4.8093 +2.16139 3.14759 +1.73359 3.13485 +9.1103 9.36052 +7.05621 7.43901 +4.83509 6.07581 +5.67164 7.89488 +7.93353 8.18454 +2.59566 3.1842 +3.62521 4.95121 +3.0297 3.18649 +1.08515 2.69289 +3.77063 5.7789 +0.106035 1.27409 +0.601099 2.13481 +6.98837 7.58833 +9.22955 9.79149 +1.6398 1.78726 +2.30423 3.34814 +2.3912 2.81842 +4.71724 6.16966 +5.13553 5.5016 +5.34117 5.45075 +9.32776 10.0676 +4.54244 5.29058 +4.01337 5.73188 +8.17427 8.39652 +1.96122 2.6921 +0.594267 1.00176 +-0.136973 0.977133 +6.41362 6.78056 +1.68388 2.39891 +9.50795 10.2315 +-0.262703 1.15557 +8.72229 9.683 +5.41821 5.67519 +4.93514 7.15867 +4.07046 4.26702 +-0.00866106 0.252353 +8.65877 10.1527 +2.10958 3.40353 +2.94947 3.43201 +6.32014 7.06279 +2.55034 2.89646 +3.87777 5.68044 +2.05325 3.00968 +5.11855 6.55784 +8.99618 9.22608 +3.36303 3.84902 +2.6234 3.70832 +7.35189 8.30856 +6.43777 7.28495 +5.33954 5.48055 +0.15999 0.391114 +3.4492 5.07088 +2.38503 2.42742 +3.88912 4.93246 +2.76303 4.54991 +6.56261 7.60381 +3.64198 3.72471 +1.70542 1.78806 +9.71115 9.88315 +0.471586 1.82377 +9.27611 10.5725 +0.486889 0.851587 +4.39234 5.10637 +9.54209 9.8955 +6.99602 7.42461 +2.98797 3.74623 +5.89424 6.4498 +9.63845 9.86333 +4.39828 5.18646 +2.30118 3.5758 +8.68128 9.56011 +9.00505 10.4304 +-0.22184 0.233296 +6.48492 7.60283 +1.54156 2.60693 +4.06808 6.39369 +5.52361 6.26241 +-0.698727 0.745524 +2.30742 2.41924 +0.655833 1.65752 +6.94733 7.81866 +7.83136 9.10651 +6.45284 7.1931 +6.09683 6.66159 +9.03299 9.4163 +1.86392 3.26189 +0.54863 2.07194 +0.364026 1.38376 +0.706954 1.0736 +-0.111015 0.584367 +1.54265 2.1413 +0.501172 0.57928 +2.09411 2.28902 +1.89894 4.09104 +8.72895 8.87045 +5.27709 5.72545 +0.164581 1.64188 +8.39203 8.73608 +8.21523 8.45002 +9.62006 10.1665 +4.79076 6.26442 +3.44189 3.68669 +8.93789 9.38343 +7.07036 7.64194 +8.34396 9.56445 +8.29992 8.64954 +5.82566 7.83287 +2.43008 3.4476 +1.81121 2.12203 +4.36108 4.3842 +6.28756 6.95939 +3.8698 5.79519 +0.644581 0.699162 +9.71982 10.2422 +4.86545 5.00544 +8.3808 9.29356 +1.34495 1.40972 +1.03641 2.01838 +8.55609 9.99958 +1.40813 3.46097 +3.20928 4.08838 +8.24345 9.11587 +1.27604 2.03462 +8.28298 8.46252 +2.20644 3.19585 +1.91396 2.30108 +4.2553 5.66006 +7.34925 8.38275 +6.28319 7.22199 +8.42171 9.62596 +1.12059 1.18262 +1.37555 1.84196 +4.39663 4.93639 +9.28044 9.58437 +5.47407 6.88593 +8.36529 8.49813 +9.40208 10.5922 +-0.451389 1.92404 +2.89431 3.19453 +6.51433 8.02158 +5.52163 6.06786 +7.63525 9.86457 +4.13898 5.05845 +0.136662 0.503748 +6.13492 6.74997 +8.37416 9.18971 +8.64164 8.82663 +0.941173 1.16158 +6.9073 8.26916 +8.37278 8.44326 +8.8951 9.20427 +8.40149 9.17577 +3.60361 4.57183 +8.67263 10.1127 +5.89716 6.45412 +1.97285 2.35593 +7.22973 8.13467 +9.55645 9.92529 +0.261578 0.836274 +9.04414 9.45485 +6.18043 6.54229 +8.88579 9.54087 +1.82613 2.93849 +5.7599 5.96366 +5.23105 5.5541 +0.425229 1.44436 +0.32065 2.60892 +7.83655 9.48786 +2.3168 3.45972 +2.35466 3.23342 +8.24494 8.27258 +7.32678 7.74264 +8.37275 10.0741 +4.17337 4.98348 +-0.162009 0.724431 +9.49757 9.76377 +8.69435 9.08089 +4.13841 4.7514 +7.26358 7.55514 +6.91912 6.93 +6.7883 7.18296 +-0.614315 1.1857 +6.05907 7.33557 +4.86704 4.87705 +8.50012 9.14836 +1.83683 3.09895 +6.16389 8.39248 +3.03556 4.41004 +4.72416 5.05782 +1.98183 3.19183 +2.77103 5.71501 +4.90002 4.9817 +0.269258 0.725628 +5.59551 7.05038 +2.95416 3.09633 +2.17662 3.18385 +6.67536 7.56762 +7.31678 7.39321 +3.84158 3.85359 +4.38203 5.10149 +0.816784 1.09918 +0.70131 0.739502 +0.276631 2.32633 +9.15839 9.49433 +0.721295 1.97673 +2.63875 2.75437 +5.00344 5.5645 +2.24555 2.81234 +7.74465 9.07646 +2.35244 4.90632 +0.812093 0.954419 +3.97904 5.2071 +4.19177 4.83646 +0.853012 1.331 +2.64112 3.25613 +0.0894716 1.61954 +3.39617 3.40859 +1.56906 2.28518 +2.37258 4.36515 +1.60997 1.7561 +5.15275 5.33281 +6.47824 7.47529 +2.51145 3.29949 +2.71094 2.77785 +8.84653 9.48398 +1.3246 1.66664 +7.43718 7.5546 +3.68985 4.24649 +4.50553 4.51669 +4.15617 4.54887 +8.55319 10.2136 +2.1448 3.55805 +4.64594 4.71505 +1.71763 1.99977 +4.98066 5.46709 +7.7779 8.36497 +-0.0604997 0.301294 +5.11873 7.32867 +4.94567 5.5986 +5.32645 6.26835 +2.5768 3.13511 +3.31604 3.87555 +1.60834 2.68762 +3.30552 3.85211 +4.26741 4.98636 +0.820475 1.18854 +7.91501 10.7203 +5.17391 5.30351 +4.00452 5.75141 +2.37722 3.4602 +2.2373 2.94837 +1.62462 3.48264 +7.98507 9.2566 +5.32504 5.56388 +0.760614 0.7802 +0.855659 1.01522 +3.11231 4.43223 +5.62821 6.21564 +4.96845 5.35921 +8.10559 9.11106 +1.02533 1.13103 +6.99976 7.0788 +1.87628 2.58801 +1.11023 2.24655 +5.23343 5.45086 +0.95875 2.25343 +7.45917 8.23614 +2.72245 3.04663 +8.66816 8.70698 +5.55734 7.12262 +1.01935 1.88271 +0.804417 1.76187 +7.82703 8.78426 +4.77321 6.15199 +2.91503 3.69352 +0.776735 1.08883 +5.19981 5.46442 +9.06483 10.4008 +7.72082 8.26398 +2.9854 3.26573 +0.584028 2.60443 +0.700994 1.10379 +5.47612 5.94502 +-0.318442 0.986786 +5.0704 5.08055 +3.83732 4.4826 +5.60843 6.59005 +8.81432 9.7851 +6.28792 6.65284 +1.16812 2.27701 +7.15234 9.66795 +9.02188 9.15339 +1.76112 2.04839 +7.49419 7.6204 +5.1765 5.497 +1.45855 1.94969 +1.35003 1.55822 +2.50453 2.86815 +7.10451 8.51352 +3.87727 4.1124 +1.84876 2.79351 +3.01661 4.05396 +-0.16814 0.366484 +-0.538895 0.608786 +7.59933 9.00744 +0.938648 2.38471 +5.76934 6.16572 +8.20416 8.62505 +8.64542 8.7264 +2.75784 2.7828 +0.794451 1.97817 +9.21331 10.5156 +8.46671 8.80572 +3.94814 5.16845 +6.73654 6.97397 +4.05301 4.93008 +6.37833 6.77985 +7.21161 8.15994 +3.74993 4.61029 +-0.127938 1.09853 +2.82957 4.28816 +6.50564 6.59445 +8.37926 8.48332 +0.757443 1.74585 +0.232438 0.972293 +6.99187 8.7098 +7.20368 8.44301 +4.4801 6.07501 +4.34015 6.1495 +2.19394 3.22334 +7.29817 8.41021 +1.16627 2.68901 +4.62423 5.08039 +0.955655 2.22882 +1.45862 3.07065 +1.69815 2.56291 +4.01179 4.36587 +7.135 7.75829 +6.6823 7.27765 +5.44745 5.67195 +4.94594 5.42067 +0.267772 0.301939 +0.676432 1.6296 +1.37335 1.91645 +1.89051 2.38631 +4.84386 6.30539 +8.95613 10.944 +2.18119 2.41821 +5.74901 6.16952 +7.5431 7.88071 +9.05278 9.8128 +0.201334 1.65323 +2.82787 3.82083 +3.07073 3.08475 +8.99671 10.1766 +5.43261 6.12137 +4.83693 4.86848 +6.31804 7.21544 +2.34491 3.2562 +6.05941 6.53725 +-0.483381 1.17347 +5.53777 5.72651 +3.28875 3.47472 +3.94609 4.9418 +7.45585 8.6871 +1.50066 2.57215 +8.10112 8.67954 +6.24737 6.42635 +0.64413 1.05759 +7.1741 8.21476 +0.502722 1.77462 +0.783663 1.74174 +9.52704 9.9109 +-0.473873 2.01013 +7.07946 7.11474 +0.857335 1.6501 +4.00225 4.84453 +5.40598 6.30573 +8.18802 8.30067 +9.00412 10.9588 +9.8362 10.1517 +7.62735 8.37572 +3.41477 4.63099 +2.51254 2.81559 +6.36702 6.56061 +5.11842 5.35515 +5.21873 5.73296 +5.73528 7.77276 +3.64993 4.66826 +7.12664 8.46553 +8.7257 9.16851 +1.27615 2.20376 +7.46188 8.20752 +2.64939 2.66373 +4.94147 6.0509 +6.3805 7.48841 +6.25197 7.12327 +0.0885331 1.2682 +4.97356 6.58488 +4.11917 4.27267 +9.08793 9.70385 +0.897277 1.31702 +6.87538 8.25544 +1.55565 1.59492 +2.62483 3.54274 +1.49631 2.92263 +9.45305 9.97728 +6.24087 6.4577 +3.94636 5.13669 +-0.000956745 1.08235 +1.46134 1.83767 +9.18517 10.6601 +-0.740186 1.81269 +5.81977 6.15818 +7.0529 7.99421 +6.17753 7.49749 +8.63091 9.04205 +9.65219 10.1558 +3.12839 4.99211 +2.97262 4.07384 +4.28605 4.33171 +4.15906 5.6805 +1.35165 1.50732 +0.524207 2.12307 +5.32468 7.01472 +3.16982 4.87893 +6.88786 8.34191 +3.81703 5.22335 +3.86772 4.37359 +8.19386 10.0705 +1.73155 3.16695 +4.31685 4.62261 +9.40618 9.89612 +4.41215 5.19659 +2.35595 2.63543 +7.88481 8.14203 +7.17062 10.3534 +9.41379 10.389 +7.99867 9.01239 +3.31382 4.04915 +5.39222 6.07657 +8.5187 8.65976 +9.30132 10.6131 +7.17351 7.93596 +4.80134 6.72724 +3.59756 4.65182 +1.08248 1.17479 +1.03124 1.06871 +6.43154 6.95098 +-0.102199 0.59801 +4.94795 5.18081 +6.39126 7.30258 +1.52738 2.04271 +1.80373 2.33093 +2.72251 3.01677 +0.296722 1.10844 +6.39104 6.51567 +8.70965 8.78714 +2.07858 4.41695 +1.91027 2.9718 +1.42944 2.01864 +1.96347 2.73397 +4.0701 4.22456 +4.02859 4.05107 +7.10977 7.98092 +8.21148 9.54287 +6.59231 7.65109 +0.144191 0.830665 +2.0192 2.23704 +8.03482 8.39591 +8.90473 9.98543 +2.18284 2.70166 +3.05569 3.54238 +8.35319 9.39539 +2.00803 2.42866 +2.35282 3.13763 +2.20155 2.79377 +1.76531 2.94892 +7.52749 7.72567 +3.02266 3.24778 +4.01741 4.22521 +9.75263 9.91571 +6.45502 6.67838 +2.24912 3.47262 +1.84372 2.26517 +4.09559 5.71188 +1.43811 2.33732 +3.89171 4.16905 +3.01506 3.9725 +0.0273168 1.51766 +5.04118 5.80507 +3.08517 4.17316 +8.81637 8.8332 +8.74055 9.50143 +2.36904 2.69008 +6.39733 6.44221 +8.53272 9.51114 +9.48423 9.55002 +8.65645 9.04872 +6.66352 7.48009 +5.64389 7.88656 +5.75301 6.6759 +3.28645 4.22757 +4.99482 5.82988 +3.00004 4.0273 +1.45249 1.56662 +4.96263 5.32195 +7.91351 8.1437 +1.02034 1.56249 +0.71376 1.73319 +0.709968 1.44651 +9.01414 9.54799 +4.02116 4.68005 +7.10903 7.27075 +7.21322 8.71031 +1.6644 2.27186 +3.71304 4.68764 +9.66257 10.1452 +5.34477 5.46136 +9.27722 10.583 +3.82328 4.83316 +4.77019 5.07928 +9.07112 9.23836 +6.99091 7.25634 +2.11871 2.3054 +7.88242 7.98572 +0.570809 0.714073 +8.51532 9.49151 +0.329247 2.48897 +4.78202 5.36476 +1.47969 2.78867 +6.75011 7.36769 +2.31162 2.39533 +3.50434 4.48026 +5.84603 6.28861 +7.5337 7.62538 +1.09955 2.85741 +6.09915 7.20381 +0.933825 2.37925 +0.576363 2.0182 +3.12126 3.22507 +2.85313 3.02656 +3.25724 3.92077 +5.48575 6.58011 +1.02824 1.65415 +8.68703 9.06219 +3.28389 3.86349 +5.80264 6.12775 +7.11846 7.47444 +1.29638 3.38601 +6.37908 7.05986 +-0.592438 0.854361 +0.39233 1.17768 +2.1497 3.94423 +2.42336 2.43441 +6.94806 8.30626 +0.79865 1.4173 +1.41455 1.43684 +0.240074 1.16712 +4.18593 5.9929 +6.161 6.564 +0.726091 1.90706 +0.375606 0.694866 +4.09349 4.26452 +2.01652 2.68038 +8.99301 9.90549 +8.93909 9.17673 +1.10427 2.01247 +9.12668 9.15282 +1.08098 1.55374 +0.377836 0.414809 +7.28611 8.86318 +8.3542 8.53251 +3.86353 4.12875 +6.7631 7.40068 +4.61679 4.78182 +2.12935 3.45492 +3.68233 4.0457 +6.68131 8.22111 +8.79197 8.80474 +1.8915 2.26287 +0.387586 3.073 +6.46798 7.57381 +7.79742 9.34526 +-1.21538 1.67303 +2.07845 2.66028 +3.14148 4.46647 +1.66789 2.73375 +8.49821 10.0574 +8.42537 8.89906 +0.618349 2.72887 +6.8229 7.54501 +6.99343 7.35322 +7.34223 8.68781 +3.18834 3.98274 +8.86908 10.2535 +3.39839 3.76171 +0.188168 0.392276 +1.68187 3.53401 +6.50423 6.71714 +7.61191 8.89715 +1.68463 2.09275 +5.94627 7.6003 +2.15865 3.24126 +7.93639 8.53826 +2.99626 3.43273 +7.71028 8.41172 +3.19472 4.60878 +8.36123 8.92549 +8.92975 9.02783 +2.87187 3.49672 +6.76949 7.71139 +8.09121 9.31151 +6.84199 7.44009 +0.730655 0.800873 +7.5208 7.54109 +6.75992 7.55017 +6.09818 6.17399 +0.639209 1.27283 +3.01917 3.22327 +1.69181 2.60614 +9.49245 9.5842 +-0.418034 1.08035 +5.77705 6.4705 +6.79362 8.51993 +9.73155 9.81609 +3.71503 3.92022 +6.18589 6.77634 +3.94124 4.23942 +7.59911 8.05275 +3.68865 5.10948 +7.63926 8.63019 +-0.049855 0.0844425 +-0.41188 0.807786 +1.35962 1.81039 +5.40579 6.15098 +1.38594 2.0059 +6.93444 8.71958 +7.01229 9.38008 +-0.0974976 0.962679 +4.74131 6.59152 +1.02343 1.59245 +1.55629 1.9128 +6.28353 8.38021 +5.66349 5.79644 +1.72629 2.28563 +1.64539 2.82654 +0.359466 1.05106 +4.37569 4.82703 +5.87657 6.37853 +1.46316 1.65333 +7.44494 7.5985 +1.16846 1.98579 +4.43371 4.93234 +2.31838 2.47777 +7.52687 8.44423 +6.08056 7.42253 +9.16144 9.94783 +4.74382 4.95616 +0.248344 1.05335 +6.12345 7.43941 +9.45647 9.99799 +3.77124 4.75199 +3.31315 3.44873 +-0.0909828 1.51271 +7.03234 8.02546 +8.11403 9.11461 +6.734 7.34799 +1.08903 1.18319 +2.72871 4.31607 +6.53688 7.52754 +1.07868 1.27792 +6.28409 6.56795 +4.89866 5.79458 +9.06994 9.1221 +2.54989 3.14338 +3.69971 5.71717 +3.7113 4.55076 +8.91864 9.64522 +8.75634 8.82359 +9.02242 9.03869 +3.59945 4.20169 +4.98557 5.07401 +4.81526 5.74009 +7.264 8.63749 +2.79579 4.43389 +2.87204 4.66432 +2.32487 3.72127 +3.99704 4.72567 +8.17229 9.0158 +-0.72926 0.823658 +2.52355 3.32725 +5.3446 6.63868 +4.48935 7.37833 +3.08173 3.0968 +2.41585 3.23026 +9.23187 10.5413 +5.50099 5.51888 +1.29634 1.88846 +-0.0113225 1.41526 +6.34508 7.53417 +0.383019 2.25144 +5.0649 5.40222 +3.08221 3.76296 +9.29111 10.6833 +2.19714 2.94735 +8.75711 9.48583 +8.61564 8.69349 +1.9362 3.96191 +3.7962 4.44382 +7.78501 9.03843 +5.79649 7.29675 +6.03048 7.4316 +1.31105 4.36446 +6.5882 7.03622 +4.88148 7.12474 +6.62305 6.90973 +2.27488 2.73731 +8.42703 9.28888 +7.72928 8.53989 +7.27021 8.63879 +0.992908 1.92001 +-0.282737 0.511292 +7.88963 8.03117 +6.93371 8.26148 +-0.0346633 0.403617 +8.7827 8.82558 +5.16876 5.59742 +8.61275 8.73843 +5.70578 6.02783 +9.08706 9.35903 +9.32728 9.83021 +9.20058 10.2497 +6.79824 7.3024 +7.17979 7.51783 +0.918555 2.67878 +7.9662 8.63241 +8.85903 10.3145 +9.34614 10.1964 +9.05027 9.79872 +8.28959 8.45837 +1.32518 2.04557 +8.72848 9.16742 +5.92126 6.77277 +8.31504 8.78631 +1.02487 1.70172 +4.45204 4.72842 +8.20636 10.4724 +5.86211 6.25457 +6.15754 7.71303 +8.37832 8.82577 +4.25233 4.59417 +9.41451 9.95324 +9.372 10.4461 +1.8346 2.7144 +8.00681 8.14717 +7.03997 7.06753 +7.16892 7.70102 +7.01781 7.46799 +1.78526 1.7969 +1.63304 2.2011 +8.59718 8.61083 +9.43498 10.3636 +4.98718 5.32487 +3.65451 4.89601 +8.82368 9.11333 +-0.104862 0.598773 +4.97756 5.62342 +1.99876 3.24686 +2.32242 4.01096 +4.04914 4.77892 +3.81545 4.32583 +3.30153 3.46783 +3.14287 4.04718 +8.65711 8.76768 +9.09385 10.6898 +4.82771 5.64405 +5.98783 6.36785 +7.93397 9.6543 +4.89726 5.65486 +5.08717 5.22314 +6.59377 7.23748 +3.58289 3.98597 +0.177884 0.397629 +5.30856 5.79257 +2.53943 3.98007 +6.51217 6.59644 +0.196888 1.99904 +3.8709 4.1901 +2.37646 2.50997 +7.03837 8.13287 +6.8674 6.89535 +0.576964 2.08851 +0.902928 2.86981 +8.59261 9.20279 +5.96621 7.49899 +0.617602 1.83267 +2.29189 2.6361 +4.34207 4.61026 +6.19963 6.76443 +1.15955 1.44068 +5.25852 6.33905 +6.37306 7.53103 +9.13334 10.039 +8.67743 9.93959 +5.62973 6.04375 +8.32286 8.77042 +3.28772 6.1722 +4.97902 5.47249 +3.37765 5.07238 +4.58025 4.84341 +2.76807 3.18817 +4.27581 4.43023 +6.92572 7.68461 +0.279247 1.0561 +1.10903 2.61106 +6.71708 6.73132 +2.66415 3.75702 +8.0513 9.80334 +4.82466 6.04232 +2.59971 2.85768 +9.04689 9.73945 +3.48338 5.16622 +7.90925 8.92774 +7.30264 8.06247 +7.59087 8.26476 +0.150315 0.423068 +8.62726 9.74636 +9.01983 9.71707 +6.84007 7.40541 +8.87829 9.48342 +2.69214 3.71481 +0.580036 0.77289 +9.474 9.83397 +5.80151 6.08527 +3.63837 5.27137 +8.5848 8.65779 +7.88338 8.13276 +3.27992 4.20963 +6.21244 7.28079 +-0.348924 1.38478 +5.26688 5.93787 +3.78941 5.01009 +6.41929 8.38529 +1.41724 1.67733 +0.212821 1.58246 +0.0697189 0.160497 +9.57839 10.2377 +9.03332 9.70645 +4.94572 5.15163 +3.16999 4.536 +5.77494 6.68359 +5.89258 6.11852 +7.72257 8.21668 +8.42501 8.44905 +8.7196 8.86465 +4.392 5.1076 +1.88249 2.54422 +1.38092 1.60326 +5.04142 6.37374 +4.31795 5.91152 +1.79399 2.09314 +6.65405 8.32262 +1.36356 1.58538 +5.45456 6.55824 +4.95807 6.22848 +8.72077 10.2825 +0.745968 2.01546 +6.85041 7.11076 +4.82028 5.34442 +5.77673 8.01294 +8.58582 9.33714 +8.49884 9.21533 +9.05574 9.4096 +3.19932 3.27024 +9.50227 9.96685 +0.771636 1.0617 +9.00621 9.36397 +-0.097167 1.39463 +7.79622 8.43537 +8.05228 10.1504 +2.21685 4.17072 +1.82476 2.45381 +4.34408 4.56578 +9.27538 9.54701 +6.80153 7.44115 +7.38884 7.84448 +7.17526 8.00165 +5.85812 7.67326 +5.25545 6.30791 +5.68518 5.94055 +3.77685 4.1545 +0.530928 0.737248 +3.9772 4.59563 +8.96322 9.45618 +7.98322 8.44165 +3.42929 4.22329 +3.66445 4.7583 +-0.183652 0.434842 +3.16492 3.95726 +6.87407 7.89944 +5.08921 5.7745 +2.85466 3.04505 +7.12685 7.41248 +0.715419 0.876676 +3.47441 5.21753 +9.13594 9.87799 +5.52459 6.35691 +5.12544 6.12935 +2.44296 2.91543 +2.75148 4.19886 +1.43478 4.3919 +6.6352 7.07768 +4.72283 5.11506 +6.36434 7.69268 +2.32643 2.75289 +5.46566 6.22854 +6.37995 6.76989 +1.52564 3.55871 +1.05807 2.19393 +1.95374 4.08727 +8.11273 8.12767 +2.85955 4.71355 +4.89009 6.88516 +2.06859 2.25512 +7.50556 8.77923 +4.43353 5.11915 +5.16308 5.9695 +1.12072 1.69277 +3.96494 4.38143 +7.06931 7.89524 +0.514522 1.51265 +6.56389 7.01146 +1.51362 1.8541 +4.90339 5.51209 +2.11422 3.15457 +2.50094 3.92557 +8.24319 8.62826 +-0.0843505 0.710377 +6.35956 7.89457 +-0.790954 1.2964 +4.02253 5.19193 +2.7425 3.46763 +9.41469 10.1367 +1.57636 2.25105 +3.18647 3.38738 +8.36644 9.66791 +0.180846 0.461221 +7.07675 7.71881 +0.265366 1.19275 +5.43007 6.4854 +9.13912 9.23294 +9.52905 10.4029 +1.18712 2.66227 +5.22714 5.62601 +1.87413 2.8716 +5.71882 6.16374 +5.38169 6.13948 +-0.196005 0.236738 +5.36803 6.4395 +8.27713 8.71262 +8.82031 8.8598 +-0.53845 0.564783 +1.80716 1.94173 +5.67905 7.47291 +2.37779 3.64893 +0.574727 0.766424 +4.60701 4.86591 +3.17989 4.37738 +1.36777 3.15112 +1.48092 3.06573 +3.37009 4.06028 +4.17179 6.2073 +6.47953 6.88994 +5.74431 6.5253 +4.88827 5.49049 +5.44148 5.59239 +1.66153 2.63132 +7.69387 7.82267 +5.20911 5.48488 +-0.103218 0.497402 +7.18003 7.33324 +6.54305 8.81732 +0.278108 1.27452 +2.38323 2.94772 +1.2461 2.03246 +5.47052 5.75781 +7.31505 7.35895 +2.22248 4.23589 +0.0305319 0.430773 +8.32043 10.1222 +6.11732 7.09764 +5.08797 5.74991 +6.62491 7.34164 +5.55795 5.66083 +3.27549 4.13145 +1.0113 3.24631 +0.0717186 0.519738 +7.82905 9.30839 +9.90251 9.98691 +0.841457 0.952276 +-0.133927 0.510174 +1.14614 2.82218 +2.59767 4.19742 +3.41095 3.95265 +3.38951 3.75838 +8.86766 9.19437 +9.27927 10.261 +2.33249 2.79402 +5.69681 5.93469 +4.02502 5.38732 +0.797157 1.22845 +7.23558 7.8651 +1.1253 1.99184 +8.58296 8.64267 +-0.400141 0.74698 +3.46677 3.50526 +6.03252 6.64842 +5.8493 6.68938 +3.53209 3.84014 +7.22078 8.98106 +6.21943 7.69944 +0.887198 2.07323 +3.36591 4.57442 +4.30143 6.41179 +4.07556 4.54276 +8.77552 10.0615 +6.7247 7.04044 +9.05494 10.1126 +7.46604 7.80632 +3.38601 3.8043 +5.60475 7.02788 +9.09811 9.4654 +9.33447 9.80012 +8.66499 10.1002 +3.87007 3.88281 +2.87624 3.11359 +5.92385 6.80801 +4.49711 5.01863 +8.84524 9.36225 +6.40944 6.82093 +2.90915 3.68288 +3.96801 4.82534 +5.51744 5.84233 +3.2959 3.44409 +0.18526 0.207322 +5.49717 5.72648 +6.9522 7.1952 +0.769572 1.79343 +5.95522 6.03918 +6.54327 7.7475 +2.13516 3.83957 +-0.388892 0.775076 +1.30128 2.29414 +9.76761 10.1604 +7.38731 8.66002 +7.09229 7.43495 +9.1379 9.52432 +6.75942 7.88717 +7.42824 8.82063 +6.93078 8.19884 +2.307 2.93836 +8.38254 8.84691 +3.90159 5.37938 +0.0413204 0.112203 +0.638217 1.53943 +0.88678 2.49435 +1.99104 2.60847 +6.61595 7.65064 +2.37641 4.71719 +7.94945 9.21404 +5.44594 7.13646 +5.45737 6.12335 +7.39207 8.02885 +5.51588 7.39341 +8.1581 10.0632 +0.197869 1.44516 +-0.0161139 0.73487 +4.24155 4.7304 +0.00374564 1.26481 +8.1878 8.20011 +-0.115544 1.74771 +0.912347 2.52922 +2.72234 4.83268 +6.45577 7.07776 +9.74201 10.1772 +7.11008 8.72914 +4.41921 4.8673 +7.97673 8.36658 +0.438659 0.647061 +4.35086 5.44482 +8.22919 9.34379 +3.53242 5.65576 +1.126 2.32177 +5.95118 6.51364 +3.10519 3.9447 +1.28889 2.26267 +7.04255 7.67791 +3.12614 3.17626 +8.09968 8.49162 +6.07924 7.219 +5.99554 6.52549 +9.14378 9.5773 +5.82872 6.53112 +9.3361 10.1704 +4.3751 6.51675 +3.288 3.98328 +4.56342 4.80185 +7.16574 7.43901 +7.7638 8.47758 +7.31514 7.78499 +7.98942 9.50252 +4.31211 4.70724 +2.9094 3.33304 +0.108736 0.668815 +8.08409 9.11098 +-0.0053985 0.589992 +1.31926 2.72153 +2.28664 2.38813 +7.95237 8.26388 +-0.0283047 0.452099 +7.50295 8.71708 +7.72356 8.63468 +3.48953 3.89579 +7.73814 8.73456 +4.54487 5.45817 +6.45109 7.00312 +3.99915 5.41716 +6.81436 8.5682 +6.86726 7.55999 +2.67863 3.7053 +2.6837 3.39567 +2.84347 2.91724 +5.79383 5.80493 +2.41217 3.0619 +8.78163 9.0998 +1.43456 2.50854 +6.73393 8.53005 +3.02563 3.56456 +3.34628 4.2934 +2.44985 2.92819 +1.38262 2.89341 +4.56337 5.75702 +0.275735 1.16604 +1.39763 2.8108 +9.69128 9.90361 +8.54868 9.66756 +3.01838 3.72831 +8.34017 10.5262 +1.82721 3.0476 +5.9732 6.83307 +2.77874 4.25603 +1.71987 3.1227 +6.33773 7.89103 +1.31982 2.82992 +4.21601 4.9627 +6.68166 6.72653 +0.87708 1.06828 +1.03483 1.26625 +2.996 4.03087 +1.54718 1.57452 +2.33087 2.38226 +2.29464 3.36496 +2.03064 3.41867 +5.8456 6.10406 +7.54614 8.2874 +1.42938 2.89154 +2.65935 3.53883 +3.98845 4.42049 +6.85632 7.15487 +8.12038 9.34993 +0.873558 1.32129 +6.61595 8.00766 +9.49147 9.81947 +-0.0225601 0.328769 +-0.481519 1.37204 +6.31457 7.45251 +4.59738 5.81395 +4.83304 5.63008 +1.95746 2.78657 +2.97889 3.74408 +9.08327 10.702 +3.58219 4.93634 +7.87068 9.77851 +0.330978 1.36031 +4.78145 5.36918 +4.94672 5.56644 +7.66806 8.08613 +4.78512 6.35461 +5.17367 5.74386 +8.65884 9.97088 +9.22053 9.60447 +6.15061 6.58817 +0.0875971 0.541643 +6.45597 7.92002 +0.636824 1.05267 +5.31677 6.12838 +6.51127 6.6731 +0.459551 1.69382 +5.75106 6.41377 +3.68438 4.67415 +9.36302 9.78281 +5.46195 7.99215 +2.55471 2.59231 +-0.0640245 1.33755 +9.36027 10.6198 +2.67955 2.77882 +3.51443 4.10619 +6.83904 7.23692 +2.59553 2.81418 +7.74628 8.95169 +3.86464 3.90067 +3.32377 3.992 +1.43737 2.52191 +3.83927 3.99402 +5.24426 5.35179 +0.833857 1.05277 +8.4062 8.51964 +9.62299 9.66254 +3.55427 5.19048 +1.7003 2.62107 +6.8059 7.49246 +-0.761104 0.773528 +1.37137 1.95048 +2.1222 2.59387 +0.633505 2.04796 +0.605156 1.04336 +7.22842 8.3365 +4.28716 5.28921 +8.14286 9.52015 +7.62467 9.18603 +1.11029 1.81278 +5.05654 5.13597 +0.862653 0.97827 +7.24766 7.92167 +8.80103 8.91467 +3.05841 4.82292 +1.28204 1.55969 +1.58886 2.57874 +0.0537678 1.28837 +8.09303 9.71678 +8.37599 8.85705 +3.18107 4.01971 +6.67019 7.75848 +6.29836 8.21603 +0.86271 1.30358 +3.86126 6.49694 +5.84446 6.24913 +0.475025 0.598151 +6.3477 7.08327 +3.60161 4.51824 +7.13317 8.13858 +4.89052 6.23701 +5.69441 5.99027 +7.18735 8.34853 +9.30182 9.34894 +6.06589 6.15141 +8.05917 8.89642 +5.6136 7.14058 +0.838337 0.959487 +0.56421 2.00841 +6.46876 6.63629 +2.4434 3.92184 +7.97216 9.45372 +8.17926 8.66756 +1.86522 2.01888 +0.983342 1.89079 +2.07322 2.09765 +3.52974 4.73717 +3.24973 4.88691 +5.47789 5.95384 +4.11218 4.57076 +6.61174 7.47165 +8.09302 8.36193 +1.67911 1.69022 +4.436 6.17515 +5.6544 5.74951 +1.50354 1.76043 +4.41433 4.83589 +1.82528 3.53979 +3.98749 4.65527 +6.42503 7.5787 +8.69554 10.1767 +8.39215 8.56999 +8.71646 9.66209 +1.59091 3.39622 +6.12574 6.94955 +7.92527 8.25049 +9.19858 9.49137 +2.73382 2.97747 +4.56558 5.94738 +8.33983 8.58548 +9.00798 9.01838 +4.93268 5.28383 +3.15356 3.58606 +8.28171 8.79351 +1.47358 1.9581 +0.891797 2.05345 +1.56032 2.38159 +2.5152 3.80485 +8.0963 9.88138 +1.1262 1.89279 +7.99336 8.2352 +5.25067 5.41251 +4.57532 5.20101 +1.87911 4.59415 +4.25142 4.70467 +8.18782 8.76989 +9.20478 9.3612 +7.70898 9.7752 +0.655865 0.958924 +4.8883 5.77477 +3.03279 3.47456 +1.01979 1.41661 +8.94219 10.6987 +2.49348 4.58195 +2.44003 3.29005 +3.4725 3.55572 +9.3917 9.95851 +7.08658 7.47686 +3.56413 4.44089 +-0.47868 1.11453 +6.82615 8.00596 +3.49451 3.74705 +8.13286 8.47976 +7.01732 8.82556 +1.19064 1.48887 +5.28851 6.88637 +8.83175 9.49879 +0.939903 1.17024 +7.49124 9.01906 +2.9285 4.23224 +5.68296 6.86273 +8.53897 8.77886 +2.9107 5.01232 +0.748655 1.10265 +4.77258 5.12626 +3.995 4.75289 +2.71467 4.26926 +6.21665 7.16233 +4.53883 5.75731 +4.37153 4.76125 +7.47635 8.75777 +4.82013 6.4699 +9.36015 9.58451 +4.43054 5.86752 +2.10934 2.34705 +3.00306 3.06539 +7.81957 8.44081 +1.97221 3.06916 +0.153393 0.503956 +5.05611 5.27536 +5.73277 5.89001 +3.64807 4.85582 +6.13416 6.1528 +3.85511 4.14045 +0.411725 1.36529 +2.26932 2.5447 +3.51164 4.93266 +2.50955 4.34201 +8.74663 9.39268 +6.2229 6.39303 +4.38059 4.91592 +7.29109 8.62318 +6.31801 6.99532 +9.75036 10.0514 +1.69019 2.41527 +4.20462 5.27729 +6.32944 6.94729 +3.5736 5.21496 +4.48316 4.61828 +1.76915 2.43263 +2.42026 4.09159 +2.08762 2.43074 +5.48161 6.02473 +5.51826 7.47042 +2.78026 3.1552 +7.89469 9.49867 +3.09084 4.54697 +7.20417 7.42408 +5.36528 5.74851 +1.86239 2.41988 +1.55994 2.85743 +4.40182 4.6638 +7.91619 9.01242 +3.08119 3.74714 +1.54108 2.08538 +3.61461 3.64631 +8.76851 9.66257 +-0.645571 1.3366 +-0.707083 1.21005 +7.19571 8.23405 +5.42865 5.89329 +2.12897 2.59222 +0.603102 0.930391 +3.75025 4.63181 +6.14867 6.4526 +7.30947 7.51461 +7.83183 8.79802 +6.06658 8.53246 +1.67895 2.50063 +1.14179 2.04478 +8.59583 8.90112 +-0.918885 1.30717 +0.182607 0.613593 +3.3335 3.77196 +0.783053 2.4368 +6.49331 7.60104 +2.85101 3.28637 +7.42273 7.66905 +3.96433 5.02573 +8.26262 8.40749 +9.24451 9.32783 +4.89036 7.07214 +6.45431 6.96815 +5.20701 6.58747 +7.40142 7.98615 +4.19768 4.9831 +3.32546 3.88811 +-0.471996 0.967855 +9.36172 9.63532 +1.96831 3.00632 +7.537 9.72671 +4.67746 4.81135 +3.10782 4.93642 +4.94809 6.54855 +4.16763 5.25628 +9.04992 10.316 +0.668935 0.680886 +4.02935 4.84503 +5.32499 5.76636 +5.32267 7.15457 +5.18886 5.23491 +4.37053 5.36801 +2.39955 2.74657 +8.19764 8.86645 +4.24706 5.69703 +1.87851 2.36988 +0.886553 1.05064 +7.27428 7.90224 +9.08417 9.44879 +3.11534 4.02019 +6.3284 7.39925 +4.96029 5.59076 +2.58248 3.11741 +7.76513 8.13505 +4.93613 6.51523 +0.565355 1.70512 +2.12366 3.0319 +5.32422 6.84146 +-0.135396 1.08591 +3.7901 4.86303 +4.49677 5.41847 +0.615748 0.834712 +0.64784 1.81859 +6.65505 7.13894 +-1.12744 1.61017 +0.550814 1.24316 +6.66639 6.89866 +6.19271 8.17468 +3.09382 3.78684 +4.41221 4.95889 +7.96091 8.48824 +8.32129 10.2917 +2.13168 2.19835 +1.4635 2.38989 +5.78102 6.42215 +1.70153 3.20616 +5.35068 5.71016 +4.27702 4.37203 +5.13888 6.04764 +4.79644 5.37927 +6.75314 7.66368 +6.04484 6.84064 +4.34947 4.45643 +9.08755 10.396 +0.88804 2.17441 +6.86788 7.88301 +7.94296 8.61664 +8.02387 8.79591 +1.79024 2.40559 +5.50404 6.01044 +7.76772 8.1932 +1.174 1.23693 +6.20571 6.9224 +4.20863 4.48702 +4.16743 4.39075 +-0.11965 0.120778 +7.01234 7.52619 +5.91415 6.46151 +5.28713 5.72354 +6.26981 6.31237 +0.643056 1.43864 +1.62562 1.99875 +0.544992 0.721386 +6.92522 7.09165 +-0.107048 1.12273 +0.644674 0.91244 +8.56904 9.01883 +2.23079 2.56598 +9.79034 10.1123 +8.13788 8.4131 +1.86753 1.95236 +2.97577 3.33272 +8.57454 10.0193 +1.20043 1.53408 +3.43515 3.86571 +5.79075 6.41293 +1.71558 2.52845 +2.39907 3.46652 +9.08289 9.91182 +0.859644 1.07475 +5.30144 5.42157 +-0.441497 0.890794 +3.55044 4.14918 +-0.340115 1.19239 +6.5534 6.76908 +0.836514 2.09196 +8.15747 8.96484 +4.80087 5.14227 +7.72071 8.88223 +5.11901 5.65559 +4.44996 4.63562 +-0.328404 1.3002 +0.90759 1.34556 +5.94839 6.35058 +1.76504 1.78344 +1.32585 2.08994 +7.18641 8.20945 +0.62657 1.06025 +6.28086 6.40975 +5.05525 5.16143 +5.82694 8.07685 +6.23677 7.55394 +-0.226265 0.661443 +1.42599 2.36325 +9.04445 9.92971 +-0.169286 0.185741 +8.34636 10.9042 +9.52494 10.0475 +8.39989 10.1377 +3.89956 4.70428 +3.98673 4.97185 +5.43008 5.67936 +7.76475 7.98591 +4.46895 4.73188 +0.584662 1.54474 +2.12622 2.79994 +1.40578 2.2461 +1.45171 2.02105 +2.05665 3.04611 +2.29818 2.68118 +1.77344 2.98698 +4.92092 5.55302 +7.18758 8.37525 +8.83407 10.0565 +2.91182 4.71932 +6.47293 6.74664 +2.49238 3.69749 +0.487234 0.541003 +4.703 4.92744 +9.8867 9.94918 +1.7713 1.9792 +5.68316 6.90242 +5.62485 6.70656 +7.24837 9.60197 +7.71147 7.76519 +5.22324 5.30661 +9.11258 9.28071 +8.2827 8.90115 +8.90865 9.42138 +7.47233 8.72308 +4.89712 5.65153 +4.12392 4.20239 +5.65325 6.55887 +8.65945 9.05845 +7.9165 8.36489 +1.4952 2.43991 +5.49665 5.80793 +1.67206 2.55302 +0.943544 1.58521 +0.47 0.860959 +6.47638 7.43101 +4.38434 5.97278 +8.12782 9.10574 +5.78143 6.6539 +9.23616 9.40513 +1.6845 2.00736 +6.56955 7.37847 +7.42993 9.04718 +-0.179632 0.450904 +8.65819 9.07724 +7.86567 8.80824 +1.85428 2.7755 +2.29222 2.65374 +4.03614 4.51729 +6.9326 7.07635 +5.50807 6.498 +6.17637 7.26432 +8.7688 9.16308 +7.65 8.88604 +3.74495 4.29991 +8.5671 10.5661 +7.41964 8.21083 +8.04302 9.78783 +0.269663 0.317601 +8.29804 9.40991 +3.90673 4.22298 +8.82384 10.9441 +7.27081 8.19548 +1.30184 1.98993 +8.13028 8.92385 +7.21224 7.35137 +5.02122 5.69666 +0.817219 0.974073 +-0.128067 0.589359 +2.12137 2.74019 +5.24657 5.44714 +1.55805 3.10332 +9.91031 10.0748 +7.13941 7.9143 +-0.183908 0.934079 +3.987 4.11053 +3.26678 3.67608 +9.75921 10.1121 +0.755391 1.06346 +7.28479 7.49982 +1.37522 3.80623 +0.944351 1.46531 +9.49278 10.2372 +8.28946 8.67597 +9.43537 9.58003 +7.73357 8.756 +2.64043 2.8687 +4.70448 6.99929 +3.82199 3.89343 +3.43825 4.10908 +4.42362 5.69086 +8.08536 8.60142 +8.43208 9.31272 +7.5889 8.39208 +7.90112 7.9734 +6.10381 6.80568 +8.76283 8.80151 +1.46728 2.53288 +1.68884 2.47102 +7.63343 8.29838 +9.18852 9.5558 +0.977174 1.4792 +4.7577 5.74873 +4.66433 6.37375 +-0.0952277 0.378184 +5.30929 6.07469 +4.98811 5.16146 +3.0744 5.59799 +0.944909 1.25222 +1.38561 2.51277 +3.77811 4.23459 +2.11604 3.32458 +0.920929 1.17187 +5.23496 6.34905 +6.9953 7.65745 +4.81803 4.89553 +4.69301 5.36777 +-0.208926 2.6111 +7.97334 9.83269 +-0.396673 0.779988 +5.91367 6.47682 +6.27249 6.83533 +5.58931 6.89679 +2.03394 2.67025 +-0.197752 0.383167 +4.69751 7.695 +4.5989 6.07875 +3.7285 4.27396 +7.9807 8.27693 +-0.00248985 1.30934 +2.68016 3.916 +0.881558 1.14567 +4.77066 5.05302 +0.552268 0.919467 +2.46862 2.65199 +1.4009 2.51701 +-0.171185 1.28252 +9.27842 9.90243 +3.51778 3.57728 +6.10071 6.92163 +9.05387 10.0894 +5.52995 5.89082 +8.40216 9.0272 +9.02911 10.1602 +4.85818 7.38829 +1.6762 2.32334 +6.45416 8.62337 +5.44592 6.0245 +3.45876 3.94274 +9.07144 9.16725 +6.51885 7.6363 +7.92593 9.01986 +0.270702 1.57395 +6.11245 6.70173 +1.37658 2.19068 +2.42668 3.43827 +7.98226 8.43306 +3.72269 4.74654 +8.16252 8.58873 +8.81456 9.5363 +-0.338386 0.864811 +1.90693 2.25796 +3.5305 4.17475 +6.07997 7.67393 +0.53347 1.68815 +7.31182 8.44458 +7.77462 8.33613 +3.79975 4.15552 +9.08822 9.9771 +-0.101698 1.05442 +8.44869 9.95724 +-0.0318759 0.532673 +8.09238 9.51356 +5.51514 6.60799 +8.66528 10.3297 +8.25556 9.97893 +-0.220428 0.247563 +0.00453913 0.540444 +1.53599 1.61735 +3.77213 5.06896 +2.65332 2.75864 +6.05811 6.43112 +0.302534 0.803651 +0.393766 1.11611 +9.31035 9.62387 +0.568281 1.7765 +-0.721118 1.27387 +1.83573 2.62578 +1.39953 1.91158 +6.51883 8.52813 +2.60154 2.95054 +6.58322 9.37818 +5.61178 5.67661 +9.56511 10.2767 +9.09174 10.0697 +2.55846 3.39943 +8.38146 9.06138 +7.97019 8.18074 +6.1426 6.42787 +1.15876 1.55463 +2.93483 2.96376 +7.23883 7.29158 +9.64606 10.0674 +4.89825 6.70366 +7.35635 7.96328 +2.2702 2.36797 +-0.0464389 0.395244 +1.14883 2.10411 +4.7309 5.10593 +6.07946 7.37741 +5.50202 6.28822 +3.66574 3.96271 +1.9944 2.3862 +7.58159 7.59275 +1.98712 3.30587 +2.10317 2.89161 +9.66889 9.97287 +1.57327 2.15421 +8.14125 8.30983 +3.77185 4.12658 +8.51624 9.51485 +9.25211 9.722 +2.06312 3.0453 +9.34954 9.91254 +7.31475 8.89322 +7.85044 9.20242 +0.226243 1.28465 +0.0260868 0.575177 +9.40743 10.1655 +4.04324 5.05341 +1.02626 1.48332 +3.33074 3.72025 +9.2005 9.61387 +6.68317 7.14109 +6.82083 8.6312 +4.34816 4.50329 +-0.48874 0.975608 +4.26651 5.68526 +4.89731 5.57569 +2.68984 3.5661 +0.499714 1.01055 +9.01902 9.36142 +3.22067 4.59054 +0.65132 0.860512 +1.6791 2.36642 +8.28222 8.7579 +2.84349 3.24134 +5.64949 6.09512 +3.44026 4.43245 +2.60889 2.6248 +-0.00849234 0.984046 +7.5745 8.65675 +2.07464 2.6488 +2.59747 2.65772 +6.36828 7.42208 +3.83342 4.50127 +5.41167 5.7011 +6.53606 7.53796 +8.21975 9.56176 +1.90113 3.08684 +7.74402 7.82057 +4.26515 5.11327 +5.42743 5.59215 +8.69709 10.0912 +2.87019 3.94798 +9.27013 9.54627 +9.30568 10.2136 +9.02985 9.62917 +3.7589 4.59642 +6.59359 6.86939 +3.26574 4.83488 +5.14545 7.70086 +7.43163 8.05103 +5.72972 5.74457 +0.490113 1.31151 +7.018 7.42627 +6.22976 6.27589 +9.07732 9.30419 +4.3917 4.42663 +8.50298 10.3728 +6.18671 7.53619 +3.51053 4.097 +2.17172 3.56595 +6.08046 6.23691 +9.07361 10.9129 +3.95757 4.11333 +-0.136516 0.78995 +1.34923 3.47002 +0.0562579 0.686502 +9.10943 10.2731 +5.80174 6.16971 +7.86011 7.87649 +5.34384 5.51645 +6.32167 6.76387 +7.70566 8.28038 +-0.319903 0.867682 +-0.372564 0.570014 +8.83696 10.8439 +7.78947 9.38211 +9.25815 10.1092 +5.59721 5.67148 +0.234719 2.42489 +1.06314 2.87416 +1.75391 2.69799 +5.4536 6.66068 +1.35696 1.87102 +2.17418 3.1459 +7.61817 7.98287 +2.92194 3.18393 +7.68243 7.83261 +9.33163 10.5531 +1.14227 2.50228 +5.47911 5.70857 +9.88123 10.0758 +8.81249 8.83145 +6.02747 6.43183 +4.81158 5.79178 +6.65666 7.5047 +4.89085 5.56569 +0.935564 1.71547 +-0.0452879 1.16222 +4.03524 4.6206 +5.88518 6.02658 +2.06227 2.9581 +0.207246 2.2404 +2.81757 3.70318 +0.704257 1.98403 +2.38486 3.30039 +3.57073 4.78358 +1.53721 3.00546 +8.37852 8.39527 +1.54619 1.59789 +1.00447 1.40778 +5.31977 6.43861 +3.82175 3.83209 +3.37738 4.44002 +5.46644 5.97254 +3.88191 5.00688 +4.88046 5.39031 +4.15092 4.93679 +1.75182 2.07399 +1.16434 1.76541 +3.37032 4.29676 +3.1685 3.98533 +1.28787 1.59775 +5.86338 6.17993 +3.8645 4.25757 +1.83947 2.48092 +0.184795 0.586724 +3.13752 3.76447 +2.14264 3.03248 +5.78182 5.9029 +2.47969 3.8088 +2.59206 3.08362 +-0.354871 1.03627 +7.94041 8.05947 +9.48014 9.93817 +0.992727 1.48877 +6.1525 7.51387 +5.00071 6.15665 +7.42074 8.27606 +9.6539 9.83042 +1.08984 1.46387 +5.46282 6.95907 +4.74506 5.13968 +0.357565 1.91464 +9.07652 9.65474 +0.201095 0.646211 +7.04306 7.69131 +1.17728 1.2237 +5.92183 6.29165 +-0.41356 0.491524 +8.38339 10.4509 +8.08648 8.11344 +3.32474 3.39522 +5.762 5.83732 +2.26778 2.55548 +4.86127 5.92868 +3.75949 5.16608 +4.83431 5.88632 +2.65122 3.31344 +9.30295 9.38948 +6.03391 6.32749 +5.12035 5.59414 +5.68785 5.979 +7.89553 9.15202 +2.54445 2.74715 +2.36337 2.49709 +4.71661 6.12198 +3.72447 4.68735 +1.0541 1.53187 +3.45178 4.80929 +7.90773 8.26212 +8.1816 9.18627 +0.322569 0.871041 +7.24823 7.32699 +1.7003 2.78087 +9.70927 10.2515 +3.75922 4.01081 +1.06949 1.40253 +1.21774 1.4734 +6.02123 6.32973 +2.76396 3.09484 +2.80358 3.00026 +5.25666 6.31369 +4.71714 5.30669 +4.37906 4.50557 +7.40824 7.44969 +7.89081 9.18263 +8.8136 10.3074 +9.1757 9.37261 +7.1938 8.51137 +0.580081 2.32678 +2.02497 2.95434 +6.01446 6.78851 +8.54365 9.21454 +3.03567 3.27089 +0.650657 1.5716 +5.05518 6.36521 +1.64301 2.76399 +4.15989 4.34183 +3.72791 3.98156 +3.91372 4.06182 +3.04507 3.88871 +3.82596 4.25694 +3.36492 5.00402 +6.50019 8.17974 +3.54621 3.81009 +0.546921 2.09811 +5.1789 5.9826 +4.98983 6.31221 +2.47557 2.63878 +4.64568 4.81101 +9.1462 9.21888 +7.37417 7.5276 +2.21604 2.50113 +8.29804 10.2722 +5.1282 6.06353 +8.58281 10.1589 +6.47084 7.04085 +6.27806 6.72674 +7.11554 7.85687 +6.01085 6.02773 +5.46694 7.52872 +9.51078 9.85387 +3.36627 4.06552 +2.96126 5.12635 +3.09314 3.40691 +5.05456 6.62548 +7.56469 8.97053 +1.33727 2.87482 +5.6572 6.28169 +0.120924 0.296475 +7.09139 7.41322 +2.10076 3.28507 +8.74998 10.1094 +7.45072 9.50796 +7.75294 8.59218 +0.740374 2.44897 +7.63001 8.91562 +4.30743 4.81716 +6.40813 7.29159 +6.30213 7.35987 +6.44392 7.32584 +8.41155 9.4466 +-0.377892 0.689618 +5.88857 6.70983 +6.67779 7.70668 +4.831 5.17464 +2.62342 3.82764 +8.57453 9.29283 +7.32648 7.96725 +9.32937 9.9726 +7.30774 7.65754 +3.97456 4.59876 +5.73092 7.20962 +1.958 2.10551 +3.2115 3.81482 +5.76497 7.42425 +2.77219 3.29692 +4.95297 5.14843 +5.96367 6.3619 +2.49872 4.61736 +8.21817 8.23425 +2.13615 2.61877 +7.84121 9.55011 +8.63416 10.2773 +5.61084 6.32053 +4.86002 5.79944 +9.07858 10.688 +5.95829 6.42504 +3.3289 4.17849 +3.27989 4.91625 +8.28046 9.23021 +2.18691 2.6072 +1.3962 1.75013 +2.13627 3.73117 +2.11128 2.57303 +7.22357 7.50136 +7.43862 8.03136 +2.80578 3.02886 +0.176906 0.761142 +5.99314 6.6075 +1.90398 3.3925 +5.48264 6.73579 +7.18447 7.49811 +3.24434 5.05219 +5.53263 6.04178 +1.71172 2.45682 +0.297266 0.481632 +2.62582 3.36142 +0.243865 1.49321 +8.86142 10.169 +3.93193 4.39404 +4.98182 5.15675 +7.99209 9.73159 +8.18033 9.45596 +4.25235 4.41546 +1.59603 2.15581 +6.47724 8.69649 +5.24138 7.93131 +3.4267 3.49003 +0.0439912 0.316407 +1.99983 3.87206 +-0.103124 0.568771 +4.62451 4.80117 +2.89065 4.16315 +5.82817 7.43232 +6.89255 7.82189 +5.71037 6.81241 +4.34551 5.24905 +7.33931 7.3741 +-0.855192 1.27129 +8.94842 9.10813 +9.19877 9.68412 +6.42658 7.77968 +-0.0669636 0.430107 +6.40366 7.40701 +8.91175 9.24059 +3.21388 4.21676 +3.38557 3.79509 +4.24411 4.97032 +7.259 7.34896 +2.55995 3.18361 +8.77438 10.5503 +8.18685 9.79378 +2.78397 4.4563 +8.6891 9.38337 +6.51749 7.59374 +2.52346 3.46101 +8.40526 9.35647 +5.26942 6.33572 +4.15094 5.00668 +0.471666 1.53842 +7.63441 7.96745 +2.39974 3.7814 +2.71989 3.02994 +8.12085 8.33493 +6.19474 6.84381 +6.6133 8.31417 +5.1758 6.94983 +8.66241 8.79095 +6.10878 8.22083 +8.81883 9.08031 +8.28969 8.45176 +7.19851 8.37836 +1.5722 1.6836 +4.57814 6.95063 +7.66128 8.10631 +0.742483 3.08515 +1.15026 1.98074 +3.90133 4.12003 +7.61145 7.73433 +8.32187 10.2933 +0.407205 1.08089 +1.26545 2.60796 +2.70646 3.92753 +-0.196551 1.83536 +-0.413063 1.23838 +0.264484 0.556192 +6.30158 6.96097 +-0.66246 0.809062 +9.34243 10.3521 +8.70093 8.79679 +0.745195 1.92911 +9.12892 9.68193 +7.98533 8.30538 +6.23671 7.04296 +6.5603 6.95483 +7.08133 7.10563 +2.15769 2.41541 +8.24752 8.73978 +5.27693 5.61904 +0.317419 1.48404 +3.48029 5.46979 +7.38901 8.56554 +1.06587 1.62384 +5.54926 6.04924 +4.46577 6.48749 +5.349 6.15584 +8.04249 8.17359 +3.37651 3.56179 +3.64706 5.57403 +4.49844 5.26404 +3.93361 4.92128 +5.82184 6.29881 +0.984273 1.70318 +1.12773 1.80726 +3.11675 3.17451 +5.07913 5.46291 +0.615591 1.81465 +1.08948 2.77847 +7.97412 8.07365 +5.05207 5.82497 +0.0407709 0.558817 +6.11142 6.48205 +3.4461 3.57315 +8.6547 8.80553 +8.18965 9.64194 +5.55564 7.9703 +4.01776 4.16989 +2.4668 2.82018 +0.911925 2.56662 +4.68814 5.03614 +7.4899 8.49036 +8.40912 9.14001 +2.32725 3.16377 +0.0723972 1.42049 +6.6441 6.6953 +3.65586 4.38222 +6.35844 6.57833 +4.44435 5.73077 +1.81779 2.57257 +4.17692 4.59722 +8.54682 9.38058 +1.61135 1.81629 +3.91926 5.00536 +9.78302 9.85143 +1.25632 3.10345 +5.53191 6.08174 +-0.231868 0.676811 +1.03054 2.58105 +0.0402172 0.690608 +0.974571 1.25234 +5.22227 5.92302 +8.05843 10.1439 +8.48938 8.50755 +0.0965782 1.24008 +6.53821 7.47765 +0.189991 0.475204 +8.48963 8.54995 +9.68363 10.0534 +1.49381 2.71302 +6.75552 7.41283 +7.91075 9.15302 +0.520922 1.40928 +1.17957 2.11221 +4.00122 4.40686 +7.32467 7.9273 +6.39126 7.90248 +6.50534 8.19308 +7.19888 7.22234 +-0.136797 0.731889 +0.870318 1.25614 +2.07126 2.28297 +6.10995 7.60408 +3.02174 3.90102 +-0.657541 1.57517 +0.993121 2.66255 +7.27232 7.50832 +2.16079 3.75428 +9.27397 9.75098 +8.36865 8.5545 +4.56641 4.97607 +3.60746 4.34616 +6.31304 7.70611 +2.91442 3.7602 +4.85814 6.70407 +4.45876 5.67661 +8.06749 8.82229 +2.02826 3.59873 +1.92922 2.50088 +2.63867 3.48117 +2.17665 2.54826 +8.62674 9.10675 +0.96648 1.47671 +8.86336 9.53978 +5.52747 5.80829 +0.77099 3.06106 +2.2307 2.53877 +6.29165 6.63018 +4.44717 5.04651 +3.80894 4.63054 +7.47519 7.87072 +0.933668 1.9949 +-0.712945 1.21558 +7.30206 8.38376 +5.80281 7.00022 +7.96578 8.6558 +0.24063 0.706466 +4.41893 4.58472 +4.0132 4.92768 +5.29626 6.09397 +3.43602 4.00728 +0.780945 1.66499 +8.83861 9.15168 +9.06411 9.75544 +3.45618 3.62529 +9.51413 10.0148 +0.842106 1.75695 +1.06485 1.44192 +6.89987 8.05314 +7.89154 8.73313 +8.71675 9.79526 +2.40574 2.58062 +8.55952 8.78132 +5.61716 6.06282 +3.71059 3.77929 +2.50187 2.99137 +6.92852 7.23184 +7.00442 7.93869 +8.82232 8.8756 +4.10389 4.53702 +7.6907 7.77577 +9.31554 10.2674 +8.51082 8.70339 +4.83332 6.70311 +4.6904 5.42892 +4.71407 5.67695 +4.12047 4.44089 +7.51845 8.26858 +1.31781 1.9397 +6.26854 8.02093 +6.92072 7.77774 +0.438156 2.18909 +0.898035 1.72074 +3.81121 3.8643 +1.01676 1.34308 +9.28445 9.42801 +2.43133 4.43516 +4.33664 5.9904 +2.19178 2.37244 +1.5457 1.79785 +2.23781 2.6481 +6.8365 6.87073 +0.82568 2.74775 +9.59404 9.89262 +8.48394 9.15107 +6.16085 6.42224 +3.5667 5.97689 +4.16931 7.41638 +6.95636 7.0982 +6.87987 7.09233 +3.12619 3.14821 +7.76636 7.98459 +4.60371 5.59136 +3.92189 4.88302 +6.90694 8.19858 +3.85132 5.19015 +8.05045 8.32483 +4.8338 6.05032 +1.93576 3.18873 +2.4182 3.55039 +5.56905 5.8172 +4.18436 6.01283 +3.04944 3.85936 +7.83585 8.95233 +1.76281 3.0558 +3.44143 3.6317 +8.69887 9.40371 +5.67867 5.73236 +0.859809 1.76578 +6.92284 7.13601 +8.27495 9.13414 +5.44385 6.42599 +-0.941603 1.8215 +7.88161 8.79447 +0.965018 1.17732 +5.56442 5.79546 +8.79032 10.9909 +5.28632 5.79175 +4.80998 6.07002 +8.4021 9.81107 +3.16415 5.08682 +-0.212163 1.2052 +5.683 5.83625 +0.738527 1.31842 +2.03835 2.52756 +7.4543 8.91243 +-0.568869 1.44659 +3.58855 4.42371 +6.33058 7.18779 +-0.645579 1.94313 +2.18149 2.24157 +3.80281 4.67323 +5.14628 5.97452 +2.55239 3.45685 +3.56586 6.23355 +6.74752 7.19693 +8.99006 10.5533 +0.259833 0.99882 +8.9005 9.75401 +7.28058 8.41075 +4.57803 5.70104 +9.82823 9.90251 +6.94375 7.42033 +7.8878 8.81951 +5.01137 5.52693 +2.25503 2.28817 +6.65772 7.11107 +0.647512 2.04416 +4.34796 4.5706 +4.5395 4.91529 +2.65423 3.49531 +7.97384 8.78377 +5.53873 5.76806 +9.78641 10.1351 +6.01664 6.44407 +3.47406 3.75187 +4.59421 4.81804 +1.20641 2.00488 +2.48904 2.80768 +5.77372 6.10692 +2.49363 3.24499 +1.8483 2.62965 +2.28556 3.22209 +3.17819 4.51426 +3.5548 4.23276 +3.25239 3.57895 +0.613317 2.44862 +3.82234 4.78976 +4.72809 6.46528 +9.54107 10.4426 +9.20052 10.1921 +8.24152 9.89817 +5.17594 6.19462 +7.83364 8.17082 +5.67992 6.36464 +8.9943 10.1426 +2.20598 3.0081 +3.38199 5.16464 +0.599928 1.35804 +0.841211 1.60761 +5.29338 5.89919 +1.11061 2.29219 +3.41512 3.95907 +7.9375 10.0203 +8.73852 9.66917 +9.95092 10.0162 +4.02544 4.30219 +4.1461 5.37827 +1.08089 1.59196 +7.87513 8.21121 +7.85673 8.0973 +0.96237 1.56519 +2.45532 2.61678 +6.1829 6.23637 +0.135135 0.613518 +3.18324 3.78587 +5.64796 7.20194 +0.861169 1.71661 +9.66005 10.1169 +0.880774 1.12452 +1.29389 1.57658 +5.60299 5.89759 +5.53642 7.07306 +0.540268 1.31836 +6.60244 7.98105 +4.21877 4.57159 +3.15367 4.75356 +7.81055 8.40378 +8.00942 8.10861 +5.78071 6.35646 +3.15993 4.99293 +2.36526 2.78444 +8.1361 8.76071 +1.40066 2.96474 +-0.17906 1.05877 +5.94933 6.6808 +3.43187 4.05553 +3.02912 4.68942 +2.1506 2.29413 +2.3516 2.38305 +2.87496 3.0851 +6.71294 8.99858 +3.76177 5.52545 +1.58417 2.57063 +2.74646 4.27445 +5.48407 6.60696 +-0.133321 0.716559 +3.53886 3.58196 +2.28729 2.40198 +-0.209646 1.21263 +6.62795 7.32318 +0.714781 0.880466 +2.96831 4.05932 +6.00935 6.38896 +5.39798 6.11983 +8.47679 9.70468 +1.4339 1.74845 +2.35223 4.75732 +4.31357 4.9642 +5.26493 7.70538 +7.91888 8.94851 +6.51439 7.69469 +7.69015 7.85411 +3.94274 5.15373 +6.25852 7.32402 +2.73567 3.43236 +7.09564 8.42242 +2.55932 4.29066 +1.79489 1.84559 +8.86427 9.35669 +7.23854 8.27062 +7.8488 7.98307 +0.710888 2.22424 +0.0413624 1.10578 +1.54302 1.97696 +1.64924 3.01081 +8.15535 10.2397 +0.305662 1.63835 +8.20375 9.03123 +1.66617 2.08748 +4.01691 4.88505 +3.32856 4.10709 +5.15342 5.44616 +5.80751 7.38872 +0.485341 1.07648 +3.98267 4.20211 +6.96867 9.37655 +9.48055 9.85181 +8.39277 9.50424 +2.47589 2.79873 +3.48046 5.37417 +4.98279 6.01686 +1.29845 2.31199 +-0.204348 2.50289 +0.23488 1.00378 +6.26899 7.14823 +4.62903 5.49672 +0.199052 0.822066 +6.97297 7.69083 +4.23783 4.65198 +0.530497 0.839143 +6.61355 8.22831 +-0.0103941 2.16307 +0.148601 1.20044 +0.314438 0.67632 +3.43415 4.06208 +1.95498 3.25728 +4.23094 4.84942 +9.5493 10.0057 +2.64964 3.52073 +8.21388 9.1622 +-0.112496 0.47622 +7.97551 8.19546 +2.16155 2.6289 +0.38442 1.46032 +3.85675 3.91557 +1.00605 1.42016 +2.4853 3.53086 +-0.0765625 0.504366 +8.11302 8.46334 +7.18135 7.80218 +6.46466 8.12336 +3.75968 5.33954 +9.08789 9.73677 +6.47459 7.49454 +0.90148 1.47681 +3.44733 3.54163 +7.32968 7.909 +1.30055 2.75407 +8.78735 8.92461 +8.21764 8.59414 +0.888162 1.08404 +5.65195 6.26421 +6.23881 7.33284 +8.69731 9.88088 +3.55695 5.36909 +6.49248 7.02755 +2.31407 3.01952 +5.7803 6.1286 +6.30415 8.01577 +7.73864 8.27496 +0.741078 1.69184 +4.94671 5.68254 +3.28226 5.02894 +1.97446 2.60413 +3.26555 5.54754 +2.56179 3.41897 +3.20058 3.32486 +6.96915 7.69055 +6.89302 7.39856 +1.9659 2.61404 +1.31107 1.36867 +6.23573 6.33677 +0.17616 0.517772 +8.55548 8.79155 +9.61632 10.2651 +2.20331 2.34017 +6.93195 7.42939 +1.25398 2.23119 +1.06577 1.41048 +5.99156 7.09818 +3.34821 4.1271 +4.61618 6.90956 +2.30853 3.52875 +0.0518063 0.113732 +5.38513 6.09734 +1.73468 2.64838 +7.24679 7.63999 +4.18175 5.06728 +7.09602 7.13414 +9.06191 9.11605 +6.2309 7.67675 +3.96576 4.63237 +-0.552645 1.37948 +5.76964 6.89903 +4.9272 7.5832 +4.59003 6.49719 +4.12281 6.9664 +5.12256 5.58387 +1.78859 2.76954 +4.36808 5.05712 +8.41165 9.54483 +8.11513 8.43405 +8.42016 9.52715 +8.50598 9.34564 +1.80028 1.83558 +8.08502 8.43726 +6.96667 8.12021 +5.4726 6.26772 +7.1141 9.29989 +7.83324 8.1744 +8.74368 9.16491 +2.5515 3.01706 +5.92375 6.44495 +7.45628 8.41582 +9.04829 9.71503 +4.58856 4.75356 +7.26064 7.32462 +1.81695 2.40529 +6.88067 7.95052 +1.91408 2.02663 +1.32005 1.45025 +7.47733 8.42004 +4.99403 5.85297 +0.95744 2.28875 +-0.089503 0.536888 +1.09978 2.48865 +1.9959 3.098 +0.376116 0.448329 +3.98908 6.49684 +9.10178 9.51012 +5.41394 7.31529 +6.60708 7.59071 +4.38466 5.76203 +1.84355 2.60304 +0.658705 0.933522 +6.98725 7.05509 +5.60064 6.98804 +1.0603 1.1521 +4.06192 4.46156 +0.351018 1.00807 +9.17113 10.2192 +6.71641 6.74659 +8.85392 10.5272 +4.50816 5.22908 +1.13934 2.43196 +3.3746 3.57576 +7.62137 9.3234 +6.93482 7.16058 +5.66506 6.44324 +5.13364 5.86068 +1.97257 2.03803 +2.69746 2.73067 +0.989591 1.38342 +4.18819 4.69676 +4.31608 5.12265 +2.79556 4.87763 +3.55387 5.34421 +-0.112466 0.585639 +2.43156 2.70221 +5.88314 7.08322 +-0.450332 1.29858 +1.22202 2.46588 +6.74433 7.32925 +5.14596 5.37435 +6.76754 7.41799 +1.48762 2.45958 +4.57241 5.3382 +4.17465 5.02296 +6.48856 7.5576 +0.383566 0.823394 +8.50875 9.08734 +1.79393 2.24548 +5.06812 6.49508 +3.55364 3.61502 +5.58973 6.58885 +0.631097 2.10041 +0.323995 0.941782 +8.8798 10.1036 +6.37114 6.88202 +6.9393 7.83288 +3.09503 3.41759 +3.65269 3.70305 +5.61676 5.8924 +1.90199 2.38446 +4.23683 5.35609 +9.18649 9.88878 +8.28736 8.37734 +3.04805 5.03593 +8.02926 8.38975 +3.58161 4.01331 +3.20923 3.48207 +6.85118 8.78281 +5.06518 7.49843 +1.57456 3.05552 +3.0154 4.23782 +2.83557 3.24854 +1.29358 1.89328 +1.42911 2.72661 +3.17067 3.96651 +0.353554 1.48472 +3.46227 4.25611 +6.17639 7.24657 +5.60878 7.13562 +4.11129 5.52476 +9.17596 9.4123 +3.08339 3.65766 +4.083 4.63013 +0.628465 1.92141 +7.81989 8.39386 +3.35589 3.87531 +5.35974 5.41743 +4.48321 4.64376 +0.888177 1.37343 +8.49061 8.50063 +5.09078 6.01801 +9.65314 9.99342 +1.60502 3.0115 +1.37928 2.77642 +6.60322 8.94046 +6.74573 7.45157 +-0.291156 0.325249 +6.1518 6.66827 +5.38199 6.46959 +3.50128 5.22692 +1.31774 1.70159 +0.550546 1.48845 +7.51187 7.85496 +4.2014 5.23193 +3.88255 3.97209 +2.60555 2.84958 +5.15706 6.00036 +2.99284 3.27867 +0.395077 0.768383 +3.30863 3.60594 +0.0325231 0.379208 +6.55183 7.33346 +1.44554 2.95846 +0.245421 1.29751 +3.98808 5.41226 +5.90242 6.266 +4.11097 5.02597 +0.134753 0.929866 +0.609287 1.16311 +0.231832 1.06825 +6.22093 7.05584 +9.18429 9.80637 +0.544139 1.30185 +1.69143 2.90306 +6.75109 8.67893 +5.49641 6.76104 +8.91712 10.0271 +7.09126 8.12404 +8.82958 10.2847 +0.569249 0.69421 +3.59288 5.8053 +9.25068 9.4226 +8.51607 9.26259 +5.00906 5.17068 +1.83467 2.99102 +7.32006 7.64842 +0.405532 0.603773 +6.41882 6.60495 +0.721592 1.44375 +2.78393 4.46732 +7.14806 7.16117 +5.12868 5.27918 +2.74138 3.1737 +2.95394 4.26547 +7.82827 8.21028 +9.06982 10.7279 +0.108376 0.290131 +6.34574 6.97141 +4.39022 5.50801 +7.98339 8.79674 +3.80026 4.71831 +5.43594 5.66916 +1.6743 2.61476 +4.29763 5.47402 +7.95714 8.69311 +3.4152 3.7387 +8.01715 8.8941 +6.53723 7.44437 +-0.0222108 1.04503 +4.96242 6.01648 +1.70885 1.75511 +7.62434 8.53526 +6.82863 7.39782 +8.19967 9.22283 +1.99719 2.11323 +-0.0124079 0.240201 +4.48577 4.87935 +2.586 4.41666 +6.37848 6.67092 +4.39606 5.67983 +9.39761 10.1095 +7.10866 7.15796 +3.91993 4.52129 +5.10552 5.36997 +7.08963 8.32694 +9.12669 9.58509 +9.26894 10.1974 +0.737413 1.26523 +2.77833 5.28516 +3.19039 4.36857 +4.32954 5.45614 +4.98069 5.49295 +7.54745 8.76142 +5.70425 7.05749 +-0.250513 0.36578 +4.76997 5.89607 +2.03075 2.32111 +6.54141 6.55896 +4.19799 4.45091 +8.7796 9.11915 +5.75014 6.05646 +5.36885 5.42775 +-0.00433056 0.865304 +3.65169 5.4751 +0.23625 0.872926 +0.0386337 0.792214 +4.40245 4.56789 +6.44567 7.42162 +5.51394 5.98005 +3.50146 3.83147 +8.47573 9.85647 +7.91378 8.47044 +9.44297 9.90241 +5.962 6.68782 +4.49034 4.86927 +2.17774 3.47061 +8.80614 9.26595 +7.92096 8.13838 +7.80209 7.93317 +7.78915 8.29735 +6.98111 7.162 +0.491059 1.14901 +8.97965 9.38792 +3.30207 3.53207 +3.17127 4.43581 +3.97564 4.43746 +6.79008 7.17877 +5.61669 7.51263 +4.0853 5.38748 +4.42181 6.32041 +8.08599 8.9095 +2.46938 2.55499 +1.20692 2.06351 +1.98995 2.35216 +8.17116 9.17158 +7.53414 8.37086 +3.7744 4.46197 +3.29464 4.38 +7.33246 7.81959 +4.89572 6.2831 +-0.152496 1.56427 +0.636242 0.938556 +5.62066 6.06096 +9.42994 10.473 +8.95446 9.46311 +0.277891 2.80311 +6.92968 7.29845 +2.75677 3.02975 +2.2859 2.51308 +2.96683 3.03857 +6.44584 6.49518 +8.33607 8.60407 +7.20303 7.7616 +7.07205 7.46849 +2.35677 2.7904 +5.86404 6.12906 +2.42371 4.62735 +3.27237 4.11016 +0.0668578 0.644021 +6.77371 7.45187 +3.66596 5.21874 +0.718034 0.755944 +6.06162 7.05 +6.91473 7.09753 +5.0749 6.08914 +0.759874 1.11978 +8.54591 9.64997 +3.97266 4.70679 +1.51133 3.17164 +7.21772 7.69877 +8.00719 8.37052 +0.284003 0.38001 +4.08842 4.16227 +5.04461 5.79973 +4.60604 5.31979 +2.2461 2.28157 +6.25631 7.69766 +9.12404 9.67586 +7.73134 8.98923 +1.0513 1.46408 +9.17225 9.42567 +3.66795 4.29168 +8.84403 9.28497 +9.93613 9.94729 +3.16615 5.09374 +-0.149675 1.43397 +2.30855 2.48392 +0.843172 0.951801 +8.32945 8.8506 +8.97012 9.94697 +2.8559 2.92359 +-0.321715 0.89173 +7.48565 7.71775 +1.44301 1.47795 +6.6649 6.76187 +9.10721 9.93599 +1.82207 3.03935 +3.61893 4.5306 +2.53746 3.81243 +0.424528 1.29026 +9.51874 9.68841 +7.94954 8.14396 +7.49282 7.52655 +3.04604 3.69656 +9.45461 9.47212 +7.69209 8.16412 +0.607135 1.16564 +0.150291 0.450632 +3.28914 4.01085 +5.45597 6.02921 +8.16157 8.36605 +9.76573 10.2325 +0.151994 1.07074 +1.3748 1.68548 +2.29854 2.63593 +7.92162 8.68895 +1.28795 1.61949 +7.85469 8.26683 +4.32268 6.33174 +6.13964 6.3596 +1.25714 1.88002 +2.05006 2.28294 +8.31864 8.34151 +9.0613 10.0715 +-0.041568 0.25139 +6.79984 6.81686 +5.10674 5.70583 +5.92937 7.01652 +7.57649 8.05834 +0.937157 2.25362 +7.48567 7.59746 +2.33403 2.88942 +7.3805 7.73421 +5.586 5.75327 +0.828854 2.12988 +8.22741 8.59954 +9.69214 10.1207 +6.55359 7.08114 +1.85342 2.634 +6.08756 7.28893 +6.34993 6.93474 +8.93548 10.1463 +5.49445 5.8338 +1.47951 2.14646 +2.62089 2.75888 +2.35352 3.10539 +4.98774 5.28931 +4.92239 5.40697 +7.52674 8.78948 +4.52451 4.83819 +5.45854 5.75838 +5.51553 6.3901 +4.82905 6.44407 +6.20655 6.4483 +5.68116 7.06109 +7.97301 9.15827 +8.8854 9.91623 +9.60198 10.2449 +1.93322 2.67684 +0.441852 1.87646 +5.19981 5.71385 +2.54799 2.5809 +4.34591 5.02655 +7.54678 8.75202 +6.1496 7.19033 +1.13658 1.30756 +1.38724 2.08252 +2.13624 2.30419 +8.49196 9.41369 +-0.21387 0.685093 +2.47875 4.19982 +3.69093 4.00543 +5.70643 6.50331 +7.07443 8.83588 +6.85756 7.68937 +1.69241 1.83242 +0.140565 0.502156 +2.15007 3.23784 +4.97403 5.69757 +5.08315 6.25554 +3.45026 4.01942 +3.37482 4.73009 +7.4154 8.34013 +6.95399 7.59768 +8.07995 9.86199 +8.43993 8.88645 +7.66844 8.12742 +-0.0200687 0.435846 +4.47984 5.9416 +7.66804 10.0801 +4.14578 5.98717 +0.256533 0.89254 +6.43216 7.4474 +3.60295 4.79419 +3.90129 4.29812 +5.30606 5.58674 +9.11552 9.79229 +5.60702 5.85299 +2.39514 2.64865 +4.51164 4.60227 +6.31154 6.77441 +3.12239 3.13505 +7.50962 7.89478 +3.90928 4.88831 +9.64625 10.0629 +5.9465 6.02877 +2.08554 2.10477 +0.087547 0.34748 +2.34295 2.53703 +6.846 7.3043 +1.37869 2.11446 +4.03371 4.26278 +5.38623 6.40917 +4.75848 6.25417 +6.03478 6.15991 +-0.585543 1.2091 +2.52824 3.57712 +3.95687 5.40914 +4.42955 4.71909 +2.9328 3.98848 +5.40471 6.97056 +7.64789 9.30279 +6.19595 7.07492 +8.27328 9.41596 +8.29855 9.13665 +2.54035 3.10488 +8.25038 8.87903 +5.66599 5.88701 +7.40067 8.71195 +6.63762 6.67694 +-0.0163105 1.72666 +4.77743 6.60356 +0.567991 1.14977 +5.96841 6.42987 +3.02266 4.58424 +6.72121 7.35492 +7.51477 8.65223 +8.55055 8.81014 +5.59759 5.82816 +0.218944 1.82542 +1.03197 2.36652 +7.84302 9.1594 +2.11542 4.7332 +6.37618 6.92981 +1.34963 1.59353 +0.516281 1.08859 +-0.0151152 0.0624718 +6.45603 7.23063 +4.76865 5.46588 +7.5893 8.42021 +1.04534 1.99034 +2.62638 3.04997 +5.00254 5.98512 +7.7588 9.44547 +6.82186 7.34321 +8.7629 9.82272 +-0.309554 0.54858 +4.19843 4.92981 +5.62327 6.80846 +6.40599 7.6073 +6.1547 6.53898 +3.93941 4.44985 +3.28342 3.72778 +7.17256 7.23035 +2.31269 3.05437 +7.99132 8.20926 +7.19338 8.08381 +7.29139 7.96441 +4.25818 4.4208 +0.802894 0.81938 +0.990115 1.04066 +0.443898 0.490936 +3.44459 3.95977 +9.07812 10.3145 +7.86709 8.26338 +-0.230114 0.390748 +7.50905 8.49199 +-0.715424 1.97535 +2.92248 3.12903 +5.44209 6.62431 +0.991914 1.99037 +5.92275 6.7724 +9.10818 9.2797 +4.46434 4.83462 +4.21122 5.48353 +1.8721 3.40764 +7.04713 7.60526 +3.76581 4.76317 +7.00667 7.36475 +6.87244 7.39431 +7.6349 8.46695 +-0.0728922 0.351194 +5.02925 5.6834 +1.45779 2.83702 +0.339175 1.46574 +6.40414 6.9165 +6.30401 6.91007 +5.6392 5.78172 +5.63288 6.44639 +7.45285 8.89031 +4.09741 4.57929 +8.76728 9.06448 +1.62324 1.84552 +5.72509 6.54553 +8.65273 10.3652 +7.3362 7.8953 +8.96224 10.3113 +0.217316 1.7827 +1.28523 2.90127 +8.78746 9.11602 +8.6075 9.9606 +-0.647788 0.779976 +4.9702 5.47602 +4.15553 4.57497 +1.08174 2.80993 +4.01011 4.8145 +6.79603 7.2317 +4.3711 4.43566 +9.65087 9.79922 +8.19407 9.21784 +3.04008 4.94094 +6.0883 7.23919 +6.88708 6.97172 +0.438073 2.00665 +8.53083 8.83004 +4.22258 4.65233 +6.72856 7.61085 +3.17591 3.18978 +5.07955 5.6938 +2.09043 2.55351 +3.28085 4.43556 +7.29225 8.03925 +7.78034 7.82608 +6.59677 7.67719 +5.56032 6.38139 +8.72663 8.82535 +2.96505 3.11983 +1.67192 2.11727 +7.85386 8.49025 +6.30965 6.72799 +8.53082 9.3801 +2.8976 3.39972 +8.90427 9.44661 +-0.0665785 0.410254 +4.58099 5.81135 +1.88015 2.21838 +3.38693 4.10149 +7.46378 7.68246 +8.80985 9.72212 +6.54877 7.25642 +7.18249 7.71509 +7.41978 8.64805 +1.00839 1.78626 +0.39421 0.526751 +7.13516 7.28317 +7.28011 7.80573 +1.90158 2.49032 +1.66181 4.17994 +8.81106 9.21133 +9.46151 10.5007 +0.52585 0.575082 +7.66495 8.64072 +7.72794 8.50991 +4.92409 6.23879 +2.28769 3.21774 +3.62671 4.40932 +5.77688 7.31314 +8.94253 10.0664 +0.416618 0.635111 +1.81377 2.41356 +7.91755 8.83363 +1.62715 1.82626 +8.22065 9.51656 +0.020228 0.724724 +8.81119 9.95764 +8.66509 9.61079 +5.28201 5.32152 +3.95724 4.22138 +7.09339 7.77685 +9.63428 10.1514 +3.69117 3.779 +3.82195 4.76757 +5.75824 6.62265 +3.69984 4.75163 +3.58259 4.8788 +8.32635 8.85873 +5.81959 7.32506 +8.11265 9.14304 +2.20118 3.32511 +7.79582 8.52691 +6.5891 7.13584 +0.385393 0.440656 +1.13414 1.9951 +1.76482 2.69977 +4.76194 5.82757 +6.33633 7.5348 +4.7663 5.65083 +1.98298 3.01285 +0.956973 2.38629 +5.60955 7.65827 +9.11064 9.14351 +2.99933 3.37975 +3.36304 4.57437 +3.89886 4.50733 +8.73838 9.3514 +9.11824 9.66042 +1.47961 2.93909 +0.615297 1.13217 +1.70646 2.32478 +4.35168 4.99362 +0.986601 1.18332 +4.01551 4.92342 +7.68944 9.86838 +4.47611 4.85316 +0.051839 0.86288 +3.59624 5.5628 +7.08729 8.90374 +9.53464 9.9196 +4.69871 5.74189 +8.43146 10.6889 +3.23774 3.77777 +9.35399 9.62741 +1.15259 2.69451 +6.6368 7.33773 +5.26395 6.09857 +6.87415 7.21717 +-0.925645 1.06118 +8.49641 8.67659 +2.31486 3.25354 +2.51057 2.58303 +0.921997 1.48762 +6.29777 6.74738 +4.03945 4.27305 +7.1668 7.3471 +8.44572 8.80343 +7.16937 7.84526 +8.89008 9.4332 +7.01815 7.66319 +-0.420804 0.982878 +1.59755 1.64672 +0.700814 0.72579 +6.3138 7.37379 +8.49276 9.93522 +-0.795656 0.819657 +0.772253 1.05926 +0.917593 1.3917 +3.30076 4.12274 +-0.0237176 0.260552 +6.82385 7.49119 +6.98638 7.52012 +8.24915 9.08397 +4.17486 4.25908 +3.08435 4.64404 +8.17114 9.91412 +8.95923 9.3751 +0.596707 1.89462 +0.982917 1.40236 +6.79552 7.36657 +8.2599 9.69551 +8.85126 10.4342 +7.98967 9.14514 +0.766355 1.63286 +7.76211 7.99247 +5.23163 5.89338 +4.4707 5.50457 +9.257 9.27862 +2.11049 2.59654 +1.65501 2.06238 +0.551768 2.10873 +0.0285582 0.194421 +3.66153 3.85615 +5.07097 5.55806 +5.29145 5.80735 +2.03499 3.0863 +0.73171 2.29494 +2.63023 3.6417 +6.17478 6.25997 +5.79646 6.46363 +9.10633 10.5516 +7.23415 7.84823 +6.49951 7.1506 +9.94647 10.0242 +7.91236 8.09097 +7.8127 7.97662 +3.34238 3.42907 +8.50796 9.8311 +8.75792 8.98028 +9.34125 10.4441 +2.84413 3.71602 +1.49884 2.35652 +7.52317 9.18955 +9.5587 10.3525 +4.85436 6.1181 +5.91369 6.12194 +6.88463 8.34471 +1.51952 2.99156 +4.29022 5.12674 +8.0229 8.41246 +2.44841 3.04779 +7.59975 7.91485 +2.74491 3.62575 +0.0169968 0.240919 +5.85351 6.29039 +4.99825 5.93439 +2.153 3.35304 +1.19032 1.41763 +6.13337 7.80615 +7.05013 7.89364 +8.38056 9.92 +6.35525 6.64521 +3.93342 5.15885 +2.87656 3.47116 +3.56176 4.41159 +6.72084 7.9171 +8.03801 9.12442 +1.03329 2.56255 +7.64542 8.61709 +2.85627 2.89437 +8.8303 9.79838 +1.08032 2.34573 +7.51366 8.39169 +9.09685 10.3677 +6.753 7.41904 +-0.217662 1.42059 +6.72492 7.97553 +7.99325 8.8976 +0.765372 1.10894 +4.37958 6.04671 +8.72027 9.58928 +6.00234 7.29277 +8.43912 9.25356 +2.98816 3.17389 +0.4292 0.552167 +1.69827 2.80318 +5.99904 7.09981 +4.68367 5.87791 +-0.203208 1.09587 +2.65367 3.28472 +3.87051 3.88111 +6.36178 7.18853 +-0.0815935 0.200848 +6.82255 7.18488 +4.99295 5.08405 +2.67155 3.08447 +5.82099 6.77145 +8.76434 9.01086 +5.94982 6.18665 +3.23369 3.71743 +0.934129 2.73456 +1.13233 1.24208 +8.21931 9.03906 +6.25425 6.69972 +0.971299 4.21205 +5.68426 6.45281 +2.85786 3.3955 +8.17715 8.88439 +2.72802 5.01235 +6.12811 6.53711 +5.22878 6.45864 +0.453655 0.922032 +0.466162 0.85262 +2.40916 2.64759 +5.63583 6.37476 +2.18434 3.14105 +0.912811 2.08432 +8.9464 10.1515 +6.77323 7.27133 +0.7167 1.60579 +5.89813 6.32997 +7.66593 8.4611 +6.54145 6.88337 +5.95421 6.21188 +1.10383 1.92226 +5.37168 5.65707 +1.51874 1.66339 +4.60748 5.00384 +8.97354 10.5394 +2.05022 3.20373 +8.17316 8.19283 +2.33792 2.72643 +8.81577 9.3704 +5.95738 6.59855 +5.69025 6.17335 +6.91889 7.88142 +2.17529 2.81528 +6.65046 7.19698 +7.10694 8.78046 +2.09613 2.47484 +1.92423 2.25333 +-0.0906039 0.861376 +6.61481 7.70609 +6.7448 6.84276 +3.43655 5.28405 +6.05404 6.48902 +3.24637 3.36149 +5.69528 5.77157 +5.12352 5.31024 +7.65858 8.80828 +3.69209 4.4851 +0.25765 1.29637 +3.1537 4.13191 +3.12328 3.83765 +2.99798 4.8748 +4.49566 4.67827 +3.50822 4.03987 +8.00334 8.34084 +8.61039 9.00704 +0.0332147 0.166124 +4.55193 5.36546 +4.20308 4.31589 +0.955466 1.20095 +-0.382972 1.47625 +0.803913 1.01916 +3.78333 4.0707 +6.58604 6.70173 +3.02066 3.82562 +1.16515 2.2816 +7.87242 8.24214 +4.057 4.60368 +2.84714 3.59726 +2.77804 3.69136 +-0.139996 1.36416 +4.50647 6.37579 +8.86647 10.1549 +9.24372 10.1442 +0.743107 1.84722 +6.18761 7.65841 +0.214887 0.443938 +8.8513 9.55063 +4.04856 5.79916 +6.69671 7.10025 +6.97477 7.79702 +4.82551 5.10538 +0.821772 2.85828 +9.3086 9.74805 +5.45623 6.66668 +7.64296 8.67451 +7.53052 8.31024 +7.45352 7.5063 +1.31412 1.4979 +7.81176 8.48083 +0.228964 1.73207 +5.52579 5.93103 +6.58544 8.48938 +2.75407 4.18746 +3.21396 3.96298 +1.13806 2.34106 +0.899331 2.87945 +5.69016 6.61624 +2.48172 2.58082 +0.676004 1.43405 +3.41766 3.9503 +0.104554 0.298373 +6.50673 8.21831 +6.00349 6.69385 +9.62453 10.3147 +4.09379 6.02911 +-1.12803 1.68823 +1.83324 3.43133 +8.30576 9.09288 +-0.363911 0.405218 +1.91686 3.34928 +6.98331 7.15885 +-0.31591 0.996789 +0.145813 0.35408 +5.32016 6.13679 +6.99664 7.48644 +-0.140875 0.821045 +9.0119 9.19742 +1.69616 1.72453 +4.38064 5.07542 +6.85898 7.55478 +3.9145 4.27935 +5.77592 6.16806 +1.45345 3.01301 +4.13024 5.59662 +8.14557 8.41669 +4.00075 4.829 +-0.283024 1.59436 +5.92468 7.17507 +6.84458 7.18356 +1.06987 1.42839 +8.618 8.66235 +0.432802 1.59512 +3.78058 4.36051 +1.6113 4.21135 +6.73475 7.01057 +6.74819 6.90498 +6.93146 8.54681 +9.02605 9.91613 +3.888 4.00526 +1.07958 2.27915 +4.78456 5.10764 +3.92952 4.89555 +9.09348 9.30304 +6.73107 7.21036 +7.42366 7.73225 +4.04079 4.72919 +1.21726 1.34683 +8.82903 9.73504 +0.577663 1.00786 +1.56822 2.08675 +4.84315 5.44994 +1.01008 1.16524 +5.99782 6.01535 +0.996739 1.75305 +4.76128 6.39012 +8.93563 9.51972 +-0.0698166 0.453543 +5.9084 6.95139 +0.535401 0.692258 +4.80729 5.48335 +3.42581 4.76147 +3.58715 4.43541 +7.50236 7.71227 +5.19742 5.87901 +1.79752 2.43097 +7.29762 7.57608 +5.65169 6.47762 +6.02249 7.93642 +0.840131 2.81176 +6.2646 6.96911 +7.46014 8.17136 +9.79049 9.94054 +4.61094 5.35819 +7.30902 7.41873 +1.21883 1.84621 +6.41743 6.57736 +1.53114 1.62859 +6.73237 7.47083 +6.05618 7.56831 +7.63374 8.16821 +5.20839 6.05382 +0.619043 1.44065 +2.38657 4.88786 +3.88289 5.18788 +4.42283 4.51106 +9.15575 9.22388 +3.18678 3.72243 +3.20638 3.65935 +4.2219 4.97961 +4.63725 6.90959 +2.57123 2.59101 +4.08581 4.37325 +6.53926 6.80412 +1.77475 3.89149 +9.22854 10.426 +2.67375 4.36551 +3.17194 4.0433 +1.10304 2.0348 +3.67233 4.04957 +3.23526 3.5012 +5.17684 6.47301 +4.4 4.67662 +4.15842 5.85903 +5.88496 6.61616 +7.26489 7.51279 +4.17402 6.6997 +-0.540216 0.54573 +4.36063 4.60442 +9.18146 9.96239 +0.977216 2.42032 +9.09143 9.61178 +5.06686 6.23076 +2.04772 2.92048 +1.4154 2.00707 +7.80442 9.54824 +4.55549 4.7148 +7.56964 8.80172 +1.35347 3.21648 +9.12751 10.0605 +1.81735 2.06061 +5.63798 8.0918 +6.79492 7.98002 +9.23053 10.1299 +1.74639 2.02724 +3.71825 4.09879 +2.4995 3.42493 +4.1255 5.66758 +4.75493 6.99687 +8.22481 8.72036 +6.13689 7.53026 +5.41315 5.66358 +4.21425 5.62743 +6.22936 6.44392 +2.02303 2.96414 +-0.0655462 0.130508 +6.1487 6.70994 +4.36674 6.24985 +7.51129 7.63176 +7.9729 8.98613 +3.92117 4.15596 +4.54398 5.43399 +6.34248 6.92305 +-0.550253 1.16167 +9.15142 9.53717 +8.99354 9.65952 +6.28988 7.90053 +3.36505 3.782 +8.80005 9.70553 +1.99947 2.18573 +1.15023 2.07069 +0.253723 1.32958 +2.0392 2.93977 +2.89024 3.00836 +8.16735 8.2049 +1.49508 2.95258 +6.19092 7.44552 +2.33328 3.06758 +6.44166 7.4649 +7.34749 7.79488 +7.5557 8.04141 +2.76812 5.13617 +7.97308 9.25668 +4.73539 5.22234 +7.53377 8.41651 +-0.355405 1.36499 +4.72111 4.73744 +-1.22753 1.84842 +5.5033 5.63808 +3.95421 4.19313 +6.24752 6.98229 +4.49694 5.07277 +3.70871 4.30093 +1.31984 1.50116 +7.16044 8.70868 +2.44587 3.34659 +6.08322 7.20376 +2.75012 2.82555 +0.0394442 0.863634 +3.90896 4.73696 +4.77494 5.04158 +8.41473 8.82932 +1.7049 2.71024 +9.01684 10.1044 +4.57959 5.01066 +3.2484 4.21875 +1.11596 2.88792 +3.53616 4.14001 +5.80672 5.82478 +5.85844 7.70293 +6.18239 6.30124 +2.22913 3.23412 +2.97521 3.08481 +2.2749 3.70611 +2.3457 3.86609 +2.71695 4.04473 +7.22863 7.40115 +1.80428 2.39815 +1.80781 2.33028 +2.78662 3.14936 +9.40717 9.94906 +6.54968 6.80773 +2.76862 3.24492 +1.96034 2.87404 +3.53295 3.54927 +5.36042 5.67073 +8.63339 8.93752 +0.932415 1.70402 +4.32923 4.55594 +9.3491 10.4969 +0.121416 1.15499 +-0.172998 1.36319 +2.02349 2.29887 +1.75352 2.35329 +0.502555 2.01665 +6.71754 6.80014 +3.35175 3.93337 +7.17133 7.9851 +8.51299 9.95771 +5.86103 6.36734 +1.44593 3.46008 +4.49699 4.60855 +2.29261 3.10053 +6.68713 8.19499 +5.43776 6.84387 +8.58591 9.02134 +5.24746 6.15595 +1.3847 2.5074 +6.62143 7.07775 +1.7101 2.077 +9.70898 10.2789 +6.67451 7.92058 +2.56858 3.60374 +1.61917 2.60482 +1.77902 2.16908 +4.76209 6.00461 +3.8894 3.98269 +7.0278 7.276 +5.4866 5.59417 +1.69306 2.92506 +2.45744 3.76592 +2.5689 2.80611 +5.98283 6.06154 +9.5267 9.9626 +9.55652 10.4128 +6.6111 6.64606 +3.38826 4.26111 +3.61887 3.73455 +4.14924 6.13796 +7.15863 7.28212 +5.78984 6.56662 +2.09304 2.2681 +4.39867 4.88557 +6.20907 6.81034 +4.63336 4.91476 +0.939805 2.43621 +1.56774 5.13599 +8.40908 9.82058 +2.06273 2.20306 +2.53524 5.01482 +2.9314 3.23661 +2.48535 3.47368 +0.366389 1.4699 +8.81131 9.01654 +2.05102 2.87972 +1.9699 2.22723 +6.18333 6.98224 +1.3425 2.4443 +0.767883 1.77423 +3.1538 3.43248 +0.891006 0.903458 +5.7136 5.8713 +0.437569 1.37539 +3.98533 5.01646 +8.65764 9.89518 +3.74889 3.98561 +7.74507 8.30657 +8.24671 8.43006 +6.88467 7.42036 +1.99426 2.03522 +1.90486 2.04181 +1.12911 1.71807 +9.25253 10.105 +1.92989 2.0346 +5.60044 6.25585 +9.16848 10.087 +6.67824 6.72257 +1.88522 2.80222 +0.242758 0.852689 +5.09249 7.71484 +5.54974 6.44414 +7.66767 8.72936 +3.48884 3.83156 +3.4697 5.14646 +8.48582 8.7692 +6.76259 7.06897 +7.83856 8.62005 +5.81853 6.76571 +2.04803 2.94439 +6.85396 7.22985 +6.52449 7.39764 +9.26838 9.34809 +4.64449 5.64975 +7.51845 7.80279 +-1.27268 1.65344 +0.686101 4.20373 +7.80552 8.37119 +7.20419 8.35284 +9.33962 9.87975 +4.31238 5.58683 +2.39198 3.84398 +1.29248 2.59269 +4.71612 6.195 +5.27332 6.52174 +7.71492 7.84702 +8.18064 8.72233 +1.55223 2.31294 +6.34374 7.31758 +6.48966 6.92611 +2.62268 3.09895 +4.09064 5.06197 +2.66367 4.12126 +1.53391 2.93092 +8.64516 8.70655 +9.20047 9.28957 +4.00474 4.11716 +8.5418 9.45901 +8.73386 9.73253 +9.22596 9.63179 +1.34204 2.7834 +8.4489 9.21027 +7.75158 8.51085 +5.98856 6.11212 +1.29906 2.08111 +9.24315 9.76291 +6.84345 6.91607 +5.88294 5.90545 +3.03022 3.39941 +3.22222 3.4089 +1.12791 1.65898 +6.70232 7.36336 +8.60042 8.82377 +1.26451 1.30362 +2.76682 2.92693 +1.54763 2.19582 +6.5865 7.24173 +4.15242 4.21742 +8.39615 8.78524 +1.67017 2.08717 +9.03012 9.97041 +2.31463 2.45877 +8.29872 8.51813 +1.66689 2.51919 +-0.807606 1.47794 +1.31452 1.94418 +0.0739222 0.512106 +4.23577 4.25889 +7.45273 7.97505 +3.34234 3.46608 +7.97304 9.14131 +1.9029 2.99946 +8.84087 9.79689 +4.92769 5.68685 +2.74004 3.04513 +0.889257 2.20448 +3.10574 3.9758 +3.91547 4.32303 +7.17475 8.07377 +5.92903 8.03738 +1.57974 1.65527 +3.76339 4.2285 +2.28263 2.7559 +9.53105 9.87477 +2.10154 3.2222 +4.23683 5.34347 +1.38769 2.48482 +5.39838 5.51872 +8.50975 10.1382 +8.04108 9.21474 +8.5252 9.67823 +8.893 10.7726 +7.1294 8.18211 +1.15642 1.73882 +0.436911 0.756698 +3.66142 3.71659 +6.37686 6.7 +8.88506 8.99896 +2.31891 3.79061 +2.61615 2.81909 +1.35216 1.39571 +3.04217 3.52564 +7.8409 9.34099 +0.470596 1.49157 +6.94014 7.18365 +8.05483 8.49979 +8.18511 8.25608 +7.03597 8.45251 +2.47411 2.65172 +0.112716 0.193057 +4.45039 5.10584 +4.53906 5.80013 +5.11702 5.27151 +1.24211 1.90757 +4.64114 4.72912 +1.77254 3.45037 +-0.1275 0.99675 +5.69637 7.67722 +2.21252 2.44032 +3.89623 4.40192 +2.79904 3.15569 +8.37911 9.42424 +5.27199 6.2026 +1.84791 3.75411 +0.522801 0.54806 +3.83644 4.64785 +6.65497 7.55638 +6.75104 6.98564 +2.34979 2.98049 +8.27176 8.60459 +5.07773 5.44064 +1.16934 1.98872 +4.2914 5.37557 +6.83462 7.95408 +3.91405 5.73229 +7.77473 8.53538 +9.23441 9.90185 +4.03659 5.2473 +5.99336 7.8004 +4.2432 5.89276 +6.39847 7.81276 +9.13909 10.4164 +1.12009 2.5649 +2.35157 3.18468 +4.46918 5.55572 +3.82512 5.53666 +7.18238 8.10193 +8.40911 9.23639 +8.99555 10.4192 +6.69547 8.87825 +4.79012 5.34858 +9.23615 10.0986 +-0.590587 1.14603 +2.74289 3.48244 +-0.248403 1.1591 +3.35663 3.7229 +7.37504 7.6481 +6.64796 7.64695 +0.778081 2.41212 +4.49242 4.7772 +8.01419 8.109 +6.6494 7.76619 +8.86331 10.1205 +0.817273 0.937855 +8.00019 8.21556 +6.19405 6.54794 +6.11798 7.30421 +3.40164 4.28921 +5.31927 6.21584 +2.79377 3.40938 +3.59494 3.90321 +7.79218 10.3132 +2.99546 3.86111 +1.71916 3.40283 +6.1768 6.81915 +7.59629 8.68568 +1.59724 2.348 +6.20151 6.5391 +6.30798 6.70478 +0.489786 1.51322 +1.28396 1.86775 +5.18031 5.43007 +6.61276 7.70565 +1.4909 2.11165 +4.56163 5.49277 +1.93598 4.35147 +3.65568 5.00224 +1.68028 2.00363 +7.82874 8.67399 +1.23053 2.87598 +-0.164275 0.194491 +2.58349 4.01302 +1.23279 2.02984 +0.599702 1.09257 +9.50965 9.80164 +2.33108 3.58037 +4.38659 4.62378 +2.65097 2.87349 +0.0537058 0.576502 +4.20415 5.15693 +5.41458 5.98382 +4.37747 5.10347 +2.62536 2.70073 +6.96845 8.15356 +6.91533 8.41638 +9.36431 9.58863 +6.13019 7.25915 +2.7818 3.4951 +9.44641 10.1301 +2.68817 4.19772 +5.65664 5.6814 +8.25308 10.498 +3.50374 3.64458 +1.47063 1.78567 +8.21901 8.98152 +3.99261 4.47339 +2.51395 3.38788 +4.66178 5.24959 +9.08415 10.3467 +5.92351 7.20447 +1.74145 2.35957 +7.62653 8.96797 +6.43542 7.68775 +5.49047 6.56355 +4.9225 6.22555 +0.257967 0.704837 +3.42488 3.52873 +8.67606 9.77824 +5.12981 6.37856 +5.97359 6.32151 +1.58517 2.28129 +0.530687 1.54545 +7.04056 8.15296 +1.8541 3.1902 +9.46286 10.0098 +3.17967 4.02237 +3.49966 3.80271 +6.24894 6.49618 +1.19944 1.59215 +5.30422 6.94823 +7.49137 7.78584 +7.02669 8.16282 +2.21673 3.36471 +7.66183 8.34763 +4.13876 4.87421 +3.0199 4.07124 +8.40439 8.82943 +-0.274649 0.429602 +6.11215 7.65609 +3.34781 5.03006 +1.28231 1.77258 +7.57256 8.59456 +5.36208 5.81735 +7.18511 8.96618 +8.86053 9.49567 +5.39097 5.93211 +6.59094 7.26553 +3.69159 4.01914 +8.73797 8.81611 +1.41144 1.82827 +7.83555 8.07567 +6.13821 8.44907 +5.83432 6.48744 +2.93596 4.66271 +7.03215 7.59658 +1.65252 2.45337 +2.91358 4.90129 +8.94415 9.14642 +5.21005 6.1166 +0.33225 1.17039 +7.40089 8.07586 +9.30427 9.40776 +2.34188 2.81124 +1.02811 3.3344 +6.28117 7.62089 +4.80105 7.10049 +8.90252 10.0057 +2.20932 2.33093 +8.20746 10.6268 +4.31887 5.23945 +9.258 9.8985 +3.80742 4.15057 +1.11313 1.23711 +9.53067 9.70165 +7.95467 8.67187 +9.66031 9.83223 +3.61385 4.09571 +0.623148 0.652817 +7.77809 8.62118 +0.86157 1.98606 +3.12528 3.75815 +1.9363 3.22621 +8.23521 8.99175 +8.95406 10.4487 +3.38526 3.90652 +0.34281 2.0226 +0.739384 0.793829 +3.55637 3.96384 +6.1562 7.28647 +5.30211 7.51385 +1.46275 1.78688 +-0.0144662 0.868488 +0.0740443 0.119828 +9.26206 9.83923 +0.743397 1.40754 +4.68823 6.62985 +8.8291 9.17373 +4.66711 5.09313 +4.023 4.44994 +5.68937 5.79194 +8.04835 8.06763 +6.94662 8.00075 +0.774686 1.13428 +0.381819 2.34757 +2.1235 2.63524 +5.42795 6.89998 +6.07662 6.29083 +6.47821 6.7872 +2.58305 2.6192 +-0.598336 1.23458 +4.29089 5.43332 +8.09914 8.28229 +5.05925 5.35258 +0.181705 0.444466 +3.27849 4.79932 +0.310314 1.43125 +1.13836 2.76825 +1.2529 4.09336 +0.198106 0.608625 +1.77442 2.23777 +6.29823 6.64574 +1.22125 1.37929 +1.77592 3.04011 +1.43999 2.90926 +4.20495 5.32396 +4.98874 5.33211 +8.36483 8.67875 +5.65373 7.14132 +2.8303 3.05037 +3.41509 3.54032 +7.21702 7.85857 +5.79848 5.8913 +4.52711 5.65511 +2.04663 2.66919 +5.76363 6.77903 +-0.153046 0.77878 +4.37474 4.49936 +6.86786 7.81999 +8.92084 9.16368 +7.5975 8.56954 +0.197493 1.07503 +3.99803 4.67019 +9.35123 9.60094 +1.46442 2.4256 +5.21501 5.79612 +8.80879 8.99085 +-0.109252 1.30631 +7.34965 7.87947 +7.08703 8.12723 +0.985946 2.14663 +0.48521 0.856118 +6.57719 6.70623 +8.71165 8.72286 +3.16883 4.8714 +-0.21189 0.412944 +3.6526 4.37121 +0.364649 1.3363 +9.27722 9.35135 +3.47517 3.8793 +5.67149 6.28631 +6.52789 6.61039 +9.36323 10.4189 +4.30743 6.18638 +7.93653 9.4877 +8.24024 8.41475 +2.75692 3.13935 +8.80223 9.1489 +3.42656 3.90557 +8.96598 9.3217 +1.99582 4.84803 +5.1178 5.8688 +4.47901 5.73433 +7.30397 7.85527 +0.18463 0.656832 +7.80806 8.41666 +8.50023 9.42628 +7.67563 8.64756 +9.46783 9.52169 +2.06797 3.3107 +5.08863 5.10167 +0.82146 1.39055 +7.5428 8.04736 +9.09407 10.8208 +9.15219 9.99706 +1.61637 3.46354 +5.3812 5.96247 +9.34115 9.73575 +6.49221 7.30031 +1.56337 3.39704 +8.463 8.60841 +-0.322779 0.658242 +8.50173 8.72125 +0.854851 1.83405 +7.81945 8.12841 +2.60724 3.19985 +5.03714 5.55331 +1.85041 3.36816 +7.26119 7.64364 +5.75223 5.99653 +4.00026 4.43863 +5.00939 6.03009 +6.22879 6.6638 +6.44231 7.18622 +1.66002 1.88587 +2.59781 2.84919 +4.96399 5.40545 +5.70327 6.95018 +6.97141 7.08346 +3.98535 4.6179 +5.96795 7.14997 +5.07581 5.8262 +4.65665 4.98851 +8.65646 8.70986 +3.04175 3.19155 +0.796073 1.0952 +8.24859 8.57828 +5.26952 6.34245 +7.94685 8.78542 +0.193963 0.968524 +6.61159 6.80186 +9.37533 9.79195 +8.94048 9.74959 +5.77272 6.48616 +6.0092 7.86718 +2.52621 2.58938 +8.91347 9.22421 +4.20466 5.45909 +4.82157 5.09167 +7.35464 7.36611 +5.12413 6.45063 +2.12404 2.81187 +8.88875 9.20752 +2.59731 3.20587 +1.54772 2.08968 +6.70449 7.08952 +-0.0967146 0.888521 +3.10207 4.34815 +1.20807 2.35497 +6.00753 6.08492 +3.21837 4.00446 +4.34095 6.0963 +4.24821 4.79576 +4.49523 6.6669 +1.49483 2.52552 +0.0411497 0.641526 +8.3854 9.20954 +8.12419 8.93702 +0.0201515 1.06914 +1.57617 3.44176 +1.4173 1.76847 +5.42261 6.51539 +6.6744 8.46109 +3.05234 3.59179 +6.49059 7.24618 +7.01989 7.69901 +2.34664 2.90601 +9.17324 9.86754 +5.50919 5.70258 +2.40486 4.6009 +3.74368 4.00093 +6.9211 7.33554 +7.41358 8.7413 +8.78284 9.62033 +2.96753 3.01602 +-0.200693 0.535532 +6.4383 6.45049 +8.28835 9.42148 +4.2379 5.35128 +4.68397 5.04593 +5.7185 7.03177 +5.37494 6.43977 +2.99518 4.08138 +7.28064 7.54638 +9.10622 10.4907 +1.23839 1.50915 +6.7823 9.24533 +8.45679 8.62427 +0.106718 0.69304 +2.84119 3.50375 +3.60466 4.51338 +8.04709 8.19023 +3.31632 3.48054 +5.9027 7.46331 +-0.621072 1.13003 +8.57167 8.69262 +0.301047 1.42246 +1.24229 2.44616 +0.962706 1.55754 +8.77327 9.55275 +1.77899 2.44335 +0.368575 1.84726 +9.05918 9.07832 +6.61723 7.68015 +8.59899 8.80383 +-0.133927 0.20271 +5.69266 5.74809 +0.68202 1.52342 +7.17359 7.91482 +5.74049 7.34297 +7.88371 7.9683 +1.58749 2.26543 +3.96728 4.45988 +5.4354 6.88336 +1.68706 1.6976 +6.56907 7.40696 +0.518151 0.724124 +8.99155 9.36995 +6.00506 7.91529 +5.26967 6.11536 +2.37416 2.50887 +8.47983 9.31509 +2.38155 2.54346 +8.08415 9.65214 +1.00693 3.19203 +1.6523 1.73553 +6.85283 6.9958 +4.11425 4.90193 +1.39597 1.58725 +5.05551 5.19458 +5.89969 6.11394 +5.9148 7.26824 +9.32271 9.93989 +1.62911 2.58215 +5.43399 6.14203 +3.11393 3.58792 +8.57619 9.3788 +2.23349 2.7884 +8.09022 8.54326 +9.7114 9.87076 +5.91086 6.10885 +7.35805 7.57276 +0.650002 0.879866 +3.24977 3.75531 +2.73948 3.41051 +3.08006 4.62772 +3.71868 4.31519 +4.13905 5.78577 +1.77297 3.02983 +5.85931 5.89333 +3.68972 3.93193 +1.43922 2.98425 +6.51534 8.33386 +6.6821 7.50874 +1.2541 2.11722 +5.40634 5.54411 +4.55502 4.60346 +4.32484 4.68497 +3.40711 4.31975 +9.20893 10.0853 +6.12594 6.9009 +0.12664 0.347193 +7.53378 8.82258 +7.79572 8.91645 +2.50098 3.39701 +4.17873 4.97732 +1.05822 2.47032 +3.1012 4.97736 +8.42126 8.74568 +7.83301 8.17843 +9.26618 10.584 +3.02667 3.7128 +8.30654 8.69242 +2.87173 3.43275 +6.59917 7.54843 +7.03447 8.20283 +5.75718 6.40637 +2.62899 4.1855 +-0.520148 0.902194 +5.1538 5.61763 +1.25625 2.33142 +4.16336 4.3384 +3.01296 3.41026 +3.16515 3.26305 +2.40944 3.21897 +6.80742 8.57141 +1.15125 1.54824 +8.72251 9.50878 +3.15703 4.04482 +0.470308 0.726093 +0.199979 0.878243 +7.8908 9.17915 +6.91793 7.16038 +4.64783 5.00217 +2.21237 3.03073 +1.5825 1.63362 +3.18806 5.20795 +5.92725 5.95595 +4.65027 5.09868 +6.42204 6.87201 +8.08637 9.40221 +4.95542 6.16185 +7.45987 7.57979 +8.826 9.13961 +4.42078 5.27977 +7.26216 8.97585 +2.26919 3.33512 +9.4077 9.81908 +0.722223 1.03378 +-0.0497795 1.19355 +8.22686 9.31082 +0.0733766 0.93037 +7.47883 7.9062 +5.28731 5.74181 +1.78496 3.61348 +0.690987 0.764344 +2.56442 3.54999 +4.27944 5.43124 +4.04412 5.35376 +0.663756 1.88268 +1.73567 1.78553 +8.07666 9.41842 +7.70138 8.42873 +9.27113 9.55873 +0.982413 2.5565 +0.994807 1.02007 +5.01226 5.31923 +8.87435 10.0597 +1.74836 3.22578 +0.151528 0.191719 +5.82608 6.06438 +1.17239 1.59955 +3.18515 4.11049 +1.92258 3.70604 +1.63692 1.8266 +1.83542 2.66228 +2.21954 3.11425 +3.97546 4.3928 +0.731374 2.05705 +5.44809 5.96359 +9.85934 10.0553 +8.42169 9.63654 +6.68148 8.43446 +2.00014 3.3485 +0.735924 1.73 +1.61833 3.05643 +7.87934 8.67316 +8.67441 10.0032 +0.794573 1.2493 +6.11926 6.41441 +5.2715 5.82597 +9.41854 9.46625 +3.46299 4.06742 +5.6487 5.79053 +1.46503 3.43496 +0.9957 1.53939 +2.4714 3.1301 +0.887049 1.6196 +3.04884 3.19662 +1.24337 2.05758 +7.61142 8.55766 +0.998279 1.64425 +4.74917 5.85236 +2.97632 3.94611 +4.11786 5.62709 +7.40498 7.62083 +1.47854 3.64736 +2.1176 2.64511 +4.55533 5.89436 +7.44618 9.79926 +-0.410242 0.737348 +5.719 6.30861 +8.33692 8.38222 +8.78122 9.98195 +3.75452 4.26866 +2.23771 2.44985 +6.72455 7.61362 +5.9797 6.58846 +6.72885 7.60315 +-0.710302 1.18332 +7.73287 9.383 +6.61213 7.67394 +4.12945 5.68527 +-0.300887 0.341615 +5.77978 6.41534 +8.34001 9.96874 +1.62323 1.8283 +1.71788 2.23905 +7.43484 8.0418 +3.47322 3.8047 +3.47311 3.51261 +7.82093 8.86377 +2.46973 2.99125 +7.91166 8.55065 +3.39807 3.43599 +8.94792 10.0437 +7.70859 8.32487 +5.86852 7.13103 +7.64996 9.19033 +6.66742 7.8092 +7.88241 8.58675 +9.42939 10.3479 diff --git a/geom_bottleneck/tests/data/ws_tests/test_5000_B b/geom_bottleneck/tests/data/ws_tests/test_5000_B new file mode 100644 index 0000000..5f6e43c --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5000_B @@ -0,0 +1,5000 @@ +1.17434 1.46837 +2.58198 4.16589 +0.234041 0.968658 +1.52703 1.59579 +6.7103 7.44033 +3.19227 4.41539 +5.42556 5.57369 +3.45417 4.86089 +3.82256 4.1092 +7.82551 7.90784 +3.9384 4.71796 +5.60335 5.9054 +7.96663 9.8987 +6.30305 6.64853 +7.33246 10.5316 +0.623312 1.09008 +2.63041 2.64616 +5.36028 6.28956 +4.64202 5.91858 +7.55219 7.96304 +7.73736 9.18221 +1.67114 1.84851 +5.07514 5.12159 +7.03732 7.05228 +7.5006 7.59212 +0.244947 1.55875 +0.0170454 1.10485 +1.95394 3.53669 +5.66015 6.01949 +5.88211 7.64639 +7.46698 9.27085 +6.37429 7.10154 +4.54535 4.81932 +8.21203 9.35896 +4.89933 6.20802 +3.68683 4.17831 +0.477467 0.828394 +6.17871 6.77834 +9.77523 9.92676 +0.854808 2.38709 +7.93326 8.3553 +2.10917 2.27771 +4.07045 4.72793 +8.2016 8.8011 +2.9205 3.95746 +2.89806 4.39725 +5.5654 5.78669 +9.5219 9.98543 +7.08591 7.19588 +8.35359 9.57893 +9.81348 10.0345 +8.5994 9.71835 +5.43903 7.25234 +1.82768 2.92724 +4.44952 6.79754 +5.66747 7.34386 +5.88153 6.39253 +3.34008 4.22032 +2.46068 2.76051 +0.370778 2.61681 +6.02508 6.26809 +4.32654 4.93262 +7.41536 7.99616 +8.84229 9.87911 +3.8551 5.84353 +1.56832 2.34694 +6.96099 7.42028 +8.15753 8.72014 +9.23141 10.3815 +7.4484 7.80228 +0.473671 0.874895 +3.15689 3.50687 +3.58122 4.09945 +3.55022 3.74767 +4.42708 5.80211 +4.40956 4.68699 +3.80576 4.61856 +7.29965 8.28614 +7.40582 8.15308 +1.69789 1.77669 +1.66419 3.44308 +0.473997 0.872506 +7.83959 8.52898 +6.22416 6.36949 +-0.187159 0.871822 +0.232336 0.585965 +9.29905 9.44357 +1.4459 2.40589 +2.83008 3.19758 +1.15291 2.12112 +2.58686 3.33896 +6.79362 7.88068 +0.228178 1.48318 +5.60001 6.20258 +4.97803 7.10992 +1.70429 1.962 +2.72659 3.13886 +9.22714 9.25889 +3.84694 3.88778 +-0.282077 1.48155 +9.28756 9.58517 +4.34069 5.59751 +8.63909 8.76839 +8.86236 10.7642 +6.77597 8.41888 +7.30621 8.64164 +0.685607 1.22755 +2.91514 3.22638 +2.72098 3.66837 +8.17528 8.32638 +5.19632 5.7506 +7.34177 8.70639 +5.74082 6.35524 +5.95975 6.69284 +9.40187 10.4488 +2.92761 3.36735 +0.399531 3.13082 +4.83399 4.92635 +7.74539 8.56852 +1.76322 3.5086 +6.54479 6.72963 +7.64362 8.12404 +1.35542 1.45313 +0.214385 0.718085 +1.7006 3.21962 +5.91009 6.47862 +2.21093 2.34636 +5.96919 6.79365 +6.59951 8.22203 +1.54571 1.59397 +3.27012 3.79128 +0.32455 0.622995 +1.73926 2.78017 +9.81035 9.84077 +7.38441 7.85171 +8.90372 9.34186 +7.26323 8.41174 +5.7363 5.97348 +8.25473 10.1281 +2.3981 2.52096 +8.53783 9.63442 +8.51755 9.2735 +6.48614 6.773 +3.40182 3.65137 +2.1353 3.04852 +2.95397 3.73285 +6.98063 7.4963 +4.50189 5.26384 +0.21416 1.49363 +0.632196 1.36307 +6.57833 6.60481 +8.0634 9.33903 +2.79759 2.94462 +4.43747 4.58861 +6.48733 6.86569 +2.28008 3.47037 +6.87452 7.77431 +-0.156821 2.71557 +0.72595 1.78862 +1.97586 2.38196 +8.61839 9.1468 +4.55496 5.68986 +0.26923 1.15728 +9.63757 9.7236 +1.39497 1.96698 +4.8643 5.04172 +6.64675 7.66435 +2.56256 2.6015 +-0.381989 0.611211 +0.676336 1.26896 +8.95304 9.03243 +5.62058 6.07997 +3.36522 4.04276 +8.64868 10.5024 +4.75813 5.19834 +1.96608 2.05864 +9.01449 9.10397 +3.72786 4.51921 +5.6938 6.96584 +1.73499 2.9314 +2.73099 3.41409 +8.77171 9.07665 +4.63865 4.67649 +8.6698 9.30782 +-0.168259 2.09581 +9.29672 9.56 +0.372544 2.60567 +0.450487 1.32919 +6.95341 7.6399 +3.4403 5.24993 +5.53469 6.97831 +-0.79664 1.21306 +5.68831 6.14413 +8.85601 8.95444 +3.83309 5.211 +5.51573 6.5114 +3.64009 3.99648 +4.40759 4.99283 +1.85198 2.6457 +2.72645 3.74803 +2.04751 3.00998 +3.19365 3.9383 +8.09529 9.45596 +8.88173 9.5618 +0.609816 2.67806 +1.57288 2.60884 +1.68354 1.80124 +4.92058 5.9959 +1.48728 1.84885 +0.299669 0.413905 +9.02156 9.56731 +7.50854 8.49023 +0.667131 1.89987 +2.22472 2.58793 +5.84395 8.79426 +2.35839 2.66935 +3.43111 3.69982 +6.71023 7.36801 +6.75697 9.0991 +2.35352 2.85316 +6.73054 7.39006 +9.48673 10.1493 +6.71226 6.72805 +9.22083 9.71889 +8.36513 9.33921 +0.0652672 0.319993 +3.26467 4.60881 +7.62269 7.79878 +6.48608 6.69515 +6.21737 6.88645 +6.56094 6.9699 +1.61317 2.7167 +5.08621 6.29754 +2.24676 2.8076 +3.09943 3.93921 +9.74093 10.0968 +0.417699 1.6381 +9.2958 10.2973 +3.6663 4.1369 +0.0229943 0.448065 +9.2928 10.1833 +3.66334 4.22032 +0.812172 2.19952 +7.88025 8.71192 +8.69379 9.34922 +1.70691 2.95352 +8.28737 8.29985 +5.22491 5.354 +4.03526 4.14084 +6.49359 7.05924 +0.24853 1.44718 +7.86936 8.75135 +5.76 6.68919 +5.85437 6.14314 +5.86292 6.0516 +2.35692 2.91295 +0.0990674 1.29386 +2.9911 3.56188 +0.552671 0.638929 +5.80756 6.22761 +1.21067 1.77175 +4.51882 4.72936 +1.99969 2.89732 +3.65968 6.61987 +0.478582 1.33355 +0.259061 0.289813 +3.89264 5.02474 +0.349236 0.438003 +7.70442 8.1729 +7.90389 10.1876 +3.06898 3.15219 +4.77811 5.29095 +9.76561 9.89451 +4.14295 4.2489 +0.540224 2.28623 +9.60749 10.2284 +8.49555 9.00307 +7.89668 9.76886 +4.12631 4.70897 +7.87898 7.91814 +9.29858 9.52908 +9.24009 9.91544 +3.73498 4.70275 +5.44467 5.9274 +2.13453 4.85697 +2.29607 2.88771 +0.807842 1.82319 +0.319005 2.08473 +1.62 1.63649 +2.20431 3.23869 +2.00132 2.77136 +6.64752 6.71706 +8.12249 8.28379 +7.55541 7.7813 +3.51763 3.64484 +9.21075 10.2811 +2.24501 2.54426 +5.64566 6.46452 +6.72307 8.56698 +3.91728 4.60262 +4.02535 4.29548 +3.0499 3.53135 +1.30677 2.32194 +9.36908 9.90669 +3.92387 4.33848 +2.87312 3.08243 +4.49167 5.2749 +5.43143 6.74905 +6.94595 9.16539 +1.9784 2.00429 +9.42478 10.2226 +3.7185 3.96576 +9.37729 9.50574 +5.34283 6.89736 +4.95341 5.84626 +2.91654 4.28413 +8.26544 9.3076 +6.23114 7.20273 +1.02585 2.21446 +1.6718 2.29591 +2.28926 2.73452 +-0.648145 1.105 +1.44194 2.18562 +6.78584 8.37985 +2.00402 2.08248 +1.64076 2.04067 +0.0419044 0.455962 +5.51723 5.72098 +5.42117 6.81165 +5.70331 5.81707 +4.97889 5.60741 +3.38797 4.46846 +7.20995 7.66784 +3.45388 4.23386 +3.11057 4.35995 +3.29476 4.04676 +2.0519 2.94719 +5.37101 5.38271 +5.99383 6.64188 +7.48444 7.6377 +2.15043 3.05399 +1.54093 1.83799 +5.59223 5.87222 +5.8005 6.08042 +6.1208 7.22563 +1.2938 2.17454 +4.92405 5.0402 +6.91336 7.79688 +1.47978 1.99762 +9.00494 10.8315 +5.84805 6.15303 +4.95368 5.49096 +8.21704 8.31192 +0.715222 2.33517 +0.904183 2.54741 +3.42349 3.74906 +0.627978 2.37092 +8.41477 8.72651 +3.55373 5.58652 +4.12685 4.61533 +0.775274 1.41263 +4.78915 5.08639 +6.35791 8.15015 +2.88242 3.63509 +2.78526 3.07834 +0.39129 1.15933 +3.26615 4.74531 +8.78873 9.8888 +7.25612 7.45972 +4.97452 5.30012 +0.757255 1.35518 +1.29516 2.52446 +4.66838 4.96648 +-0.0720209 0.832726 +2.68276 3.21123 +8.44253 10.0311 +3.40809 4.70506 +1.09617 2.35452 +5.19302 6.73599 +1.25316 1.58101 +6.2056 7.10099 +7.7666 8.52777 +0.301239 1.37275 +0.522829 0.731575 +6.73869 6.96826 +2.41703 3.20567 +4.94617 6.22052 +5.41524 7.68272 +6.0408 6.29938 +0.0642067 0.600878 +6.32122 6.63505 +3.25427 4.70611 +5.88704 6.1678 +8.71533 9.08476 +6.25575 6.88392 +1.54462 1.56366 +3.95938 4.03326 +2.54671 3.66798 +8.48603 9.10156 +3.37369 4.65454 +5.25469 5.64636 +7.02624 7.36449 +8.17061 8.44321 +9.23147 10.1149 +1.45589 2.25886 +6.47702 8.25307 +7.69088 7.91753 +0.442832 0.616926 +8.35355 8.83222 +7.65142 9.58906 +4.04877 5.17345 +0.76012 1.8686 +6.54877 7.40058 +7.41774 7.65429 +8.69655 9.3325 +4.8302 6.25306 +1.77203 1.90284 +3.67485 4.94569 +6.60162 6.72031 +3.05924 3.35235 +0.0823162 1.3486 +8.42991 8.86331 +6.81596 6.83527 +-0.0174808 1.6745 +-0.758131 1.08928 +4.14423 5.46342 +9.26253 9.85714 +7.42749 8.58214 +4.88849 5.86936 +8.99339 9.38141 +8.85301 9.18285 +2.64303 3.45658 +7.1133 8.66473 +3.50745 3.8629 +7.81615 7.83244 +2.94991 3.8741 +7.91822 8.8362 +-0.0553088 1.19059 +7.35558 7.77948 +2.11257 2.20563 +8.57533 9.16338 +2.3515 3.13009 +4.13239 5.38696 +2.20763 2.93941 +7.2451 7.3211 +0.834388 1.57413 +4.47024 6.17855 +4.75947 6.80913 +2.99607 3.54732 +8.15998 8.80718 +8.94688 9.27971 +4.46335 4.9522 +5.30725 5.69786 +7.63989 7.86974 +6.69589 7.69565 +5.34018 6.08115 +8.59515 9.62264 +1.80557 3.22507 +8.62429 8.94242 +1.34532 1.95042 +8.60707 8.80741 +8.03275 9.40327 +4.30357 4.39095 +8.97954 10.7076 +2.18143 3.51825 +3.98695 5.62062 +2.48813 2.60622 +5.56957 6.43776 +5.18249 5.55459 +3.45373 3.64101 +-0.00345662 0.570597 +3.61127 4.69761 +9.37858 10.6205 +7.24635 8.19639 +4.70142 4.80735 +3.30055 5.14257 +0.860415 1.31635 +4.72924 5.46893 +7.47391 7.72644 +6.22287 6.57754 +0.181652 1.01366 +2.14494 2.80736 +2.16406 3.19383 +8.52991 9.22722 +8.74411 9.06935 +0.575831 1.02699 +2.47315 3.0331 +4.2872 4.59813 +5.82293 7.03604 +2.08982 2.25319 +7.3626 8.41994 +1.23867 3.10885 +7.397 7.78026 +6.78837 7.32977 +0.829368 1.56617 +9.23075 9.35172 +6.76562 7.23578 +0.42851 0.839401 +4.83626 5.5852 +0.150032 2.45322 +2.16811 2.47439 +5.60245 5.81188 +7.43707 7.46519 +0.167317 1.44642 +4.9732 7.58343 +8.67391 10.2957 +0.318592 0.639284 +3.365 4.25929 +7.83683 8.88895 +5.20557 5.30114 +0.940347 1.74022 +5.39149 7.13464 +1.10826 1.27913 +1.9147 2.31276 +0.935283 2.49181 +3.67898 4.33336 +5.10125 6.07734 +0.348807 0.839242 +0.310986 0.58381 +2.03594 2.43119 +5.49755 5.94215 +1.94885 3.34409 +9.66806 9.97883 +4.79099 5.45155 +4.81158 5.30001 +5.17667 5.90019 +9.64168 9.99177 +1.14899 1.22792 +0.466236 0.952985 +6.93679 7.72282 +2.97285 3.23931 +9.22517 9.24315 +7.25783 7.46414 +4.37304 4.51815 +4.01069 4.02979 +0.843132 1.80443 +4.78572 6.04237 +6.02471 6.38074 +4.99536 7.76852 +4.97442 5.17384 +0.731231 1.49497 +2.2797 2.90845 +9.13211 10.341 +4.19545 5.08597 +6.13127 7.09817 +2.65124 5.02208 +5.40235 7.12912 +6.86258 6.91991 +8.24317 8.55273 +7.6877 7.69875 +3.33922 3.53776 +0.089484 0.40755 +1.34909 1.68726 +8.43113 8.72899 +4.90038 5.55994 +0.308089 0.490555 +5.42628 7.1433 +2.11647 2.56987 +3.56934 4.1619 +8.35794 9.24416 +8.8645 9.69151 +5.10701 6.0036 +7.66385 7.8412 +2.89952 4.55221 +6.01533 6.38269 +-0.945182 1.07304 +1.79537 1.85576 +-0.0313338 0.501067 +8.85689 8.87522 +1.61143 1.7773 +9.53229 9.84943 +3.51669 3.81091 +-0.448016 1.10903 +3.16889 3.439 +4.30534 4.36372 +6.20158 8.09618 +2.20949 5.23616 +3.29459 4.17079 +3.90101 4.05611 +5.89688 6.85702 +0.734474 1.04471 +7.84341 8.02702 +8.69431 10.1086 +9.73194 9.92195 +7.63516 7.70631 +8.51416 9.33072 +-0.0712911 0.361001 +2.76979 3.22708 +5.34404 7.5165 +5.64429 5.79865 +0.0755012 0.363483 +5.05631 7.27153 +-0.60164 1.09659 +0.457228 0.876186 +4.27092 5.38033 +8.63891 9.04134 +6.29608 7.04242 +8.97795 9.93013 +5.00385 5.57737 +8.48068 9.44885 +7.35543 7.78492 +3.55698 4.01035 +-0.268117 0.649128 +0.633184 0.66254 +4.54216 4.81132 +6.15574 6.35276 +4.3663 6.36286 +1.45231 2.07039 +7.37031 7.9157 +5.30961 6.3506 +5.80757 5.81762 +4.91767 4.97519 +3.45667 3.60965 +1.7934 2.3807 +4.33289 5.41047 +1.16021 1.29979 +3.75172 4.53521 +3.10835 3.1275 +2.68167 3.00314 +4.10639 4.24094 +4.90776 5.74069 +7.30861 7.86666 +3.52822 3.70998 +5.22222 5.28033 +0.00866476 0.326377 +7.73247 8.61481 +4.25231 4.77499 +8.41148 8.54604 +2.95389 3.63497 +7.76126 9.69124 +6.41218 6.69682 +4.86285 6.44503 +1.84783 1.9065 +4.08788 4.11706 +9.17473 9.50133 +5.15091 5.78649 +1.27694 3.33579 +2.92648 3.37855 +9.37392 10.5123 +4.81878 6.34991 +8.38702 8.83716 +5.07771 6.33618 +1.47438 1.75588 +6.20935 7.11166 +1.08286 1.38 +1.40048 2.0157 +6.60355 7.26234 +5.28396 5.90003 +8.9525 9.59216 +-0.0305792 0.544664 +-0.571491 0.735471 +6.287 7.03679 +5.35225 5.4104 +0.095812 0.605976 +4.33523 4.4048 +6.13288 6.80949 +4.14654 5.5505 +-0.213214 0.260592 +7.56188 7.83088 +7.8132 8.65963 +8.02469 9.3254 +0.00641711 0.420562 +7.49269 8.15849 +9.26359 9.4366 +5.74008 7.86317 +8.62729 9.78825 +4.28946 6.20553 +3.19174 4.54991 +4.16992 4.25203 +2.46138 4.11583 +1.92971 2.16701 +3.43028 3.80842 +6.98297 7.28388 +7.51884 7.55947 +7.79102 9.44326 +0.416342 1.32311 +9.35398 9.85201 +8.72997 9.10384 +6.23398 6.88888 +7.46984 7.4875 +5.92603 6.66938 +1.77761 2.58697 +0.835966 2.06139 +9.63284 10.3565 +6.13677 6.42768 +0.151375 0.382404 +8.10315 8.13441 +5.52283 6.28113 +1.00873 2.44226 +2.5239 3.89871 +5.40599 6.72653 +3.43407 4.0068 +1.22444 1.26601 +7.04395 7.80599 +3.75987 3.77123 +6.43597 7.06249 +8.34435 8.87418 +8.25853 9.04009 +0.415321 2.32725 +0.639046 1.75525 +7.83226 8.12538 +9.55429 10.2734 +3.658 4.35867 +1.8588 3.93292 +7.38922 8.16823 +8.53626 9.23024 +0.848152 1.13412 +6.31667 7.2348 +3.81584 4.62621 +9.24748 10.7408 +2.75953 2.95288 +5.70188 6.62278 +4.22202 4.45368 +3.24616 3.88779 +1.05053 2.09846 +8.67718 9.52693 +2.14107 2.71959 +1.10518 2.69689 +5.01476 5.54139 +4.69244 5.20358 +8.88285 9.93012 +2.55228 2.77382 +6.72118 7.50057 +7.58999 8.71573 +1.83763 2.13481 +4.86135 5.27995 +4.39794 5.42117 +1.42512 2.98262 +4.80489 5.34701 +2.7993 5.13702 +7.52122 8.41729 +9.08613 9.37543 +1.1555 1.3935 +7.34071 8.0428 +8.33361 8.40349 +2.514 2.54741 +8.25732 8.41758 +1.65337 2.57964 +4.20527 5.06565 +0.723443 1.06987 +5.85836 6.64701 +7.908 8.07591 +5.01839 7.0105 +3.15908 5.10364 +4.3574 6.67192 +2.06662 2.46437 +7.5595 8.9108 +7.94919 9.20231 +4.11889 5.49714 +7.28151 7.51881 +1.30685 2.09479 +3.08479 4.47364 +4.50916 5.91511 +7.31605 7.63868 +3.14469 4.07035 +8.38431 8.87993 +7.42277 7.64967 +4.22472 4.26323 +8.49871 8.90746 +7.44431 8.09014 +8.35213 8.7504 +3.85634 4.37584 +9.12975 9.77042 +-0.326056 1.17374 +3.53802 4.06211 +6.81775 6.8467 +8.19106 8.64489 +4.20526 5.37727 +2.74081 3.72143 +0.49642 1.10775 +7.76606 8.00524 +4.79825 6.38926 +1.99478 3.20484 +4.69853 6.29508 +5.73058 7.18643 +8.11708 8.64257 +9.62375 9.84838 +5.95271 6.38989 +9.0193 9.93848 +3.91188 4.10834 +6.065 6.60546 +2.62354 3.60072 +8.53665 9.06824 +6.40691 7.44693 +1.62959 2.5825 +9.4128 9.87031 +6.24697 6.62684 +3.31136 3.45626 +4.80347 4.9935 +9.21711 9.53416 +-0.491547 1.72886 +4.75174 4.87217 +0.86329 1.53331 +2.4586 4.2578 +5.10301 6.2815 +5.08302 5.86788 +6.12434 6.78948 +9.68323 10.0973 +3.52576 4.40424 +4.9925 6.89084 +0.846638 1.80782 +1.09709 1.7685 +8.38592 9.03312 +9.56243 10.2682 +5.03592 6.6429 +7.8609 8.04599 +1.21404 1.31975 +7.47824 9.2063 +1.47849 2.68795 +1.2909 2.06381 +5.21288 5.54616 +6.27218 6.99345 +4.77622 5.08494 +3.30665 4.14735 +3.38947 3.55545 +7.71197 8.53162 +1.10565 1.50806 +0.7889 0.984689 +2.88598 3.33244 +5.70958 5.81232 +5.16567 6.24511 +6.91255 7.25784 +-0.401084 0.753156 +4.81138 6.20671 +1.67301 3.58501 +7.19478 8.25624 +1.24428 2.2523 +4.31631 5.33357 +0.589196 1.02017 +5.69207 6.97803 +2.3854 3.25501 +4.1362 4.91135 +8.9932 10.3184 +7.95871 8.45158 +4.03213 5.26347 +3.09506 4.06425 +-0.0310321 0.738171 +7.35733 7.61512 +2.48488 2.96253 +4.72098 5.69867 +5.5395 5.96914 +3.17854 4.283 +6.50012 7.33744 +1.93266 3.00941 +1.49319 2.71826 +9.0187 9.13099 +7.15259 7.40691 +8.71939 8.93257 +1.57203 3.11249 +0.933429 2.16903 +2.99663 3.71667 +2.06144 2.81311 +7.9072 8.2103 +0.490069 0.614737 +7.84111 9.70812 +1.15363 1.6421 +1.15475 1.43307 +8.2228 9.92116 +7.76825 8.40724 +6.15122 7.31322 +7.1427 7.49294 +2.30516 2.7019 +2.03336 4.03387 +8.3918 9.85707 +8.57214 9.59345 +3.8057 4.1119 +8.9223 9.38556 +9.32051 9.60504 +7.13349 7.69154 +1.71855 2.00425 +5.10333 6.0605 +-0.149137 0.80973 +0.466224 3.1698 +4.19165 4.29604 +1.64018 2.3161 +9.40397 9.89211 +5.21738 7.06323 +0.525526 1.0331 +8.06992 8.08704 +9.81539 10.0915 +9.33514 9.50521 +5.95494 6.54519 +9.21466 9.35909 +4.96603 5.18164 +3.89238 5.53056 +5.04546 6.32916 +8.63758 8.65805 +7.03226 7.57074 +0.32029 1.10893 +0.194176 0.992252 +8.79061 9.50848 +0.239137 0.300717 +7.7234 8.43747 +3.43679 4.28954 +8.31382 9.18928 +1.39612 1.67253 +6.95733 7.39846 +1.29129 2.12185 +7.93611 10.2305 +3.67764 4.17562 +1.38149 2.42407 +2.2847 2.48412 +9.28655 10.0661 +2.94115 3.21326 +7.04238 7.91536 +5.06012 5.61526 +8.95611 9.91736 +2.18524 3.44007 +1.0692 1.10987 +4.37019 5.18443 +5.82014 6.441 +1.68642 1.70458 +4.93783 4.9535 +9.42003 10.1196 +-0.356795 1.30987 +1.37778 2.80527 +9.54126 10.1758 +8.67413 10.5984 +0.914291 2.0697 +6.08696 7.09832 +2.82202 3.31103 +4.07818 5.50195 +2.85223 3.67449 +6.03006 7.10863 +8.84655 10.528 +5.08031 6.2001 +1.00272 2.74191 +0.169102 0.223253 +0.025089 1.26534 +-0.203339 0.64667 +0.899666 1.48885 +0.74235 1.49976 +6.28212 6.80412 +5.65159 5.93106 +2.1686 2.7445 +5.02936 5.43091 +8.07124 8.80499 +8.65696 8.95802 +7.68394 8.365 +8.65062 8.69146 +0.058248 1.19535 +5.74545 5.84057 +6.05244 6.52152 +9.3878 10.3328 +7.71379 8.88044 +3.32961 4.54105 +8.51987 8.62854 +4.10821 4.16902 +9.47639 9.78723 +4.72417 4.84793 +2.32867 2.94068 +9.52275 9.57815 +5.32867 6.96127 +4.32462 5.1508 +4.46919 6.45961 +8.62661 10.9533 +0.0244049 0.56156 +1.49207 1.73164 +7.03156 7.81168 +5.88587 5.89732 +8.43632 9.65085 +7.52612 8.06726 +4.82464 5.6193 +3.8062 3.90356 +2.42708 2.51646 +2.06458 2.45877 +0.427218 2.24283 +7.42616 8.11513 +0.617708 1.01833 +8.74218 9.03592 +-0.213346 0.599112 +9.05291 9.59124 +5.20365 5.54277 +2.85289 3.99509 +3.08468 4.58456 +0.136826 0.685254 +3.87191 3.99021 +0.970836 1.49673 +2.44355 2.53584 +8.88615 9.94545 +3.90591 4.52798 +1.52518 2.50658 +7.21268 9.07745 +0.767314 1.23833 +8.62975 9.42367 +6.71524 7.67686 +7.61205 8.48292 +5.312 5.65087 +4.75627 5.96261 +7.90674 8.0753 +7.37887 7.71478 +3.74483 5.52984 +2.7187 2.85544 +4.7902 5.62159 +2.89671 5.19815 +7.37268 8.72506 +7.11916 8.28301 +9.19814 9.75279 +1.2085 2.60113 +-0.632009 0.889734 +7.99858 8.39743 +6.48346 7.10822 +6.30616 7.06648 +5.56514 6.51183 +2.41505 3.56224 +6.83749 8.84447 +9.05111 9.46906 +7.77476 8.4091 +6.11378 6.31232 +4.42882 5.69917 +5.88107 8.052 +3.75437 4.08893 +2.70487 2.77664 +7.26028 9.77257 +1.44621 2.73267 +2.0384 2.60397 +2.95402 3.68949 +6.04766 6.4054 +0.716046 1.77698 +1.5084 1.72988 +2.58426 2.80376 +8.05255 8.59793 +6.06336 6.20709 +3.29813 4.31473 +2.53477 4.92554 +8.78711 9.88634 +9.26627 9.82082 +6.70683 6.81257 +8.25978 8.99788 +7.28054 7.64237 +5.14556 5.20711 +4.20431 5.87866 +8.96592 9.97597 +4.06216 4.41519 +8.49174 11.0491 +5.24547 6.03094 +4.65885 5.95835 +5.09606 6.34846 +6.30463 6.65933 +6.48022 9.56168 +1.38088 2.98143 +0.486911 1.16767 +8.16327 9.34821 +0.768885 0.782616 +4.51699 6.08086 +9.55086 9.70242 +2.86802 3.72489 +1.88496 2.18749 +4.31876 4.33726 +8.38871 9.45631 +8.80634 9.36198 +5.232 6.42399 +9.86919 10.0492 +3.61902 4.53086 +3.13118 4.42364 +2.69395 3.1816 +-0.303144 1.32309 +4.28871 4.36739 +3.8631 4.08745 +4.9291 4.98968 +7.14273 7.25505 +2.56623 2.59122 +6.01753 7.72265 +6.76051 7.53954 +6.76933 8.14741 +0.933137 1.83537 +7.9357 8.57904 +5.55847 5.59984 +4.25563 4.3345 +4.28087 5.21348 +8.88534 9.06554 +1.88575 2.94002 +5.26613 6.04562 +0.514249 1.45538 +0.130644 0.501645 +4.30564 4.86337 +1.57246 2.38451 +0.303814 1.77474 +4.22675 5.02783 +6.75381 6.78634 +5.64096 5.9725 +6.76159 6.98142 +2.35569 2.39119 +3.29794 4.95962 +6.55055 7.03366 +5.31474 5.69404 +9.01335 9.16988 +8.58306 9.37831 +7.06522 7.07778 +1.14695 1.74744 +3.15507 3.22865 +5.5925 7.14168 +2.14679 3.68767 +7.54789 9.71878 +1.5667 2.08742 +-0.604726 1.66718 +0.306012 0.54799 +2.61731 5.08257 +0.80957 1.74655 +8.22035 8.81637 +4.401 5.449 +8.89389 9.01988 +4.80574 4.9322 +2.19895 2.88565 +9.06688 10.8095 +1.23727 1.58699 +7.14836 7.92057 +4.65155 6.15149 +0.563061 2.16535 +7.66764 8.0341 +8.32324 8.42774 +4.54541 5.11069 +8.0237 8.09992 +7.26113 8.09404 +2.55196 3.20317 +8.1236 8.60951 +1.90437 3.23006 +0.888133 2.50365 +1.13618 1.69444 +2.60463 3.01696 +7.2311 7.73229 +5.06501 6.01487 +3.9893 4.10116 +1.45278 1.56937 +2.74601 3.80778 +9.40705 10.3843 +3.02533 3.52213 +8.7097 9.2268 +8.73145 10.5552 +2.56059 3.5742 +6.27328 7.57089 +3.23291 3.30811 +6.33804 7.20304 +7.63648 8.34564 +9.82053 9.93597 +3.14924 4.58629 +5.28253 6.33733 +1.99411 2.04104 +0.305593 0.420302 +5.39668 6.64188 +7.99992 9.37823 +5.25169 5.65987 +0.109291 0.875734 +3.08589 5.50296 +6.51358 6.62588 +5.34687 5.58204 +0.043587 0.932787 +-0.0264143 0.28677 +8.09722 8.37087 +5.46612 6.30285 +2.89146 3.49892 +6.73278 7.11762 +5.03068 5.90176 +1.7459 2.87727 +0.207707 0.448933 +7.00453 7.63105 +6.02789 7.87991 +8.1917 8.95854 +7.49014 8.73215 +8.48402 9.22063 +1.0467 2.4687 +0.241901 1.38802 +2.65867 2.81258 +5.46725 6.59448 +3.40578 3.75607 +4.2495 4.26392 +5.6608 6.213 +2.99705 3.88852 +6.17231 6.72018 +-0.17415 0.492739 +4.89596 6.49895 +4.68876 6.60218 +-0.0510568 1.46013 +8.87099 9.28179 +3.98894 4.5838 +-0.20015 1.59214 +8.80756 9.51828 +7.74921 8.53538 +-0.380041 0.440574 +2.69409 3.91466 +2.42747 4.56745 +6.25881 7.75647 +7.2941 7.77193 +2.60806 2.90251 +0.325028 1.22219 +8.29921 9.01416 +3.85524 5.45451 +5.2612 5.71877 +2.92849 3.73937 +8.6242 8.70808 +7.28153 7.35797 +1.65378 2.87917 +3.46034 4.24143 +3.99989 4.3199 +1.15266 3.60328 +4.8464 6.4887 +4.67021 4.68421 +6.96861 7.31554 +0.00723008 0.817047 +7.59589 8.88352 +5.56725 6.08465 +9.02409 9.19527 +5.81681 6.74193 +1.98221 2.98678 +8.76392 10.7646 +4.3903 4.50531 +1.0186 2.01838 +2.66674 2.74505 +2.41105 3.44579 +8.98295 9.18995 +8.14385 8.98779 +2.69613 3.60144 +0.445704 1.51319 +-0.634889 0.860409 +6.32737 7.10112 +7.88824 8.06838 +3.76271 4.43529 +7.66487 9.30221 +8.73974 9.59191 +3.08965 3.43006 +8.9518 9.96154 +0.727194 1.55228 +6.35214 7.12234 +2.71987 3.22996 +7.12786 7.4379 +-0.346107 0.837469 +8.47103 9.05987 +9.15744 10.628 +8.3237 10.093 +1.15052 1.16223 +6.95959 7.35423 +7.69488 8.44145 +4.21694 5.65913 +3.10562 3.37534 +9.73437 9.78252 +5.0458 5.53479 +7.80485 8.5163 +2.0442 3.75748 +-0.459177 0.498702 +7.38032 8.32195 +0.909659 2.11175 +7.08657 7.56877 +1.84997 3.10206 +4.2517 4.53819 +6.71655 7.04117 +1.06604 1.29153 +2.69273 3.31633 +2.19732 2.84826 +-0.723032 0.774865 +-0.289734 1.44645 +5.87194 7.71917 +1.01576 2.83685 +0.981927 0.998558 +3.07172 3.73201 +-0.112577 1.12642 +3.54063 3.67007 +7.21571 8.53815 +0.109957 0.839052 +6.86046 7.17211 +9.40878 9.69478 +0.989391 1.69046 +8.22287 8.8147 +1.48203 2.83308 +5.86418 8.0993 +0.749797 1.09852 +1.82996 2.50847 +0.28178 0.496017 +2.60694 3.00872 +8.6254 10.1698 +6.11641 6.41537 +7.19529 7.21342 +1.8214 2.17517 +0.991201 1.3788 +2.84924 3.12362 +5.75821 7.13843 +6.7106 7.35932 +6.6055 6.6829 +7.97105 8.58613 +1.56087 1.95845 +6.36782 7.10926 +2.43382 2.74699 +7.40509 8.8029 +8.42459 8.63142 +6.26128 7.55043 +4.6465 5.4431 +2.93214 3.29517 +0.157602 0.545214 +6.05931 6.72188 +1.7908 3.11731 +2.39217 3.58736 +7.07421 7.43852 +8.13419 9.74991 +9.53094 9.65319 +2.35726 3.68679 +-0.108561 0.874853 +6.87136 8.84157 +3.40803 4.58835 +7.50448 7.89932 +4.29762 5.53867 +0.863755 2.30032 +7.24847 7.95342 +2.89618 2.98849 +-0.928261 1.61922 +0.974105 2.91262 +6.99271 7.25856 +3.60995 5.01832 +1.26865 1.79704 +9.62217 9.80719 +1.02656 1.35514 +7.16502 7.32934 +3.12092 3.28857 +2.81374 3.84317 +8.73626 10.7585 +3.36982 3.61446 +5.08437 5.78949 +2.90218 3.0862 +9.2309 10.2523 +5.0967 5.48926 +9.73088 9.92708 +1.54013 2.78301 +6.73707 10.0789 +6.41735 6.838 +2.57935 3.04287 +5.719 6.70352 +5.42474 5.62732 +4.23904 4.69787 +4.16528 4.28736 +7.73477 8.84143 +4.90346 5.87324 +5.1969 6.14087 +3.48793 4.14182 +0.648493 1.07987 +6.88101 6.97932 +7.67342 8.74418 +5.16759 6.3871 +9.16292 9.49569 +8.77422 10.4817 +-0.358149 1.04178 +9.54616 10.3424 +3.12027 4.26504 +3.81223 4.73004 +1.2386 3.32247 +8.21963 8.42629 +9.10312 9.51016 +6.96107 7.43045 +2.98587 3.12365 +0.198165 0.211424 +5.19716 6.10856 +6.10553 6.3327 +3.98176 5.11099 +1.02512 1.04242 +4.27949 5.71947 +-0.457956 0.538807 +7.99877 9.48581 +5.88782 7.73303 +1.21496 2.85825 +8.46962 8.7862 +9.50182 10.1527 +5.85223 7.76234 +2.48368 2.52439 +2.35426 2.77405 +0.397056 0.482679 +0.160423 1.15786 +4.47109 4.8633 +4.74523 5.84196 +5.39177 5.75218 +9.00754 10.3249 +3.74813 4.03273 +3.08633 4.08426 +4.62672 5.29012 +1.92055 3.01442 +3.79279 4.5603 +9.52431 9.68334 +2.8126 3.32592 +-0.313688 0.490785 +9.06695 9.36835 +2.60321 4.14185 +4.40231 4.99535 +9.32205 10.1041 +5.3879 5.44349 +0.308728 1.0956 +9.05758 9.08283 +1.90313 2.50914 +7.1391 7.59459 +7.47357 7.95993 +1.25267 2.34827 +3.33222 4.36522 +8.78126 9.38611 +0.635979 1.62283 +8.3492 8.57545 +-0.572557 1.60517 +8.28855 9.03937 +3.47934 3.90271 +4.64498 5.43501 +0.872177 2.62011 +7.3893 7.58876 +2.14063 2.88063 +1.69361 1.75261 +4.19727 4.86483 +0.814676 1.27639 +8.19899 8.58203 +8.3394 8.99896 +9.31768 10.1694 +4.99218 5.19949 +4.2459 4.75266 +9.6314 9.64249 +4.038 4.75708 +7.92398 8.8579 +4.30747 4.54161 +7.51776 7.78258 +3.77611 5.1385 +3.53275 3.90278 +1.78619 2.12474 +3.18736 3.55159 +8.36759 8.52587 +5.52526 5.7843 +7.64174 8.09773 +4.37925 5.85699 +3.94295 5.31298 +-0.464623 0.795523 +7.02408 7.7048 +0.0690458 1.0008 +1.05445 1.32797 +0.126093 0.712612 +-0.809973 1.33869 +3.45568 3.96532 +0.433875 1.78679 +8.94667 9.65034 +1.98575 2.76936 +6.47974 7.67912 +2.74186 3.34153 +7.82655 9.32112 +4.71441 6.14932 +0.741177 1.76987 +8.05021 8.23239 +0.818503 0.882959 +7.13341 7.43399 +8.45939 8.93395 +4.44558 5.70161 +3.05657 3.86962 +8.75469 8.85537 +1.0922 2.23475 +6.00278 7.51598 +0.0530968 0.582206 +4.01788 5.48223 +1.30808 2.81869 +8.18848 8.59771 +2.43691 2.80685 +8.54045 10.6178 +7.58523 7.91634 +6.70183 7.49962 +5.81501 7.29783 +0.661853 1.58021 +6.50997 7.20411 +0.334292 1.40252 +-0.329585 0.742961 +2.38756 2.48935 +2.78114 3.58788 +7.97227 8.55379 +3.36753 4.57472 +5.14486 5.31457 +3.99691 5.47708 +6.36404 6.8741 +3.22519 4.63321 +1.80583 2.21824 +8.20747 9.42947 +5.90819 6.94368 +6.58559 6.85933 +2.99108 4.03832 +7.20963 9.6252 +3.10244 3.87265 +7.23018 7.91389 +7.18084 9.61063 +6.74145 6.86507 +8.40721 9.5751 +7.12352 9.45614 +2.06653 2.51786 +4.9155 5.04183 +1.34304 2.92777 +0.571315 1.17285 +8.05396 8.28214 +5.29142 6.24974 +8.93797 9.23051 +4.6108 5.45568 +6.46124 7.53124 +3.16695 4.37505 +2.76803 2.82764 +4.1531 4.84927 +8.19433 9.00383 +5.12114 6.22952 +2.2542 4.74849 +0.621192 0.871537 +1.37403 2.28895 +0.305704 1.3287 +8.70471 9.53085 +2.29164 3.56607 +2.42106 3.37382 +1.14309 2.03085 +9.17624 10.3281 +1.88864 2.70161 +0.932647 1.2473 +5.72385 6.55694 +5.25496 5.38675 +5.85771 6.69626 +7.37247 7.93094 +7.73499 7.98782 +4.91417 5.27506 +3.51127 3.84403 +6.96198 7.27686 +6.51176 7.74735 +4.19954 5.08222 +1.58115 1.83842 +2.11889 2.3408 +1.94427 2.00422 +5.59977 6.86555 +9.46942 10.3491 +9.18904 10.1988 +1.71938 3.01547 +4.3515 5.4951 +2.53792 5.85188 +0.3884 1.36228 +5.02469 5.62368 +6.82402 7.72203 +-0.320478 0.821539 +0.0885656 0.248783 +3.01725 3.44385 +6.63776 7.74386 +6.57899 7.9332 +4.82656 5.18327 +3.91909 4.43955 +0.0708319 0.101395 +2.59796 4.22775 +-0.433109 1.26978 +-0.434274 0.624336 +3.22018 4.25282 +4.63351 4.776 +8.889 9.56332 +5.35952 5.46531 +8.73832 9.22756 +2.03432 2.34194 +0.477994 1.43353 +1.2029 2.86844 +5.09945 5.76855 +8.89076 9.01771 +5.30284 6.31732 +1.56375 3.17543 +5.4773 6.36897 +5.30934 5.35073 +7.20096 7.7075 +6.51046 7.12888 +9.37127 10.0531 +-0.0484323 0.348687 +1.83241 2.2143 +8.28633 8.60462 +2.51014 3.65817 +3.27798 3.58685 +1.41567 2.23302 +7.50794 8.10378 +-0.0579575 2.10373 +-0.856005 0.96621 +2.96238 3.48434 +1.36304 1.90594 +2.9997 3.41214 +7.2763 8.087 +1.69207 2.74419 +5.41625 5.83917 +9.22139 9.53794 +1.17477 1.51576 +6.74597 7.90871 +0.678913 1.73759 +5.70863 5.7214 +8.88411 8.93377 +3.44409 4.54586 +0.958963 1.53878 +8.29904 9.3867 +2.52433 3.60238 +8.16257 8.21986 +2.11395 4.23455 +6.85451 7.40364 +0.20286 0.639736 +2.05848 2.49034 +0.547013 0.77336 +7.83609 8.11903 +2.16539 2.29286 +3.94232 4.31368 +8.53475 8.54519 +4.77462 6.4158 +4.08395 4.68214 +1.56902 2.23811 +1.61337 3.11768 +1.51181 1.65521 +0.0821202 2.09269 +4.77622 5.16243 +4.62148 5.75837 +0.613158 0.952696 +1.89128 3.04792 +7.57509 8.92834 +2.70465 4.2941 +4.95906 5.12442 +8.0927 8.17277 +0.796512 1.3215 +5.74134 6.45291 +9.68479 9.78978 +5.89261 6.2292 +6.11377 7.9339 +2.20571 2.67129 +3.46228 4.27058 +5.26723 6.2653 +4.04391 4.26562 +0.380382 0.818995 +7.58108 7.7618 +5.02375 6.13042 +4.20178 4.66297 +2.83039 3.0221 +2.36072 2.45545 +6.68854 9.20726 +2.91388 3.42464 +9.33373 9.73449 +7.75844 7.94625 +2.72414 2.89669 +6.65438 7.96623 +1.00647 1.05385 +2.63018 4.9432 +0.152187 1.60259 +8.86332 10.3631 +2.31523 2.6815 +8.00509 8.61794 +1.69711 1.75938 +8.65442 8.73697 +4.23917 4.32001 +9.66851 10.1925 +6.93943 7.49814 +8.51986 9.03561 +2.10317 2.5175 +0.539549 1.75683 +6.29423 7.93236 +8.64345 9.54556 +1.44069 1.6814 +9.10017 9.77088 +6.16731 7.40496 +0.570043 1.93192 +2.65761 3.88544 +1.46895 1.52688 +-0.369067 0.540647 +2.04868 2.72065 +2.1286 2.27858 +5.90157 6.16431 +1.55581 2.51851 +3.29705 3.81635 +3.4137 4.10991 +8.48699 10.1364 +8.43437 9.4642 +-0.037842 1.47589 +0.541735 1.7805 +0.499576 2.36065 +4.1415 4.72435 +4.77598 6.16872 +3.30388 3.61854 +6.43796 7.85966 +5.27157 5.70871 +0.919258 2.18653 +4.00961 4.07902 +3.78201 4.23596 +4.50464 4.791 +3.70253 5.30916 +8.59228 8.70036 +4.31103 5.69049 +5.31775 5.34378 +2.24198 2.64194 +6.66937 7.41675 +7.21753 8.42057 +4.35399 4.52398 +6.90698 7.30084 +3.44296 5.44378 +3.36719 4.89951 +3.38624 5.33856 +3.44877 3.53693 +5.81398 6.3016 +7.24655 7.33127 +3.86142 4.53134 +3.85894 6.88112 +6.45704 6.95699 +6.90997 8.24088 +5.68813 5.7611 +0.699911 0.824323 +6.73758 8.42517 +9.34644 10.07 +0.289929 1.30554 +8.30644 8.49113 +6.47667 7.16073 +4.28093 4.90236 +8.32678 8.57064 +7.09205 7.92316 +5.55599 5.63919 +1.0104 2.22875 +1.72237 3.53668 +2.54699 3.14823 +-0.668582 1.25485 +1.25582 1.37003 +1.35044 1.57807 +6.17083 6.30811 +0.618816 1.20065 +-0.540992 1.21634 +2.06673 4.28857 +9.03398 10.8112 +8.73735 9.22814 +1.30178 2.7599 +6.0221 7.34889 +8.30124 8.52159 +1.92023 3.34545 +2.99331 4.93358 +3.8412 3.93379 +1.455 2.77005 +0.538664 2.1118 +4.16926 4.26053 +0.699746 0.937609 +6.36024 6.6511 +2.34698 4.84463 +8.11109 8.76496 +4.05425 4.67773 +8.2284 9.78568 +1.64423 1.80353 +5.70109 6.93764 +7.2091 9.67224 +4.47015 5.23311 +4.29326 5.36144 +7.93151 8.96494 +4.61889 4.96487 +5.38473 5.43594 +9.35456 9.66489 +1.23737 3.04121 +1.16077 1.19519 +5.91037 7.55679 +6.88344 7.60181 +6.39705 8.65039 +1.61791 2.93041 +9.68285 10.1396 +9.03129 9.05839 +7.0683 8.29875 +7.19624 7.41696 +7.5266 8.38738 +-0.254571 1.01098 +1.30218 2.03222 +7.6432 7.73031 +4.99495 6.04757 +2.79394 3.29394 +0.31505 3.55963 +7.55382 8.18787 +6.00032 6.27664 +1.49355 1.79767 +5.21191 7.19537 +3.47816 3.75801 +2.10272 2.39494 +1.31887 1.93829 +7.14313 7.63055 +7.3141 7.77239 +6.03409 6.17265 +4.24946 4.53165 +0.0569272 2.56109 +8.44766 11.4872 +4.22879 4.28007 +6.92817 6.98775 +8.08859 9.0206 +-0.0748418 1.48605 +6.56698 7.0488 +4.46624 5.4952 +3.66085 4.05778 +6.44711 8.93943 +2.45735 2.49339 +0.0606673 0.416191 +-0.183838 0.750464 +7.08561 7.67275 +6.65423 6.90808 +0.0598735 0.364072 +5.2228 5.41543 +3.14042 3.19043 +2.40069 3.02829 +1.80441 2.1849 +3.47491 3.95775 +5.49162 6.63934 +2.03332 2.32288 +3.17234 5.25109 +2.58274 2.59951 +9.37994 9.97097 +4.71509 6.77966 +5.18915 6.84982 +6.12508 7.04354 +0.811202 1.98808 +1.46825 3.66984 +2.44386 4.15623 +7.60169 7.68242 +-0.43208 1.22222 +5.40569 5.66153 +0.391742 1.79408 +6.77742 8.43115 +9.12828 9.3851 +6.39541 6.80626 +5.17919 6.29326 +6.57263 8.12999 +3.439 4.62236 +8.40525 9.80086 +7.60986 7.70099 +1.32123 1.44213 +0.526574 1.92338 +9.57195 9.79591 +9.52103 9.63159 +3.79775 4.20608 +4.74446 4.89606 +9.00085 9.60025 +1.26279 2.08363 +4.13639 4.49232 +6.59409 7.18315 +1.0637 1.78425 +5.4213 6.87661 +4.24407 4.30987 +9.79732 10.1204 +4.24597 4.83541 +8.47705 8.5145 +4.34095 4.93842 +5.68168 6.96086 +7.48654 7.91072 +8.32005 8.45111 +5.24065 5.3032 +3.25982 3.94442 +5.58106 6.18764 +4.4243 5.58619 +6.36467 7.07082 +2.70051 3.56014 +5.94534 6.87688 +7.33638 7.7645 +4.57067 5.86652 +7.83993 8.36854 +9.03617 9.11629 +7.44672 7.95614 +6.05876 6.3594 +4.02496 4.97119 +3.01438 4.36109 +7.4932 7.92357 +7.51661 7.53354 +7.60692 8.49678 +1.76088 2.59103 +7.08578 7.39566 +4.83605 5.42933 +-0.186592 0.847663 +1.15879 2.33996 +8.11815 9.35472 +6.02584 7.62549 +0.881084 1.00015 +5.39067 6.27026 +0.910755 0.97444 +5.32174 5.65652 +7.69388 8.24928 +3.40521 3.7615 +5.60321 6.92388 +8.25096 8.34324 +0.00108913 2.16897 +0.508035 0.66573 +-0.0517816 0.0876197 +3.26472 4.30955 +1.99494 2.14903 +2.089 4.32368 +5.17378 5.75964 +2.8779 3.54361 +6.56459 6.90645 +1.43196 2.88337 +1.48917 1.94009 +3.40807 4.25784 +8.0334 8.13458 +8.22254 9.6175 +2.96308 3.14349 +5.04768 5.71252 +3.9977 4.72614 +1.44384 1.60782 +7.78147 8.19817 +7.03854 7.50085 +5.90747 7.06091 +2.89169 4.31831 +2.46167 3.16529 +9.13228 9.1504 +2.57975 3.05313 +5.75976 6.52958 +8.10499 8.98982 +8.43162 8.76377 +0.422917 0.668254 +1.69046 2.09962 +5.50386 6.66954 +0.0897183 0.564514 +3.50103 4.1041 +3.91918 4.52559 +4.39297 6.18876 +3.90396 4.90868 +9.69362 9.85528 +6.27994 6.95062 +8.01563 9.09433 +8.25641 9.72944 +8.22072 8.35423 +1.27059 1.61352 +8.53312 8.96235 +3.49185 3.9042 +5.79579 6.046 +0.489013 1.2147 +4.00074 4.177 +2.66625 2.93036 +7.20267 9.34958 +7.44659 8.54707 +8.99915 10.1143 +7.59922 7.82031 +8.38502 9.03222 +0.160075 0.294398 +4.14549 4.3927 +9.35554 10.248 +-0.159435 0.467922 +2.17272 3.72336 +8.63811 8.79976 +4.23215 4.66461 +6.99516 8.2035 +6.45212 7.88791 +6.20141 6.28633 +7.69396 8.82204 +4.50807 5.96315 +8.51725 8.89286 +0.939492 2.12064 +7.4615 7.62666 +8.46681 9.11769 +3.92828 5.40884 +9.05622 9.40015 +0.229625 0.860838 +2.05694 2.52113 +-0.217927 0.574255 +9.55146 10.3256 +8.31497 8.3417 +3.52833 4.47013 +7.7131 8.52058 +2.15462 2.66777 +5.7674 6.17553 +3.3358 4.10589 +2.06642 3.00412 +2.43387 2.85242 +5.09473 5.84276 +7.3287 7.54846 +4.64254 5.11465 +4.05785 4.93614 +4.25413 5.43513 +2.96476 3.15378 +3.53732 4.48239 +2.34137 4.01272 +2.24879 3.40626 +3.43323 4.49055 +0.871415 1.33068 +0.508929 1.65611 +4.92057 4.94743 +7.03376 7.35193 +5.73043 6.47264 +7.82417 9.93642 +5.24102 5.9178 +2.38528 4.1676 +6.27437 7.19631 +9.29267 9.53262 +4.10098 5.24964 +0.383714 0.833317 +5.97628 7.92987 +8.15799 8.96819 +8.1687 8.29862 +8.16289 10.5149 +7.38205 7.89765 +3.81883 4.15607 +9.46915 9.61755 +1.50756 1.51863 +2.34236 2.84689 +0.398473 1.15027 +1.05302 1.49155 +8.71687 9.35232 +1.0502 1.40395 +7.83685 8.76302 +7.7731 8.46899 +5.56618 5.97458 +2.90035 4.12043 +6.40644 6.68706 +3.95201 4.37075 +7.1831 7.67748 +9.42789 10.0914 +5.45198 7.01256 +8.64609 9.45756 +6.01864 6.31515 +7.64621 8.65533 +5.45654 5.76553 +2.04332 2.75476 +5.49454 5.85693 +6.13688 6.21927 +2.66255 2.7385 +4.8326 6.43772 +9.12704 9.45287 +-0.294488 0.318697 +2.26979 2.35516 +4.12949 5.58506 +3.01416 3.62246 +6.64697 7.10221 +6.44307 6.82985 +4.10484 4.73148 +7.42589 7.6029 +5.33055 5.50395 +2.46474 3.05847 +5.43677 5.59206 +2.13807 2.3988 +-0.38424 1.8121 +0.00916704 0.219304 +8.62621 10.2262 +3.33927 4.51169 +5.45656 7.13165 +5.29253 6.57917 +3.51704 3.9421 +8.63729 9.13361 +3.92626 4.3469 +6.83104 7.52695 +1.22258 2.28191 +0.447646 0.789809 +7.96543 8.54328 +2.24269 2.42571 +4.4161 5.40481 +0.813992 2.21792 +0.694664 0.974182 +6.50017 6.88902 +4.00723 4.65882 +9.05784 9.85062 +6.80276 6.98196 +0.105446 0.379881 +0.416982 0.53336 +9.01269 9.55204 +3.27197 4.23315 +6.7017 6.89704 +4.21512 4.42378 +4.86735 6.90949 +4.52235 5.36878 +2.62205 3.55746 +-0.551048 0.555476 +1.63274 2.71251 +4.26739 4.88085 +8.23129 9.77405 +2.49409 3.96851 +6.66387 6.88886 +7.72383 8.90611 +3.18511 3.27281 +0.73722 1.64435 +7.90329 9.02868 +6.94845 7.06773 +0.509461 1.54928 +4.63885 5.51652 +9.24395 9.5121 +1.00007 1.57161 +5.31349 5.45437 +0.929284 1.71034 +7.05985 7.63288 +7.38418 7.45373 +4.14937 6.5167 +7.49989 8.6081 +9.28313 9.57721 +4.41285 5.1497 +2.96148 3.09221 +1.58256 1.66419 +4.45116 5.43488 +5.70927 7.11699 +3.61105 3.93153 +5.92285 6.63773 +3.50065 4.48453 +7.97338 8.96464 +0.541394 0.965435 +4.46469 5.03925 +7.33695 7.6484 +9.64234 9.6938 +4.16378 4.17886 +7.10741 7.31549 +1.51829 2.62477 +2.1892 2.9684 +9.23767 10.0462 +7.87649 7.97087 +7.05385 7.85952 +6.91232 7.50277 +6.60185 7.81572 +2.27112 3.90211 +5.74452 8.2018 +6.25117 6.26911 +0.525893 1.53447 +0.392956 0.959233 +3.51591 4.71055 +3.10449 5.41156 +7.35964 7.65642 +2.89831 3.54334 +3.42338 3.68259 +4.75496 5.51419 +3.8792 4.48395 +2.18007 4.13236 +3.15798 3.16864 +8.91248 9.21598 +8.54636 9.34037 +7.93697 9.79709 +6.40205 8.9653 +9.67332 10.2252 +4.31771 5.25423 +7.27485 7.3725 +6.22971 7.11411 +1.16538 2.16762 +1.40443 1.6876 +3.14915 4.58847 +7.13761 8.72165 +4.38448 5.88699 +7.98309 9.19449 +8.491 9.05597 +5.55043 6.19359 +2.44006 3.36071 +9.56522 9.79903 +1.86129 2.00225 +1.65239 2.11478 +7.59392 8.4655 +2.44709 2.68538 +6.80932 7.04694 +8.8212 9.4182 +0.276845 0.956468 +8.17008 8.5538 +0.77864 2.06897 +6.78458 7.68692 +0.504907 2.67518 +5.56963 6.9058 +3.42691 3.5414 +2.52065 2.71583 +5.09924 6.26696 +0.223724 0.610039 +3.61258 5.29324 +0.388393 3.11131 +2.87763 4.45415 +8.26438 10.1169 +5.89742 8.17506 +1.89686 2.66651 +5.33662 5.68228 +3.37496 5.67291 +2.25713 2.36127 +0.402185 0.716342 +6.4231 6.79227 +3.22707 4.69314 +7.85092 8.77413 +3.31322 3.72455 +5.43021 7.7167 +8.5883 9.00864 +1.21371 1.71836 +6.35584 7.9706 +5.44438 5.50414 +5.31325 6.11217 +6.08888 6.78794 +7.70604 8.13257 +1.29858 2.48753 +5.54083 6.38817 +8.23948 9.82646 +7.5575 9.0224 +8.00415 9.39763 +0.488455 1.55358 +4.48727 5.20741 +6.46648 7.02349 +0.355939 0.611119 +9.4892 10.2189 +2.61893 2.82832 +0.268193 1.24687 +3.01964 5.19554 +6.29954 7.42795 +8.70796 9.48366 +5.39307 6.64597 +2.47001 2.60746 +5.30949 7.46529 +6.07973 6.16835 +0.764507 1.6144 +7.94123 8.52143 +1.88244 1.96592 +6.42103 7.02205 +7.673 7.73208 +6.66891 7.80675 +6.9305 7.5431 +6.62335 6.93873 +4.34846 5.77621 +0.49878 2.82928 +2.65221 2.80109 +7.45348 7.74372 +4.10129 5.26894 +3.87782 4.19855 +4.62113 5.22658 +2.84558 2.88185 +2.53209 2.86065 +8.94932 9.21967 +6.48046 6.89614 +5.81885 6.66829 +6.49129 6.62015 +8.5663 9.58685 +2.43346 3.89849 +9.36561 9.45886 +1.40232 2.65 +6.66 6.74041 +2.87007 3.49668 +4.71138 6.0184 +5.03638 6.08494 +7.77735 8.14253 +1.0301 1.27179 +2.58337 4.04699 +6.95419 7.89775 +7.81164 8.62551 +3.37669 3.96217 +4.68541 5.58692 +4.79697 6.34841 +3.95334 4.81962 +9.44006 10.0941 +4.91098 5.12386 +8.44273 10.1565 +3.6685 3.73156 +5.07599 5.33357 +-0.138235 0.260923 +2.71154 3.45603 +5.75096 6.16127 +4.4775 4.64308 +6.80557 8.97442 +5.49408 5.76652 +8.31937 9.12886 +3.26479 5.51673 +2.57425 3.03145 +2.42465 3.92714 +7.86505 8.50835 +3.29229 3.43549 +4.08537 4.69709 +7.83885 8.60616 +1.61622 2.72716 +9.10228 9.41907 +8.49325 9.46612 +-0.174644 0.351716 +1.95648 2.14825 +8.28844 8.4428 +4.35888 5.59521 +5.1396 5.22537 +0.330835 0.879566 +6.14972 6.82967 +3.14811 4.89049 +-0.231668 1.08277 +3.13526 4.94545 +8.32674 8.91046 +5.22364 5.48006 +9.84318 9.88416 +-1.07813 1.6965 +1.5095 2.0328 +8.03716 8.2792 +-1.01307 1.46703 +8.22096 9.0055 +8.9917 9.0415 +5.60623 6.74537 +3.15991 3.19314 +3.13863 3.26451 +0.739618 0.896958 +0.67599 1.18486 +3.37355 4.06303 +0.38605 0.410067 +3.03297 3.46387 +3.45867 3.79806 +8.67249 9.53278 +-0.213855 0.787363 +1.52316 2.61117 +8.31846 8.59736 +4.84685 4.94042 +7.41901 7.82623 +4.99029 5.09747 +5.3637 5.37612 +3.22123 4.77749 +3.21668 5.74743 +3.48748 4.59962 +8.00016 8.56269 +1.63631 2.42239 +1.05159 3.72319 +7.22643 7.95706 +5.65694 5.99195 +9.4469 9.66915 +0.857984 1.59867 +4.05869 5.69955 +2.65788 3.07259 +1.8038 3.38748 +3.91934 4.89922 +6.18534 6.70342 +2.85076 3.20176 +8.1897 9.9614 +0.685531 2.05322 +3.31097 4.00809 +8.26537 8.63475 +2.90508 4.07797 +1.25213 2.31285 +3.05752 4.03741 +-0.481913 0.605629 +1.87958 2.19386 +7.28689 7.76316 +4.82075 5.20688 +-0.08115 0.31839 +3.50085 5.89363 +1.31184 3.30269 +4.03137 4.81493 +6.11688 6.13923 +7.93584 8.43321 +4.9838 5.3733 +3.8174 4.11979 +8.56196 9.02824 +2.87809 3.89589 +7.95309 8.05432 +3.47469 3.63716 +6.61009 7.12576 +8.87374 9.79588 +7.31513 7.99089 +5.78084 6.68535 +4.96985 5.59877 +2.20236 2.52473 +0.661014 1.11035 +6.36183 6.58403 +6.67947 6.85093 +-0.242005 0.513902 +0.442966 1.72024 +6.4587 6.74016 +6.67958 8.0837 +8.98524 9.56405 +6.91409 7.59877 +3.73596 3.97705 +5.51193 5.96437 +3.72029 4.50126 +3.09896 3.23616 +8.83312 8.91774 +0.32173 0.486199 +4.21092 4.59955 +2.61616 4.07081 +1.89049 2.65559 +4.96401 5.00629 +9.33156 9.70914 +3.72455 4.61054 +8.91265 9.6563 +7.12401 8.04324 +6.65393 7.25572 +1.04032 1.24927 +3.0174 5.56006 +1.47645 2.26867 +3.49833 4.37416 +6.16877 6.34452 +6.47417 6.90595 +4.27056 4.92535 +7.60439 9.35352 +0.426219 0.754405 +8.5291 8.68579 +5.84717 6.64632 +1.99513 2.5284 +5.10669 7.83064 +6.99006 7.37272 +0.871836 1.5934 +3.6572 4.38875 +0.154617 0.290737 +5.91634 6.50415 +5.33982 5.45293 +6.92602 6.94691 +0.349512 1.61427 +8.02048 8.99943 +5.75598 7.34946 +5.86948 6.51327 +5.11707 5.6181 +6.27656 7.10043 +8.48922 9.73833 +8.35863 8.69746 +6.67829 7.07852 +8.51257 9.50383 +3.76636 4.33757 +4.82804 5.57166 +5.17892 5.61254 +1.35188 1.94069 +6.04969 6.06833 +5.34181 5.82455 +5.71714 6.71234 +0.966462 2.56278 +7.95169 8.15951 +6.53583 6.89673 +6.73246 8.34493 +8.71111 9.76467 +7.53215 9.56537 +0.619041 0.736713 +9.24399 9.50151 +8.57184 9.88538 +2.82682 3.77294 +4.2649 4.84602 +8.6621 8.96426 +8.04469 8.3189 +7.81877 8.42944 +2.78031 5.16589 +1.23076 1.43577 +8.35385 8.49632 +3.27901 3.66774 +0.595941 1.41354 +3.37123 5.16685 +9.11003 9.95515 +-0.25959 0.32069 +1.44153 1.70148 +1.61595 1.70799 +7.8201 8.53423 +8.5402 9.36947 +8.39125 9.8221 +6.2909 6.35773 +0.000933745 0.920054 +-0.21358 0.491025 +4.00874 4.03866 +3.43552 3.55874 +7.85942 7.98987 +7.6681 8.06748 +6.19541 7.14765 +8.53891 8.96393 +2.38789 3.26866 +-0.0162847 1.18379 +1.04764 1.52755 +0.400798 0.55475 +6.32001 6.94897 +5.9692 6.2012 +1.20784 2.67873 +3.58247 4.46372 +-0.229647 0.559407 +5.65979 5.73489 +2.32795 2.78462 +0.706144 1.55147 +4.56527 4.6636 +5.98901 7.20908 +9.27329 9.95152 +1.31296 1.70529 +5.82933 6.41329 +4.17452 5.29881 +4.15885 5.25117 +0.35549 1.3511 +1.0591 2.4463 +8.87597 9.55625 +6.66826 8.57255 +0.355945 1.40613 +5.39729 6.10218 +3.78791 4.37501 +9.53885 9.87184 +2.67568 2.82552 +4.44836 4.52939 +5.96764 7.40168 +6.35578 6.98546 +0.636857 1.19517 +3.3986 5.55448 +1.46493 2.66884 +-0.0676901 1.80921 +7.83396 8.53452 +8.3508 9.04561 +4.03407 6.0066 +0.997538 3.30635 +7.83064 8.03466 +4.57652 4.97461 +3.85952 4.15471 +0.960261 2.1069 +0.522458 1.52989 +8.81627 9.00768 +0.172256 1.29455 +5.69294 6.15752 +6.86391 7.75307 +2.32429 2.95415 +1.83191 1.90364 +0.400855 0.705649 +5.23264 5.39972 +5.19047 5.79842 +2.40804 2.89401 +0.462887 1.43874 +6.70213 7.90229 +4.37985 4.95797 +3.73768 4.30645 +0.756797 2.11146 +0.458724 0.472099 +3.93098 6.47147 +5.5294 6.00365 +2.97106 3.42174 +5.75875 5.80235 +7.96799 9.02105 +5.36254 7.22823 +6.56124 7.39973 +9.49234 9.57879 +2.87576 3.59509 +3.49182 4.28124 +8.68021 9.94486 +9.60199 10.1276 +9.70115 9.81776 +3.09609 3.98732 +5.00113 8.15031 +5.21248 5.74835 +9.23337 9.5696 +2.92777 3.56297 +2.52044 3.04905 +4.79908 5.05762 +1.98626 3.69659 +4.78726 6.20637 +7.39711 7.42831 +4.44319 4.78716 +9.28452 10.0832 +8.00774 8.85707 +9.22947 10.0523 +4.38653 4.86012 +5.15285 5.23106 +8.95413 9.75947 +2.90286 3.32407 +0.348694 1.39738 +-0.0660432 0.293424 +4.09079 4.2922 +6.0407 7.23031 +2.83771 3.72237 +8.54697 9.38898 +2.16742 3.45018 +8.83255 9.30343 +3.59112 3.6531 +7.53452 7.81898 +7.11781 7.19773 +8.2892 10.0259 +4.91072 5.06031 +5.8232 7.25924 +7.0641 8.31604 +9.477 9.63892 +5.8003 6.58306 +9.63988 10.2754 +0.654364 1.02398 +5.9488 6.85043 +7.86867 8.99891 +9.202 9.46902 +4.17932 4.20271 +6.50328 6.71085 +7.19848 8.15579 +5.62459 5.75449 +-0.159668 0.791409 +7.55683 8.7315 +1.03278 1.423 +0.751457 0.808785 +6.2203 6.50634 +1.64418 2.98238 +6.87468 7.00652 +6.36966 6.7117 +7.69893 8.89535 +0.419794 1.05032 +2.73928 4.31548 +0.409245 1.55228 +6.03905 6.39323 +0.409695 0.789834 +4.39148 4.40935 +1.14673 3.23607 +5.85562 6.44503 +6.87394 6.88742 +3.761 4.35136 +7.2208 8.01436 +6.49839 6.54002 +4.70791 5.91886 +4.24906 5.96619 +2.53482 3.91496 +-0.369254 0.69193 +4.81351 6.31088 +9.76066 10.0736 +1.4413 1.55942 +7.21917 8.88908 +6.03521 7.56826 +1.25568 1.42024 +5.47575 6.04431 +1.43099 1.99979 +5.1004 6.04088 +6.54798 6.56118 +1.0142 3.1564 +1.75267 2.1453 +1.28133 1.36044 +9.60996 10.0563 +1.14397 1.50247 +6.86688 7.08724 +8.38287 9.18041 +0.132076 1.27657 +6.52553 6.9301 +0.223917 1.41325 +1.18902 1.79753 +1.40084 1.75678 +1.94524 2.51929 +1.98276 2.62875 +0.763281 1.05483 +7.97952 8.51249 +1.059 3.05463 +5.33401 5.85094 +8.37442 8.64374 +6.62865 6.67315 +1.01707 1.64386 +0.113335 2.23523 +6.71906 8.00216 +-0.886574 1.29366 +4.20078 4.85294 +8.43336 9.06988 +3.55413 4.40768 +6.69076 9.01132 +6.18982 7.14109 +7.14381 7.7046 +8.63195 9.47031 +8.88052 9.84886 +3.34443 3.62637 +4.5862 4.72832 +4.95757 5.23571 +2.85993 4.04966 +1.43846 2.27425 +5.43112 6.30496 +-0.452609 1.55525 +7.17706 7.71287 +5.78537 5.79579 +8.51102 8.9466 +-0.472904 0.810489 +3.83688 4.24045 +8.04432 9.04582 +1.57259 3.37136 +1.22231 1.33582 +5.73006 6.26477 +2.90855 4.22125 +9.39717 9.4287 +3.63873 4.16094 +0.442035 2.08889 +0.294491 1.31124 +3.14755 3.86305 +6.57634 9.44898 +2.19051 2.41878 +4.99277 5.12569 +4.10425 4.9423 +4.83547 5.62769 +5.73879 5.78179 +8.90329 9.81905 +5.60168 6.17538 +5.83843 6.66128 +1.84271 2.57406 +3.01047 3.33662 +2.85037 3.79158 +3.49007 4.46877 +8.58942 9.51529 +0.613753 1.12824 +8.23757 9.54707 +9.27134 9.4196 +6.27126 6.56417 +2.17206 2.33018 +3.53588 5.17162 +8.6312 10.0868 +5.76342 6.66164 +9.01501 9.90984 +3.22004 4.18954 +4.37918 4.68595 +2.00928 3.49815 +6.64229 7.06693 +2.85962 4.58794 +8.45587 9.8897 +2.8481 3.65956 +8.65849 8.67336 +6.48486 6.58637 +5.82336 7.45254 +4.02267 4.59696 +2.24997 2.83815 +8.16201 8.55518 +7.40645 9.07085 +1.43137 1.50333 +8.7212 10.9419 +1.50523 2.44124 +1.92455 2.85819 +4.50866 4.53052 +5.75781 5.81275 +1.71013 2.0282 +9.31592 9.9015 +6.14972 8.18798 +1.85705 2.20068 +4.80971 5.10509 +3.31201 3.58168 +8.61824 9.31861 +7.19497 7.86933 +3.25381 4.53472 +5.62799 6.29537 +9.00659 10.021 +9.15156 9.74827 +2.0324 2.80741 +0.714403 1.00476 +1.26522 1.80417 +-0.362995 0.41758 +7.08785 7.71544 +5.55685 5.74045 +0.428866 3.03773 +7.61574 8.94894 +9.07256 9.69772 +4.49537 5.06822 +5.66388 6.48899 +1.69126 2.69607 +9.90539 10.0783 +6.56455 8.27128 +6.61988 7.86616 +7.42012 7.64493 +2.99922 3.35282 +4.69379 5.18947 +0.87894 1.30518 +9.47632 9.61234 +0.665754 0.855958 +-0.422778 2.11197 +3.38786 4.15441 +7.57236 8.75855 +1.89832 3.50224 +-0.185929 1.0777 +3.32911 5.53465 +6.91111 8.69247 +6.97456 7.86905 +4.75518 5.0948 +4.23733 5.83368 +8.52456 8.56086 +0.0978267 0.136564 +7.4668 7.99757 +5.52851 5.80858 +8.5833 8.88589 +5.10603 6.41348 +4.70682 6.59981 +8.60265 9.19477 +5.04514 6.24014 +4.49041 4.88669 +7.40925 9.15624 +0.80364 1.35315 +7.11604 8.01153 +0.267749 0.714089 +0.121521 0.822226 +9.30556 9.81307 +2.11398 2.92567 +5.97722 6.08022 +7.13483 7.22211 +8.00161 9.27274 +4.87681 5.51654 +3.11843 3.84311 +5.17747 5.98482 +3.6077 4.46306 +1.37454 2.2443 +4.93385 5.96357 +2.92184 4.0964 +4.88767 5.56353 +2.87394 3.76336 +0.326521 0.622872 +2.42056 2.45007 +-0.527891 0.827211 +6.73151 7.20155 +1.82048 2.54905 +1.35563 1.88701 +3.64202 4.10669 +5.22846 5.23953 +6.06271 6.46993 +2.71418 3.2081 +6.41179 7.57176 +7.45823 7.79609 +1.01227 1.39137 +9.0872 9.20132 +5.083 5.64038 +5.63236 5.97945 +-0.317645 0.822313 +0.865396 2.65587 +5.71839 5.98983 +1.50978 2.08611 +2.95824 3.70996 +0.264301 1.02233 +8.22351 8.98589 +4.87805 5.24127 +2.31329 3.46752 +6.19539 6.69676 +5.18643 5.40947 +7.15453 7.66643 +1.20694 2.25111 +7.87378 7.89093 +5.16514 5.604 +8.68354 9.01395 +7.33753 9.37499 +2.94627 4.06036 +8.64337 8.85727 +0.0353092 1.0128 +6.98437 7.35718 +6.77073 6.79959 +3.13559 3.70735 +7.40139 8.27017 +4.01174 4.39788 +3.22281 5.11647 +7.79256 8.58737 +0.642233 1.39694 +7.18603 8.69453 +3.37803 3.59355 +0.762287 0.84262 +4.21823 4.52565 +0.894924 1.35434 +0.844327 1.19938 +5.57958 7.05431 +-0.631066 1.55134 +3.78962 4.17935 +9.15329 10.4824 +5.47536 5.52975 +8.81243 9.16088 +4.45989 4.94123 +8.68235 9.45112 +8.04719 10.3938 +8.87349 9.40483 +0.502543 0.570283 +2.08512 2.47652 +-0.654512 0.804355 +3.68569 5.21711 +5.33017 5.80226 +3.44991 5.31415 +-0.00417763 2.95077 +7.17784 7.9318 +1.2721 1.31642 +5.24415 5.64173 +2.79434 3.28746 +4.54991 6.49276 +4.74707 5.12555 +7.36365 8.15777 +0.913049 1.79828 +1.47498 1.83425 +2.64271 3.38567 +4.78159 5.44718 +7.6087 7.66442 +-0.484393 0.909893 +3.16824 3.23757 +4.43021 5.90284 +4.25954 4.74995 +6.58742 7.24125 +1.86151 2.27069 +3.16459 4.5945 +1.06471 2.08965 +3.31028 3.83029 +1.52593 2.47521 +0.703789 1.42451 +1.47969 1.68923 +2.92352 4.24089 +9.84088 9.93485 +3.18205 4.27817 +7.39345 7.78945 +3.78808 5.41572 +4.38624 6.75693 +6.93065 7.16977 +1.01289 2.19807 +3.37006 3.54196 +5.50238 5.58285 +-0.225113 1.99347 +1.67796 1.86943 +6.1999 6.35102 +3.80494 4.74814 +1.13294 2.02639 +1.1965 2.6548 +-0.284453 0.856092 +4.26565 5.02196 +9.66948 9.88874 +6.20287 6.25528 +4.38154 6.65806 +3.77411 4.3075 +5.77177 6.78486 +9.16311 9.816 +3.22861 3.42009 +3.36573 4.34724 +6.76951 7.58025 +4.83813 5.23042 +3.87192 4.37372 +5.56859 5.90066 +-0.368163 1.4593 +5.44031 7.81671 +2.66342 2.99253 +6.11846 7.69499 +4.98811 5.17531 +4.45078 4.67513 +4.88206 4.94128 +2.51813 3.0268 +0.461292 1.15264 +2.34766 4.48652 +0.198819 2.23425 +6.85634 6.98248 +0.912438 1.81872 +4.84933 6.34912 +5.15613 5.82891 +0.172772 0.994083 +3.37381 3.64549 +1.98836 3.2697 +1.64344 2.06049 +0.766585 3.09305 +7.8979 8.28046 +4.34856 5.01341 +6.69809 7.24239 +5.19034 7.04959 +5.3747 6.92123 +7.8893 10.1251 +6.11207 6.99125 +5.37115 6.84111 +9.04786 9.11002 +6.45326 6.64415 +-0.76294 0.92832 +0.980411 1.8166 +3.05536 3.50031 +6.10827 7.55786 +6.57848 9.06264 +7.66855 8.861 +4.80276 4.82283 +1.99932 3.2877 +9.45229 9.80653 +0.457474 0.778684 +5.44444 5.95239 +5.60974 8.05169 +7.64656 7.79632 +6.78372 7.65134 +6.93878 7.82023 +9.08292 9.55308 +9.16329 9.25802 +1.4909 2.38688 +4.31881 5.3564 +5.12535 5.60119 +2.44591 2.54637 +7.36929 7.80452 +2.13707 2.97655 +9.73557 9.94588 +1.96637 3.36097 +0.857068 2.29643 +5.58224 5.91142 +8.90714 9.0255 +9.77988 10.0711 +0.41121 0.970955 +-0.518356 0.91447 +7.58725 7.71255 +8.1435 8.78712 +6.5487 7.17991 +4.94961 5.50283 +8.14086 9.03281 +3.51281 5.24806 +3.5786 3.84066 +6.27435 8.37735 +8.65263 9.5555 +2.87484 3.56117 +5.57707 6.55879 +-0.111276 0.264178 +3.60894 4.15477 +2.82322 3.64397 +8.40669 9.1127 +8.43089 10.5298 +1.38472 2.2453 +1.74464 2.00472 +4.01588 4.67572 +0.408869 0.938602 +2.06155 3.46067 +4.4871 5.08963 +2.4435 3.87355 +1.32864 2.55801 +4.78579 5.26122 +7.43027 7.57749 +6.90971 7.32716 +8.01095 9.46872 +9.41627 10.524 +8.83143 10.4474 +0.631816 1.75513 +1.72965 2.17123 +-0.513239 1.1886 +6.75616 6.7984 +2.49278 4.26493 +0.230011 0.966298 +3.78506 4.95013 +2.03886 3.14808 +7.87309 10.5637 +3.54564 3.58055 +1.91974 2.9194 +4.8503 4.98668 +4.66494 4.83558 +7.57916 8.24358 +4.78743 5.38547 +2.81034 3.34534 +1.00297 2.0138 +6.87593 7.17736 +3.93157 5.0655 +3.10361 4.05519 +8.22876 8.38326 +7.48377 8.31026 +2.23106 3.4905 +0.130934 0.606709 +1.22344 2.55898 +7.55829 7.92597 +4.10977 4.86263 +0.122756 0.264176 +3.8357 4.15854 +1.28414 2.13031 +0.280029 0.805504 +2.88245 4.1704 +5.57936 6.94781 +6.22719 6.33201 +-0.761013 1.16475 +6.16636 7.12566 +2.98935 3.192 +2.23263 2.34362 +3.9082 4.11692 +2.66865 3.5275 +1.87676 2.43966 +4.60035 5.39332 +2.74287 3.73097 +2.81953 3.96666 +5.73644 6.04042 +4.02179 4.52419 +3.26438 4.07346 +1.22509 2.13719 +7.91885 9.71846 +1.28152 1.48079 +7.97918 9.26344 +8.75682 9.8677 +7.25678 7.45362 +8.16161 8.87066 +1.21873 2.37224 +7.76739 9.06346 +3.89932 5.03406 +3.53901 4.37006 +2.93795 4.04333 +6.36543 6.72985 +4.72622 4.98804 +1.86205 1.99008 +0.784581 2.05264 +0.978519 2.91723 +3.9067 6.47195 +0.735425 2.38151 +8.37394 8.41609 +6.91804 7.23374 +9.39259 10.1026 +7.28732 7.43466 +4.75982 5.44264 +6.71504 7.53933 +2.17125 2.54358 +0.703562 1.39087 +-0.221711 0.541965 +9.22839 9.39159 +9.53465 9.97585 +1.44304 2.53666 +7.886 8.85051 +9.33174 10.1632 +2.60898 3.42889 +1.73658 2.02589 +6.31651 6.77762 +7.26755 8.34499 +9.01312 10.9837 +7.47361 8.96251 +7.98365 8.02586 +1.40065 3.44891 +9.44617 9.55391 +8.24265 9.34849 +9.366 10.4216 +0.375354 1.17522 +3.37114 3.38278 +-0.742469 1.07634 +4.29988 4.81879 +4.18605 7.21928 +7.41047 8.29198 +6.68173 7.60225 +3.24292 3.30695 +1.8951 3.42167 +3.97359 4.2857 +4.72621 5.80575 +4.75014 5.02239 +6.43454 6.94568 +7.16601 8.10355 +2.16685 2.23666 +6.70852 8.63284 +8.16988 8.95848 +0.277002 1.30648 +1.5803 2.28632 +2.22634 2.34679 +0.200623 0.814959 +5.27457 6.51651 +2.49533 2.90705 +6.48922 6.69528 +8.18879 8.63551 +2.75159 3.633 +0.884853 1.56434 +1.87488 3.98951 +4.24783 5.17713 +6.22499 6.56095 +5.68238 5.99272 +3.75553 3.85012 +4.87543 5.39966 +6.62671 8.72493 +3.50262 4.05131 +5.38952 5.4974 +7.84971 7.94051 +5.39123 6.66564 +5.43986 6.17256 +7.48968 7.7677 +4.2685 4.57296 +1.75169 4.11058 +5.03634 5.16102 +4.68003 4.84715 +8.36249 9.98761 +8.94297 10.6969 +6.21572 6.24305 +7.90303 8.0672 +7.90426 8.41244 +5.98512 7.93187 +5.13297 5.27136 +6.58367 7.4971 +4.72663 5.22956 +7.99667 8.59246 +4.3303 5.92188 +1.3132 1.80875 +7.70104 9.20947 +1.78862 2.00473 +9.63678 9.65571 +-0.264416 0.318054 +2.70004 3.40777 +2.74642 3.73608 +3.6494 3.6743 +8.03113 9.22851 +1.07526 1.3116 +4.05436 5.33291 +4.60907 6.03605 +7.83426 9.10358 +2.27997 2.77309 +5.63139 6.92616 +4.40717 5.25214 +1.98986 3.5062 +2.42393 2.9584 +1.94336 3.08456 +1.20185 3.01827 +0.641733 2.10095 +7.25046 8.29391 +0.640392 1.26451 +3.9588 4.85492 +6.83036 7.41101 +6.48581 7.08757 +6.48734 8.47856 +9.55084 10.3774 +-0.173137 1.26574 +2.32702 2.58775 +2.7463 3.13914 +7.86951 8.62807 +5.96916 7.92759 +0.217046 1.70373 +1.04207 1.05755 +4.79058 5.07902 +4.19024 5.35395 +9.00175 9.83715 +8.37554 9.275 +4.5204 4.82999 +3.49936 4.75519 +7.07916 7.74619 +6.66726 7.35282 +7.39513 8.55523 +7.50381 9.60708 +1.39304 2.26927 +2.84101 4.76376 +1.21779 1.59353 +4.7893 5.70143 +9.12195 9.57131 +5.40461 6.15443 +2.86445 4.26837 +8.01324 10.9082 +2.96659 3.8042 +2.4897 4.59323 +6.37887 7.15878 +7.00143 7.6419 +3.22491 3.41843 +1.22852 3.31783 +2.09881 2.56121 +4.43205 4.67051 +4.39328 4.66715 +2.38355 3.39058 +0.638802 1.59399 +5.32717 5.81376 +8.00353 9.72007 +8.77281 9.81649 +8.95552 9.86609 +2.90915 3.96556 +3.88176 4.93124 +6.45945 7.69942 +-0.108577 1.57424 +0.304992 0.320561 +6.47789 6.5515 +1.98211 2.05312 +6.2741 7.35626 +9.45057 9.67918 +5.2916 5.48037 +0.158802 0.712187 +6.42002 6.84323 +9.11085 9.13063 +9.42446 9.95882 +6.03624 6.96469 +9.2473 9.6286 +7.10342 8.71163 +3.34072 3.35187 +7.4602 8.58506 +8.7963 8.81873 +0.323615 2.22687 +0.326746 1.76681 +2.20062 2.76862 +7.55181 7.85006 +0.941035 1.28117 +8.76643 9.60019 +9.19731 9.33092 +6.0479 6.57293 +6.12725 6.24356 +7.53078 8.92488 +3.1841 3.48283 +1.85544 2.01888 +7.3849 9.29183 +5.03915 5.27721 +4.77142 5.46282 +-0.291696 1.14641 +1.61367 2.20867 +5.31853 6.69431 +2.52731 3.13139 +4.86677 5.18106 +4.50183 4.60969 +5.95881 6.09964 +2.41939 4.42026 +6.92003 7.17891 +4.29584 5.48557 +8.02803 9.06315 +2.82326 3.49599 +5.8647 5.87561 +2.38814 3.62688 +6.32418 7.17662 +5.99907 6.5059 +3.84698 4.14446 +9.80728 9.82132 +5.2366 6.30871 +9.81878 9.91004 +1.53024 1.83525 +2.98035 3.68531 +4.5418 6.98786 +5.19561 5.9846 +0.946068 1.46672 +3.26948 4.71928 +6.13476 7.68682 +8.36934 9.65072 +6.40074 7.14762 +1.01349 1.80493 +8.4514 10.25 +-0.180382 0.682704 +1.03041 1.63565 +5.64642 6.96069 +2.73598 3.67485 +5.8705 6.66157 +4.68343 4.7176 +5.83787 7.6818 +1.42529 2.234 +3.73726 4.19241 +5.38341 5.81884 +1.13088 1.69073 +0.968034 1.98828 +1.06007 1.11039 +3.50129 4.51807 +5.83133 6.77904 +-0.334945 1.29129 +0.326706 1.16015 +9.15028 10.4391 +5.13047 6.79712 +1.06952 1.38997 +5.79345 6.49898 +7.88149 8.5143 +8.00404 8.09794 +8.22725 8.28904 +6.38406 6.61356 +6.32166 6.73458 +7.17066 7.32049 +1.64338 3.79327 +7.92135 8.55568 +7.15578 7.42231 +6.70701 7.65427 +5.76608 7.63064 +3.54163 4.08662 +3.81402 6.76906 +4.5998 4.61865 +9.01471 9.18718 +5.21234 5.73335 +0.946018 1.39917 +6.99714 8.29739 +5.64458 6.93965 +3.39809 5.70907 +6.32284 6.83604 +8.50347 8.53097 +3.90118 4.85721 +9.41198 9.62076 +4.41514 5.55152 +7.69979 7.81249 +5.34434 5.37105 +7.25274 7.76114 +7.67383 7.92718 +5.82851 6.29417 +0.935651 1.2842 +0.639586 0.786771 +6.39823 8.31226 +3.67546 4.89035 +9.20323 9.57287 +2.33896 2.99576 +8.51933 8.80243 +0.983098 1.11084 +8.48215 9.42998 +7.29586 7.3914 +2.00695 2.89046 +2.60909 2.62433 +2.04118 2.92033 +7.60386 9.01419 +7.32896 7.73342 +9.51693 9.54891 +5.1323 5.24962 +6.35326 7.18302 +2.50952 3.51872 +3.4149 3.57431 +9.18412 10.4976 +5.68123 6.42697 +5.87758 6.0124 +6.3202 6.64588 +8.2547 9.98176 +5.50949 5.7854 +0.0824268 0.128178 +2.17292 3.76233 +7.22786 7.68214 +5.09326 6.4151 +4.30171 4.86688 +2.39206 3.47399 +7.95152 8.35556 +2.40133 2.936 +2.77819 3.87516 +3.252 4.33376 +9.54269 9.7513 +6.6747 6.73043 +0.611474 1.97158 +7.65864 8.53689 +1.58345 1.8017 +2.56917 2.8152 +8.5424 8.8301 +4.98159 5.44499 +5.82482 6.03578 +3.55509 4.90785 +5.77028 5.94747 +0.163965 1.1379 +2.85039 2.94261 +4.24343 4.67273 +3.22636 4.06084 +6.03662 6.21018 +4.55495 5.07697 +1.91173 2.51739 +6.54894 7.24036 +5.55502 6.92676 +0.245707 0.586188 +2.28044 3.29563 +4.71378 5.25198 +8.28953 8.44891 +9.42282 10.179 +5.0548 5.73614 +6.3203 6.43659 +6.54178 8.82077 +3.67181 4.17365 +8.51445 8.96445 +1.69648 2.84524 +0.194222 0.920147 +2.48533 2.59803 +1.66002 1.6739 +4.79833 4.95404 +1.09801 1.11009 +6.62529 7.4066 +8.0099 8.37262 +3.55429 4.11824 +6.2666 7.12137 +7.83222 8.01342 +9.37156 9.72961 +1.1647 4.04434 +4.50719 5.09068 +3.25175 3.75482 +8.28659 9.30848 +7.30009 8.60755 +-1.12073 1.21016 +0.310087 0.725712 +8.3746 9.13511 +9.11925 10.2234 +9.68703 9.7137 +0.603098 0.844291 +5.88373 6.99327 +0.852802 1.43297 +3.7463 5.82283 +7.69639 8.25446 +-0.337322 0.977113 +8.76606 9.16618 +3.43527 3.6616 +3.93587 5.39471 +5.66569 7.20462 +5.34999 5.7193 +3.25589 3.706 +1.52012 2.55985 +4.74228 5.43725 +5.15323 5.51652 +7.77237 8.33717 +-0.0514419 0.914127 +9.27182 9.59476 +8.14192 9.74859 +6.42702 7.20331 +7.51351 7.68358 +7.0947 7.46059 +7.97635 8.59449 +2.39931 2.66008 +5.79481 5.94673 +4.41054 4.81613 +2.72202 3.61239 +2.86039 3.44719 +1.81115 3.28151 +-0.566995 0.734214 +9.61998 9.72024 +7.4163 7.61821 +0.42522 0.552659 +3.17617 4.36942 +0.740294 1.36953 +7.13755 8.39966 +0.219186 0.892588 +3.78307 5.2905 +0.783026 1.76155 +3.01893 3.33055 +3.12143 3.5713 +-0.792679 0.92539 +0.668572 1.12961 +3.88619 4.30545 +7.59276 8.1776 +4.71509 5.05622 +6.53406 7.04242 +1.581 2.21984 +4.7144 5.51372 +2.76338 3.50211 +0.16364 0.293599 +5.92365 6.10636 +3.11174 4.29165 +5.49295 6.48717 +-0.503239 0.795707 +7.30558 8.12408 +2.10674 4.13456 +7.11985 8.01932 +1.34672 1.48739 +4.05778 5.69084 +2.83686 2.9115 +6.4471 6.53909 +0.467374 1.84371 +2.76467 2.94177 +4.87867 5.33932 +0.892878 1.96273 +1.13934 2.27205 +7.76918 8.39409 +6.72181 7.43901 +7.0836 8.68472 +7.12924 7.56332 +0.689172 1.62922 +9.41146 9.91043 +0.398265 1.27579 +6.29966 7.4874 +5.09438 5.65334 +6.04623 6.4687 +5.75305 6.89731 +0.308118 0.459501 +3.63692 4.30501 +3.1755 3.71009 +7.32787 7.52785 +2.23235 4.09978 +2.71191 2.91513 +0.209457 0.840713 +7.31489 7.38296 +6.21245 6.91111 +5.75983 5.96049 +5.92056 8.24518 +-0.354452 0.489638 +4.05894 5.34828 +1.56299 1.57414 +2.85083 3.27455 +8.78323 10.0012 +0.208502 1.26471 +6.10824 6.79285 +5.55114 8.03968 +6.13077 6.32342 +7.34865 7.82592 +3.94835 4.75016 +7.8268 8.72249 +4.85131 5.07903 +5.40398 6.0134 +2.85971 3.85293 +0.126379 1.45545 +3.15768 4.28388 +9.64566 9.70016 +4.47514 6.31064 +6.44995 7.2894 +4.70992 6.13777 +3.91128 4.22263 +7.35627 8.07739 +2.49215 2.68749 +8.09946 9.16929 +0.925679 1.92784 +8.48437 8.63892 +7.2255 9.18109 +-0.00840282 0.0168954 +5.91933 6.6274 +4.16086 4.64302 +8.27009 8.47868 +1.73372 2.93094 +8.17421 9.17705 +9.19136 9.43222 +0.0653594 0.648416 +8.69 8.96184 +8.99355 9.40832 +6.25088 6.26945 +6.72391 7.38424 +9.59708 10.3496 +6.00971 6.18818 +4.64468 5.75797 +3.64832 5.30079 +5.99378 7.8792 +6.5388 6.99379 +7.31694 8.43802 +3.66227 4.92638 +9.55964 10.3796 +-0.14433 0.29095 +3.56716 3.71252 +3.82062 4.27788 +8.10405 9.35275 +7.17891 7.46539 +1.17698 1.29602 +4.48829 5.03134 +7.18025 8.13852 +9.42388 10.3634 +5.2158 6.17469 +5.22926 6.52397 +5.16731 6.40625 +6.53348 7.269 +2.07834 2.39172 +9.65044 10.1519 +8.64551 10.1294 +9.29006 10.5993 +1.50639 2.83173 +5.71675 5.99216 +3.0783 3.35571 +0.115401 1.31431 +8.03988 8.11942 +3.11917 4.53956 +1.14552 1.1646 +5.34782 6.43017 +0.0701702 1.0368 +0.183335 0.440704 +6.33438 7.71607 +2.11533 2.64323 +7.12104 7.13366 +7.21548 8.26968 +3.13445 4.13568 +4.57452 4.74602 +2.60889 3.69846 +7.21184 7.47573 +6.87651 7.03405 +2.65431 3.94352 +1.50006 1.70087 +6.16344 7.54429 +7.02057 7.73067 +8.27833 9.01489 +0.500833 0.597845 +8.34751 9.88925 +2.80242 2.91837 +5.29424 6.079 +8.36276 9.10074 +0.216887 0.268335 +1.30798 3.16393 +3.93851 4.22658 +2.58028 3.14744 +9.31131 10.3451 +7.37262 8.84852 +4.45306 5.6723 +3.74535 4.0721 +4.90174 5.63875 +3.41847 4.65199 +3.10265 3.82548 +6.56126 6.97557 +2.57449 2.95098 +7.97418 9.06301 +9.2203 9.66829 +4.64922 4.96305 +8.83034 10.115 +6.6685 6.89847 +7.36585 7.48669 +8.66761 9.39287 +0.562216 0.961875 +7.56292 7.81006 +8.50715 8.95572 +0.572825 2.24755 +5.9367 6.06766 +-0.769578 0.776163 +4.48224 4.9553 +8.21069 9.29643 +8.57206 9.47175 +1.10032 1.21371 +3.76306 3.87152 +6.46197 8.18457 +6.96501 9.70727 +3.42357 3.93484 +0.818601 2.42743 +-0.119739 0.397938 +-0.378761 0.523892 +8.03394 9.35409 +3.60283 3.98864 +2.21789 2.70607 +-0.255329 0.319063 +6.20806 6.22609 +7.1283 8.04391 +3.73565 4.03638 +8.5374 9.10987 +5.22675 5.35072 +7.51777 7.58439 +9.12636 10.4159 +9.15003 9.40672 +0.217863 1.19883 +9.42416 9.9178 +2.55337 3.8088 +7.03655 7.98242 +9.17171 9.8047 +0.110162 0.722738 +3.16467 3.58897 +6.47244 7.12961 +1.0456 1.65614 +1.58456 1.62844 +1.79039 1.84035 +6.24286 7.07838 +9.08631 9.11684 +3.05068 3.40838 +2.81212 4.03665 +2.52011 3.09841 +8.06001 8.16356 +7.07649 7.52685 +2.47666 2.86548 +8.66241 8.95103 +-0.298116 0.662697 +0.822443 2.46125 +2.07619 2.33674 +4.84135 6.21034 +7.49625 8.13026 +7.85854 8.29618 +3.01722 3.37062 +6.54393 7.30306 +2.21113 2.30166 +8.32138 8.57349 +6.2995 6.33514 +3.0018 3.56886 +4.63378 5.52214 +6.71908 8.96715 +2.29809 2.95581 +8.34947 8.71096 +4.96902 5.32075 +9.51051 9.72733 +3.311 4.77789 +3.50233 3.66309 +4.95177 5.76002 +6.12876 7.22391 +6.27743 6.79393 +3.60638 3.6833 +5.20305 5.50848 +7.16065 8.88358 +9.45049 10.2539 +6.16892 7.0314 +8.08479 9.74516 +0.0717867 0.669987 +2.17569 3.34098 +4.81716 5.7509 +7.63999 8.01157 +5.87228 6.60363 +3.39621 4.35575 +4.96079 5.07901 +7.57639 8.82003 +8.27285 8.52609 +0.665858 1.64782 +1.74256 2.07126 +6.19512 6.4258 +0.664592 1.30896 +0.180682 1.43746 +6.46752 6.81303 +2.55562 3.08708 +9.33695 9.63312 +6.33821 6.77092 +7.88252 8.55026 +8.17937 8.45385 +-0.415294 0.793096 +5.22077 5.54553 +8.67808 9.10041 +1.72096 1.92024 +0.492778 1.48076 +2.29514 2.88531 +0.0934389 1.37614 +8.40297 9.11121 +3.66605 3.91717 +-0.274468 0.867811 +9.41428 9.56659 +1.22657 2.12792 +8.71336 9.85384 +5.09347 5.42905 +2.02877 2.36652 +5.99112 7.40703 +0.911618 3.48138 +4.84352 5.11131 +1.16309 2.08613 +5.58561 5.84805 +0.663543 1.08921 +1.83189 3.93269 +4.07731 4.38879 +4.04789 4.9989 +2.09457 3.61279 +2.00982 2.94396 +7.37537 7.66574 +5.08648 5.80122 +9.19959 10.2263 +4.26136 4.86194 +6.67875 7.61134 +1.27462 2.48399 +7.2237 7.82324 +-0.0141009 0.0441377 +8.32069 8.36192 +2.82562 3.0717 +-0.528918 1.25301 +1.90486 3.04714 +1.34489 1.75301 +3.14332 4.03322 +8.55351 10.8681 +9.09824 10.3828 +0.496868 0.622499 +7.11112 7.62765 +0.335233 0.528962 +6.71335 7.13937 +6.78574 7.71172 +9.13568 9.22251 +7.10299 7.64765 +3.64747 4.06685 +8.64041 9.40111 +2.43515 2.93081 +2.95476 3.68588 +0.0863751 0.777976 +6.5891 8.18165 +8.80986 10.0735 +0.568868 1.63785 +4.41677 5.42049 +8.72857 9.88426 +3.67467 4.25442 +8.98168 10.1087 +5.08611 5.50098 +1.28982 2.34422 +-0.914176 0.969847 +4.35042 4.42735 +4.02282 5.08164 +9.00566 9.4791 +2.71821 3.24065 +3.20252 3.24988 +8.61559 9.6733 +3.15157 4.7685 +3.59348 4.67872 +0.286864 0.36279 +8.40374 10.528 +7.53647 8.13523 +6.81591 6.90226 +7.68111 9.10704 +8.37958 8.73818 +3.25808 4.40893 +1.50348 3.00641 +0.20803 1.40949 +3.93771 4.84177 +2.79232 3.35329 +4.2666 4.63588 +0.341784 1.46241 +1.53063 2.06724 +8.58212 8.86194 +8.95411 9.70651 +8.71591 9.26292 +6.66088 6.7009 +3.95881 5.93917 +8.5823 8.76007 +-0.308958 0.34174 +1.03188 1.37677 +7.52675 9.84031 +4.27952 4.32984 +1.83465 2.27607 +8.12096 8.64922 +2.22605 4.40067 +0.00929139 0.871342 +0.376531 1.29354 +3.5257 4.30165 +1.95846 4.09589 +-0.200922 0.799272 +0.24432 1.76673 +4.73477 5.06514 +8.97059 9.2276 +2.89618 2.93969 +0.168256 1.03325 +3.44522 3.83622 +2.74889 2.76042 +6.07155 6.7979 +9.06484 9.09804 +7.56658 9.29215 +4.3084 5.45621 +-0.0786996 1.12809 +8.48249 9.74107 +6.4196 6.61469 +1.57119 1.87612 +3.15463 3.86251 +2.0089 2.57741 +6.53618 7.12035 +7.07901 7.29396 +0.114756 0.887413 +8.90806 9.65731 +4.0921 5.23407 +2.63441 2.92344 +4.31769 4.98832 +8.90336 9.26837 +8.25313 8.91204 +2.87758 4.00212 +-0.708243 0.789072 +3.28656 4.55872 +5.73177 5.80293 +5.40596 5.5844 +4.09318 4.57774 +6.16178 7.00613 +8.5514 10.5495 +6.83987 7.3056 +1.06341 1.97923 +7.82153 9.00722 +0.923069 1.42337 +1.83408 2.82331 +5.75305 7.23576 +0.241909 0.96721 +1.16645 2.10491 +5.41819 6.09839 +7.49242 7.69495 +0.347233 0.383681 +2.33245 2.53467 +4.91249 5.27759 +8.11182 9.2758 +0.0955456 0.548659 +-0.359909 0.48055 +1.64759 3.47097 +6.37855 7.40015 +0.423283 2.08857 +4.10068 4.46856 +2.58389 2.69626 +0.848483 2.72258 +8.67321 8.88903 +2.07607 3.42398 +3.11033 3.80741 +2.24735 3.48626 +8.11883 8.7687 +0.29959 1.41603 +4.84924 5.13641 +1.44102 1.74592 +1.13437 2.50296 +1.75876 3.09859 +4.75363 5.90838 +7.36423 8.20074 +5.51578 6.42652 +0.915633 1.86015 +9.44679 10.3479 +2.61691 3.60215 +6.26524 7.2538 +2.74326 3.12649 +5.83934 6.98592 +9.1111 10.4891 +2.27066 2.82709 +8.19359 8.67233 +0.834236 1.7066 +6.19288 7.21392 +-0.249843 0.891821 +2.5652 3.25132 +5.25356 5.88905 +3.99545 4.18918 +1.93186 2.51527 +4.44621 4.82421 +5.89181 7.36963 +2.77321 3.60627 +2.76444 3.88016 +2.50062 2.66105 +1.14846 1.66146 +2.951 4.81656 +3.81976 4.01061 +4.75674 5.59916 +6.74092 7.08289 +2.09989 2.32514 +0.220723 0.865303 +5.48107 5.71875 +1.48372 2.88941 +0.484577 1.12051 +8.93618 9.7185 +1.89769 3.65655 +2.0129 3.55214 +9.23173 10.3694 +0.286189 1.22753 +0.453785 1.55541 +2.24068 2.6541 +8.80917 10.4969 +7.12801 7.15222 +9.25745 9.9103 +5.73429 6.76901 +7.54454 8.47157 +1.96008 3.74997 +8.00837 9.25665 +1.66384 2.07613 +5.53014 5.97461 +-1.32495 1.33319 +4.58479 5.2263 +7.92048 8.75668 +6.87595 7.02522 +0.157713 0.389585 +7.48277 7.51261 +8.10714 8.38399 +0.0802723 0.587088 +1.13024 1.71135 +5.71769 6.84757 +3.08261 4.31054 +2.95952 5.09762 +6.62815 7.44256 +5.0805 5.8499 +3.38489 3.73265 +1.10644 2.18331 +4.70493 7.31686 +2.2253 2.6338 +0.778359 1.6265 +6.94211 7.2149 +4.20976 4.99342 +7.47792 7.67881 +7.06219 8.76137 +4.97677 6.12206 +6.30829 6.69361 +6.19977 6.76781 +9.67636 10.2172 +3.41958 3.69137 +0.374486 0.943711 +4.00837 4.80107 +8.85401 10.1325 +6.0938 7.8919 +1.51055 3.08998 +8.94594 10.3139 +1.06714 2.65511 +0.703202 0.850595 +4.87735 6.00659 +8.3067 8.39924 +7.78071 8.3155 +1.98737 2.81116 +6.86323 8.07974 +1.03479 1.34584 +0.490512 0.670211 +5.82122 6.1901 +5.50836 6.63385 +7.9192 8.9606 +0.913719 2.18983 +4.97151 5.70909 +4.19907 4.37712 +2.01188 2.63318 +7.84813 9.3771 +5.32667 7.48502 +8.50951 10.1006 +-0.551637 0.930509 +1.06511 2.23353 +1.91111 3.42663 +9.37528 9.55327 +7.27975 7.38741 +3.46676 4.83165 +7.36137 8.70333 +-0.295762 0.623228 +8.48558 8.81076 +2.71689 3.41873 +6.49265 8.11042 +5.25516 5.57336 +6.10462 7.05991 +8.76997 9.15164 +7.86196 8.30651 +7.82765 9.24604 +5.98573 6.34182 +6.45367 7.47857 +3.27018 5.10835 +1.3079 2.37423 +-0.261387 0.338113 +7.60683 8.81791 +4.7346 7.41988 +5.25597 5.28517 +3.76704 4.52226 +3.91774 6.66976 +5.69618 8.92667 +1.86148 3.07531 +5.57404 6.51438 +9.39049 9.77921 +2.38692 4.21416 +6.84909 7.23633 +7.2379 7.58761 +4.73485 6.11606 +7.80013 8.08105 +1.72701 3.40244 +2.44475 4.4072 +9.72565 9.77726 +3.35288 4.06493 +8.91215 9.92325 +8.67991 9.65865 +0.253195 0.764339 +4.23564 5.59497 +1.84752 2.14986 +-0.502957 0.528737 +1.32656 2.11347 +9.81563 10.0213 +7.60114 8.05035 +8.51797 8.83342 +-0.394604 1.41267 +7.71614 8.63514 +0.530249 0.968898 +2.90463 3.01675 +7.58098 8.71658 +-0.253747 1.28827 +1.832 2.39006 +7.2268 7.27225 +3.84076 4.66703 +2.2564 2.73185 +7.31508 8.46008 +4.99387 5.64948 +7.21239 7.79983 +7.60231 7.8473 +0.555482 1.41892 +1.25539 1.73665 +8.41561 8.96404 +5.06771 5.17664 +0.0655744 2.10718 +8.00222 8.65909 +7.48841 7.83609 +6.30909 6.89448 +9.1697 9.55942 +1.36259 2.22582 +-0.923854 0.994771 +3.43724 4.64053 +8.09411 8.19574 +4.84869 5.52805 +2.69802 3.4119 +9.0613 9.29405 +0.565216 0.687165 +5.93495 6.57426 +1.86925 2.75493 +1.41068 2.00824 +1.60612 1.62471 +3.11499 5.89909 +2.69806 3.90538 +3.76301 4.22135 +3.30065 4.70725 +5.56461 7.02137 +8.35335 8.99287 +4.79259 4.88508 +6.7911 7.52912 +8.14843 8.28583 +3.67629 5.06406 +5.71462 7.04747 +9.06721 9.99733 +4.87932 6.8586 +8.00814 9.57664 +7.03069 7.51623 +9.0989 9.57644 +2.70873 3.91296 +1.64425 1.7007 +6.53716 6.99033 +8.29874 8.74509 +1.88941 2.57626 +4.65337 5.23247 +9.04723 9.06665 +3.52258 3.61496 +1.1207 1.80143 +0.680601 1.98384 +2.94593 5.38692 +2.65685 2.67932 +9.00469 10.2054 +6.44318 7.2657 +4.66656 5.33893 +3.41719 4.72453 +3.12403 4.21748 +6.67973 6.81775 +3.54347 4.14978 +3.02554 3.50812 +3.91883 3.93657 +7.31721 7.89895 +1.86275 2.85473 +6.23266 6.4449 +7.59855 9.38013 +9.07084 9.49309 +0.557656 2.6851 +6.899 7.37693 +4.23162 5.84314 +8.54108 9.37672 +3.9513 4.79746 +7.299 8.29678 +5.58879 5.88551 +9.14992 9.22385 +9.1914 9.31788 +4.95663 5.56316 +2.16516 2.39538 +0.722262 1.89664 +7.76447 7.80026 +2.77772 3.39136 +9.59513 9.78635 +1.02728 1.2181 +7.32631 7.56611 +7.37389 7.46163 +6.87949 8.18689 +8.95602 9.81169 +5.85364 6.63434 +0.129136 2.13484 +7.09608 7.71167 +7.1487 8.34258 +7.48738 8.3172 +8.77247 9.95985 +7.6706 9.56828 +8.14268 8.61726 +6.5455 7.90871 +4.57866 4.78453 +3.63937 4.42349 +5.18905 5.36516 +4.68884 5.62995 +5.88338 7.83824 +-0.002979 0.145818 +4.42981 4.77141 +0.558593 1.07999 +6.91713 7.36159 +5.13948 6.20805 +3.34368 4.07112 +7.27365 7.8383 +9.6898 9.9514 +6.14332 6.75102 +2.16534 2.78843 +2.8007 4.37952 +7.67047 7.72955 +8.77377 9.85092 +1.26087 1.55193 +6.29788 6.58511 +7.68178 9.05777 +0.383336 1.21247 +2.55185 4.30874 +8.91971 9.21836 +3.67638 4.68596 +8.13843 9.13684 +-0.424353 1.97502 +2.71499 2.93977 +0.104447 0.387901 +4.09592 4.67009 +0.808593 0.920798 +5.01258 6.30662 +4.97668 6.57412 +8.44135 9.03816 +2.78932 3.72809 +6.71337 7.15128 +4.27234 4.50127 +6.78266 9.70351 +6.48026 7.51491 +7.36296 8.42283 +4.80339 7.3704 +6.24735 7.3132 +0.134626 0.364187 +2.73854 4.09422 +0.809997 1.19657 +6.41154 6.50244 +7.16847 8.56485 +1.53582 3.33985 +1.92874 2.86427 +6.95941 7.01378 +5.8592 6.54917 +2.51802 2.75622 +3.3894 3.6957 +2.2547 2.64693 +8.62054 9.1951 +8.86378 10.0003 +1.87892 2.28732 +3.83146 4.21484 +1.53262 1.99692 +7.86048 7.93125 +1.79437 2.68269 +3.92781 4.24119 +5.43044 5.47935 +0.322904 0.618854 +3.42383 5.18531 +4.00989 5.83612 +7.06304 8.76582 +5.88039 6.77654 +8.638 8.9479 +1.73391 2.09002 +1.04861 2.84779 +-0.313019 0.557659 +3.35245 4.1308 +9.05373 9.57205 +5.85684 6.49193 +6.00719 6.86421 +4.25244 4.65772 +5.15865 5.61529 +8.78498 9.77544 +8.33803 9.26452 +3.42915 4.92279 +8.29884 8.94035 +5.10232 5.35924 +4.33571 4.86695 +7.86184 7.90029 +7.34345 7.36214 +0.201624 0.800371 +9.05882 10.5503 +4.32188 5.03154 +-0.0456982 1.22298 +2.90921 3.60013 +1.69306 2.36564 +7.79029 9.15059 +4.65205 5.06538 +6.34552 8.32176 +7.92695 9.32585 +7.17903 8.09903 +9.53561 9.60287 +0.365723 1.23929 +0.542889 0.849053 +8.15061 8.93512 +6.40042 6.41053 +5.82666 6.5488 +1.00893 1.83717 +1.76021 2.11893 +7.61076 8.6242 +2.32513 3.4856 +4.39023 6.01094 +-0.11754 0.421848 +6.76371 6.94513 +4.67607 5.58732 +-0.201992 0.765553 +7.42926 7.44429 +2.57485 2.85339 +2.74138 4.13421 +8.21645 9.18107 +6.28184 6.4996 +7.129 7.74678 +7.76842 8.74924 +3.5359 4.35892 +3.04103 3.24376 +2.29389 2.92164 +6.96306 7.64415 +8.82053 9.04584 +1.19911 2.06167 +5.91357 7.6773 +0.150241 1.23291 +4.48681 5.41762 +6.89156 8.13443 +5.37828 5.79944 +2.13694 2.91102 +1.35932 2.08272 +6.14309 6.23278 +4.03202 5.88521 +7.23417 7.43704 +1.2501 2.60793 +2.12334 3.65727 +7.05722 8.77078 +0.437873 0.585933 +6.33338 9.16643 +2.44724 4.40234 +2.92012 3.64047 +1.2039 3.25195 +8.6611 10.0398 +8.0088 9.13622 +5.96562 7.08515 +5.45181 6.65246 +0.742546 2.38958 +4.12919 4.93571 +0.428823 0.84483 +1.45226 2.5869 +9.50727 10.0211 +7.69194 8.66273 +1.25706 2.44554 +5.23247 5.47762 +0.499178 1.70722 +7.26569 8.72467 +3.59815 5.50022 +1.03601 2.43445 +0.092414 0.927635 +3.7917 3.995 +6.21977 8.40398 +3.1513 3.81188 +9.80482 10.0951 +8.65564 9.33687 +2.06164 3.49152 +2.09754 2.34929 +0.66126 2.31888 +5.34832 6.82603 +7.91038 8.59105 +0.695523 0.800961 +2.33406 2.71629 +8.37774 10.9253 +9.7682 10.106 +9.44382 9.5743 +8.78009 9.47645 +1.87309 3.04127 +1.86724 2.13913 +3.30049 3.52416 +7.18508 7.6648 +1.3736 2.12153 +2.41879 5.06716 +1.87815 2.29743 +1.76646 2.06335 +9.73034 9.95475 +0.497489 0.686102 +6.96908 7.17338 +9.23111 10.0148 +3.30981 4.21787 +9.53311 10.3734 +-0.067709 0.147251 +8.44557 8.82047 +7.10407 7.47639 +0.834352 1.36908 +9.1598 10.6508 +4.22018 4.38279 +3.8295 3.95462 +3.97302 4.97247 +1.55856 2.31013 +0.0217962 0.486978 +1.69845 2.65786 +-0.489562 0.582187 +5.10621 5.6055 +9.8478 9.85919 +6.15389 6.92324 +7.11469 8.0418 +3.20625 3.78209 +5.93389 7.66892 +1.15134 1.18023 +6.84797 7.4239 +2.9483 3.22279 +-0.43205 0.764755 +7.17846 7.33313 +5.4729 8.26894 +6.19512 7.32132 +0.591934 0.767568 +0.49266 1.80691 +9.08272 9.72242 +5.85683 6.36905 +5.27625 7.13913 +3.60853 3.98155 +0.642811 1.10253 +1.27117 1.5329 +8.76096 9.61776 +4.9498 5.12847 +7.53282 7.80438 +1.40487 1.65657 +3.45329 3.84307 +3.25698 3.49614 +2.38651 2.89802 +8.23114 8.99016 +9.58516 10.4145 +5.5185 6.27733 +0.583068 0.892249 +1.93142 2.35084 +7.94845 9.22667 +2.47963 3.9005 +3.46106 3.86301 +7.77744 8.43735 +1.41072 1.73969 +9.12904 10.4307 +3.52227 3.66861 +5.4743 5.86487 +-0.51727 1.63657 +5.09861 7.03162 +5.14763 5.93411 +3.23526 3.47376 +0.9702 1.74063 +9.28366 10.3322 +1.80257 1.92265 +8.63597 9.08467 +4.16006 4.97753 +6.37418 6.39374 +5.82376 6.62429 +7.74751 8.68962 +1.63821 2.53399 +4.9864 6.40969 +0.680772 0.995608 +3.74344 3.83319 +0.898055 1.8593 +2.36839 2.39307 +7.21046 7.51006 +0.60893 2.91523 +3.15017 4.30412 +5.02219 6.28886 +4.60541 4.73379 +8.41196 8.58978 +8.84706 10.8198 +6.95807 7.54952 +5.54729 6.9315 +4.62574 4.73423 +3.35252 3.59865 +1.02207 1.71791 +3.16408 3.73993 +0.639222 1.69519 +7.57978 8.05813 +2.41371 2.77174 +8.65544 10.093 +6.31988 6.70758 +6.5301 8.39328 +0.578825 1.20331 +1.1243 2.07824 +5.86555 6.72397 +6.37103 6.81736 +1.12086 3.46541 +2.59503 3.44073 +5.27128 5.3616 +2.87331 3.4352 +5.48408 6.67916 +3.36016 4.09125 +0.813671 0.9811 +0.812162 3.22209 +6.85104 6.86306 +0.671311 0.979685 +2.75962 2.82659 +2.42186 2.49827 +7.82974 9.59669 +3.48851 3.60085 +8.47775 10.9574 +8.6863 10.6155 +0.196484 1.07469 +1.19293 1.45012 +5.79166 6.18466 +6.51597 6.6793 +9.78341 10.1992 +8.17879 9.59257 +6.96178 8.73165 +4.09161 4.31908 +3.19514 3.4072 +5.5101 6.32978 +0.188435 1.84481 +9.41738 10.0379 +1.46994 1.6294 +4.21915 5.39529 +5.46567 5.86638 +8.19414 9.201 +4.38616 4.55193 +2.31105 2.73345 +6.05897 6.12297 +8.84135 9.74232 +9.44943 10.2225 +3.27501 3.66059 +0.524904 1.74374 +7.7228 8.43799 +5.13274 5.82863 +8.2787 8.94491 +1.61463 2.03499 +7.04346 8.69977 +0.938308 2.38676 +0.00208037 0.0186158 +1.98744 2.05864 +7.05787 8.16211 +1.68383 2.04684 +2.24812 2.28257 +0.685061 1.2947 +2.25379 2.92827 +6.0052 6.24797 +7.06213 7.86344 +0.751849 2.96376 +0.0977921 0.513746 +8.43792 9.10545 +2.80769 3.09276 +9.19308 9.59741 +4.74365 4.99708 +8.41385 8.58422 +4.28093 5.9281 +4.26205 4.75417 +1.48035 1.61363 +1.4264 1.80922 +3.48365 4.52935 +1.78396 2.96351 +8.4134 8.96536 +8.65646 9.34781 +1.88027 2.97804 +8.92531 9.02743 +6.91815 7.88895 +5.68023 7.37521 +3.93105 4.6123 +0.385874 1.30785 +1.80151 2.24385 +8.43781 9.33927 +6.69643 8.001 +6.12062 6.673 +4.8316 6.63067 +9.00443 9.08204 +1.5651 2.65023 +3.57517 4.40231 +5.85127 8.02219 +8.02586 10.018 +2.00514 2.75138 +6.32104 7.84285 +8.90914 9.78319 +4.91325 6.27817 +3.87406 4.80327 +8.57887 9.30685 +1.40351 1.71079 +-0.217977 0.224497 +8.37711 9.56393 +5.54644 5.77714 +8.18206 8.36015 +0.774967 1.97899 +9.10434 10.1721 +9.39621 10.1135 +4.80108 4.90605 +9.45978 9.96227 +2.85412 4.05215 +5.71985 7.16735 +2.35081 2.82214 +9.34881 10.5899 +7.13014 7.82872 +4.54931 4.89725 +9.41397 9.9131 +8.90226 9.55276 +8.27995 9.83651 +9.2767 9.6053 +0.388751 1.40317 +5.01478 5.88869 +6.41521 7.21754 +1.22552 1.39067 +3.75771 3.81571 +4.39362 6.04592 +8.82639 8.84544 +4.59289 4.89208 +1.52235 1.64285 +1.85893 4.52056 +1.91781 2.78253 +3.34677 4.54987 +9.26905 10.6019 +7.10958 8.02083 +0.765257 1.66957 +2.17169 2.70214 +4.2293 6.38089 +1.41111 2.45992 +5.76864 6.85715 +2.19944 2.93182 +9.03727 9.6454 +3.82652 4.35225 +2.52642 3.09725 +7.77868 9.35844 +0.337665 1.00787 +1.92021 2.04418 +4.41862 5.95486 +9.47606 9.62386 +1.12113 1.55658 +5.26701 7.09712 +8.81478 9.34863 +6.29447 7.43847 +2.82379 3.57268 +7.9735 8.79936 +3.30176 5.50666 +6.36009 6.8864 +4.13583 5.00627 +0.510514 0.882245 +6.93864 7.78543 +2.04039 2.4298 +3.18337 3.19424 +4.20059 4.67088 +0.316687 0.707377 +0.169106 1.68194 +8.26665 10.2362 +1.1124 1.78306 +2.84603 3.33142 +9.48756 9.96651 +9.4301 9.7316 +0.234674 1.23981 +0.493232 0.522565 +1.342 1.41739 +2.57196 4.08221 +1.54201 2.52284 +5.32049 6.00052 +8.54218 8.59452 +-0.030524 1.64476 +2.31645 2.72528 +4.71898 4.92827 +0.0872997 1.74969 +0.994278 1.76964 +1.34411 2.77952 +0.156817 2.10245 +5.78094 6.34389 +3.09336 3.10563 +8.14245 9.0928 +9.34202 9.75484 +9.78415 10.0211 +4.68383 5.19384 +6.09441 7.90512 +6.74941 6.76118 +1.78693 1.91697 +2.34369 2.62141 +-0.20756 0.829082 +3.57681 5.11448 +2.44234 4.45153 +4.84521 5.31902 +1.80487 3.64498 +2.46125 3.02549 +-0.334514 0.64288 +8.06406 8.49886 +1.74559 2.54474 +6.05883 6.46529 +9.00014 10.2271 +8.00064 8.5061 +0.909467 0.980765 +8.65862 8.69736 +8.11457 8.77049 +3.93237 5.02485 +4.64507 5.34852 +3.92405 4.19449 +5.02381 5.21722 +3.76203 3.78396 +6.74925 7.34781 +8.2556 8.63585 +3.92521 3.99739 +1.44641 2.31509 +0.23516 0.917239 +4.4614 6.35489 +3.33221 3.95247 +1.73289 2.07919 +6.92385 7.55052 +8.74351 9.41125 +9.41451 10.1785 +7.4001 8.81081 +2.97038 3.12524 +7.26043 7.77569 +5.56625 5.59344 +5.70977 6.33362 +7.61443 8.43218 +1.05308 1.82947 +0.377602 1.57633 +6.42483 7.51505 +4.73011 5.43693 +7.72 8.09098 +9.20063 9.82287 +6.88273 7.35327 +6.88423 7.68356 +3.55293 3.6227 +0.947096 1.76021 +3.66411 5.67117 +9.31422 10.1035 +6.84847 6.98956 +2.16221 4.45806 +0.853284 3.15932 +2.48673 2.89793 +3.37633 3.90938 +1.6141 1.66363 +1.6658 3.01723 +0.419408 1.01736 +0.712239 0.791538 +2.25249 3.62425 +8.09772 10.2367 +1.46651 1.48148 +1.73233 2.0489 +7.42679 9.23232 +7.97446 9.53281 +2.74677 4.03955 +-0.169412 0.872795 +4.90663 5.40277 +7.62122 9.49334 +6.55971 7.34259 +3.71957 5.03775 +3.33226 4.06459 +0.634912 1.52603 +3.65506 4.09318 +4.31463 4.60534 +8.58287 9.85385 +0.334759 0.7232 +2.14027 2.866 +6.06611 6.3625 +2.53013 3.18764 +4.30913 4.89247 +6.53234 6.92328 +7.66419 8.61762 +1.37598 2.26754 +8.06279 8.80692 +5.28688 5.70608 +0.509396 1.34606 +8.80589 9.29765 +9.3801 10.3988 +0.402662 0.597735 +5.87213 6.63371 +2.79136 3.763 +6.20615 7.25189 +7.54065 9.62156 +4.12107 5.04454 +5.60294 6.69246 +1.20845 1.49272 +1.75679 2.56397 +2.83939 3.85147 +6.21362 6.71341 +9.01824 9.2388 +4.66617 5.04944 +1.48766 2.55674 +8.89442 9.42175 +5.29411 5.39531 +6.66271 8.68733 +0.730461 1.42466 +6.22927 6.55086 +0.566776 1.17299 +3.06104 4.17775 +5.28026 5.73966 +5.76071 7.61585 +7.83786 9.58106 +6.32199 6.46961 +8.89555 9.17429 +3.85772 4.97805 +6.63352 8.79211 +7.87234 7.94131 +6.53479 7.87979 +3.90293 4.50376 +6.21371 7.31788 +1.00497 1.75003 +6.90351 8.02435 +2.29142 3.9809 +6.26632 6.45283 +-0.0354471 1.31727 +8.80046 9.20169 +7.86905 8.36819 +0.848737 1.82393 +7.98136 9.40712 +3.97765 4.95399 +8.70252 9.26275 +3.13412 4.29389 +2.06446 3.55839 +7.67918 8.44509 +5.96082 6.40336 +1.20461 2.36924 +4.76741 5.74978 +9.41217 9.94305 +7.36736 8.07119 +3.44102 3.56957 +3.59893 4.52751 +4.2613 6.41628 +1.65321 3.02235 +3.70067 3.86657 +0.0176327 1.1215 +4.13592 4.88595 +8.73668 9.0834 +1.80944 2.95584 +6.05721 6.93009 +5.08206 5.38626 +1.86749 1.89392 +3.58284 4.10506 +0.0885586 1.47709 +5.46502 5.93066 +8.45338 8.47878 +3.46789 4.02317 +0.975506 1.15814 +7.12758 7.60073 +7.99582 8.56746 +3.11435 3.83805 +4.51166 4.52472 +8.39096 8.75934 +8.42208 9.66019 +2.48498 4.73703 +3.50301 4.81264 +6.40196 7.0733 +8.52138 8.82265 +1.49822 1.74634 +7.08547 7.93508 +3.47832 4.42948 +6.08646 6.20865 +4.46334 4.65278 +3.80008 4.08214 +3.4853 5.44308 +5.48109 6.18681 +6.59161 8.04307 +7.36554 7.38201 +5.2144 5.31725 +4.62607 7.25804 +1.24345 1.81263 +5.49248 8.16867 +6.4056 8.26316 +7.67828 8.56923 +2.46187 2.56974 +2.22942 3.27248 +7.14933 8.06682 +2.3236 2.95462 +4.18028 4.80535 +4.981 5.54215 +7.23261 7.34863 +4.96309 6.06396 +4.24402 4.44364 +0.917707 1.32687 +1.19806 1.65106 +3.7725 5.31412 +9.70021 9.84203 +5.99824 7.77474 +3.32636 3.84266 +8.59841 9.07653 +7.9916 9.14415 +0.786519 1.84655 +0.166394 1.47834 +2.87633 3.52808 +7.53804 9.56807 +6.14406 6.16189 +1.63428 3.96845 +1.10307 1.58897 +1.30032 2.85313 +7.89803 8.32723 +8.77593 8.90136 +1.68804 2.69447 +4.5956 4.6743 +7.39643 8.29839 +6.93629 7.82243 +6.10289 7.677 +1.83835 2.34295 +1.04506 1.91684 +8.95277 9.43817 +0.36153 0.643665 +1.02408 3.18963 +4.02972 4.40301 +2.80428 2.82552 +6.51718 6.64956 +0.185341 1.56607 +6.1658 7.59364 +4.09288 4.11687 +6.90205 7.16338 +5.0755 5.39478 +4.5614 4.83286 +5.8489 8.76295 +9.70079 10.0431 +8.44334 8.54714 +3.00139 3.66327 +5.34458 6.38895 +7.11481 7.96865 +4.66776 5.15678 +0.390138 0.53352 +2.01116 3.32839 +6.78761 6.97068 +4.57477 5.0724 +1.14098 1.36134 +7.4559 8.30327 +0.700932 2.40437 +1.90469 1.99046 +4.30064 5.11485 +7.84433 8.48543 +5.96212 7.49882 +3.93055 3.96317 +0.546327 1.04814 +8.96011 9.0404 +7.89255 8.06149 +0.669924 2.6944 +-0.00972314 0.837474 +6.07199 6.37467 +2.73659 3.19833 +5.9576 7.10966 +9.1316 9.14737 +5.26101 6.59184 +5.77697 8.08876 +0.68623 0.782805 +0.842619 1.39893 +5.82075 6.15957 +4.36394 4.88479 +7.1828 7.90107 +3.3331 4.39923 +6.54243 7.24966 +2.809 2.96491 +4.18514 4.61948 +4.95453 5.33929 +8.33288 9.52867 +9.05785 10.4276 +2.58917 4.74403 +1.34279 1.89014 +4.93626 5.75424 +7.75031 7.92788 +9.00904 9.02402 +3.91286 5.15124 +6.98486 7.34688 +-0.173169 0.415019 +0.652242 1.51556 +3.50184 5.30486 +3.72563 4.09022 +4.60463 6.58985 +3.34219 4.31833 +2.55445 2.58651 +6.14573 6.3669 +4.52336 6.37342 +9.37606 9.76836 +2.4198 3.36929 +2.89109 3.66974 +5.62463 6.05989 +0.674219 1.84165 +0.590017 1.71153 +1.54622 2.10277 +6.48003 6.55663 +3.56355 3.98573 +0.743671 1.87049 +3.27833 6.0722 +4.76267 6.9967 +2.80188 4.03037 +0.372694 0.482111 +5.73987 5.9529 +8.84732 9.49033 +0.833944 1.8157 +4.06126 4.36615 +0.884619 2.34622 +6.86723 6.99141 +8.07737 9.05193 +8.35903 9.00761 +8.84777 9.74001 +8.58058 9.05479 +8.28076 8.44566 +4.55155 5.65475 +2.44314 3.38966 +3.22172 4.50395 +7.1808 7.90376 +0.639636 1.72606 +5.46807 5.94322 +9.02146 9.87864 +-0.628472 0.655557 +4.29775 5.9553 +6.77525 7.38152 +6.51827 6.93542 +8.95252 9.52939 +0.755406 1.19973 +7.69455 7.86912 +0.170143 1.12949 +7.69254 8.08221 +2.08238 3.27051 +1.28662 1.78628 +1.21208 2.79391 +-0.155739 1.7071 +8.28833 9.10011 +5.77789 6.6954 +1.98395 2.35216 +5.77469 6.05177 +2.77565 5.81092 +-1.53416 2.30576 +6.93529 8.04506 +3.91553 4.55593 +5.57201 6.29071 +1.54149 1.86613 +4.09163 4.31234 +8.47834 11.1229 +5.70376 7.02981 +2.24683 3.79925 +5.4793 6.41036 +5.27644 6.81729 +0.13273 0.371437 +1.22959 1.41618 +0.551957 1.03276 +2.01269 2.4018 +8.77113 9.09395 +8.11753 8.46262 +0.39406 0.783705 +5.35964 5.48227 +7.24727 8.23233 +7.74525 8.85748 +0.0115736 0.882607 +1.78575 2.19684 +8.32514 9.0503 +3.11074 3.34975 +0.847464 2.13237 +0.310898 0.393528 +8.68841 10.518 +1.10032 1.83755 +2.42286 3.02554 +1.16364 2.80986 +1.46419 2.11421 +7.46021 7.90273 +6.86556 7.62542 +1.91466 3.79843 +3.1056 3.83969 +3.41591 4.26565 +0.285122 1.21372 +3.75441 5.52385 +1.07643 2.63403 +6.17341 7.67244 +9.13122 9.5132 +4.39696 6.15885 +3.7207 4.07729 +6.80782 7.1958 +6.65933 6.67105 +8.51535 8.7263 +5.98305 7.17759 +2.19609 2.46108 +8.21186 8.96908 +2.94729 3.60562 +3.31907 3.9297 +0.463492 0.626603 +2.62143 3.55089 +5.76898 6.79002 +1.45502 1.56525 +4.80797 5.62389 +5.87337 6.70588 +2.92765 3.50929 +0.412987 0.951057 +3.64594 4.40269 +-0.043401 0.502176 +4.54802 5.44613 +1.20218 1.8732 +2.75547 2.96745 +7.10348 7.7945 +9.74845 9.98835 +4.83718 6.4836 +2.30563 2.5903 +4.74016 6.30789 +6.42192 6.93329 +5.37294 6.73938 +2.4365 3.05787 +1.08283 3.79193 +4.90426 5.93563 +3.8874 4.83301 +0.13909 0.983027 +4.07407 5.61421 +8.62875 10.6851 +8.10233 8.29952 +2.23047 2.4691 +7.34617 7.39475 +1.66309 2.3032 +7.11207 10.0686 +4.52412 6.38666 +2.48323 2.96878 +7.47877 8.86547 +2.67607 4.33436 +6.83659 8.21075 +2.87313 3.39011 +2.81911 4.07729 +0.227877 0.657898 +6.57843 7.14311 +-0.591405 1.56925 +7.08018 7.59 +9.09558 9.3923 +9.48544 9.79474 +0.740233 2.33129 +8.51111 11.134 +7.79219 8.0281 +1.73821 1.89316 +9.21077 9.29488 +5.38354 6.46025 +4.30403 4.5472 +0.0893758 0.919238 +7.94464 8.51053 +5.27119 6.3741 +5.22476 6.00588 diff --git a/geom_bottleneck/tests/data/ws_tests/test_5_A b/geom_bottleneck/tests/data/ws_tests/test_5_A new file mode 100644 index 0000000..51cff1c --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5_A @@ -0,0 +1,5 @@ +7.50638 7.78005 +0.991758 2.12178 +5.18481 6.61702 +6.14703 7.08581 +4.09936 4.83024 diff --git a/geom_bottleneck/tests/data/ws_tests/test_5_A.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_5_A.pd.dipha Binary files differnew file mode 100644 index 0000000..be84441 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5_A.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_5_B b/geom_bottleneck/tests/data/ws_tests/test_5_B new file mode 100644 index 0000000..be62ed3 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5_B @@ -0,0 +1,5 @@ +5.8232 6.36308 +2.16066 2.48668 +2.38754 4.91418 +4.77403 5.43982 +0.291412 1.11147 diff --git a/geom_bottleneck/tests/data/ws_tests/test_5_B.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_5_B.pd.dipha Binary files differnew file mode 100644 index 0000000..14ca67c --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_5_B.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag1_A b/geom_bottleneck/tests/data/ws_tests/test_diag1_A new file mode 100644 index 0000000..f7f90ff --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag1_A @@ -0,0 +1 @@ +1.0 1.0 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag1_A.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag1_A.pd.dipha Binary files differnew file mode 100644 index 0000000..fa4a4d9 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag1_A.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag1_B b/geom_bottleneck/tests/data/ws_tests/test_diag1_B new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag1_B @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag1_B.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag1_B.pd.dipha Binary files differnew file mode 100644 index 0000000..621a55f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag1_B.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag2_A b/geom_bottleneck/tests/data/ws_tests/test_diag2_A new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag2_A @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag2_A.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag2_A.pd.dipha Binary files differnew file mode 100644 index 0000000..621a55f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag2_A.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag2_B b/geom_bottleneck/tests/data/ws_tests/test_diag2_B new file mode 100644 index 0000000..a167a4f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag2_B @@ -0,0 +1 @@ +5.0 5.0 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag2_B.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag2_B.pd.dipha Binary files differnew file mode 100644 index 0000000..621a55f --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag2_B.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag3_A b/geom_bottleneck/tests/data/ws_tests/test_diag3_A new file mode 100644 index 0000000..151d4b1 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag3_A @@ -0,0 +1,220 @@ +1.391781911475341 1.391781911475341 +1.395142124726278 1.395142124726278 +1.514181227875788 1.514181227875788 +1.528291566797427 1.528291566797427 +1.585389310674157 1.585389310674157 +1.629232116709072 1.629232116709072 +1.641428662445941 1.641428662445941 +1.646998748860116 1.646998748860116 +1.652915988616469 1.652915988616469 +1.69199679556404 1.69199679556404 +1.705727462482595 1.705727462482595 +1.706819293048617 1.706819293048617 +1.720175733750729 1.720175733750729 +1.728031840308488 1.728031840308488 +1.73797421040929 1.73797421040929 +1.739519744204842 1.739519744204842 +1.76132425248022 1.76132425248022 +1.767766952966369 1.767766952966369 +1.792444271021371 1.792444271021371 +1.831487552809192 1.831487552809192 +1.837086616049901 1.837086616049901 +1.851186504948943 1.851186504948943 +1.860502132730509 1.860502132730509 +1.8619433117852 1.8619433117852 +1.878229072834972 1.878229072834972 +1.880655074837347 1.880655074837347 +1.883647832802556 1.883647832802556 +1.884127769927503 1.884127769927503 +1.892969784466709 1.892969784466709 +1.916936460787894 1.916936460787894 +1.931545068229315 1.931545068229315 +1.937626522143119 1.937626522143119 +1.942267721488891 1.942267721488891 +1.963295334827521 1.963295334827521 +1.975655395743736 1.975655395743736 +1.981448090925679 1.981448090925679 +1.986220565173897 1.986220565173897 +1.98709020812351 1.98709020812351 +1.989420269013254 1.989420269013254 +2.007874648480185 2.007874648480185 +2.012179388983059 2.012179388983059 +2.019051972834053 2.019051972834053 +2.023278848058142 2.023278848058142 +2.026190677562545 2.026190677562545 +2.041594763633561 2.041594763633561 +2.042508934597344 2.042508934597344 +2.04305394648524 2.04305394648524 +2.052514683218775 2.052514683218775 +2.059038785694094 2.059038785694094 +2.062577320792516 2.062577320792516 +2.063488177732052 2.063488177732052 +2.067806664626417 2.067806664626417 +2.073013782498534 2.073013782498534 +2.08646120854976 2.08646120854976 +2.098476357223667 2.098476357223667 +2.101378199886176 2.101378199886176 +2.101927506425904 2.101927506425904 +2.12671744783454 2.12671744783454 +2.143966150630584 2.143966150630584 +2.145312642688415 2.145312642688415 +2.148704396208969 2.148704396208969 +2.153092682531471 2.153092682531471 +2.157553654759374 2.157553654759374 +2.176659075756566 2.176659075756566 +2.177260578806816 2.177260578806816 +2.179141269427014 2.179141269427014 +2.201895416482074 2.201895416482074 +2.202563945779844 2.202563945779844 +2.205113735193028 2.205113735193028 +2.207345865351049 2.207345865351049 +2.208922099676958 2.208922099676958 +2.218057898922937 2.218057898922937 +2.228610453267036 2.228610453267036 +2.241314066596301 2.241314066596301 +2.242145210071643 2.242145210071643 +2.253976266568437 2.253976266568437 +2.255324860119305 2.255324860119305 +2.271300972641221 2.271300972641221 +2.279438361991067 2.279438361991067 +2.286592331830957 2.286592331830957 +2.287159411646074 2.287159411646074 +2.296653147995115 2.296653147995115 +2.301754785182811 2.301754785182811 +2.30409930499031 2.30409930499031 +2.32141477565108 2.32141477565108 +2.347789281926012 2.347789281926012 +2.347827987256373 2.347827987256373 +2.349391321950732 2.349391321950732 +2.350129292983257 2.350129292983257 +2.358679083392328 2.358679083392328 +2.372845273125388 2.372845273125388 +2.385040766846267 2.385040766846267 +2.42114588843816 2.42114588843816 +2.425116524931602 2.425116524931602 +2.426518521893022 2.426518521893022 +2.43211651886311 2.43211651886311 +2.441302771998711 2.441302771998711 +2.446429340510857 2.446429340510857 +2.446547553904861 2.446547553904861 +2.45764765793376 2.45764765793376 +2.461222149682938 2.461222149682938 +2.467900747394114 2.467900747394114 +2.473214152160872 2.473214152160872 +2.5 2.5 +2.503557913626332 2.503557913626332 +2.504315621146863 2.504315621146863 +2.515634290122204 2.515634290122204 +2.516231935083851 2.516231935083851 +2.517558892374071 2.517558892374071 +2.526325773757754 2.526325773757754 +2.531164001388939 2.531164001388939 +2.53128061055404 2.53128061055404 +2.539387277827314 2.539387277827314 +2.540864599180268 2.540864599180268 +2.548084457784768 2.548084457784768 +2.548923292215475 2.548923292215475 +2.551730202825644 2.551730202825644 +2.553178578801818 2.553178578801818 +2.560295747947446 2.560295747947446 +2.566321603108612 2.566321603108612 +2.568932286976676 2.568932286976676 +2.574887688783916 2.574887688783916 +2.581809142325336 2.581809142325336 +2.584541960262555 2.584541960262555 +2.585511915815223 2.585511915815223 +2.592970592044868 2.592970592044868 +2.596055336381078 2.596055336381078 +2.598560573626668 2.598560573626668 +2.614019084614256 2.614019084614256 +2.618463725327216 2.618463725327216 +2.622883674481145 2.622883674481145 +2.627791161528314 2.627791161528314 +2.63535653879261 2.63535653879261 +2.654825898255443 2.654825898255443 +2.660423271276714 2.660423271276714 +2.667148030102869 2.667148030102869 +2.67012591760915 2.67012591760915 +2.698712599567882 2.698712599567882 +2.72180967799905 2.72180967799905 +2.732466204434637 2.732466204434637 +2.734187392905275 2.734187392905275 +2.737296308103857 2.737296308103857 +2.745724923243991 2.745724923243991 +2.749541709159369 2.749541709159369 +2.752925621447035 2.752925621447035 +2.754183973113479 2.754183973113479 +2.763972022430258 2.763972022430258 +2.766941997926879 2.766941997926879 +2.773850925522978 2.773850925522978 +2.777506755238121 2.777506755238121 +2.780333194223143 2.780333194223143 +2.783060349483276 2.783060349483276 +2.78679029681548 2.78679029681548 +2.786792895521339 2.786792895521339 +2.795170825459034 2.795170825459034 +2.801104989227437 2.801104989227437 +2.80525433080833 2.80525433080833 +2.805376738133109 2.805376738133109 +2.806844454092663 2.806844454092663 +2.811611818684648 2.811611818684648 +2.811994908451803 2.811994908451803 +2.816002798930236 2.816002798930236 +2.816814002472584 2.816814002472584 +2.818569391261086 2.818569391261086 +2.821660827076439 2.821660827076439 +2.822317588351085 2.822317588351085 +2.824910409962511 2.824910409962511 +2.829322097471409 2.829322097471409 +2.833852169620359 2.833852169620359 +2.839287537694811 2.839287537694811 +2.841714730677953 2.841714730677953 +2.841715058318205 2.841715058318205 +2.851653306950001 2.851653306950001 +2.853639002902003 2.853639002902003 +2.85515962291442 2.85515962291442 +2.855333736885793 2.855333736885793 +2.872540314564304 2.872540314564304 +2.879449214478037 2.879449214478037 +2.881003856158217 2.881003856158217 +2.881074731438092 2.881074731438092 +2.893589165559115 2.893589165559115 +2.898664743213686 2.898664743213686 +2.90387832180792 2.90387832180792 +2.919095859678745 2.919095859678745 +2.924945175440496 2.924945175440496 +2.931795145696962 2.931795145696962 +2.932285006979528 2.932285006979528 +2.934606807227626 2.934606807227626 +2.936392671567475 2.936392671567475 +2.953794710898493 2.953794710898493 +2.958055395706548 2.958055395706548 +2.960407744013656 2.960407744013656 +2.960759715914242 2.960759715914242 +2.969702548922556 2.969702548922556 +2.970149844982665 2.970149844982665 +2.978953970679893 2.978953970679893 +2.979075864664287 2.979075864664287 +2.984665519558418 2.984665519558418 +3.04548240149063 3.04548240149063 +3.050688336416719 3.050688336416719 +3.05773927378742 3.05773927378742 +3.059596740753369 3.059596740753369 +3.059762479996741 3.059762479996741 +3.088543279751235 3.088543279751235 +3.093580813520995 3.093580813520995 +3.104787362108069 3.104787362108069 +3.173380191779681 3.173380191779681 +3.583124637167399 3.583124637167399 +3.630658112409034 3.630658112409034 +3.631421639368965 3.631421639368965 +3.751087101339956 3.751087101339956 +3.800845709568037 3.800845709568037 +3.846558940956666 3.846558940956666 +4 4 +4 4 +4.076238038291317 4.076238038291317 +4.455547086147983 4.455547086147983 +5.356087357608394 5.356087357608394 +5.54364842773721 5.54364842773721 +7.587654388717225 7.587654388717225 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag3_A.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag3_A.pd.dipha Binary files differnew file mode 100644 index 0000000..0dbfb89 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag3_A.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag3_B b/geom_bottleneck/tests/data/ws_tests/test_diag3_B new file mode 100644 index 0000000..bb8655a --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag3_B @@ -0,0 +1,193 @@ +1.167089173446239 1.167089173446239 +1.256234452640111 1.256234452640111 +1.303693422257498 1.303693422257498 +1.413255970488646 1.413255970488646 +1.697910382446573 1.697910382446573 +1.718844728805093 1.718844728805093 +1.734124820632724 1.734124820632724 +1.749572938304276 1.749572938304276 +1.770320424526358 1.770320424526358 +1.786344763036807 1.786344763036807 +1.810054737907635 1.810054737907635 +1.815127306170105 1.815127306170105 +1.837806648681218 1.837806648681218 +1.870552189043019 1.870552189043019 +1.897240351979503 1.897240351979503 +1.935562152643027 1.935562152643027 +1.952562418976663 1.952562418976663 +1.959552126104175 1.959552126104175 +1.979899732318601 1.979899732318601 +2.00044500769347 2.00044500769347 +2.028951227523087 2.028951227523087 +2.037678749316724 2.037678749316724 +2.047911420446857 2.047911420446857 +2.075181804515723 2.075181804515723 +2.077245386452578 2.077245386452578 +2.084751316684838 2.084751316684838 +2.084860886126203 2.084860886126203 +2.103286477421968 2.103286477421968 +2.106856827309345 2.106856827309345 +2.113139266068691 2.113139266068691 +2.114594962503455 2.114594962503455 +2.115917727493158 2.115917727493158 +2.122335878797089 2.122335878797089 +2.127359082726206 2.127359082726206 +2.131673381033273 2.131673381033273 +2.155015793320908 2.155015793320908 +2.162480684365264 2.162480684365264 +2.195207236194009 2.195207236194009 +2.203279931784429 2.203279931784429 +2.205567995563669 2.205567995563669 +2.212933962936773 2.212933962936773 +2.215081271089993 2.215081271089993 +2.225989037578865 2.225989037578865 +2.24218929203347 2.24218929203347 +2.246321319993257 2.246321319993257 +2.280059407166517 2.280059407166517 +2.284117669032543 2.284117669032543 +2.293233992770926 2.293233992770926 +2.298815356955373 2.298815356955373 +2.300542634724628 2.300542634724628 +2.326408290042679 2.326408290042679 +2.328797162040625 2.328797162040625 +2.36025798094028 2.36025798094028 +2.365031313604634 2.365031313604634 +2.372266311053883 2.372266311053883 +2.400053902049271 2.400053902049271 +2.409134054334209 2.409134054334209 +2.411368235895246 2.411368235895246 +2.415934766378347 2.415934766378347 +2.420989857074179 2.420989857074179 +2.422520269961376 2.422520269961376 +2.43377629944218 2.43377629944218 +2.449308615746858 2.449308615746858 +2.452936540056068 2.452936540056068 +2.453698388060092 2.453698388060092 +2.454711357943602 2.454711357943602 +2.459202673400056 2.459202673400056 +2.493778305287384 2.493778305287384 +2.537394117473177 2.537394117473177 +2.544674753106669 2.544674753106669 +2.558904304820755 2.558904304820755 +2.563089994365716 2.563089994365716 +2.565476194422898 2.565476194422898 +2.599756049189921 2.599756049189921 +2.603619661709009 2.603619661709009 +2.609775379385211 2.609775379385211 +2.622552038976658 2.622552038976658 +2.623798471910885 2.623798471910885 +2.635711198661633 2.635711198661633 +2.644229304223612 2.644229304223612 +2.661919064427223 2.661919064427223 +2.666783921498494 2.666783921498494 +2.675503310152301 2.675503310152301 +2.684228699964661 2.684228699964661 +2.696854617267681 2.696854617267681 +2.700538654666735 2.700538654666735 +2.744886611436907 2.744886611436907 +2.748618547996708 2.748618547996708 +2.757981496641135 2.757981496641135 +2.774766825791652 2.774766825791652 +2.784491736143893 2.784491736143893 +2.796482184304273 2.796482184304273 +2.800849254751463 2.800849254751463 +2.816963410000067 2.816963410000067 +2.825207379914743 2.825207379914743 +2.831286409028398 2.831286409028398 +2.844827082550712 2.844827082550712 +2.853558438121966 2.853558438121966 +2.859806035663089 2.859806035663089 +2.878956033959891 2.878956033959891 +2.886422825109222 2.886422825109222 +2.891566924618832 2.891566924618832 +2.892028419188578 2.892028419188578 +2.893138900330932 2.893138900330932 +2.894250936382814 2.894250936382814 +2.90112201577666 2.90112201577666 +2.902172795370005 2.902172795370005 +2.90967533504119 2.90967533504119 +2.919687125962211 2.919687125962211 +2.923711238894001 2.923711238894001 +2.929041907338841 2.929041907338841 +2.938734873084349 2.938734873084349 +2.939642428979572 2.939642428979572 +2.943010909640486 2.943010909640486 +2.944210926048103 2.944210926048103 +2.951091358234723 2.951091358234723 +2.953950275008233 2.953950275008233 +2.966943157369611 2.966943157369611 +2.982522008227535 2.982522008227535 +2.992174049247434 2.992174049247434 +2.993098995839607 2.993098995839607 +2.995311055519335 2.995311055519335 +2.996708164866609 2.996708164866609 +2.999922110096644 2.999922110096644 +3 3 +3.000364533251431 3.000364533251431 +3.003840990677832 3.003840990677832 +3.006672301312824 3.006672301312824 +3.016489409140306 3.016489409140306 +3.021123787004333 3.021123787004333 +3.039117818612596 3.039117818612596 +3.039555193616473 3.039555193616473 +3.049952247267922 3.049952247267922 +3.057673482371216 3.057673482371216 +3.06920083507411 3.06920083507411 +3.075505231082782 3.075505231082782 +3.079038628197304 3.079038628197304 +3.084265889701239 3.084265889701239 +3.086837468106297 3.086837468106297 +3.103873984398081 3.103873984398081 +3.11528125482979 3.11528125482979 +3.119720021802376 3.119720021802376 +3.132543753577128 3.132543753577128 +3.141822873359038 3.141822873359038 +3.143502053175705 3.143502053175705 +3.153232877003746 3.153232877003746 +3.157586960809866 3.157586960809866 +3.157966892275408 3.157966892275408 +3.163583225161638 3.163583225161638 +3.178188125342772 3.178188125342772 +3.178475867931057 3.178475867931057 +3.179372297765929 3.179372297765929 +3.186437137237586 3.186437137237586 +3.188053957464282 3.188053957464282 +3.199351610026191 3.199351610026191 +3.204566427513051 3.204566427513051 +3.22885278850648 3.22885278850648 +3.229088648916556 3.229088648916556 +3.236685523936269 3.236685523936269 +3.239854786600373 3.239854786600373 +3.255809161351669 3.255809161351669 +3.287718056143732 3.287718056143732 +3.294038308299402 3.294038308299402 +3.313688277153076 3.313688277153076 +3.325783245946608 3.325783245946608 +3.331072954808429 3.331072954808429 +3.354962852285211 3.354962852285211 +3.357502741262644 3.357502741262644 +3.373668509804576 3.373668509804576 +3.408653045775418 3.408653045775418 +3.416281541503763 3.416281541503763 +3.443144279972986 3.443144279972986 +3.492970564191033 3.492970564191033 +3.493767805580122 3.493767805580122 +3.559084134799019 3.559084134799019 +3.559898699300211 3.559898699300211 +3.833585501974904 3.833585501974904 +4.099502076836052 4.099502076836052 +4.484082147277348 4.484082147277348 +4.505718324707756 4.505718324707756 +4.891723119528026 4.891723119528026 +5.065300494905414 5.065300494905414 +5.188599238535201 5.188599238535201 +5.36134479630535 5.36134479630535 +5.609786508140671 5.609786508140671 +7.08640314680382 7.08640314680382 +7.113765883549079 7.113765883549079 +7.328944131981744 7.328944131981744 +7.63625182217108 7.63625182217108 +7.716743341311718 7.716743341311718 +7.938093404092351 7.938093404092351 +8.112783377863046 8.112783377863046 +8.131485096731454 8.131485096731454 diff --git a/geom_bottleneck/tests/data/ws_tests/test_diag3_B.pd.dipha b/geom_bottleneck/tests/data/ws_tests/test_diag3_B.pd.dipha Binary files differnew file mode 100644 index 0000000..3fbfd90 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_diag3_B.pd.dipha diff --git a/geom_bottleneck/tests/data/ws_tests/test_list.txt b/geom_bottleneck/tests/data/ws_tests/test_list.txt new file mode 100644 index 0000000..27340d8 --- /dev/null +++ b/geom_bottleneck/tests/data/ws_tests/test_list.txt @@ -0,0 +1,21 @@ +test_5_A test_5_B 1.0 -1.0 4.320655 +test_5_A test_5_B 2.0 -1.0 1.7323016335246 +test_5_A test_5_B 3.0 -1.0 1.396199948 +test_5_A test_5_B 1.0 1.0 6.603006 +test_5_A test_5_B 2.0 1.0 2.73426775794691 +test_5_A test_5_B 3.0 1.0 2.13072755216204 +test_5_A test_5_B 1.0 2.0 5.1888795679967 +test_5_A test_5_B 2.0 2.0 2.26649677575857 +test_5_A test_5_B 3.0 2.0 1.86434961396614 +test_100_A test_100_B 1.0 -1.0 27.5573259 +test_100_A test_100_B 2.0 -1.0 3.38004972483238 +test_100_A test_100_B 3.0 -1.0 1.9045814702967 +test_100_A test_100_B 1.0 1.0 40.4375855 +test_100_A test_100_B 2.0 1.0 4.75252460986668 +test_100_A test_100_B 3.0 1.0 2.556594741819 +test_100_A test_100_B 1.0 2.0 31.7187555735287 +test_100_A test_100_B 2.0 2.0 3.81132239777023 +test_100_A test_100_B 3.0 2.0 2.09695346034248 +test_diag1_A test_diag1_B 1.0 -1.0 0.0 +test_diag2_A test_diag2_B 1.0 -1.0 0.0 +test_diag3_A test_diag3_B 1.0 -1.0 0.0 diff --git a/geom_bottleneck/tests/test_hera_bottleneck.cpp b/geom_bottleneck/tests/test_hera_bottleneck.cpp new file mode 100644 index 0000000..f22e415 --- /dev/null +++ b/geom_bottleneck/tests/test_hera_bottleneck.cpp @@ -0,0 +1,611 @@ +#include "catch/catch.hpp" + +#include <sstream> +#include <iostream> + +#include "bottleneck.h" + +using PairVector = std::vector<std::pair<double, double>>; +using PairVectorF = std::vector<std::pair<float, float>>; + +std::vector<std::string> split_on_delim(const std::string& s, char delim) +{ + std::stringstream ss(s); + std::string token; + std::vector<std::string> tokens; + while(std::getline(ss, token, delim)) { + tokens.push_back(token); + } + return tokens; +} + + +// single row in a file with test cases +struct TestFromFileCase { + + std::string file_1; + std::string file_2; + double delta; + double answer; + std::vector<std::pair<int, int>> longest_edges; + double internal_p { hera::get_infinity<double>() }; + + TestFromFileCase(const std::string& s) + { + auto tokens = split_on_delim(s, ' '); +// assert(tokens.size() > 5); + assert(tokens.size() % 2 == 0); + + size_t token_idx = 0; + file_1 = tokens.at(token_idx++); + file_2 = tokens.at(token_idx++); + delta = std::stod(tokens.at(token_idx++)); + answer = std::stod(tokens.at(token_idx++)); + while(token_idx < tokens.size() - 1) { + int v1 = std::stoi(tokens[token_idx++]); + int v2 = std::stoi(tokens[token_idx++]); + longest_edges.emplace_back(v1, v2); + } + } +}; + +std::ostream& operator<<(std::ostream& out, const TestFromFileCase& s) +{ + out << "[" << s.file_1 << ", " << s.file_2 << ", norm = "; + if (s.internal_p != hera::get_infinity()) { + out << s.internal_p; + } else { + out << "infinity"; + } + out << ", answer = " << s.answer << ", edges { "; + for(auto e : s.longest_edges) { + out << e.first << " <-> " << e.second << ", "; + } + out << "} ]"; + return out; +} + + +TEST_CASE("simple cases", "bottleneckDistApprox") +{ + PairVector diagram_A, diagram_B; + double delta = 0.01; + //double internal_p = hera::get_infinity<double>(); + + SECTION("trivial: two empty diagrams") { + REQUIRE( 0.0 == hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta)); + } + + SECTION("trivial: one empty diagram, one single-point diagram") { + + diagram_A.emplace_back(1.0, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + REQUIRE( fabs(d1 - 0.5) <= 0.00000000001 ); + + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + REQUIRE( fabs(d2 - 0.5) <= 0.00000000001 ); + } + + SECTION("trivial: two single-point diagrams-1") { + + diagram_A.emplace_back(10.0, 20.0); // (5, 5) + diagram_B.emplace_back(13.0, 19.0); // (3, 3) + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double correct_answer = 3.0; + REQUIRE( fabs(d1 - correct_answer) <= delta * correct_answer); + REQUIRE( fabs(d2 - correct_answer) <= delta * correct_answer); + } + + SECTION("trivial: two single-point diagrams-2") { + + diagram_A.emplace_back(10.0, 20.0); // (5, 5) + diagram_B.emplace_back(130.0, 138.0); // (4, 4) + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double correct_answer = 5.0; + REQUIRE( fabs(d1 - correct_answer) <= delta * correct_answer ); + REQUIRE( fabs(d2 - correct_answer) <= delta * correct_answer ); + + } + +} + +TEST_CASE("float version", "check_template") +{ + PairVectorF diagram_A, diagram_B; + float delta = 0.01; + //float internal_p = hera::get_infinity<double>(); + + SECTION("trivial: two empty diagrams") { + REQUIRE( 0.0 == hera::bottleneckDistApprox<PairVectorF>(diagram_A, diagram_B, delta)); + REQUIRE( 0.0 == hera::bottleneckDistExact<PairVectorF>(diagram_A, diagram_B)); + } + + SECTION("trivial: two single-point diagrams-2") { + + diagram_A.emplace_back(10, 20); // (5, 5) + diagram_B.emplace_back(130, 138); // (4, 4) + + float d1 = hera::bottleneckDistApprox<PairVectorF>(diagram_A, diagram_B, delta); + float d2 = hera::bottleneckDistApprox<PairVectorF>(diagram_B, diagram_A, delta); + float d3 = hera::bottleneckDistExact<PairVectorF>(diagram_B, diagram_A); + float correct_answer = 5; + REQUIRE( fabs(d1 - correct_answer) <= delta * correct_answer ); + REQUIRE( fabs(d2 - correct_answer) <= delta * correct_answer ); + + } + +} + + +TEST_CASE("infinity points", "bottleneckDistApprox") +{ + PairVector diagram_A, diagram_B; + double delta = 0.01; + + // do not use Hera's infinity! it is -1 + double inf = std::numeric_limits<double>::infinity(); + + SECTION("two points at infinity, no finite points") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + double d = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double corr_answer = 1.0; + REQUIRE( fabs(d - corr_answer) <= delta * corr_answer); + } + + SECTION("two points at infinity") { + + // edge cost 3.0 + diagram_A.emplace_back(10.0, 20.0); // (5, 5) + diagram_B.emplace_back(13.0, 19.0); // (3, 3) + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + double d = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double corr_answer = 3.0; + REQUIRE( fabs(d - corr_answer) <= delta * corr_answer); + } + + SECTION("three points at infinity, no finite points") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + diagram_B.emplace_back(2.0, inf); + + double d = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double corr_answer = inf; + REQUIRE( d == corr_answer ); + } + + SECTION("three points at infinity") { + + // edge cost 3.0 + diagram_A.emplace_back(10.0, 20.0); // (5, 5) + diagram_B.emplace_back(13.0, 19.0); // (3, 3) + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + double d = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double corr_answer = inf; + REQUIRE( d == corr_answer ); + } + + + SECTION("all four corners at infinity, no finite points, finite answer") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + // edge cost 1.0 + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + // edge cost 1.0 + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + // edge cost 1.0 + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + double d = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double corr_answer = 1.0; + + REQUIRE( d == corr_answer ); + } + + SECTION("all four corners at infinity, no finite points, infinite answer-1") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + // edge cost 1.0 + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + // edge cost 1.0 + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + // edge cost 1.0 + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, no finite points, infinite answer-2") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + // edge cost 1.0 + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + // edge cost 1.0 + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + // edge cost 1.0 + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, no finite points, infinite answer-3") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + // edge cost 1.0 + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + // edge cost 1.0 + diagram_A.emplace_back(inf, 1.0); + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + // edge cost 1.0 + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, no finite points, infinite answer-4") { + + // edge cost 1.0 + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + // edge cost 1.0 + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + // edge cost 1.0 + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + // edge cost 1.0 + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + diagram_B.emplace_back(-inf, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, with finite points, infinite answer-1") { + + diagram_A.emplace_back(1.0, inf); + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + // finite edge + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(13.0, 19.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, with finite points, infinite answer-2") { + + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + // finite edge + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(13.0, 19.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, with finite points, infinite answer-3") { + + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + diagram_A.emplace_back(inf, 1.0); + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + + // finite edge + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(13.0, 19.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + SECTION("all four corners at infinity, no finite points, infinite answer-4") { + + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + diagram_A.emplace_back(1.0, -inf); + diagram_B.emplace_back(2.0, -inf); + + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + diagram_A.emplace_back(-inf, 1.0); + diagram_B.emplace_back(-inf, 2.0); + diagram_B.emplace_back(-inf, 2.0); + + // finite edge + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(13.0, 19.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); + double corr_answer = inf; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + } + + + SECTION("simple small example with finite answer") { + diagram_A.emplace_back(1.0, inf); + diagram_B.emplace_back(2.0, inf); + + diagram_A.emplace_back(1.9, inf); + diagram_B.emplace_back(1.1, inf); + + // 1.1 - 1.0 + 2.0 - 1.9 = 0.2 + + diagram_A.emplace_back(inf, 1.0); + diagram_B.emplace_back(inf, 2.0); + + diagram_A.emplace_back(inf, 1.9); + diagram_B.emplace_back(inf, 1.1); + + + // finite edge + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(13.0, 19.0); + + double d1 = hera::bottleneckDistExact<>(diagram_A, diagram_B); + double d2 = hera::bottleneckDistExact<>(diagram_B, diagram_A); + double corr_answer = 3.0; + + REQUIRE( d1 == corr_answer ); + REQUIRE( d2 == corr_answer ); + + + } + +} + +TEST_CASE("longest edge", "bottleneckDistApprox") +{ + PairVector diagram_A, diagram_B; + hera::bt::MatchingEdge<double> longest_edge_1; + hera::bt::MatchingEdge<double> longest_edge_2; + double delta = 0.01; + + SECTION("trivial: two empty diagrams") { + // should not fail + REQUIRE( 0.0 == hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta, longest_edge_1, true)); + } + + SECTION("trivial: one empty diagram, one single-point diagram") { + + diagram_A.emplace_back(1.0, 2.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta, longest_edge_1, true); + REQUIRE(longest_edge_1.first.getRealX() == 1.0); + REQUIRE(longest_edge_1.first.getRealY() == 2.0); + + double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta, longest_edge_2, true); + REQUIRE(longest_edge_2.second.getRealX() == 1.0); + REQUIRE(longest_edge_2.second.getRealY() == 2.0); + } + + SECTION("trivial: two single-point diagrams-1") { + + diagram_A.emplace_back(10.0, 20.0); + diagram_B.emplace_back(11.0, 19.0); + + double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta, longest_edge_1, true); + + REQUIRE(longest_edge_1.first.getRealX() == 10.0); + REQUIRE(longest_edge_1.first.getRealY() == 20.0); + + REQUIRE(longest_edge_1.second.getRealX() == 11.0); + REQUIRE(longest_edge_1.second.getRealY() == 19.0); + +// double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta, longest_edge_2, true); +// REQUIRE(longest_edge_2.second.getRealX() == 1.0); +// REQUIRE(longest_edge_2.second.getRealY() == 2.0); +// double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); +// double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); +// double correct_answer = 3.0; +// REQUIRE( fabs(d1 - correct_answer) <= delta * correct_answer); +// REQUIRE( fabs(d2 - correct_answer) <= delta * correct_answer); + } +// +// SECTION("trivial: two single-point diagrams-2") { +// +// diagram_A.emplace_back(10.0, 20.0); // (5, 5) +// diagram_B.emplace_back(130.0, 138.0); // (4, 4) +// +// double d1 = hera::bottleneckDistApprox<>(diagram_A, diagram_B, delta); +// double d2 = hera::bottleneckDistApprox<>(diagram_B, diagram_A, delta); +// double correct_answer = 5.0; +// REQUIRE( fabs(d1 - correct_answer) <= delta * correct_answer ); +// REQUIRE( fabs(d2 - correct_answer) <= delta * correct_answer ); +// +// } + +} + +TEST_CASE("file cases", "bottleneck_dist") +{ + PairVector diagram_A, diagram_B; + hera::bt::MatchingEdge<double> longest_edge; + + const char* file_name = "../tests/data/test_list.txt"; + std::string dir_prefix = "../tests/data/"; + std::ifstream f; + f.open(file_name); + std::vector<TestFromFileCase> test_params; + std::string s; + while (std::getline(f, s)) { + test_params.emplace_back(s); + //std::cout << "read test params " << test_params.back() << std::endl; + } + + SECTION("from file:") { + + for (const auto& ts : test_params) { + bool read_file_A = hera::readDiagramPointSet(dir_prefix + ts.file_1, diagram_A); + bool read_file_B = hera::readDiagramPointSet(dir_prefix + ts.file_2, diagram_B); + REQUIRE(read_file_A); + REQUIRE(read_file_B); + + double hera_answer = hera::bottleneckDistApprox(diagram_A, diagram_B, ts.delta, longest_edge, true); + std::pair<int, int> hera_le { longest_edge.first.get_user_id(), longest_edge.second.get_user_id() }; + + REQUIRE((hera_answer == ts.answer or fabs(hera_answer - ts.answer) <= ts.delta * hera_answer)); + REQUIRE((ts.longest_edges.empty() or + std::find(ts.longest_edges.begin(), ts.longest_edges.end(), hera_le) != ts.longest_edges.end())); + + double hera_answer_exact = hera::bottleneckDistExact(diagram_A, diagram_B, 14, longest_edge, true); + std::pair<int, int> hera_le_exact { longest_edge.first.get_user_id(), longest_edge.second.get_user_id() }; + + REQUIRE((hera_answer_exact == ts.answer or + fabs(hera_answer_exact - ts.answer) <= 0.0001 * ts.answer)); + + REQUIRE((ts.longest_edges.empty() or + std::find(ts.longest_edges.begin(), ts.longest_edges.end(), hera_le_exact) != + ts.longest_edges.end())); + + // check that longest_edge length matches the bottleneck distance + + double hera_le_cost; + bool check_longest_edge_cost = true; + if (longest_edge.first.get_user_id() >= 0 and longest_edge.second.get_user_id() < 0) { + // longest edge: off-diagonal point of A connected to its diagonal projection + hera_le_cost = longest_edge.first.get_persistence(ts.internal_p); + } else if (longest_edge.first.get_user_id() < 0 and longest_edge.second.get_user_id() >= 0) { + // longest edge: off-diagonal point of B connected to its diagonal projection + hera_le_cost = longest_edge.second.get_persistence(ts.internal_p); + } else if (longest_edge.first.get_user_id() >= 0 and longest_edge.second.get_user_id() >= 0) { + // longest edge connects two off-diagonal points of A and B + hera_le_cost = hera::bt::dist_l_inf_slow(longest_edge.first, longest_edge.second); + } else { + check_longest_edge_cost = false; + } +// if (check_longest_edge_cost and hera_le_cost != hera_answer_exact) { +// std::cout << "PROBLEM HERE: " << ts << ", longest edge " << longest_edge.first << " - " +// << longest_edge.second << ", hera_le_cost " << hera_le_cost << ", answwer " +// << hera_answer_exact << std::endl; +// } + REQUIRE( (not check_longest_edge_cost or fabs(hera_le_cost - hera_answer_exact) < 0.0001 * hera_answer_exact) ); + std::cout << ts << " PASSED " << std::endl; + } + } + +} diff --git a/geom_bottleneck/tests/tests_main.cpp b/geom_bottleneck/tests/tests_main.cpp new file mode 100644 index 0000000..d24407e --- /dev/null +++ b/geom_bottleneck/tests/tests_main.cpp @@ -0,0 +1,3 @@ +#define LOG_AUCTION +#define CATCH_CONFIG_MAIN +#include "catch/catch.hpp" diff --git a/geom_matching/wasserstein/CMakeLists.txt b/geom_matching/wasserstein/CMakeLists.txt index fe5fd73..53da46b 100644 --- a/geom_matching/wasserstein/CMakeLists.txt +++ b/geom_matching/wasserstein/CMakeLists.txt @@ -46,20 +46,20 @@ file(GLOB WS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h ${CMAKE_CURRENT_SOU find_package (Threads) set (libraries ${libraries} ${CMAKE_THREAD_LIBS_INIT}) -add_executable(wasserstein_dist ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist.cpp ${WS_HEADERS}) +add_executable(wasserstein_dist ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist.cpp ${WS_HEADERS} include/hera_infinity.h) target_link_libraries(wasserstein_dist PUBLIC ${libraries}) -add_executable(wasserstein_dist_dipha ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist_dipha.cpp ${WS_HEADERS}) +add_executable(wasserstein_dist_dipha ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist_dipha.cpp ${WS_HEADERS} include/hera_infinity.h) target_link_libraries(wasserstein_dist_dipha PUBLIC ${libraries}) add_executable(wasserstein_dist_finitize_dipha ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist_finitize_dipha.cpp ${WS_HEADERS}) target_link_libraries(wasserstein_dist_finitize_dipha PUBLIC ${libraries}) # pure geometric version, arbitrary dimension -add_executable(wasserstein_dist_point_cloud ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist_point_cloud.cpp ${WS_HEADERS}) +add_executable(wasserstein_dist_point_cloud ${CMAKE_CURRENT_SOURCE_DIR}/example/wasserstein_dist_point_cloud.cpp ${WS_HEADERS} include/hera_infinity.h) target_link_libraries(wasserstein_dist_point_cloud PUBLIC ${libraries}) # Tests -add_executable(wasserstein_test ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests_main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_hera_wasserstein.cpp) +add_executable(wasserstein_test ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests_main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_hera_wasserstein.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_hera_wasserstein_pure_geom.cpp include/hera_infinity.h tests/tests_reader.h) #add_executable(wasserstein_test EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_hera_wasserstein.cpp) target_link_libraries(wasserstein_test PUBLIC ${libraries}) diff --git a/geom_matching/wasserstein/example/wasserstein_dist_point_cloud.cpp b/geom_matching/wasserstein/example/wasserstein_dist_point_cloud.cpp index 6f699a4..2f9718e 100644 --- a/geom_matching/wasserstein/example/wasserstein_dist_point_cloud.cpp +++ b/geom_matching/wasserstein/example/wasserstein_dist_point_cloud.cpp @@ -35,6 +35,7 @@ derivative works thereof, in binary and source code form. int main(int argc, char* argv[]) { + //{ //int n_points = 3; //int dim = 3; @@ -106,7 +107,6 @@ int main(int argc, char* argv[]) params.dim = dimension_A; - params.wasserstein_power = (4 <= argc) ? atof(argv[3]) : 1.0; if (params.wasserstein_power < 1.0) { std::cerr << "The third argument (wasserstein_degree) was \"" << argv[3] << "\", must be a number >= 1.0. Cannot proceed. " << std::endl; diff --git a/geom_matching/wasserstein/include/auction_oracle_kdtree_pure_geom.hpp b/geom_matching/wasserstein/include/auction_oracle_kdtree_pure_geom.hpp index a6bdf10..eaf54cf 100644 --- a/geom_matching/wasserstein/include/auction_oracle_kdtree_pure_geom.hpp +++ b/geom_matching/wasserstein/include/auction_oracle_kdtree_pure_geom.hpp @@ -111,11 +111,9 @@ AuctionOracleKDTreePureGeom<Real_, PointContainer_>::get_optimal_bid_debug(IdxTy Real best_item_value = std::numeric_limits<Real>::max(); Real second_best_item_value = std::numeric_limits<Real>::max(); - for(IdxType item_idx = 0; item_idx < this->items.size(); ++item_idx) { + for(size_t item_idx = 0; item_idx < this->items.size(); ++item_idx) { auto item = this->items[item_idx]; - if (item.type != bidder.type and item_idx != bidder_idx) - continue; - auto item_value = std::pow(dist_lp(bidder, item, this->internal_p), this->wasserstein_power, this->dim) + this->prices[item_idx]; + auto item_value = std::pow(traits.distance(bidder, item), this->wasserstein_power) + this->prices[item_idx]; if (item_value < best_item_value) { best_item_value = item_value; best_item_idx = item_idx; @@ -126,11 +124,10 @@ AuctionOracleKDTreePureGeom<Real_, PointContainer_>::get_optimal_bid_debug(IdxTy for(size_t item_idx = 0; item_idx < this->items.size(); ++item_idx) { auto item = this->items[item_idx]; - if (item.type != bidder.type and item_idx != bidder_idx) - continue; if (item_idx == best_item_idx) continue; - auto item_value = std::pow(dist_lp(bidder, item, this->internal_p), this->wasserstein_power, this->dim) + this->prices[item_idx]; + + auto item_value = std::pow(traits.distance(bidder, item), this->wasserstein_power) + this->prices[item_idx]; if (item_value < second_best_item_value) { second_best_item_value = item_value; second_best_item_idx = item_idx; @@ -166,6 +163,12 @@ IdxValPair<Real_> AuctionOracleKDTreePureGeom<Real_, PointContainer_>::get_optim result.first = best_item_idx; result.second = ( second_best_item_value - best_item_value ) + this->prices[best_item_idx] + this->epsilon; +#ifdef DEBUG_KDTREE_RESTR_ORACLE + auto bid_debug = get_optimal_bid_debug(bidder_idx); + assert(fabs(bid_debug.best_item_value - best_item_value) < 0.000000001); + assert(fabs(bid_debug.second_best_item_value - second_best_item_value) < 0.000000001); +#endif + return result; } diff --git a/geom_matching/wasserstein/include/auction_oracle_kdtree_restricted.hpp b/geom_matching/wasserstein/include/auction_oracle_kdtree_restricted.hpp index 0e6f780..3c3cba3 100644 --- a/geom_matching/wasserstein/include/auction_oracle_kdtree_restricted.hpp +++ b/geom_matching/wasserstein/include/auction_oracle_kdtree_restricted.hpp @@ -243,11 +243,11 @@ AuctionOracleKDTreeRestricted<Real_, PointContainer_>::get_optimal_bid_debug(Idx Real best_item_value = std::numeric_limits<Real>::max(); Real second_best_item_value = std::numeric_limits<Real>::max(); - for(IdxType item_idx = 0; item_idx < this->items.size(); ++item_idx) { + for(IdxType item_idx = 0; item_idx < static_cast<IdxType>(this->items.size()); ++item_idx) { auto item = this->items[item_idx]; if (item.type != bidder.type and item_idx != bidder_idx) continue; - auto item_value = std::pow(dist_lp(bidder, item, this->internal_p), this->wasserstein_power) + this->prices[item_idx]; + auto item_value = std::pow(dist_lp(bidder, item, this->internal_p, 2), this->wasserstein_power) + this->prices[item_idx]; if (item_value < best_item_value) { best_item_value = item_value; best_item_idx = item_idx; @@ -258,11 +258,11 @@ AuctionOracleKDTreeRestricted<Real_, PointContainer_>::get_optimal_bid_debug(Idx for(size_t item_idx = 0; item_idx < this->items.size(); ++item_idx) { auto item = this->items[item_idx]; - if (item.type != bidder.type and item_idx != bidder_idx) + if (item.type != bidder.type and static_cast<IdxType>(item_idx) != bidder_idx) continue; if (item_idx == best_item_idx) continue; - auto item_value = std::pow(dist_lp(bidder, item, this->internal_p), this->wasserstein_power) + this->prices[item_idx]; + auto item_value = std::pow(dist_lp(bidder, item, this->internal_p, 2), this->wasserstein_power) + this->prices[item_idx]; if (item_value < second_best_item_value) { second_best_item_value = item_value; second_best_item_idx = item_idx; diff --git a/geom_matching/wasserstein/include/auction_runner_gs.hpp b/geom_matching/wasserstein/include/auction_runner_gs.hpp index d9f419d..141cb2c 100644 --- a/geom_matching/wasserstein/include/auction_runner_gs.hpp +++ b/geom_matching/wasserstein/include/auction_runner_gs.hpp @@ -244,6 +244,12 @@ void AuctionRunnerGS<R, AO, PC>::run_auction_phases(const int max_num_phases, co flush_assignment(); run_auction_phase(); Real current_result = getDistanceToQthPowerInternal(); +// Real current_result_1 = 0.0; +// for(size_t i = 0; i < num_bidders; ++i) { +// current_result_1 += oracle.traits.distance(bidders[i], items[bidders_to_items[i]]); +// } +// current_result = current_result_1; +// assert(fabs(current_result - current_result_1) < 0.001); Real denominator = current_result - num_bidders * oracle.get_epsilon(); current_result = pow(current_result, 1.0 / wasserstein_power); #ifdef LOG_AUCTION @@ -259,6 +265,7 @@ void AuctionRunnerGS<R, AO, PC>::run_auction_phases(const int max_num_phases, co denominator = pow(denominator, 1.0 / wasserstein_power); Real numerator = current_result - denominator; relative_error = numerator / denominator; + // spdlog::get("console")->info("relative error = {} / {} = {}, result = {}", numerator, denominator, relative_error, current_result); #ifdef LOG_AUCTION console_logger->info("error = {0} / {1} = {2}", numerator, denominator, relative_error); @@ -280,6 +287,7 @@ void AuctionRunnerGS<R, AO, PC>::run_auction() if (num_bidders == 1) { assign_item_to_bidder(0, 0); wasserstein_cost = get_item_bidder_cost(0,0); + is_distance_computed = true; return; } @@ -319,7 +327,7 @@ void AuctionRunnerGS<R, AO, PC>::run_auction_phase() #ifdef DEBUG_AUCTION for(size_t bidder_idx = 0; bidder_idx < num_bidders; ++bidder_idx) { - if ( bidders_to_items[bidder_idx] < 0 or bidders_to_items[bidder_idx] >= num_bidders) { + if ( bidders_to_items[bidder_idx] < 0 or bidders_to_items[bidder_idx] >= (IdxType)num_bidders) { std::cerr << "After auction terminated bidder " << bidder_idx; std::cerr << " has no items assigned" << std::endl; throw std::runtime_error("Auction did not give a perfect matching"); @@ -333,8 +341,7 @@ template<class R, class AO, class PC> R AuctionRunnerGS<R, AO, PC>::get_item_bidder_cost(const size_t item_idx, const size_t bidder_idx, const bool tolerate_invalid_idx) const { if (item_idx != k_invalid_index and bidder_idx != k_invalid_index) { - return std::pow(dist_lp(bidders[bidder_idx], items[item_idx], internal_p, dimension), - wasserstein_power); + return std::pow(dist_lp(bidders[bidder_idx], items[item_idx], internal_p, dimension), wasserstein_power); } else { if (tolerate_invalid_idx) return R(0.0); @@ -416,7 +423,7 @@ void AuctionRunnerGS<R, AO, PC>::sanity_check() } for(size_t bidder_idx = 0; bidder_idx < num_bidders; ++bidder_idx) { - assert( bidders_to_items[bidder_idx] == k_invalid_index or ( bidders_to_items[bidder_idx] < num_items and bidders_to_items[bidder_idx] >= 0)); + assert( bidders_to_items[bidder_idx] == k_invalid_index or ( bidders_to_items[bidder_idx] < (IdxType)num_items and bidders_to_items[bidder_idx] >= 0)); if ( bidders_to_items[bidder_idx] != k_invalid_index) { @@ -440,7 +447,7 @@ void AuctionRunnerGS<R, AO, PC>::sanity_check() } for(IdxType item_idx = 0; item_idx < static_cast<IdxType>(num_bidders); ++item_idx) { - assert( items_to_bidders[item_idx] == k_invalid_index or ( items_to_bidders[item_idx] < num_items and items_to_bidders[item_idx] >= 0)); + assert( items_to_bidders[item_idx] == k_invalid_index or ( items_to_bidders[item_idx] < static_cast<IdxType>(num_items) and items_to_bidders[item_idx] >= 0)); if ( items_to_bidders.at(item_idx) != k_invalid_index) { // check for uniqueness diff --git a/geom_matching/wasserstein/include/auction_runner_jac.hpp b/geom_matching/wasserstein/include/auction_runner_jac.hpp index 8663bae..e623f4a 100644 --- a/geom_matching/wasserstein/include/auction_runner_jac.hpp +++ b/geom_matching/wasserstein/include/auction_runner_jac.hpp @@ -42,7 +42,6 @@ derivative works thereof, in binary and source code form. #undef DEBUG_AUCTION #endif - namespace hera { namespace ws { @@ -350,6 +349,8 @@ namespace ws { typename AuctionRunnerJac<R, AO, PC>::Real AuctionRunnerJac<R, AO, PC>::get_relative_error(const bool debug_output) const { + if (partial_cost == 0.0 and unassigned_bidders.empty()) + return 0.0; Real result; #ifndef WASSERSTEIN_PURE_GEOM Real gamma = get_gamma(); @@ -558,9 +559,10 @@ namespace ws { if (num_bidders == 1) { assign_item_to_bidder(0, 0); wasserstein_cost = get_item_bidder_cost(0,0); + is_distance_computed = true; return; } - double init_eps = (initial_epsilon > 0.0) ? initial_epsilon : oracle.max_val_ / 4.0; + R init_eps = (initial_epsilon > 0.0) ? initial_epsilon : oracle.max_val_ / 4.0; run_auction_phases(max_num_phases, init_eps); is_distance_computed = true; wasserstein_cost = partial_cost; @@ -703,7 +705,11 @@ namespace ws { template<class R, class AO, class PC> bool AuctionRunnerJac<R, AO, PC>::continue_auction_phase() const { +#ifdef WASSERSTEIN_PURE_GEOM + return not unassigned_bidders.empty(); +#else return not unassigned_bidders.empty() and not is_done(); +#endif } template<class R, class AO, class PC> diff --git a/geom_matching/wasserstein/include/basic_defs_ws.h b/geom_matching/wasserstein/include/basic_defs_ws.h index 58d6fd2..1c5928f 100644 --- a/geom_matching/wasserstein/include/basic_defs_ws.h +++ b/geom_matching/wasserstein/include/basic_defs_ws.h @@ -51,6 +51,7 @@ derivative works thereof, in binary and source code form. #include "spdlog/fmt/ostr.h" #endif +#include "hera_infinity.h" #include "dnn/geometry/euclidean-dynamic.h" #include "def_debug_ws.h" @@ -59,20 +60,20 @@ derivative works thereof, in binary and source code form. namespace hera { -template<class Real = double> -bool is_infinity(const Real& x) -{ - return x == Real(-1); -}; +//template<class Real = double> +//inline bool is_infinity(const Real& x) +//{ +// return x == Real(-1); +//}; +// +//template<class Real = double> +//inline Real get_infinity() +//{ +// return Real( -1 ); +//} template<class Real = double> -Real get_infinity() -{ - return Real( -1 ); -} - -template<class Real = double> -bool is_p_valid_norm(const Real& p) +inline bool is_p_valid_norm(const Real& p) { return is_infinity<Real>(p) or p >= Real(1); } @@ -101,10 +102,8 @@ namespace ws template<class Real = double> using IdxValPair = std::pair<IdxType, Real>; - - template<class R> - std::ostream& operator<<(std::ostream& output, const IdxValPair<R> p) + inline std::ostream& operator<<(std::ostream& output, const IdxValPair<R> p) { output << fmt::format("({0}, {1})", p.first, p.second); return output; @@ -112,7 +111,7 @@ namespace ws enum class OwnerType { k_none, k_normal, k_diagonal }; - std::ostream& operator<<(std::ostream& s, const OwnerType t) + inline std::ostream& operator<<(std::ostream& s, const OwnerType t) { switch(t) { @@ -210,11 +209,11 @@ namespace ws #ifndef FOR_R_TDA template <class Real = double> - std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real> p); + inline std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real> p); #endif template<class Real> - void format_arg(fmt::BasicFormatter<char> &f, const char *&format_str, const DiagramPoint<Real>&p) { + inline void format_arg(fmt::BasicFormatter<char> &f, const char *&format_str, const DiagramPoint<Real>&p) { if (p.is_diagonal()) { f.writer().write("({0},{1}, DIAG)", p.x, p.y); } else { @@ -269,14 +268,14 @@ namespace ws }; template<class R, class Pt> - R dist_lp(const Pt& a, const Pt& b, const R p, const int dim) + inline R dist_lp(const Pt& a, const Pt& b, const R p, const int dim) { return DistImpl<R, Pt>()(a, b, p, dim); } // TODO template<class Real, typename DiagPointContainer> - double getFurthestDistance3Approx(DiagPointContainer& A, DiagPointContainer& B, const Real p) + inline double getFurthestDistance3Approx(DiagPointContainer& A, DiagPointContainer& B, const Real p) { int dim = 2; Real result { 0.0 }; @@ -297,7 +296,7 @@ namespace ws } template<class Real> - Real getFurthestDistance3Approx_pg(const hera::ws::dnn::DynamicPointVector<Real>& A, const hera::ws::dnn::DynamicPointVector<Real>& B, const Real p, const int dim) + inline Real getFurthestDistance3Approx_pg(const hera::ws::dnn::DynamicPointVector<Real>& A, const hera::ws::dnn::DynamicPointVector<Real>& B, const Real p, const int dim) { Real result { 0.0 }; int opt_b_idx = 0; @@ -317,13 +316,13 @@ namespace ws template<class Container> - std::string format_container_to_log(const Container& cont); + inline std::string format_container_to_log(const Container& cont); template<class Real, class IndexContainer> - std::string format_point_set_to_log(const IndexContainer& indices, const std::vector<DiagramPoint<Real>>& points); + inline std::string format_point_set_to_log(const IndexContainer& indices, const std::vector<DiagramPoint<Real>>& points); template<class T> - std::string format_int(T i); + inline std::string format_int(T i); } // ws } // hera diff --git a/geom_matching/wasserstein/include/basic_defs_ws.hpp b/geom_matching/wasserstein/include/basic_defs_ws.hpp index 1750b4e..a1153af 100644 --- a/geom_matching/wasserstein/include/basic_defs_ws.hpp +++ b/geom_matching/wasserstein/include/basic_defs_ws.hpp @@ -64,7 +64,7 @@ bool Point<Real>::operator!=(const Point<Real>& other) const #ifndef FOR_R_TDA template <class Real> -std::ostream& operator<<(std::ostream& output, const Point<Real> p) +inline std::ostream& operator<<(std::ostream& output, const Point<Real> p) { output << "(" << p.x << ", " << p.y << ")"; return output; @@ -72,20 +72,20 @@ std::ostream& operator<<(std::ostream& output, const Point<Real> p) #endif template <class Real> -Real sqr_dist(const Point<Real>& a, const Point<Real>& b) +inline Real sqr_dist(const Point<Real>& a, const Point<Real>& b) { return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); } template <class Real> -Real dist(const Point<Real>& a, const Point<Real>& b) +inline Real dist(const Point<Real>& a, const Point<Real>& b) { return sqrt(sqr_dist(a, b)); } template <class Real> -Real DiagramPoint<Real>::persistence_lp(const Real p) const +inline Real DiagramPoint<Real>::persistence_lp(const Real p) const { if (is_diagonal()) return 0.0; @@ -100,7 +100,7 @@ Real DiagramPoint<Real>::persistence_lp(const Real p) const #ifndef FOR_R_TDA template <class Real> -std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real> p) +inline std::ostream& operator<<(std::ostream& output, const DiagramPoint<Real> p) { if ( p.type == DiagramPoint<Real>::DIAG ) { output << "(" << p.x << ", " << p.y << ", " << 0.5 * (p.x + p.y) << " DIAG )"; @@ -142,7 +142,7 @@ Real DiagramPoint<Real>::getRealY() const } template<class Container> -std::string format_container_to_log(const Container& cont) +inline std::string format_container_to_log(const Container& cont) { std::stringstream result; result << "["; @@ -157,7 +157,7 @@ std::string format_container_to_log(const Container& cont) } template<class Container> -std::string format_pair_container_to_log(const Container& cont) +inline std::string format_pair_container_to_log(const Container& cont) { std::stringstream result; result << "["; @@ -173,7 +173,7 @@ std::string format_pair_container_to_log(const Container& cont) template<class Real, class IndexContainer> -std::string format_point_set_to_log(const IndexContainer& indices, +inline std::string format_point_set_to_log(const IndexContainer& indices, const std::vector<DiagramPoint<Real>>& points) { std::stringstream result; @@ -189,7 +189,7 @@ std::string format_point_set_to_log(const IndexContainer& indices, } template<class T> -std::string format_int(T i) +inline std::string format_int(T i) { std::stringstream ss; ss.imbue(std::locale("")); diff --git a/geom_matching/wasserstein/include/diagonal_heap.h b/geom_matching/wasserstein/include/diagonal_heap.h index 9ffee70..3b3c8bc 100644 --- a/geom_matching/wasserstein/include/diagonal_heap.h +++ b/geom_matching/wasserstein/include/diagonal_heap.h @@ -129,7 +129,7 @@ using LossesHeapOld = IdxValHeap<Real, CompPairsBySecondLexStruct<Real>>; #endif template <class Real> -std::string losses_heap_to_string(const LossesHeapOld<Real>& h) +inline std::string losses_heap_to_string(const LossesHeapOld<Real>& h) { std::stringstream result; result << "["; diff --git a/geom_matching/wasserstein/include/diagram_reader.h b/geom_matching/wasserstein/include/diagram_reader.h index 55228b4..4b24f78 100644 --- a/geom_matching/wasserstein/include/diagram_reader.h +++ b/geom_matching/wasserstein/include/diagram_reader.h @@ -55,31 +55,31 @@ namespace hera { // cannot choose stod, stof or stold based on RealType, // lazy solution: partial specialization template<class RealType = double> -RealType parse_real_from_str(const std::string& s); +inline RealType parse_real_from_str(const std::string& s); template <> -double parse_real_from_str<double>(const std::string& s) +inline double parse_real_from_str<double>(const std::string& s) { return std::stod(s); } template <> -long double parse_real_from_str<long double>(const std::string& s) +inline long double parse_real_from_str<long double>(const std::string& s) { return std::stold(s); } template <> -float parse_real_from_str<float>(const std::string& s) +inline float parse_real_from_str<float>(const std::string& s) { return std::stof(s); } template<class RealType> -RealType parse_real_from_str(const std::string& s) +inline RealType parse_real_from_str(const std::string& s) { static_assert(sizeof(RealType) != sizeof(RealType), "Must be specialized for each type you want to use, see above"); } @@ -90,7 +90,7 @@ RealType parse_real_from_str(const std::string& s) // decPrecision is the maximal decimal precision in the input, // it is zero if all coordinates in the input are integers template<class RealType = double, class ContType_ = std::vector<std::pair<RealType, RealType>>> -bool read_diagram_point_set(const char* fname, ContType_& result, int& decPrecision) +inline bool read_diagram_point_set(const char* fname, ContType_& result, int& decPrecision) { size_t lineNumber { 0 }; result.clear(); @@ -182,7 +182,7 @@ bool read_diagram_point_set(const char* fname, ContType_& result, int& decPrecis // wrappers template<class RealType = double, class ContType_ = std::vector<std::pair<RealType, RealType>>> -bool read_diagram_point_set(const std::string& fname, ContType_& result, int& decPrecision) +inline bool read_diagram_point_set(const std::string& fname, ContType_& result, int& decPrecision) { return read_diagram_point_set<RealType, ContType_>(fname.c_str(), result, decPrecision); } @@ -190,21 +190,21 @@ bool read_diagram_point_set(const std::string& fname, ContType_& result, int& de // these two functions are now just wrappers for the previous ones, // in case someone needs them; decPrecision is ignored template<class RealType = double, class ContType_ = std::vector<std::pair<RealType, RealType>>> -bool read_diagram_point_set(const char* fname, ContType_& result) +inline bool read_diagram_point_set(const char* fname, ContType_& result) { int decPrecision; return read_diagram_point_set<RealType, ContType_>(fname, result, decPrecision); } template<class RealType = double, class ContType_ = std::vector<std::pair<RealType, RealType>>> -bool read_diagram_point_set(const std::string& fname, ContType_& result) +inline bool read_diagram_point_set(const std::string& fname, ContType_& result) { int decPrecision; return read_diagram_point_set<RealType, ContType_>(fname.c_str(), result, decPrecision); } template<class RealType = double, class ContType_ = std::vector<std::pair<RealType, RealType> > > -bool read_diagram_dipha(const std::string& fname, unsigned int dim, ContType_& result) +inline bool read_diagram_dipha(const std::string& fname, unsigned int dim, ContType_& result) { std::ifstream file; file.open(fname, std::ios::in | std::ios::binary); @@ -274,7 +274,7 @@ bool read_diagram_dipha(const std::string& fname, unsigned int dim, ContType_& r template<class RealType, class ContType> -void remove_duplicates(ContType& dgm_A, ContType& dgm_B) +inline void remove_duplicates(ContType& dgm_A, ContType& dgm_B) { std::map<std::pair<RealType, RealType>, int> map_A, map_B; // copy points to maps @@ -348,7 +348,7 @@ int finitize(RealType finitization, std::vector<std::pair<RealType, RealType> >& #ifdef WASSERSTEIN_PURE_GEOM template<class Real> -int get_point_dimension(const std::string& line) +inline int get_point_dimension(const std::string& line) { Real x; int dim = 0; @@ -361,7 +361,7 @@ int get_point_dimension(const std::string& line) template<class RealType = double > -bool read_point_cloud(const char* fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension, int& decPrecision) +inline bool read_point_cloud(const char* fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension, int& decPrecision) { using DynamicPointTraitsR = typename hera::ws::dnn::DynamicPointTraits<RealType>; @@ -443,20 +443,20 @@ bool read_point_cloud(const char* fname, hera::ws::dnn::DynamicPointVector<RealT // wrappers template<class RealType = double > -bool read_point_cloud(const char* fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension) +inline bool read_point_cloud(const char* fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension) { int dec_precision; return read_point_cloud<RealType>(fname, result, dimension, dec_precision); } template<class RealType = double > -bool read_point_cloud(std::string fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension, int& dec_precision) +inline bool read_point_cloud(std::string fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension, int& dec_precision) { return read_point_cloud<RealType>(fname.c_str(), result, dimension, dec_precision); } template<class RealType = double > -bool read_point_cloud(std::string fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension) +inline bool read_point_cloud(std::string fname, hera::ws::dnn::DynamicPointVector<RealType>& result, int& dimension) { return read_point_cloud<RealType>(fname.c_str(), result, dimension); } diff --git a/geom_matching/wasserstein/include/dnn/geometry/euclidean-dynamic.h b/geom_matching/wasserstein/include/dnn/geometry/euclidean-dynamic.h index 4b98309..b003906 100644 --- a/geom_matching/wasserstein/include/dnn/geometry/euclidean-dynamic.h +++ b/geom_matching/wasserstein/include/dnn/geometry/euclidean-dynamic.h @@ -8,6 +8,8 @@ #include <boost/serialization/vector.hpp> #include <cmath> +#include "hera_infinity.h" + namespace hera { namespace ws @@ -89,7 +91,27 @@ struct DynamicPointTraits DynamicPointTraits(unsigned dim = 0): dim_(dim) {} - DistanceType distance(PointType p1, PointType p2) const { return sqrt(sq_distance(p1,p2)); } + DistanceType distance(PointType p1, PointType p2) const + { + Real result = 0.0; + if (hera::is_infinity(internal_p)) { + // max norm + for (unsigned i = 0; i < dimension(); ++i) + result = std::max(result, fabs(coordinate(p1,i) - coordinate(p2,i))); + } else if (internal_p == Real(1.0)) { + // l1-norm + for (unsigned i = 0; i < dimension(); ++i) + result += fabs(coordinate(p1,i) - coordinate(p2,i)); + } else if (internal_p == Real(2.0)) { + result = sqrt(sq_distance(p1,p2)); + } else { + assert(internal_p > 1.0); + for (unsigned i = 0; i < dimension(); ++i) + result += std::pow(fabs(coordinate(p1,i) - coordinate(p2,i)), internal_p); + result = std::pow(result, Real(1.0) / internal_p); + } + return result; + } DistanceType distance(PointHandle p1, PointHandle p2) const { return distance(PointType({p1.p}), PointType({p2.p})); } DistanceType sq_distance(PointType p1, PointType p2) const { Real res = 0; for (unsigned i = 0; i < dimension(); ++i) { Real c1 = coordinate(p1,i), c2 = coordinate(p2,i); res += (c1 - c2)*(c1 - c2); } return res; } DistanceType sq_distance(PointHandle p1, PointHandle p2) const { return sq_distance(PointType({p1.p}), PointType({p2.p})); } diff --git a/geom_matching/wasserstein/include/dnn/local/kd-tree.hpp b/geom_matching/wasserstein/include/dnn/local/kd-tree.hpp index 3a4f0eb..bdeef45 100644 --- a/geom_matching/wasserstein/include/dnn/local/kd-tree.hpp +++ b/geom_matching/wasserstein/include/dnn/local/kd-tree.hpp @@ -101,7 +101,7 @@ hera::ws::dnn::KDTree<T>::OrderTree size_t next_i = (i + 1) % traits.dimension(); // Replace with a size condition instead? - if (b < m - 1) q.push(KDTreeNode(b, m, next_i)); + if (m - b > 1) q.push(KDTreeNode(b, m, next_i)); if (e - m > 2) q.push(KDTreeNode(m+1, e, next_i)); } } diff --git a/geom_matching/wasserstein/include/hera_infinity.h b/geom_matching/wasserstein/include/hera_infinity.h new file mode 100644 index 0000000..8d86dbb --- /dev/null +++ b/geom_matching/wasserstein/include/hera_infinity.h @@ -0,0 +1,22 @@ +#ifndef WASSERSTEIN_HERA_INFINITY_H +#define WASSERSTEIN_HERA_INFINITY_H + +// we cannot assume that template parameter Real will always provide infinity() value, +// so value -1.0 is used to encode infinity (l_inf norm is used by default) + +namespace hera { + + template<class Real = double> + inline bool is_infinity(const Real& x) + { + return x == Real(-1); + }; + + template<class Real = double> + inline constexpr Real get_infinity() + { + return Real(-1); + } +} + +#endif //WASSERSTEIN_HERA_INFINITY_H diff --git a/geom_matching/wasserstein/include/wasserstein.h b/geom_matching/wasserstein/include/wasserstein.h index b90a545..a24bada 100644 --- a/geom_matching/wasserstein/include/wasserstein.h +++ b/geom_matching/wasserstein/include/wasserstein.h @@ -73,7 +73,7 @@ namespace ws // compare as multisets template<class PairContainer> - bool are_equal(const PairContainer& dgm1, const PairContainer& dgm2) + inline bool are_equal(const PairContainer& dgm1, const PairContainer& dgm2) { if (dgm1.size() != dgm2.size()) { return false; @@ -97,7 +97,7 @@ namespace ws // to handle points with one coordinate = infinity template<class RealType> - RealType get_one_dimensional_cost(std::vector<RealType>& set_A, + inline RealType get_one_dimensional_cost(std::vector<RealType>& set_A, std::vector<RealType>& set_B, const RealType wasserstein_power) { @@ -210,7 +210,7 @@ namespace ws // this function assumes that all coordinates are finite // points at infinity are processed in wasserstein_cost template<class RealType> - RealType wasserstein_cost_vec(const std::vector<DiagramPoint<RealType>>& A, + inline RealType wasserstein_cost_vec(const std::vector<DiagramPoint<RealType>>& A, const std::vector<DiagramPoint<RealType>>& B, const AuctionParams<RealType>& params, const std::string& _log_filename_prefix) @@ -245,7 +245,7 @@ namespace ws template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType +inline typename DiagramTraits<PairContainer>::RealType wasserstein_cost(const PairContainer& A, const PairContainer& B, const AuctionParams< typename DiagramTraits<PairContainer>::RealType >& params, @@ -332,9 +332,9 @@ wasserstein_cost(const PairContainer& A, } template<class PairContainer> -typename DiagramTraits<PairContainer>::RealType -wasserstein_dist(PairContainer& A, - PairContainer& B, +inline typename DiagramTraits<PairContainer>::RealType +wasserstein_dist(const PairContainer& A, + const PairContainer& B, const AuctionParams<typename DiagramTraits<PairContainer>::RealType> params, const std::string& _log_filename_prefix = "") { diff --git a/geom_matching/wasserstein/include/wasserstein_pure_geom.hpp b/geom_matching/wasserstein/include/wasserstein_pure_geom.hpp index 2a57599..096d95d 100644 --- a/geom_matching/wasserstein/include/wasserstein_pure_geom.hpp +++ b/geom_matching/wasserstein/include/wasserstein_pure_geom.hpp @@ -30,7 +30,7 @@ namespace ws using AuctionRunnerJacR = typename hera::ws::AuctionRunnerJac<Real, hera::ws::AuctionOracleKDTreePureGeom<Real>, hera::ws::dnn::DynamicPointVector<Real>>; -double wasserstein_cost(const DynamicPointVector<double>& set_A, const DynamicPointVector<double>& set_B, const AuctionParams<double>& params) +inline double wasserstein_cost(const DynamicPointVector<double>& set_A, const DynamicPointVector<double>& set_B, const AuctionParams<double>& params) { if (params.wasserstein_power < 1.0) { throw std::runtime_error("Bad q in Wasserstein " + std::to_string(params.wasserstein_power)); @@ -72,10 +72,9 @@ double wasserstein_cost(const DynamicPointVector<double>& set_A, const DynamicPo auction.run_auction(); return auction.get_wasserstein_cost(); } - } -double wasserstein_dist(const DynamicPointVector<double>& set_A, const DynamicPointVector<double>& set_B, const AuctionParams<double>& params) +inline double wasserstein_dist(const DynamicPointVector<double>& set_A, const DynamicPointVector<double>& set_B, const AuctionParams<double>& params) { return std::pow(wasserstein_cost(set_A, set_B, params), 1.0 / params.wasserstein_power); } diff --git a/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp b/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp index 3d5db5f..0a80d2f 100644 --- a/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp +++ b/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp @@ -8,61 +8,12 @@ #undef LOG_AUCTION #include "wasserstein.h" +#include "tests_reader.h" +using namespace hera_test; using PairVector = std::vector<std::pair<double, double>>; -std::vector<std::string> split_on_delim(const std::string& s, char delim) -{ - std::stringstream ss(s); - std::string token; - std::vector<std::string> tokens; - while(std::getline(ss, token, delim)) { - tokens.push_back(token); - } - return tokens; -} - - -// single row in a file with test cases -struct TestFromFileCase { - - std::string file_1; - std::string file_2; - double q; - double internal_p; - double answer; - - TestFromFileCase(std::string s) - { - auto tokens = split_on_delim(s, ' '); - assert(tokens.size() == 5); - - file_1 = tokens.at(0); - file_2 = tokens.at(1); - q = std::stod(tokens.at(2)); - internal_p = std::stod(tokens.at(3)); - answer = std::stod(tokens.at(4)); - - if ( q < 1.0 or std::isinf(q) or - (internal_p != hera::get_infinity<double>() and internal_p < 1.0)) { - throw std::runtime_error("Bad line in test_list.txt"); - } - } -}; - -std::ostream& operator<<(std::ostream& out, const TestFromFileCase& s) -{ - out << "[" << s.file_1 << ", " << s.file_2 << ", q = " << s.q << ", norm = "; - if (s.internal_p != hera::get_infinity()) { - out << s.internal_p; - } else { - out << "infinity"; - } - out << ", answer = " << s.answer << "]"; - return out; -} - TEST_CASE("simple cases", "wasserstein_dist") { diff --git a/geom_matching/wasserstein/tests/test_hera_wasserstein_pure_geom.cpp b/geom_matching/wasserstein/tests/test_hera_wasserstein_pure_geom.cpp new file mode 100644 index 0000000..9603ceb --- /dev/null +++ b/geom_matching/wasserstein/tests/test_hera_wasserstein_pure_geom.cpp @@ -0,0 +1,111 @@ +#include "catch/catch.hpp" + +#include <sstream> +#include <iostream> + + +#undef LOG_AUCTION + +#include "wasserstein_pure_geom.hpp" +#include "tests_reader.h" + +using namespace hera_test; + +TEST_CASE("simple point clouds", "wasserstein_dist_pure_geom") +{ +// int n_points = 3; +// int dim = 3; +// using Traits = hera::ws::dnn::DynamicPointTraits<double>; +// hera::ws::dnn::DynamicPointTraits<double> traits(dim); +// hera::ws::dnn::DynamicPointVector<double> dgm_a = traits.container(n_points); +// hera::ws::dnn::DynamicPointVector<double> dgm_b = traits.container(n_points); +// +// dgm_a[0][0] = 0.0; +// dgm_a[0][1] = 0.0; +// dgm_a[0][2] = 0.0; +// +// dgm_a[1][0] = 1.0; +// dgm_a[1][1] = 0.0; +// dgm_a[1][2] = 0.0; +// +// dgm_a[2][0] = 0.0; +// dgm_a[2][1] = 1.0; +// dgm_a[2][2] = 1.0; +// +// dgm_b[0][0] = 0.0; +// dgm_b[0][1] = 0.1; +// dgm_b[0][2] = 0.1; +// +// dgm_b[1][0] = 1.1; +// dgm_b[1][1] = 0.0; +// dgm_b[1][2] = 0.0; +// +// dgm_b[2][0] = 0.0; +// dgm_b[2][1] = 1.1; +// dgm_b[2][2] = 0.9; + + const int dim = 3; + using Traits = hera::ws::dnn::DynamicPointTraits<double>; + hera::ws::dnn::DynamicPointTraits<double> traits(dim); + hera::AuctionParams<double> params; + params.dim = dim; + params.wasserstein_power = 1.0; + params.delta = 0.01; + params.internal_p = hera::get_infinity<double>(); + params.initial_epsilon = 0.0; + params.epsilon_common_ratio = 0.0; + params.max_num_phases = 30; + params.gamma_threshold = 0.0; + params.max_bids_per_round = 0; // use Jacobi + + + SECTION("trivial: two single-point diagrams-1") { + + int n_points = 1; + hera::ws::dnn::DynamicPointVector<double> dgm_a = traits.container(n_points); + hera::ws::dnn::DynamicPointVector<double> dgm_b = traits.container(n_points); + + dgm_a[0][0] = 0.0; + dgm_a[0][1] = 0.0; + dgm_a[0][2] = 0.0; + + dgm_b[0][0] = 1.0; + dgm_b[0][1] = 1.0; + dgm_b[0][2] = 1.0; + + std::vector<size_t> max_bids { 1, 10, 0 }; + std::vector<int> internal_ps{ 1, 2, static_cast<int>(hera::get_infinity()) }; + std::vector<double> wasserstein_powers { 1, 2, 3 }; + + for(auto internal_p : internal_ps) { + // there is only one point, so the answer does not depend wasserstein power + double correct_answer; + switch (internal_p) { + case 1 : + correct_answer = 3.0; + break; + case 2 : + correct_answer = sqrt(3.0); + break; + case static_cast<int>(hera::get_infinity()) : + correct_answer = 1.0; + break; + default : + throw std::runtime_error("Correct answer not specified in test case"); + } + + for (auto max_bid : max_bids) { + for (auto wasserstein_power : wasserstein_powers) { + params.max_bids_per_round = max_bid; + params.internal_p = internal_p; + params.wasserstein_power = wasserstein_power; + double d1 = hera::ws::wasserstein_dist(dgm_a, dgm_b, params); + double d2 = hera::ws::wasserstein_dist(dgm_b, dgm_a, params); + REQUIRE(fabs(d1 - d2) <= 0.00000000001); + REQUIRE(fabs(d1 - correct_answer) <= 0.00000000001); + } + } + } + } +} + diff --git a/geom_matching/wasserstein/tests/tests_reader.h b/geom_matching/wasserstein/tests/tests_reader.h new file mode 100644 index 0000000..f2d5735 --- /dev/null +++ b/geom_matching/wasserstein/tests/tests_reader.h @@ -0,0 +1,67 @@ +#ifndef WASSERSTEIN_TESTS_READER_H +#define WASSERSTEIN_TESTS_READER_H + +#include <vector> +#include <string> +#include <ostream> +#include <iostream> +#include <sstream> +#include <cassert> +#include <cmath> + +#include "hera_infinity.h" + +namespace hera_test { + inline std::vector<std::string> split_on_delim(const std::string& s, char delim) + { + std::stringstream ss(s); + std::string token; + std::vector<std::string> tokens; + while (std::getline(ss, token, delim)) { + tokens.push_back(token); + } + return tokens; + } + + + // single row in a file with test cases + struct TestFromFileCase + { + + std::string file_1; + std::string file_2; + double q; + double internal_p; + double answer; + + TestFromFileCase(std::string s) + { + auto tokens = split_on_delim(s, ' '); + assert(tokens.size() == 5); + + file_1 = tokens.at(0); + file_2 = tokens.at(1); + q = std::stod(tokens.at(2)); + internal_p = std::stod(tokens.at(3)); + answer = std::stod(tokens.at(4)); + + if (q < 1.0 or std::isinf(q) or + (internal_p != hera::get_infinity<double>() and internal_p < 1.0)) { + throw std::runtime_error("Bad line in test_list.txt"); + } + } + }; + + inline std::ostream& operator<<(std::ostream& out, const TestFromFileCase& s) + { + out << "[" << s.file_1 << ", " << s.file_2 << ", q = " << s.q << ", norm = "; + if (s.internal_p != hera::get_infinity()) { + out << s.internal_p; + } else { + out << "infinity"; + } + out << ", answer = " << s.answer << "]"; + return out; + } +} // namespace hera_test +#endif //WASSERSTEIN_TESTS_READER_H |