From 6b78b5c2be7e24cd4a1c59c7fa13a62c2ae33508 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Sat, 3 Dec 2016 19:05:09 -0500 Subject: [PATCH 001/174] Added strtonum for locale-independent number parsing --- src/json.hpp | 374 ++++++++++++++++++++++------------- src/json.hpp.re2c | 374 ++++++++++++++++++++++------------- test/src/unit-regression.cpp | 4 +- 3 files changed, 483 insertions(+), 269 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 6fed0a122..e28333bd4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9060,65 +9060,225 @@ basic_json_parser_66: return result; } + + + + + + + + + + + + + + + + + /*! - @brief parse floating point number + @brief parse string into a built-in arithmetic type as if + the current locale is POSIX. - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + e.g. const auto x = static_cast("123.4"); - @param[in] type the @ref number_float_t in use - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number + throw if can't parse the entire string as a number, + or if the destination type is integral and the value + is outside of the type's range. */ - long double str_to_float_t(long double* /* type */, char** endptr) const + struct strtonum { - return std::strtold(reinterpret_cast(m_start), endptr); - } + public: + strtonum(const char* start, const char* end) + : m_start(start), m_end(end) + {} - /*! - @brief parse floating point number + template::value>::type > + operator T() const + { + T val{0}; - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + if(parse(val, std::is_integral())) { + return val; + } - @param[in] type the @ref number_float_t in use + throw std::invalid_argument( + std::string() + + "Can't parse '" + + std::string(m_start, m_end) + + "' as type " + + typeid(T).name()); + } - @param[in,out] endptr recieves a pointer to the first character after - the number + /// return true iff token matches ^[+-]\d+$ + bool is_integral() const + { + const char* p = m_start; - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const - { - return std::strtod(reinterpret_cast(m_start), endptr); - } + if(!p) { + return false; + } - /*! - @brief parse floating point number + if(*p == '-' or *p == '+') { + ++p; + } - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + if(p == m_end) { + return false; + } - @param[in] type the @ref number_float_t in use + while(p < m_end and *p >= '0' and *p <= '9') { + ++p; + } - @param[in,out] endptr recieves a pointer to the first character after - the number + return p == m_end; + } - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast(m_start), endptr); - } + private: + const char* const m_start = nullptr; + const char* const m_end = nullptr; + + static void strtof(float& f, + const char* str, + char** endptr) + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, + const char* str, + char** endptr) + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, + const char* str, + char** endptr) + { + f = std::strtold(str, endptr); + } + + template + bool parse(T& value, /*is_integral=*/std::false_type) const + { + const char* data = m_start; + const size_t len = static_cast(m_end - m_start); + + const char decimal_point_char = + std::use_facet< std::numpunct >( + std::locale()).decimal_point(); + + // replace decimal separator with locale-specific + // version, if necessary; data will be repointed + // to either buf or tempstr containing the fixed + // string. + std::string tempstr; + std::array buf; + do { + if(decimal_point_char == '.') { + break; // don't need to convert + } + + const size_t ds_pos = static_cast( + std::find(m_start, m_end, '.') - m_start ); + + if(ds_pos == len) { + break; // no decimal separator + } + + // copy the data into the local buffer or + // tempstr, if buffer is too small; + // replace decimal separator, and update + // data to point to the modified bytes + if(len + 1 < buf.size()) { + std::copy(m_start, m_end, buf.data()); + buf[len] = 0; + buf[ds_pos] = decimal_point_char; + data = buf.data(); + } else { + tempstr.assign(m_start, m_end); + tempstr[ds_pos] = decimal_point_char; + data = tempstr.c_str(); + } + } while(0); + + char* endptr = nullptr; + value = 0; + strtof(value, data, &endptr); + + + + // note that reading past the end is OK, the data may be, + // for example, "123.", where the parsed token only contains "123", + // but strtod will read the dot as well. + const bool ok = endptr >= data + len + and len > 0; + + if(ok and value == 0.0 and *data == '-') { + // some implementations forget to negate the zero + value = -0.0; + } + + if(!ok) { + std::cerr << "data:" << data + << " token:" << std::string(m_start, len) + << " value:" << value + << " len:" << len + << " parsed_len:" << (endptr - data) << std::endl; + } + + return ok; + } + + template + bool parse(T& value, /*is_integral=*/std::true_type) const + { + const char* beg = m_start; + const char* const end = m_end; + + if(beg == end) { + return false; + } + + const bool is_negative = (*beg == '-'); + + // json numbers can't start with '+' but + // this code is not json-specific + if(is_negative or *beg == '+') { + ++beg; // skip the leading sign + } + + bool valid = beg < end // must have some digits; + and ( T(-1) < 0 // type must be signed + or !is_negative); // if value is negative + value = 0; + + while(beg < end and valid) { + const uint8_t c = static_cast(*beg - '0'); + const T upd_value = value * 10 + c; + valid &= value <= std::numeric_limits::max() / 10 + and value <= upd_value // did not overflow + and c < 10; // char was digit + value = upd_value; + ++beg; + } + + if(is_negative) { + value = 0 - value; + } + + if(!valid) { + std::cerr << " token:" << std::string(m_start, m_end) + << std::endl; + } + + return valid; + } + }; /*! @brief return number value for number tokens @@ -9126,111 +9286,57 @@ basic_json_parser_66: This function translates the last token into the most appropriate number type (either integer, unsigned integer or floating point), which is passed back to the caller via the result parameter. + + integral numbers that don't fit into the the range of the respective + type are parsed as number_float_t - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. + floating-point values do not satisfy std::isfinite predicate + are converted to value_t::null + + throws if the entire string [m_start .. m_cursor) cannot be + interpreted as a number - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. + @param[out] result @ref basic_json object to receive the number. */ void get_number(basic_json& result) const { assert(m_start != nullptr); + assert(m_start < m_cursor); + + strtonum num(reinterpret_cast(m_start), + reinterpret_cast(m_cursor)); - const lexer::lexer_char_t* curptr = m_start; + const bool is_negative = *m_start == '-'; - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') - { - type = value_t::number_integer; - max = static_cast((std::numeric_limits::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast((std::numeric_limits::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') + try { + if(not num.is_integral()) { + ; + } + else if(is_negative) { - if (*curptr == '.') - { - // don't count '.' but change to float - type = value_t::number_float; - continue; - } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details - type = value_t::number_float; - break; - } - - // skip if definitely not an integer - if (type != value_t::number_float) + result.m_type = value_t::number_integer; + result.m_value = static_cast(num); + return; + } + else { - // multiply last value by ten and add the new digit - auto temp = value * 10 + *curptr - '0'; - - // test for overflow - if (temp < value || temp > max) - { - // overflow - type = value_t::number_float; - } - else - { - // no overflow - save it - value = temp; - } + result.m_type = value_t::number_unsigned; + result.m_value = static_cast(num); + return; } + } catch (std::invalid_argument&) { + ; // overflow - will parse as double } - // save the value (if not a float) - if (type == value_t::number_unsigned) - { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - result.m_value.number_integer = -static_cast(value); - } - else - { - // parse with strtod - result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + result.m_type = value_t::number_float; + result.m_value = static_cast(num); - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - type = value_t::null; - result.m_value = basic_json::json_value(); - } + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + result.m_type = value_t::null; + result.m_value = basic_json::json_value(); } - - // save the type - result.m_type = type; } private: diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c6a99b89f..72c413ba7 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8209,65 +8209,225 @@ class basic_json return result; } + + + + + + + + + + + + + + + + + /*! - @brief parse floating point number + @brief parse string into a built-in arithmetic type as if + the current locale is POSIX. - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + e.g. const auto x = static_cast("123.4"); - @param[in] type the @ref number_float_t in use - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number + throw if can't parse the entire string as a number, + or if the destination type is integral and the value + is outside of the type's range. */ - long double str_to_float_t(long double* /* type */, char** endptr) const + struct strtonum { - return std::strtold(reinterpret_cast(m_start), endptr); - } + public: + strtonum(const char* start, const char* end) + : m_start(start), m_end(end) + {} - /*! - @brief parse floating point number + template::value>::type > + operator T() const + { + T val{0}; - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + if(parse(val, std::is_integral())) { + return val; + } - @param[in] type the @ref number_float_t in use + throw std::invalid_argument( + std::string() + + "Can't parse '" + + std::string(m_start, m_end) + + "' as type " + + typeid(T).name()); + } - @param[in,out] endptr recieves a pointer to the first character after - the number + /// return true iff token matches ^[+-]\d+$ + bool is_integral() const + { + const char* p = m_start; - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const - { - return std::strtod(reinterpret_cast(m_start), endptr); - } + if(!p) { + return false; + } - /*! - @brief parse floating point number + if(*p == '-' or *p == '+') { + ++p; + } - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast(nullptr). + if(p == m_end) { + return false; + } - @param[in] type the @ref number_float_t in use + while(p < m_end and *p >= '0' and *p <= '9') { + ++p; + } - @param[in,out] endptr recieves a pointer to the first character after - the number + return p == m_end; + } - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast(m_start), endptr); - } + private: + const char* const m_start = nullptr; + const char* const m_end = nullptr; + + static void strtof(float& f, + const char* str, + char** endptr) + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, + const char* str, + char** endptr) + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, + const char* str, + char** endptr) + { + f = std::strtold(str, endptr); + } + + template + bool parse(T& value, /*is_integral=*/std::false_type) const + { + const char* data = m_start; + const size_t len = static_cast(m_end - m_start); + + const char decimal_point_char = + std::use_facet< std::numpunct >( + std::locale()).decimal_point(); + + // replace decimal separator with locale-specific + // version, if necessary; data will be repointed + // to either buf or tempstr containing the fixed + // string. + std::string tempstr; + std::array buf; + do { + if(decimal_point_char == '.') { + break; // don't need to convert + } + + const size_t ds_pos = static_cast( + std::find(m_start, m_end, '.') - m_start ); + + if(ds_pos == len) { + break; // no decimal separator + } + + // copy the data into the local buffer or + // tempstr, if buffer is too small; + // replace decimal separator, and update + // data to point to the modified bytes + if(len + 1 < buf.size()) { + std::copy(m_start, m_end, buf.data()); + buf[len] = 0; + buf[ds_pos] = decimal_point_char; + data = buf.data(); + } else { + tempstr.assign(m_start, m_end); + tempstr[ds_pos] = decimal_point_char; + data = tempstr.c_str(); + } + } while(0); + + char* endptr = nullptr; + value = 0; + strtof(value, data, &endptr); + + + + // note that reading past the end is OK, the data may be, + // for example, "123.", where the parsed token only contains "123", + // but strtod will read the dot as well. + const bool ok = endptr >= data + len + and len > 0; + + if(ok and value == 0.0 and *data == '-') { + // some implementations forget to negate the zero + value = -0.0; + } + + if(!ok) { + std::cerr << "data:" << data + << " token:" << std::string(m_start, len) + << " value:" << value + << " len:" << len + << " parsed_len:" << (endptr - data) << std::endl; + } + + return ok; + } + + template + bool parse(T& value, /*is_integral=*/std::true_type) const + { + const char* beg = m_start; + const char* const end = m_end; + + if(beg == end) { + return false; + } + + const bool is_negative = (*beg == '-'); + + // json numbers can't start with '+' but + // this code is not json-specific + if(is_negative or *beg == '+') { + ++beg; // skip the leading sign + } + + bool valid = beg < end // must have some digits; + and ( T(-1) < 0 // type must be signed + or !is_negative); // if value is negative + value = 0; + + while(beg < end and valid) { + const uint8_t c = static_cast(*beg - '0'); + const T upd_value = value * 10 + c; + valid &= value <= std::numeric_limits::max() / 10 + and value <= upd_value // did not overflow + and c < 10; // char was digit + value = upd_value; + ++beg; + } + + if(is_negative) { + value = 0 - value; + } + + if(!valid) { + std::cerr << " token:" << std::string(m_start, m_end) + << std::endl; + } + + return valid; + } + }; /*! @brief return number value for number tokens @@ -8275,111 +8435,57 @@ class basic_json This function translates the last token into the most appropriate number type (either integer, unsigned integer or floating point), which is passed back to the caller via the result parameter. + + integral numbers that don't fit into the the range of the respective + type are parsed as number_float_t - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. + floating-point values do not satisfy std::isfinite predicate + are converted to value_t::null + + throws if the entire string [m_start .. m_cursor) cannot be + interpreted as a number - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. + @param[out] result @ref basic_json object to receive the number. */ void get_number(basic_json& result) const { assert(m_start != nullptr); + assert(m_start < m_cursor); + + strtonum num(reinterpret_cast(m_start), + reinterpret_cast(m_cursor)); - const lexer::lexer_char_t* curptr = m_start; + const bool is_negative = *m_start == '-'; - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') - { - type = value_t::number_integer; - max = static_cast((std::numeric_limits::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast((std::numeric_limits::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') + try { + if(not num.is_integral()) { + ; + } + else if(is_negative) { - if (*curptr == '.') - { - // don't count '.' but change to float - type = value_t::number_float; - continue; - } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details - type = value_t::number_float; - break; - } - - // skip if definitely not an integer - if (type != value_t::number_float) + result.m_type = value_t::number_integer; + result.m_value = static_cast(num); + return; + } + else { - // multiply last value by ten and add the new digit - auto temp = value * 10 + *curptr - '0'; - - // test for overflow - if (temp < value || temp > max) - { - // overflow - type = value_t::number_float; - } - else - { - // no overflow - save it - value = temp; - } + result.m_type = value_t::number_unsigned; + result.m_value = static_cast(num); + return; } + } catch (std::invalid_argument&) { + ; // overflow - will parse as double } - // save the value (if not a float) - if (type == value_t::number_unsigned) - { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - result.m_value.number_integer = -static_cast(value); - } - else - { - // parse with strtod - result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + result.m_type = value_t::number_float; + result.m_value = static_cast(num); - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - type = value_t::null; - result.m_value = basic_json::json_value(); - } + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + result.m_type = value_t::null; + result.m_value = basic_json::json_value(); } - - // save the type - result.m_type = type; } private: diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index e04513caf..679b7f3d0 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -375,7 +375,7 @@ TEST_CASE("regression tests") }; // change locale to mess with decimal points - std::locale::global(std::locale(std::locale(), new CommaDecimalSeparator)); + auto orig_locale = std::locale::global(std::locale(std::locale(), new CommaDecimalSeparator)); CHECK(j1a.dump() == "23.42"); CHECK(j1b.dump() == "23.42"); @@ -399,6 +399,8 @@ TEST_CASE("regression tests") CHECK(j3c.dump() == "10000"); //CHECK(j3b.dump() == "1E04"); // roundtrip error //CHECK(j3c.dump() == "1e04"); // roundtrip error + + std::locale::global(orig_locale); } SECTION("issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator") From 4eafaab8164667a2c309ac5b346981542b0873e5 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Sat, 3 Dec 2016 22:54:36 -0500 Subject: [PATCH 002/174] Improved overflow detection; removed debugging output statements. --- src/json.hpp | 47 ++++++++++++++++++++++++----------------------- src/json.hpp.re2c | 47 ++++++++++++++++++++++++----------------------- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index e28333bd4..70bfce5aa 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9223,14 +9223,6 @@ basic_json_parser_66: value = -0.0; } - if(!ok) { - std::cerr << "data:" << data - << " token:" << std::string(m_start, len) - << " value:" << value - << " len:" << len - << " parsed_len:" << (endptr - data) << std::endl; - } - return ok; } @@ -9252,31 +9244,40 @@ basic_json_parser_66: ++beg; // skip the leading sign } + // using unsigned accumulator x because the signed + // type can't hold absolute value of largest + // negative value of this type, so overflow detection + // becomes problematic. + using unsigned_T = typename std::make_unsigned::type; + unsigned_T x = 0; + bool valid = beg < end // must have some digits; and ( T(-1) < 0 // type must be signed or !is_negative); // if value is negative - value = 0; while(beg < end and valid) { const uint8_t c = static_cast(*beg - '0'); - const T upd_value = value * 10 + c; - valid &= value <= std::numeric_limits::max() / 10 - and value <= upd_value // did not overflow - and c < 10; // char was digit - value = upd_value; + const unsigned_T upd_x = x * 10 + c; + + using lim_T = std::numeric_limits; + constexpr unsigned_T thr1 = lim_T::max() / 10; + valid &= c < 10 // char was digit + and x <= thr1 // multiplication did not overflow + and x <= upd_x; // addition did not overflow. + + // note that x <= upd_x alone can't detect overflow since + // we're not just adding a value of decltype(x) but + // also multiplying by 10 + + x = upd_x; ++beg; } - if(is_negative) { - value = 0 - value; - } + value = static_cast(is_negative ? 0 - x : x); - if(!valid) { - std::cerr << " token:" << std::string(m_start, m_end) - << std::endl; - } - - return valid; + // the final check to make sure the value did not roll over + // into positives is for edge cases, e.g. -2^63 + return valid && (is_negative == (value < 0)); } }; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 72c413ba7..418e302c3 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8372,14 +8372,6 @@ class basic_json value = -0.0; } - if(!ok) { - std::cerr << "data:" << data - << " token:" << std::string(m_start, len) - << " value:" << value - << " len:" << len - << " parsed_len:" << (endptr - data) << std::endl; - } - return ok; } @@ -8401,31 +8393,40 @@ class basic_json ++beg; // skip the leading sign } + // using unsigned accumulator x because the signed + // type can't hold absolute value of largest + // negative value of this type, so overflow detection + // becomes problematic. + using unsigned_T = typename std::make_unsigned::type; + unsigned_T x = 0; + bool valid = beg < end // must have some digits; and ( T(-1) < 0 // type must be signed or !is_negative); // if value is negative - value = 0; while(beg < end and valid) { const uint8_t c = static_cast(*beg - '0'); - const T upd_value = value * 10 + c; - valid &= value <= std::numeric_limits::max() / 10 - and value <= upd_value // did not overflow - and c < 10; // char was digit - value = upd_value; + const unsigned_T upd_x = x * 10 + c; + + using lim_T = std::numeric_limits; + constexpr unsigned_T thr1 = lim_T::max() / 10; + valid &= c < 10 // char was digit + and x <= thr1 // multiplication did not overflow + and x <= upd_x; // addition did not overflow. + + // note that x <= upd_x alone can't detect overflow since + // we're not just adding a value of decltype(x) but + // also multiplying by 10 + + x = upd_x; ++beg; } - if(is_negative) { - value = 0 - value; - } + value = static_cast(is_negative ? 0 - x : x); - if(!valid) { - std::cerr << " token:" << std::string(m_start, m_end) - << std::endl; - } - - return valid; + // the final check to make sure the value did not roll over + // into positives is for edge cases, e.g. -2^63 + return valid && (is_negative == (value < 0)); } }; From c75efedc6ec7048244300a6305b25b2e117b440c Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Sat, 3 Dec 2016 23:19:43 -0500 Subject: [PATCH 003/174] stylistic changes --- src/json.hpp | 92 ++++++++++++++++++++++++++--------------------- src/json.hpp.re2c | 92 ++++++++++++++++++++++++++--------------------- 2 files changed, 104 insertions(+), 80 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 70bfce5aa..56949a4c7 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9060,22 +9060,6 @@ basic_json_parser_66: return result; } - - - - - - - - - - - - - - - - /*! @brief parse string into a built-in arithmetic type as if @@ -9086,6 +9070,9 @@ basic_json_parser_66: throw if can't parse the entire string as a number, or if the destination type is integral and the value is outside of the type's range. + + note: in floating-point case strtod may parse + past the token's end - this is not an error. */ struct strtonum { @@ -9101,7 +9088,8 @@ basic_json_parser_66: { T val{0}; - if(parse(val, std::is_integral())) { + if (parse(val, std::is_integral())) + { return val; } @@ -9113,24 +9101,35 @@ basic_json_parser_66: + typeid(T).name()); } - /// return true iff token matches ^[+-]\d+$ + // return true iff token matches ^[+-]\d+$ + // + // this is a helper to determine whether to + // parse the token into floating-point or + // integral type. We wouldn't need it if + // we had separate token types for interal + // and floating-point cases. bool is_integral() const { const char* p = m_start; - if(!p) { + if (!p) + { return false; } - if(*p == '-' or *p == '+') { + if (*p == '-' or *p == '+') + { ++p; } - if(p == m_end) { + if (p == m_end) + { return false; } - while(p < m_end and *p >= '0' and *p <= '9') { + while (p < m_end and *p >= '0' + and *p <= '9') + { ++p; } @@ -9141,6 +9140,9 @@ basic_json_parser_66: const char* const m_start = nullptr; const char* const m_end = nullptr; + // overloaded wrappers for strtod/strtof/strtold + // that will be called from parse + static void strtof(float& f, const char* str, char** endptr) @@ -9173,20 +9175,22 @@ basic_json_parser_66: std::locale()).decimal_point(); // replace decimal separator with locale-specific - // version, if necessary; data will be repointed + // version, when necessary; data will be repointed // to either buf or tempstr containing the fixed // string. std::string tempstr; std::array buf; do { - if(decimal_point_char == '.') { + if (decimal_point_char == '.') + { break; // don't need to convert } const size_t ds_pos = static_cast( std::find(m_start, m_end, '.') - m_start ); - if(ds_pos == len) { + if (ds_pos == len) + { break; // no decimal separator } @@ -9194,31 +9198,33 @@ basic_json_parser_66: // tempstr, if buffer is too small; // replace decimal separator, and update // data to point to the modified bytes - if(len + 1 < buf.size()) { + if (len + 1 < buf.size()) + { std::copy(m_start, m_end, buf.data()); buf[len] = 0; buf[ds_pos] = decimal_point_char; data = buf.data(); - } else { + } + else + { tempstr.assign(m_start, m_end); tempstr[ds_pos] = decimal_point_char; data = tempstr.c_str(); } - } while(0); + } while (0); char* endptr = nullptr; value = 0; strtof(value, data, &endptr); - - // note that reading past the end is OK, the data may be, - // for example, "123.", where the parsed token only contains "123", - // but strtod will read the dot as well. + // for example, "123.", where the parsed token only + // contains "123", but strtod will read the dot as well. const bool ok = endptr >= data + len and len > 0; - if(ok and value == 0.0 and *data == '-') { + if (ok and value == 0.0 and *data == '-') + { // some implementations forget to negate the zero value = -0.0; } @@ -9232,15 +9238,17 @@ basic_json_parser_66: const char* beg = m_start; const char* const end = m_end; - if(beg == end) { + if (beg == end) + { return false; } const bool is_negative = (*beg == '-'); // json numbers can't start with '+' but - // this code is not json-specific - if(is_negative or *beg == '+') { + // this code is not strictly json-specific + if (is_negative or *beg == '+') + { ++beg; // skip the leading sign } @@ -9255,7 +9263,8 @@ basic_json_parser_66: and ( T(-1) < 0 // type must be signed or !is_negative); // if value is negative - while(beg < end and valid) { + while (beg < end and valid) + { const uint8_t c = static_cast(*beg - '0'); const unsigned_T upd_x = x * 10 + c; @@ -9310,10 +9319,11 @@ basic_json_parser_66: const bool is_negative = *m_start == '-'; try { - if(not num.is_integral()) { + if (not num.is_integral()) + { ; } - else if(is_negative) + else if (is_negative) { result.m_type = value_t::number_integer; result.m_value = static_cast(num); @@ -9325,7 +9335,9 @@ basic_json_parser_66: result.m_value = static_cast(num); return; } - } catch (std::invalid_argument&) { + } + catch (std::invalid_argument&) + { ; // overflow - will parse as double } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 418e302c3..d97057a8c 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8209,22 +8209,6 @@ class basic_json return result; } - - - - - - - - - - - - - - - - /*! @brief parse string into a built-in arithmetic type as if @@ -8235,6 +8219,9 @@ class basic_json throw if can't parse the entire string as a number, or if the destination type is integral and the value is outside of the type's range. + + note: in floating-point case strtod may parse + past the token's end - this is not an error. */ struct strtonum { @@ -8250,7 +8237,8 @@ class basic_json { T val{0}; - if(parse(val, std::is_integral())) { + if (parse(val, std::is_integral())) + { return val; } @@ -8262,24 +8250,35 @@ class basic_json + typeid(T).name()); } - /// return true iff token matches ^[+-]\d+$ + // return true iff token matches ^[+-]\d+$ + // + // this is a helper to determine whether to + // parse the token into floating-point or + // integral type. We wouldn't need it if + // we had separate token types for interal + // and floating-point cases. bool is_integral() const { const char* p = m_start; - if(!p) { + if (!p) + { return false; } - if(*p == '-' or *p == '+') { + if (*p == '-' or *p == '+') + { ++p; } - if(p == m_end) { + if (p == m_end) + { return false; } - while(p < m_end and *p >= '0' and *p <= '9') { + while (p < m_end and *p >= '0' + and *p <= '9') + { ++p; } @@ -8290,6 +8289,9 @@ class basic_json const char* const m_start = nullptr; const char* const m_end = nullptr; + // overloaded wrappers for strtod/strtof/strtold + // that will be called from parse + static void strtof(float& f, const char* str, char** endptr) @@ -8322,20 +8324,22 @@ class basic_json std::locale()).decimal_point(); // replace decimal separator with locale-specific - // version, if necessary; data will be repointed + // version, when necessary; data will be repointed // to either buf or tempstr containing the fixed // string. std::string tempstr; std::array buf; do { - if(decimal_point_char == '.') { + if (decimal_point_char == '.') + { break; // don't need to convert } const size_t ds_pos = static_cast( std::find(m_start, m_end, '.') - m_start ); - if(ds_pos == len) { + if (ds_pos == len) + { break; // no decimal separator } @@ -8343,31 +8347,33 @@ class basic_json // tempstr, if buffer is too small; // replace decimal separator, and update // data to point to the modified bytes - if(len + 1 < buf.size()) { + if (len + 1 < buf.size()) + { std::copy(m_start, m_end, buf.data()); buf[len] = 0; buf[ds_pos] = decimal_point_char; data = buf.data(); - } else { + } + else + { tempstr.assign(m_start, m_end); tempstr[ds_pos] = decimal_point_char; data = tempstr.c_str(); } - } while(0); + } while (0); char* endptr = nullptr; value = 0; strtof(value, data, &endptr); - - // note that reading past the end is OK, the data may be, - // for example, "123.", where the parsed token only contains "123", - // but strtod will read the dot as well. + // for example, "123.", where the parsed token only + // contains "123", but strtod will read the dot as well. const bool ok = endptr >= data + len and len > 0; - if(ok and value == 0.0 and *data == '-') { + if (ok and value == 0.0 and *data == '-') + { // some implementations forget to negate the zero value = -0.0; } @@ -8381,15 +8387,17 @@ class basic_json const char* beg = m_start; const char* const end = m_end; - if(beg == end) { + if (beg == end) + { return false; } const bool is_negative = (*beg == '-'); // json numbers can't start with '+' but - // this code is not json-specific - if(is_negative or *beg == '+') { + // this code is not strictly json-specific + if (is_negative or *beg == '+') + { ++beg; // skip the leading sign } @@ -8404,7 +8412,8 @@ class basic_json and ( T(-1) < 0 // type must be signed or !is_negative); // if value is negative - while(beg < end and valid) { + while (beg < end and valid) + { const uint8_t c = static_cast(*beg - '0'); const unsigned_T upd_x = x * 10 + c; @@ -8459,10 +8468,11 @@ class basic_json const bool is_negative = *m_start == '-'; try { - if(not num.is_integral()) { + if (not num.is_integral()) + { ; } - else if(is_negative) + else if (is_negative) { result.m_type = value_t::number_integer; result.m_value = static_cast(num); @@ -8474,7 +8484,9 @@ class basic_json result.m_value = static_cast(num); return; } - } catch (std::invalid_argument&) { + } + catch (std::invalid_argument&) + { ; // overflow - will parse as double } From e41a956782fd64a2bdf253a13f05bc5e8239ec61 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Sun, 4 Dec 2016 13:23:39 -0500 Subject: [PATCH 004/174] Alternative handling of integer types relying on strto[u]ll --- src/json.hpp | 46 ++++++++++++++++++++++++++++++++++++++++++++-- src/json.hpp.re2c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 56949a4c7..51b195185 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9073,6 +9073,8 @@ basic_json_parser_66: note: in floating-point case strtod may parse past the token's end - this is not an error. + + any leading blanks are not handled. */ struct strtonum { @@ -9232,6 +9234,45 @@ basic_json_parser_66: return ok; } + +#if 1 // parsing with strto[u]ll - easier to understand but slightly slower + + signed long long parse_integral( + char** endptr, + /*is_signed*/std::true_type) const + { + return std::strtoll(m_start, endptr, 10); + } + + unsigned long long parse_integral( + char** endptr, + /*is_signed*/std::false_type) const + { + return std::strtoull(m_start, endptr, 10); + } + + template + bool parse(T& value, /*is_integral=*/std::true_type) const + { + char* endptr = nullptr; + errno = 0; // these are thread-local + const auto x = parse_integral(&endptr, std::is_signed()); + + static_assert(std::is_signed() // called right overload? + == std::is_signed(), ""); + + value = static_cast(x); + + return x == static_cast(value) // x fits into destination T + and (x != 0 or is_integral()) // strto[u]ll did nto fail + and errno == 0 // strto[u]ll did not overflow + and m_start < m_end // token was not empty + and endptr == m_end // parsed entire token exactly + and (x < 0) == (*m_start == '-'); // input was sign-compatible + } + +#else // parsing integral types manually + template bool parse(T& value, /*is_integral=*/std::true_type) const { @@ -9240,7 +9281,7 @@ basic_json_parser_66: if (beg == end) { - return false; + return false; // empty token } const bool is_negative = (*beg == '-'); @@ -9261,7 +9302,7 @@ basic_json_parser_66: bool valid = beg < end // must have some digits; and ( T(-1) < 0 // type must be signed - or !is_negative); // if value is negative + or !is_negative); // ...if value is negative while (beg < end and valid) { @@ -9288,6 +9329,7 @@ basic_json_parser_66: // into positives is for edge cases, e.g. -2^63 return valid && (is_negative == (value < 0)); } +#endif }; /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index d97057a8c..e5f344b22 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8222,6 +8222,8 @@ class basic_json note: in floating-point case strtod may parse past the token's end - this is not an error. + + any leading blanks are not handled. */ struct strtonum { @@ -8381,6 +8383,45 @@ class basic_json return ok; } + +#if 1 // parsing with strto[u]ll - easier to understand but slightly slower + + signed long long parse_integral( + char** endptr, + /*is_signed*/std::true_type) const + { + return std::strtoll(m_start, endptr, 10); + } + + unsigned long long parse_integral( + char** endptr, + /*is_signed*/std::false_type) const + { + return std::strtoull(m_start, endptr, 10); + } + + template + bool parse(T& value, /*is_integral=*/std::true_type) const + { + char* endptr = nullptr; + errno = 0; // these are thread-local + const auto x = parse_integral(&endptr, std::is_signed()); + + static_assert(std::is_signed() // called right overload? + == std::is_signed(), ""); + + value = static_cast(x); + + return x == static_cast(value) // x fits into destination T + and (x != 0 or is_integral()) // strto[u]ll did nto fail + and errno == 0 // strto[u]ll did not overflow + and m_start < m_end // token was not empty + and endptr == m_end // parsed entire token exactly + and (x < 0) == (*m_start == '-'); // input was sign-compatible + } + +#else // parsing integral types manually + template bool parse(T& value, /*is_integral=*/std::true_type) const { @@ -8389,7 +8430,7 @@ class basic_json if (beg == end) { - return false; + return false; // empty token } const bool is_negative = (*beg == '-'); @@ -8410,7 +8451,7 @@ class basic_json bool valid = beg < end // must have some digits; and ( T(-1) < 0 // type must be signed - or !is_negative); // if value is negative + or !is_negative); // ...if value is negative while (beg < end and valid) { @@ -8437,6 +8478,7 @@ class basic_json // into positives is for edge cases, e.g. -2^63 return valid && (is_negative == (value < 0)); } +#endif }; /*! From d64336057569281386aafed096a6db77d8aa901a Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 00:43:12 -0500 Subject: [PATCH 005/174] Bugfix: when working with C formatting functions we need to query C locales (localeconv) rather than std::locale --- src/json.hpp | 12 +++++++++++- src/json.hpp.re2c | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 51b195185..f1666c6c6 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9108,7 +9108,7 @@ basic_json_parser_66: // this is a helper to determine whether to // parse the token into floating-point or // integral type. We wouldn't need it if - // we had separate token types for interal + // we had separate token types for integral // and floating-point cases. bool is_integral() const { @@ -9172,9 +9172,19 @@ basic_json_parser_66: const char* data = m_start; const size_t len = static_cast(m_end - m_start); +#if 0 const char decimal_point_char = std::use_facet< std::numpunct >( std::locale()).decimal_point(); +#else + // Since dealing with strtod family of functions, + // need to use the C locales instead of C++ + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = + !loc->decimal_point ? '.' + : loc->decimal_point[0]; +#endif // replace decimal separator with locale-specific // version, when necessary; data will be repointed diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index e5f344b22..b80590354 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8257,7 +8257,7 @@ class basic_json // this is a helper to determine whether to // parse the token into floating-point or // integral type. We wouldn't need it if - // we had separate token types for interal + // we had separate token types for integral // and floating-point cases. bool is_integral() const { @@ -8321,9 +8321,19 @@ class basic_json const char* data = m_start; const size_t len = static_cast(m_end - m_start); +#if 0 const char decimal_point_char = std::use_facet< std::numpunct >( std::locale()).decimal_point(); +#else + // Since dealing with strtod family of functions, + // need to use the C locales instead of C++ + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = + !loc->decimal_point ? '.' + : loc->decimal_point[0]; +#endif // replace decimal separator with locale-specific // version, when necessary; data will be repointed From 0c87d5d6b34d8595ceb645be1e0b82c4a4eaafe2 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 19:41:05 -0500 Subject: [PATCH 006/174] Refactored preprocessing with a lambda instead of do{...}while(0) --- src/json.hpp | 48 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f1666c6c6..19f1f109c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9169,33 +9169,28 @@ basic_json_parser_66: template bool parse(T& value, /*is_integral=*/std::false_type) const { - const char* data = m_start; - const size_t len = static_cast(m_end - m_start); - -#if 0 - const char decimal_point_char = - std::use_facet< std::numpunct >( - std::locale()).decimal_point(); -#else - // Since dealing with strtod family of functions, - // need to use the C locales instead of C++ - const auto loc = localeconv(); - assert(loc != nullptr); - const char decimal_point_char = - !loc->decimal_point ? '.' - : loc->decimal_point[0]; -#endif - // replace decimal separator with locale-specific - // version, when necessary; data will be repointed - // to either buf or tempstr containing the fixed - // string. + // version, when necessary; data will point to + // either the original string, or buf, or tempstr + // containing the fixed string. std::string tempstr; std::array buf; - do { + const size_t len = static_cast(m_end - m_start); + + const char* const data = [this, &tempstr, &buf, len]() -> const char* + { + // Since dealing with strtod family of functions, + // we're getting the decimal point char from the + // C locale facilities instead of C++'s numpunct + // facet of the current std::locale; + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = !loc->decimal_point ? '.' + : loc->decimal_point[0]; + if (decimal_point_char == '.') { - break; // don't need to convert + return m_start; // don't need to convert } const size_t ds_pos = static_cast( @@ -9203,7 +9198,7 @@ basic_json_parser_66: if (ds_pos == len) { - break; // no decimal separator + return m_start; // no decimal separator } // copy the data into the local buffer or @@ -9215,18 +9210,19 @@ basic_json_parser_66: std::copy(m_start, m_end, buf.data()); buf[len] = 0; buf[ds_pos] = decimal_point_char; - data = buf.data(); + return buf.data(); } else { tempstr.assign(m_start, m_end); tempstr[ds_pos] = decimal_point_char; - data = tempstr.c_str(); + return tempstr.c_str(); } - } while (0); + }(); char* endptr = nullptr; value = 0; + // this calls appropriate overload depending on T strtof(value, data, &endptr); // note that reading past the end is OK, the data may be, From 7a081244a575284246d38a594fb0436ca2b6dacc Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 19:41:31 -0500 Subject: [PATCH 007/174] Refactored preprocessing with a lambda instead of do{...}while(0) --- src/json.hpp.re2c | 48 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b80590354..27a53fb78 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8318,33 +8318,28 @@ class basic_json template bool parse(T& value, /*is_integral=*/std::false_type) const { - const char* data = m_start; - const size_t len = static_cast(m_end - m_start); - -#if 0 - const char decimal_point_char = - std::use_facet< std::numpunct >( - std::locale()).decimal_point(); -#else - // Since dealing with strtod family of functions, - // need to use the C locales instead of C++ - const auto loc = localeconv(); - assert(loc != nullptr); - const char decimal_point_char = - !loc->decimal_point ? '.' - : loc->decimal_point[0]; -#endif - // replace decimal separator with locale-specific - // version, when necessary; data will be repointed - // to either buf or tempstr containing the fixed - // string. + // version, when necessary; data will point to + // either the original string, or buf, or tempstr + // containing the fixed string. std::string tempstr; std::array buf; - do { + const size_t len = static_cast(m_end - m_start); + + const char* const data = [this, &tempstr, &buf, len]() -> const char* + { + // Since dealing with strtod family of functions, + // we're getting the decimal point char from the + // C locale facilities instead of C++'s numpunct + // facet of the current std::locale; + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = !loc->decimal_point ? '.' + : loc->decimal_point[0]; + if (decimal_point_char == '.') { - break; // don't need to convert + return m_start; // don't need to convert } const size_t ds_pos = static_cast( @@ -8352,7 +8347,7 @@ class basic_json if (ds_pos == len) { - break; // no decimal separator + return m_start; // no decimal separator } // copy the data into the local buffer or @@ -8364,18 +8359,19 @@ class basic_json std::copy(m_start, m_end, buf.data()); buf[len] = 0; buf[ds_pos] = decimal_point_char; - data = buf.data(); + return buf.data(); } else { tempstr.assign(m_start, m_end); tempstr[ds_pos] = decimal_point_char; - data = tempstr.c_str(); + return tempstr.c_str(); } - } while (0); + }(); char* endptr = nullptr; value = 0; + // this calls appropriate overload depending on T strtof(value, data, &endptr); // note that reading past the end is OK, the data may be, From 6e8da7d8c4aada79740076755ed487da505ceb28 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 19:45:48 -0500 Subject: [PATCH 008/174] Added unit-test for issue #379 (locale-independent str-to-num) --- test/src/unit-regression.cpp | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 679b7f3d0..2787fe261 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -403,6 +403,44 @@ TEST_CASE("regression tests") std::locale::global(orig_locale); } + SECTION("issue #379 - locale-independent str-to-num") + { + const std::string orig_locale_name(setlocale(LC_ALL, NULL)); + + setlocale(LC_NUMERIC, "de_DE"); + std::array buf; + + { + // verify that snprintf now uses commas as decimal-separator + std::snprintf(buf.data(), buf.size(), "%.2f", 3.14); + assert(std::strcmp(buf.data(), "3,14") == 0); + + // verify that strtod now uses commas as decimal-separator + const double d1 = std::strtod(buf.data(), nullptr); + assert(d1 == 3.14); + + // verify that strtod does not understand dots as decimal separator + const double d2 = std::strtod("3.14", nullptr); + assert(d2 == 3); + } + + const json j1 = json::parse("3.14"); + + // verify that parsed correctly despite using strtod internally + CHECK(j1.get() == 3.14); + + // verify that dumped correctly despite using snprintf internally + CHECK(j1.dump() == "3.14"); + + // check a different code path + const json j2 = json::parse("1.000000000000000000000000000000000000000000000000000000000000000000000000"); + CHECK(j2.get() == 1.0); + + // restore original locale + setlocale(LC_ALL, orig_locale_name.c_str()); + } + + SECTION("issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator") { json source = {"a", "b", "c"}; From d2e9ce270a642e4ca7e00fc160c81eadb55a5639 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 22:18:20 -0500 Subject: [PATCH 009/174] Trying to coerce setlocale to make snprintf use commas as delimiter; the behavior appears to be compiler/platform-specific --- test/src/unit-regression.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 2787fe261..17616a3e6 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -407,21 +407,21 @@ TEST_CASE("regression tests") { const std::string orig_locale_name(setlocale(LC_ALL, NULL)); - setlocale(LC_NUMERIC, "de_DE"); + setlocale(LC_NUMERIC, "fr_Fr.UTF-8"); std::array buf; { // verify that snprintf now uses commas as decimal-separator std::snprintf(buf.data(), buf.size(), "%.2f", 3.14); - assert(std::strcmp(buf.data(), "3,14") == 0); + CHECK(std::strcmp(buf.data(), "3,14") == 0); // verify that strtod now uses commas as decimal-separator const double d1 = std::strtod(buf.data(), nullptr); - assert(d1 == 3.14); + CHECK(d1 == 3.14); // verify that strtod does not understand dots as decimal separator const double d2 = std::strtod("3.14", nullptr); - assert(d2 == 3); + CHECK(d2 == 3); } const json j1 = json::parse("3.14"); From d169598c6c236ce115a8453d917d99efc79fa3a3 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 22:20:48 -0500 Subject: [PATCH 010/174] simplified code a bit based on @gregmarr's suggestions --- src/json.hpp | 69 ++++++++++++++++++++++------------------------- src/json.hpp.re2c | 69 ++++++++++++++++++++++------------------------- 2 files changed, 64 insertions(+), 74 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 19f1f109c..1644d91f2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9177,48 +9177,43 @@ basic_json_parser_66: std::array buf; const size_t len = static_cast(m_end - m_start); - const char* const data = [this, &tempstr, &buf, len]() -> const char* + // Since dealing with strtod family of functions, + // we're getting the decimal point char from the + // C locale facilities instead of C++'s numpunct + // facet of the current std::locale; + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = !loc->decimal_point ? '.' + : loc->decimal_point[0]; + + const char *data = m_start; + + if (decimal_point_char != '.') { - // Since dealing with strtod family of functions, - // we're getting the decimal point char from the - // C locale facilities instead of C++'s numpunct - // facet of the current std::locale; - const auto loc = localeconv(); - assert(loc != nullptr); - const char decimal_point_char = !loc->decimal_point ? '.' - : loc->decimal_point[0]; - - if (decimal_point_char == '.') - { - return m_start; // don't need to convert - } - const size_t ds_pos = static_cast( std::find(m_start, m_end, '.') - m_start ); - - if (ds_pos == len) + + if (ds_pos != len) { - return m_start; // no decimal separator + // copy the data into the local buffer or + // tempstr, if buffer is too small; + // replace decimal separator, and update + // data to point to the modified bytes + if (len + 1 < buf.size()) + { + std::copy(m_start, m_end, buf.data()); + buf[len] = 0; + buf[ds_pos] = decimal_point_char; + data = buf.data(); + } + else + { + tempstr.assign(m_start, m_end); + tempstr[ds_pos] = decimal_point_char; + data = tempstr.c_str(); + } } - - // copy the data into the local buffer or - // tempstr, if buffer is too small; - // replace decimal separator, and update - // data to point to the modified bytes - if (len + 1 < buf.size()) - { - std::copy(m_start, m_end, buf.data()); - buf[len] = 0; - buf[ds_pos] = decimal_point_char; - return buf.data(); - } - else - { - tempstr.assign(m_start, m_end); - tempstr[ds_pos] = decimal_point_char; - return tempstr.c_str(); - } - }(); + } char* endptr = nullptr; value = 0; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 27a53fb78..b541db1e9 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8326,48 +8326,43 @@ class basic_json std::array buf; const size_t len = static_cast(m_end - m_start); - const char* const data = [this, &tempstr, &buf, len]() -> const char* + // Since dealing with strtod family of functions, + // we're getting the decimal point char from the + // C locale facilities instead of C++'s numpunct + // facet of the current std::locale; + const auto loc = localeconv(); + assert(loc != nullptr); + const char decimal_point_char = !loc->decimal_point ? '.' + : loc->decimal_point[0]; + + const char *data = m_start; + + if (decimal_point_char != '.') { - // Since dealing with strtod family of functions, - // we're getting the decimal point char from the - // C locale facilities instead of C++'s numpunct - // facet of the current std::locale; - const auto loc = localeconv(); - assert(loc != nullptr); - const char decimal_point_char = !loc->decimal_point ? '.' - : loc->decimal_point[0]; - - if (decimal_point_char == '.') - { - return m_start; // don't need to convert - } - const size_t ds_pos = static_cast( std::find(m_start, m_end, '.') - m_start ); - - if (ds_pos == len) + + if (ds_pos != len) { - return m_start; // no decimal separator + // copy the data into the local buffer or + // tempstr, if buffer is too small; + // replace decimal separator, and update + // data to point to the modified bytes + if (len + 1 < buf.size()) + { + std::copy(m_start, m_end, buf.data()); + buf[len] = 0; + buf[ds_pos] = decimal_point_char; + data = buf.data(); + } + else + { + tempstr.assign(m_start, m_end); + tempstr[ds_pos] = decimal_point_char; + data = tempstr.c_str(); + } } - - // copy the data into the local buffer or - // tempstr, if buffer is too small; - // replace decimal separator, and update - // data to point to the modified bytes - if (len + 1 < buf.size()) - { - std::copy(m_start, m_end, buf.data()); - buf[len] = 0; - buf[ds_pos] = decimal_point_char; - return buf.data(); - } - else - { - tempstr.assign(m_start, m_end); - tempstr[ds_pos] = decimal_point_char; - return tempstr.c_str(); - } - }(); + } char* endptr = nullptr; value = 0; From 6774457733524e81d7aa6fd0f3df6fd48423d0f7 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Tue, 6 Dec 2016 22:59:12 -0500 Subject: [PATCH 011/174] Trying to coerce setlocale to make snprintf use commas as delimiter some more --- test/src/unit-regression.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 17616a3e6..41ddfa40c 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -405,9 +405,14 @@ TEST_CASE("regression tests") SECTION("issue #379 - locale-independent str-to-num") { - const std::string orig_locale_name(setlocale(LC_ALL, NULL)); + // If I save the locale here and restore it in the end + // of this block, then setLocale(LC_NUMERIC, "de_DE") + // does not actually make snprintf use "," as decimal separator + // on some compilers. I have no idea... + // + //const std::string orig_locale_name(setlocale(LC_ALL, NULL)); - setlocale(LC_NUMERIC, "fr_Fr.UTF-8"); + setlocale(LC_NUMERIC, "de_DE"); std::array buf; { @@ -437,7 +442,7 @@ TEST_CASE("regression tests") CHECK(j2.get() == 1.0); // restore original locale - setlocale(LC_ALL, orig_locale_name.c_str()); + // setlocale(LC_ALL, orig_locale_name.c_str()); } From 0a4a6a8399d1f4194d009c50ec076dd287cafa9e Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Wed, 7 Dec 2016 19:53:27 -0500 Subject: [PATCH 012/174] Refactored to avoid using exceptions, as there are plans to support exceptionless mode --- src/json.hpp | 78 +++++++++++++++++++++++++++++++++++------------ src/json.hpp.re2c | 78 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 118 insertions(+), 38 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 1644d91f2..79d6bb024 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9079,10 +9079,42 @@ basic_json_parser_66: struct strtonum { public: - strtonum(const char* start, const char* end) + template + struct maybe + { + T x; + bool valid; + + maybe(const T& xx) + : x(xx), valid(true) + {} + + maybe() : x(), valid(false) + {} + + operator bool() const + { + return valid; + } + + const T& operator*() const + { + return x; + } + }; + + strtonum(const char* start, const char* end) : m_start(start), m_end(end) {} + template::value>::type > + bool to(T& val) const + { + return parse(val, std::is_integral()); + } + template::value>::type > @@ -9361,31 +9393,39 @@ basic_json_parser_66: const bool is_negative = *m_start == '-'; - try { - if (not num.is_integral()) - { - ; - } - else if (is_negative) - { + result.m_type = value_t::discarded; + + if (not num.is_integral()) + { + ; // will parse as float below + } + else if (is_negative) + { + number_integer_t val{0}; + if(num.to(val)) { result.m_type = value_t::number_integer; - result.m_value = static_cast(num); - return; - } - else - { - result.m_type = value_t::number_unsigned; - result.m_value = static_cast(num); - return; + result.m_value = val; } } - catch (std::invalid_argument&) + else { - ; // overflow - will parse as double + number_unsigned_t val{0}; + if(num.to(val)) { + result.m_type = value_t::number_unsigned; + result.m_value = val; + } + } + + number_float_t val{0}; + if (result.m_type != value_t::discarded + or !num.to(val)) + { + return; // already have a value from above + // or couldn't parse as float_t } result.m_type = value_t::number_float; - result.m_value = static_cast(num); + result.m_value = val; // replace infinity and NAN by null if (not std::isfinite(result.m_value.number_float)) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b541db1e9..24c549755 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8228,10 +8228,42 @@ class basic_json struct strtonum { public: - strtonum(const char* start, const char* end) + template + struct maybe + { + T x; + bool valid; + + maybe(const T& xx) + : x(xx), valid(true) + {} + + maybe() : x(), valid(false) + {} + + operator bool() const + { + return valid; + } + + const T& operator*() const + { + return x; + } + }; + + strtonum(const char* start, const char* end) : m_start(start), m_end(end) {} + template::value>::type > + bool to(T& val) const + { + return parse(val, std::is_integral()); + } + template::value>::type > @@ -8510,31 +8542,39 @@ class basic_json const bool is_negative = *m_start == '-'; - try { - if (not num.is_integral()) - { - ; - } - else if (is_negative) - { + result.m_type = value_t::discarded; + + if (not num.is_integral()) + { + ; // will parse as float below + } + else if (is_negative) + { + number_integer_t val{0}; + if(num.to(val)) { result.m_type = value_t::number_integer; - result.m_value = static_cast(num); - return; - } - else - { - result.m_type = value_t::number_unsigned; - result.m_value = static_cast(num); - return; + result.m_value = val; } } - catch (std::invalid_argument&) + else { - ; // overflow - will parse as double + number_unsigned_t val{0}; + if(num.to(val)) { + result.m_type = value_t::number_unsigned; + result.m_value = val; + } + } + + number_float_t val{0}; + if (result.m_type != value_t::discarded + or !num.to(val)) + { + return; // already have a value from above + // or couldn't parse as float_t } result.m_type = value_t::number_float; - result.m_value = static_cast(num); + result.m_value = val; // replace infinity and NAN by null if (not std::isfinite(result.m_value.number_float)) From 27d9740ad6d9b564beb0e995e0ab393c6ab3daf7 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Wed, 7 Dec 2016 19:55:07 -0500 Subject: [PATCH 013/174] Tweaks to unit-test for issue #379 --- test/src/unit-regression.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 41ddfa40c..deace862e 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -406,22 +406,27 @@ TEST_CASE("regression tests") SECTION("issue #379 - locale-independent str-to-num") { // If I save the locale here and restore it in the end - // of this block, then setLocale(LC_NUMERIC, "de_DE") + // of this block, then setLocale(LC_NUMERIC, "de_DE") // does not actually make snprintf use "," as decimal separator // on some compilers. I have no idea... - // //const std::string orig_locale_name(setlocale(LC_ALL, NULL)); - - setlocale(LC_NUMERIC, "de_DE"); + + + // Still, just setting some comma-using locale does not + // make snprintf output commas on all platforms, so instead + // will change dot to comma in the current locale below + //setlocale(LC_NUMERIC, "de_DE"); + + auto loc = localeconv(); + auto orig_decimal_point = loc->decimal_point; + char comma[] = ","; + loc->decimal_point = comma; + std::array buf; { - // verify that snprintf now uses commas as decimal-separator - std::snprintf(buf.data(), buf.size(), "%.2f", 3.14); - CHECK(std::strcmp(buf.data(), "3,14") == 0); - // verify that strtod now uses commas as decimal-separator - const double d1 = std::strtod(buf.data(), nullptr); + const double d1 = std::strtod("3,14", nullptr); CHECK(d1 == 3.14); // verify that strtod does not understand dots as decimal separator @@ -429,18 +434,15 @@ TEST_CASE("regression tests") CHECK(d2 == 3); } - const json j1 = json::parse("3.14"); - // verify that parsed correctly despite using strtod internally + const json j1 = json::parse("3.14"); CHECK(j1.get() == 3.14); - // verify that dumped correctly despite using snprintf internally - CHECK(j1.dump() == "3.14"); - // check a different code path const json j2 = json::parse("1.000000000000000000000000000000000000000000000000000000000000000000000000"); CHECK(j2.get() == 1.0); + loc->decimal_point = orig_decimal_point; // restore original locale // setlocale(LC_ALL, orig_locale_name.c_str()); } From 38499e84fc771b21db7764ff4e014f7c3939d4b0 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Thu, 8 Dec 2016 21:38:14 -0500 Subject: [PATCH 014/174] Removed unused struct; fixed comments --- src/json.hpp | 69 +++++++++-------------------------------------- src/json.hpp.re2c | 69 +++++++++-------------------------------------- 2 files changed, 24 insertions(+), 114 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 79d6bb024..867afbb35 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9065,12 +9065,6 @@ basic_json_parser_66: @brief parse string into a built-in arithmetic type as if the current locale is POSIX. - e.g. const auto x = static_cast("123.4"); - - throw if can't parse the entire string as a number, - or if the destination type is integral and the value - is outside of the type's range. - note: in floating-point case strtod may parse past the token's end - this is not an error. @@ -9079,34 +9073,15 @@ basic_json_parser_66: struct strtonum { public: - template - struct maybe - { - T x; - bool valid; - - maybe(const T& xx) - : x(xx), valid(true) - {} - - maybe() : x(), valid(false) - {} - - operator bool() const - { - return valid; - } - - const T& operator*() const - { - return x; - } - }; - strtonum(const char* start, const char* end) : m_start(start), m_end(end) {} + /// return true iff parsed successfully as + /// number of type T. + /// + /// @val shall contain parsed value, or + /// undefined value if could not parse. template::value>::type > @@ -9115,33 +9090,13 @@ basic_json_parser_66: return parse(val, std::is_integral()); } - template::value>::type > - operator T() const - { - T val{0}; - - if (parse(val, std::is_integral())) - { - return val; - } - - throw std::invalid_argument( - std::string() - + "Can't parse '" - + std::string(m_start, m_end) - + "' as type " - + typeid(T).name()); - } - - // return true iff token matches ^[+-]\d+$ - // - // this is a helper to determine whether to - // parse the token into floating-point or - // integral type. We wouldn't need it if - // we had separate token types for integral - // and floating-point cases. + /// return true iff token matches ^[+-]\d+$ + /// + /// this is a helper to determine whether to + /// parse the token into floating-point or + /// integral type. We wouldn't need it if + /// we had separate token types for integral + /// and floating-point cases. bool is_integral() const { const char* p = m_start; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 24c549755..5b2dc8d2d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8214,12 +8214,6 @@ class basic_json @brief parse string into a built-in arithmetic type as if the current locale is POSIX. - e.g. const auto x = static_cast("123.4"); - - throw if can't parse the entire string as a number, - or if the destination type is integral and the value - is outside of the type's range. - note: in floating-point case strtod may parse past the token's end - this is not an error. @@ -8228,34 +8222,15 @@ class basic_json struct strtonum { public: - template - struct maybe - { - T x; - bool valid; - - maybe(const T& xx) - : x(xx), valid(true) - {} - - maybe() : x(), valid(false) - {} - - operator bool() const - { - return valid; - } - - const T& operator*() const - { - return x; - } - }; - strtonum(const char* start, const char* end) : m_start(start), m_end(end) {} + /// return true iff parsed successfully as + /// number of type T. + /// + /// @val shall contain parsed value, or + /// undefined value if could not parse. template::value>::type > @@ -8264,33 +8239,13 @@ class basic_json return parse(val, std::is_integral()); } - template::value>::type > - operator T() const - { - T val{0}; - - if (parse(val, std::is_integral())) - { - return val; - } - - throw std::invalid_argument( - std::string() - + "Can't parse '" - + std::string(m_start, m_end) - + "' as type " - + typeid(T).name()); - } - - // return true iff token matches ^[+-]\d+$ - // - // this is a helper to determine whether to - // parse the token into floating-point or - // integral type. We wouldn't need it if - // we had separate token types for integral - // and floating-point cases. + /// return true iff token matches ^[+-]\d+$ + /// + /// this is a helper to determine whether to + /// parse the token into floating-point or + /// integral type. We wouldn't need it if + /// we had separate token types for integral + /// and floating-point cases. bool is_integral() const { const char* p = m_start; From 1c029b97c0ebc90b5b7f1cb875b0904f115668b8 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Thu, 8 Dec 2016 22:13:05 -0500 Subject: [PATCH 015/174] Still trying to invoke locale-specific behavior in CI --- test/src/unit-regression.cpp | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index deace862e..5cd6356d3 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -405,46 +405,21 @@ TEST_CASE("regression tests") SECTION("issue #379 - locale-independent str-to-num") { - // If I save the locale here and restore it in the end - // of this block, then setLocale(LC_NUMERIC, "de_DE") - // does not actually make snprintf use "," as decimal separator - // on some compilers. I have no idea... - //const std::string orig_locale_name(setlocale(LC_ALL, NULL)); - - - // Still, just setting some comma-using locale does not - // make snprintf output commas on all platforms, so instead - // will change dot to comma in the current locale below - //setlocale(LC_NUMERIC, "de_DE"); - - auto loc = localeconv(); - auto orig_decimal_point = loc->decimal_point; - char comma[] = ","; - loc->decimal_point = comma; - - std::array buf; + setlocale(LC_NUMERIC, "de_DE.UTF-8"); { // verify that strtod now uses commas as decimal-separator - const double d1 = std::strtod("3,14", nullptr); - CHECK(d1 == 3.14); + CHECK(std::strtod("3,14", nullptr) == 3.14); // verify that strtod does not understand dots as decimal separator - const double d2 = std::strtod("3.14", nullptr); - CHECK(d2 == 3); + CHECK(std::strtod("3.14", nullptr) == 3); } // verify that parsed correctly despite using strtod internally - const json j1 = json::parse("3.14"); - CHECK(j1.get() == 3.14); + CHECK(json::parse("3.14").get() == 3.14); // check a different code path - const json j2 = json::parse("1.000000000000000000000000000000000000000000000000000000000000000000000000"); - CHECK(j2.get() == 1.0); - - loc->decimal_point = orig_decimal_point; - // restore original locale - // setlocale(LC_ALL, orig_locale_name.c_str()); + CHECK(json::parse("1.000000000000000000000000000000000000000000000000000000000000000000000000").get() == 1.0); } From cd0b651d43c303dbe0b8016a1305ab9e5fef6449 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Mon, 12 Dec 2016 19:46:47 -0500 Subject: [PATCH 016/174] Tweaked check for preserved sign; added LCOV_EXCL_LINE --- src/json.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 867afbb35..b526400cf 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9103,7 +9103,7 @@ basic_json_parser_66: if (!p) { - return false; + return false; // LCOV_EXCL_LINE } if (*p == '-' or *p == '+') @@ -9113,7 +9113,7 @@ basic_json_parser_66: if (p == m_end) { - return false; + return false; // LCOV_EXCL_LINE } while (p < m_end and *p >= '0' @@ -9252,11 +9252,11 @@ basic_json_parser_66: value = static_cast(x); return x == static_cast(value) // x fits into destination T + and (x < 0) == (value < 0) // preserved sign and (x != 0 or is_integral()) // strto[u]ll did nto fail and errno == 0 // strto[u]ll did not overflow and m_start < m_end // token was not empty - and endptr == m_end // parsed entire token exactly - and (x < 0) == (*m_start == '-'); // input was sign-compatible + and endptr == m_end; // parsed entire token exactly } #else // parsing integral types manually From 0f8de48ddbc03b842ef5523b10553d3d319e1666 Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Mon, 12 Dec 2016 19:48:14 -0500 Subject: [PATCH 017/174] Disabling strtod pre-check, since can't get locale-specific behavior to manifest in AppVeyor --- test/src/unit-regression.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 5cd6356d3..7016fcafd 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -407,6 +407,9 @@ TEST_CASE("regression tests") { setlocale(LC_NUMERIC, "de_DE.UTF-8"); + // disabled, because locale-specific beharivor is not + // triggered in AppVeyor for some reason +#if 0 { // verify that strtod now uses commas as decimal-separator CHECK(std::strtod("3,14", nullptr) == 3.14); @@ -414,6 +417,7 @@ TEST_CASE("regression tests") // verify that strtod does not understand dots as decimal separator CHECK(std::strtod("3.14", nullptr) == 3); } +#endif // verify that parsed correctly despite using strtod internally CHECK(json::parse("3.14").get() == 3.14); From 5cad2006eb99534274c380af1ad92d5b257c83bc Mon Sep 17 00:00:00 2001 From: Alex Astashyn Date: Mon, 12 Dec 2016 20:15:57 -0500 Subject: [PATCH 018/174] Tweaked check for preserved sign; added LCOV_EXCL_LINE --- src/json.hpp.re2c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 5b2dc8d2d..208489eab 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8252,7 +8252,7 @@ class basic_json if (!p) { - return false; + return false; // LCOV_EXCL_LINE } if (*p == '-' or *p == '+') @@ -8262,7 +8262,7 @@ class basic_json if (p == m_end) { - return false; + return false; // LCOV_EXCL_LINE } while (p < m_end and *p >= '0' @@ -8401,11 +8401,11 @@ class basic_json value = static_cast(x); return x == static_cast(value) // x fits into destination T + and (x < 0) == (value < 0) // preserved sign and (x != 0 or is_integral()) // strto[u]ll did nto fail and errno == 0 // strto[u]ll did not overflow and m_start < m_end // token was not empty - and endptr == m_end // parsed entire token exactly - and (x < 0) == (*m_start == '-'); // input was sign-compatible + and endptr == m_end; // parsed entire token exactly } #else // parsing integral types manually From 42a8c644991100c679bb844f6225a820eaa81647 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 30 Dec 2016 12:28:52 +0100 Subject: [PATCH 019/174] :bookmark: added version information --- src/json.hpp | 9 +++++++++ src/json.hpp.re2c | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/json.hpp b/src/json.hpp index 23058bee3..b50883557 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -873,8 +873,17 @@ class basic_json break; } + case value_t::null: + { + break; + } + default: { + if (t == value_t::null) + { + throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21"); + } break; } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index ac9a33154..e8a52a0fd 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -873,8 +873,17 @@ class basic_json break; } + case value_t::null: + { + break; + } + default: { + if (t == value_t::null) + { + throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21"); + } break; } } From 328eb55dc40151a31052c137d25995f97457a3e5 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 30 Dec 2016 14:02:51 +0100 Subject: [PATCH 020/174] :construction: started working on #397 --- src/json.hpp | 61 ++++++++++++++++++++++++++++++++++++++- src/json.hpp.re2c | 61 ++++++++++++++++++++++++++++++++++++++- test/CMakeLists.txt | 1 + test/Makefile | 3 +- test/src/unit-version.cpp | 40 +++++++++++++++++++++++++ 5 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 test/src/unit-version.cpp diff --git a/src/json.hpp b/src/json.hpp index 5ad1b4e59..1624328aa 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -282,6 +282,64 @@ class basic_json return allocator_type(); } + /*! + @brief returns version information on the library + */ + static basic_json version() + { + basic_json result; + + result["copyright"] = "(C) 2013-2016 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"] = + { + {"string", "2.0.10"}, + {"major", 2}, + {"minor", 0}, + {"patch", 10}, + }; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__clang__) + result["compiler"] = {{"family", "clang"}, {"version", CLANG_VERSION}}; +#elif defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = {{"family", "gcc"}, {"version", GCC_VERSION}}; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; +#elif defined(_MSC_VER) + result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; +#elif defined(__PGI) + result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; +#elif defined(__SUNPRO_CC) + result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; +#else + result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + /////////////////////////// // JSON value data types // @@ -882,7 +940,8 @@ class basic_json { if (t == value_t::null) { - throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21"); + // echo "JSON for Modern C++" | sha1sum + throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10"); } break; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index be1ebf551..a08c4c932 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -282,6 +282,64 @@ class basic_json return allocator_type(); } + /*! + @brief returns version information on the library + */ + static basic_json version() + { + basic_json result; + + result["copyright"] = "(C) 2013-2016 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"] = + { + {"string", "2.0.10"}, + {"major", 2}, + {"minor", 0}, + {"patch", 10}, + }; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__clang__) + result["compiler"] = {{"family", "clang"}, {"version", CLANG_VERSION}}; +#elif defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = {{"family", "gcc"}, {"version", GCC_VERSION}}; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; +#elif defined(_MSC_VER) + result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; +#elif defined(__PGI) + result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; +#elif defined(__SUNPRO_CC) + result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; +#else + result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + /////////////////////////// // JSON value data types // @@ -882,7 +940,8 @@ class basic_json { if (t == value_t::null) { - throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21"); + // echo "JSON for Modern C++" | sha1sum + throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10"); } break; } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 47785aeed..11c8d5b1d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -35,6 +35,7 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-serialization.cpp" "src/unit-testsuites.cpp" "src/unit-unicode.cpp" + "src/unit-version.cpp" ) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES diff --git a/test/Makefile b/test/Makefile index 556ab0d7c..efca90170 100644 --- a/test/Makefile +++ b/test/Makefile @@ -37,8 +37,9 @@ SOURCES = src/unit.cpp \ src/unit-reference_access.cpp \ src/unit-regression.cpp \ src/unit-serialization.cpp \ + src/unit-testsuites.cpp \ src/unit-unicode.cpp \ - src/unit-testsuites.cpp + src/unit-version.cpp OBJECTS = $(SOURCES:.cpp=.o) diff --git a/test/src/unit-version.cpp b/test/src/unit-version.cpp new file mode 100644 index 000000000..bede4ff38 --- /dev/null +++ b/test/src/unit-version.cpp @@ -0,0 +1,40 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 2.0.9 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2016 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "catch.hpp" + +#include "json.hpp" +using nlohmann::json; + +TEST_CASE("version information") +{ + SECTION("version()") + { + CHECK(json::version()["name"] == "JSON for Modern C++"); + } +} From 245a69d554425407a97374c133445f54d7d05952 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 3 Jan 2017 21:33:23 +0100 Subject: [PATCH 021/174] :lipstick: ran clang-tidy --- src/json.hpp | 218 +++++++++++++-------------------- src/json.hpp.re2c | 218 +++++++++++++-------------------- test/src/unit-allocator.cpp | 2 +- test/src/unit-constructor1.cpp | 2 +- 4 files changed, 174 insertions(+), 266 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9d48e7a65..4e043ad5c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -128,7 +128,7 @@ struct has_mapped_type std::is_integral()))>::value; }; -} +} // namespace /*! @brief a class to store JSON values @@ -767,7 +767,7 @@ class basic_json }; std::unique_ptr object(alloc.allocate(1), deleter); alloc.construct(object.get(), std::forward(args)...); - assert(object.get() != nullptr); + assert(object != nullptr); return object.release(); } @@ -2583,29 +2583,25 @@ class basic_json template::value and std::is_convertible::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_object()) { return T(m_value.object->begin(), m_value.object->end()); } - else - { - throw std::domain_error("type must be object, but is " + type_name()); - } + + throw std::domain_error("type must be object, but is " + type_name()); } /// get an object (explicit) - object_t get_impl(object_t*) const + object_t get_impl(object_t* /*unused*/) const { if (is_object()) { return *(m_value.object); } - else - { - throw std::domain_error("type must be object, but is " + type_name()); - } + + throw std::domain_error("type must be object, but is " + type_name()); } /// get an array (explicit) @@ -2615,7 +2611,7 @@ class basic_json not std::is_arithmetic::value and not std::is_convertible::value and not has_mapped_type::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_array()) { @@ -2627,17 +2623,15 @@ class basic_json }); return to_vector; } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) template::value and not std::is_same::value, int>::type = 0> - std::vector get_impl(std::vector*) const + std::vector get_impl(std::vector* /*unused*/) const { if (is_array()) { @@ -2650,60 +2644,52 @@ class basic_json }); return to_vector; } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) template::value and not has_mapped_type::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_array()) { return T(m_value.array->begin(), m_value.array->end()); } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) - array_t get_impl(array_t*) const + array_t get_impl(array_t* /*unused*/) const { if (is_array()) { return *(m_value.array); } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get a string (explicit) template::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_string()) { return *m_value.string; } - else - { - throw std::domain_error("type must be string, but is " + type_name()); - } + + throw std::domain_error("type must be string, but is " + type_name()); } /// get a number (explicit) template::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { switch (m_type) { @@ -2730,7 +2716,7 @@ class basic_json } /// get a boolean (explicit) - constexpr boolean_t get_impl(boolean_t*) const + constexpr boolean_t get_impl(boolean_t* /*unused*/) const { return is_boolean() ? m_value.boolean @@ -2738,85 +2724,85 @@ class basic_json } /// get a pointer to the value (object) - object_t* get_impl_ptr(object_t*) noexcept + object_t* get_impl_ptr(object_t* /*unused*/) noexcept { return is_object() ? m_value.object : nullptr; } /// get a pointer to the value (object) - constexpr const object_t* get_impl_ptr(const object_t*) const noexcept + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept { return is_object() ? m_value.object : nullptr; } /// get a pointer to the value (array) - array_t* get_impl_ptr(array_t*) noexcept + array_t* get_impl_ptr(array_t* /*unused*/) noexcept { return is_array() ? m_value.array : nullptr; } /// get a pointer to the value (array) - constexpr const array_t* get_impl_ptr(const array_t*) const noexcept + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept { return is_array() ? m_value.array : nullptr; } /// get a pointer to the value (string) - string_t* get_impl_ptr(string_t*) noexcept + string_t* get_impl_ptr(string_t* /*unused*/) noexcept { return is_string() ? m_value.string : nullptr; } /// get a pointer to the value (string) - constexpr const string_t* get_impl_ptr(const string_t*) const noexcept + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept { return is_string() ? m_value.string : nullptr; } /// get a pointer to the value (boolean) - boolean_t* get_impl_ptr(boolean_t*) noexcept + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept { return is_boolean() ? &m_value.boolean : nullptr; } /// get a pointer to the value (boolean) - constexpr const boolean_t* get_impl_ptr(const boolean_t*) const noexcept + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept { return is_boolean() ? &m_value.boolean : nullptr; } /// get a pointer to the value (integer number) - number_integer_t* get_impl_ptr(number_integer_t*) noexcept + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept { return is_number_integer() ? &m_value.number_integer : nullptr; } /// get a pointer to the value (integer number) - constexpr const number_integer_t* get_impl_ptr(const number_integer_t*) const noexcept + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept { return is_number_integer() ? &m_value.number_integer : nullptr; } /// get a pointer to the value (unsigned number) - number_unsigned_t* get_impl_ptr(number_unsigned_t*) noexcept + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept { return is_number_unsigned() ? &m_value.number_unsigned : nullptr; } /// get a pointer to the value (unsigned number) - constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t*) const noexcept + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept { return is_number_unsigned() ? &m_value.number_unsigned : nullptr; } /// get a pointer to the value (floating-point number) - number_float_t* get_impl_ptr(number_float_t*) noexcept + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept { return is_number_float() ? &m_value.number_float : nullptr; } /// get a pointer to the value (floating-point number) - constexpr const number_float_t* get_impl_ptr(const number_float_t*) const noexcept + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept { return is_number_float() ? &m_value.number_float : nullptr; } @@ -2845,11 +2831,9 @@ class basic_json { return *ptr; } - else - { - throw std::domain_error("incompatible ReferenceType for get_ref, actual type is " + - obj.type_name()); - } + + throw std::domain_error("incompatible ReferenceType for get_ref, actual type is " + + obj.type_name()); } public: @@ -3349,10 +3333,8 @@ class basic_json return m_value.array->operator[](idx); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3381,10 +3363,8 @@ class basic_json { return m_value.array->operator[](idx); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3429,10 +3409,8 @@ class basic_json { return m_value.object->operator[](key); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3473,10 +3451,8 @@ class basic_json assert(m_value.object->find(key) != m_value.object->end()); return m_value.object->find(key)->second; } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3590,10 +3566,8 @@ class basic_json { return m_value.object->operator[](key); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3635,10 +3609,8 @@ class basic_json assert(m_value.object->find(key) != m_value.object->end()); return m_value.object->find(key)->second; } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3702,10 +3674,8 @@ class basic_json { return *it; } - else - { - return default_value; - } + + return default_value; } else { @@ -4131,10 +4101,8 @@ class basic_json { return m_value.object->erase(key); } - else - { - throw std::domain_error("cannot use erase() with " + type_name()); - } + + throw std::domain_error("cannot use erase() with " + type_name()); } /*! @@ -5186,10 +5154,8 @@ class basic_json result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); return result; } - else - { - throw std::domain_error("cannot use insert() with " + type_name()); - } + + throw std::domain_error("cannot use insert() with " + type_name()); } /*! @@ -5241,10 +5207,8 @@ class basic_json result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); return result; } - else - { - throw std::domain_error("cannot use insert() with " + type_name()); - } + + throw std::domain_error("cannot use insert() with " + type_name()); } /*! @@ -6122,7 +6086,7 @@ class basic_json { // assertion to check that the iterator range is indeed contiguous, // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate(first, last, std::make_pair(true, 0), + assert(std::accumulate(first, last, std::pair(true, 0), [&first](std::pair res, decltype(*first) val) { res.first &= (val == *(std::next(std::addressof(*first), res.second++))); @@ -6327,7 +6291,7 @@ class basic_json } T result; - uint8_t* ptr = reinterpret_cast(&result); + auto* ptr = reinterpret_cast(&result); for (size_t i = 0; i < sizeof(T); ++i) { *ptr++ = vec[current_index + sizeof(T) - i]; @@ -6473,7 +6437,7 @@ class basic_json { // float 64 v.push_back(0xcb); - const uint8_t* helper = reinterpret_cast(&(j.m_value.number_float)); + const auto* helper = reinterpret_cast(&(j.m_value.number_float)); for (size_t i = 0; i < 8; ++i) { v.push_back(helper[7 - i]); @@ -6716,7 +6680,7 @@ class basic_json { // Double-Precision Float v.push_back(0xfb); - const uint8_t* helper = reinterpret_cast(&(j.m_value.number_float)); + const auto* helper = reinterpret_cast(&(j.m_value.number_float)); for (size_t i = 0; i < 8; ++i) { v.push_back(helper[7 - i]); @@ -6916,7 +6880,7 @@ class basic_json { return v[current_idx]; } - else if (v[current_idx] <= 0x8f) // fixmap + if (v[current_idx] <= 0x8f) // fixmap { basic_json result = value_t::object; const size_t len = v[current_idx] & 0x0f; @@ -7577,7 +7541,7 @@ class basic_json { val = mant == 0 ? INFINITY : NAN; } - return half & 0x8000 ? -val : val; + return (half & 0x8000) != 0 ? -val : val; } case 0xfa: // Single-Precision Float (four-byte IEEE 754) @@ -7800,10 +7764,8 @@ class basic_json // from c (1 byte) to \uxxxx (6 bytes) return res + 5; } - else - { - return res; - } + + return res; } } }); @@ -8509,10 +8471,8 @@ class basic_json { return *m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8545,10 +8505,8 @@ class basic_json { return m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8861,10 +8819,8 @@ class basic_json { return *m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8881,10 +8837,8 @@ class basic_json { return m_it.object_iterator->first; } - else - { - throw std::domain_error("cannot use key() for non-object iterators"); - } + + throw std::domain_error("cannot use key() for non-object iterators"); } /*! @@ -10209,7 +10163,7 @@ basic_json_parser_66: assert(m_marker == nullptr or m_marker <= m_limit); // number of processed characters (p) - const size_t num_processed_chars = static_cast(m_start - m_content); + const auto num_processed_chars = static_cast(m_start - m_content); // offset for m_marker wrt. to m_start const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; // number of unprocessed characters (u) @@ -10601,7 +10555,7 @@ basic_json_parser_66: else { // parse with strtod - result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + result.m_value.number_float = str_to_float_t(static_cast(nullptr), nullptr); // replace infinity and NAN by null if (not std::isfinite(result.m_value.number_float)) @@ -11336,7 +11290,7 @@ basic_json_parser_66: // - start: position after the previous slash for ( // search for the first slash after the first character - size_t slash = reference_string.find_first_of("/", 1), + size_t slash = reference_string.find_first_of('/', 1), // set the beginning of the first reference token start = 1; // we can stop if start == string::npos+1 = 0 @@ -11345,16 +11299,16 @@ basic_json_parser_66: // (will eventually be 0 if slash == std::string::npos) start = slash + 1, // find next slash - slash = reference_string.find_first_of("/", start)) + slash = reference_string.find_first_of('/', start)) { // use the text between the beginning of the reference token // (start) and the last slash (slash). auto reference_token = reference_string.substr(start, slash - start); // check reference tokens are properly escaped - for (size_t pos = reference_token.find_first_of("~"); + for (size_t pos = reference_token.find_first_of('~'); pos != std::string::npos; - pos = reference_token.find_first_of("~", pos + 1)) + pos = reference_token.find_first_of('~', pos + 1)) { assert(reference_token[pos] == '~'); @@ -12188,7 +12142,7 @@ uses the standard template types. @since version 1.0.0 */ using json = basic_json<>; -} +} // namespace nlohmann /////////////////////// @@ -12229,7 +12183,7 @@ struct hash return h(j.dump()); } }; -} +} // namespace std /*! @brief user-defined string literal for JSON values diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index e1a43b54c..a64762b90 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -128,7 +128,7 @@ struct has_mapped_type std::is_integral()))>::value; }; -} +} // namespace /*! @brief a class to store JSON values @@ -767,7 +767,7 @@ class basic_json }; std::unique_ptr object(alloc.allocate(1), deleter); alloc.construct(object.get(), std::forward(args)...); - assert(object.get() != nullptr); + assert(object != nullptr); return object.release(); } @@ -2583,29 +2583,25 @@ class basic_json template::value and std::is_convertible::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_object()) { return T(m_value.object->begin(), m_value.object->end()); } - else - { - throw std::domain_error("type must be object, but is " + type_name()); - } + + throw std::domain_error("type must be object, but is " + type_name()); } /// get an object (explicit) - object_t get_impl(object_t*) const + object_t get_impl(object_t* /*unused*/) const { if (is_object()) { return *(m_value.object); } - else - { - throw std::domain_error("type must be object, but is " + type_name()); - } + + throw std::domain_error("type must be object, but is " + type_name()); } /// get an array (explicit) @@ -2615,7 +2611,7 @@ class basic_json not std::is_arithmetic::value and not std::is_convertible::value and not has_mapped_type::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_array()) { @@ -2627,17 +2623,15 @@ class basic_json }); return to_vector; } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) template::value and not std::is_same::value, int>::type = 0> - std::vector get_impl(std::vector*) const + std::vector get_impl(std::vector* /*unused*/) const { if (is_array()) { @@ -2650,60 +2644,52 @@ class basic_json }); return to_vector; } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) template::value and not has_mapped_type::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_array()) { return T(m_value.array->begin(), m_value.array->end()); } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get an array (explicit) - array_t get_impl(array_t*) const + array_t get_impl(array_t* /*unused*/) const { if (is_array()) { return *(m_value.array); } - else - { - throw std::domain_error("type must be array, but is " + type_name()); - } + + throw std::domain_error("type must be array, but is " + type_name()); } /// get a string (explicit) template::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { if (is_string()) { return *m_value.string; } - else - { - throw std::domain_error("type must be string, but is " + type_name()); - } + + throw std::domain_error("type must be string, but is " + type_name()); } /// get a number (explicit) template::value, int>::type = 0> - T get_impl(T*) const + T get_impl(T* /*unused*/) const { switch (m_type) { @@ -2730,7 +2716,7 @@ class basic_json } /// get a boolean (explicit) - constexpr boolean_t get_impl(boolean_t*) const + constexpr boolean_t get_impl(boolean_t* /*unused*/) const { return is_boolean() ? m_value.boolean @@ -2738,85 +2724,85 @@ class basic_json } /// get a pointer to the value (object) - object_t* get_impl_ptr(object_t*) noexcept + object_t* get_impl_ptr(object_t* /*unused*/) noexcept { return is_object() ? m_value.object : nullptr; } /// get a pointer to the value (object) - constexpr const object_t* get_impl_ptr(const object_t*) const noexcept + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept { return is_object() ? m_value.object : nullptr; } /// get a pointer to the value (array) - array_t* get_impl_ptr(array_t*) noexcept + array_t* get_impl_ptr(array_t* /*unused*/) noexcept { return is_array() ? m_value.array : nullptr; } /// get a pointer to the value (array) - constexpr const array_t* get_impl_ptr(const array_t*) const noexcept + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept { return is_array() ? m_value.array : nullptr; } /// get a pointer to the value (string) - string_t* get_impl_ptr(string_t*) noexcept + string_t* get_impl_ptr(string_t* /*unused*/) noexcept { return is_string() ? m_value.string : nullptr; } /// get a pointer to the value (string) - constexpr const string_t* get_impl_ptr(const string_t*) const noexcept + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept { return is_string() ? m_value.string : nullptr; } /// get a pointer to the value (boolean) - boolean_t* get_impl_ptr(boolean_t*) noexcept + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept { return is_boolean() ? &m_value.boolean : nullptr; } /// get a pointer to the value (boolean) - constexpr const boolean_t* get_impl_ptr(const boolean_t*) const noexcept + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept { return is_boolean() ? &m_value.boolean : nullptr; } /// get a pointer to the value (integer number) - number_integer_t* get_impl_ptr(number_integer_t*) noexcept + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept { return is_number_integer() ? &m_value.number_integer : nullptr; } /// get a pointer to the value (integer number) - constexpr const number_integer_t* get_impl_ptr(const number_integer_t*) const noexcept + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept { return is_number_integer() ? &m_value.number_integer : nullptr; } /// get a pointer to the value (unsigned number) - number_unsigned_t* get_impl_ptr(number_unsigned_t*) noexcept + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept { return is_number_unsigned() ? &m_value.number_unsigned : nullptr; } /// get a pointer to the value (unsigned number) - constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t*) const noexcept + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept { return is_number_unsigned() ? &m_value.number_unsigned : nullptr; } /// get a pointer to the value (floating-point number) - number_float_t* get_impl_ptr(number_float_t*) noexcept + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept { return is_number_float() ? &m_value.number_float : nullptr; } /// get a pointer to the value (floating-point number) - constexpr const number_float_t* get_impl_ptr(const number_float_t*) const noexcept + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept { return is_number_float() ? &m_value.number_float : nullptr; } @@ -2845,11 +2831,9 @@ class basic_json { return *ptr; } - else - { - throw std::domain_error("incompatible ReferenceType for get_ref, actual type is " + - obj.type_name()); - } + + throw std::domain_error("incompatible ReferenceType for get_ref, actual type is " + + obj.type_name()); } public: @@ -3349,10 +3333,8 @@ class basic_json return m_value.array->operator[](idx); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3381,10 +3363,8 @@ class basic_json { return m_value.array->operator[](idx); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3429,10 +3409,8 @@ class basic_json { return m_value.object->operator[](key); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3473,10 +3451,8 @@ class basic_json assert(m_value.object->find(key) != m_value.object->end()); return m_value.object->find(key)->second; } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3590,10 +3566,8 @@ class basic_json { return m_value.object->operator[](key); } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3635,10 +3609,8 @@ class basic_json assert(m_value.object->find(key) != m_value.object->end()); return m_value.object->find(key)->second; } - else - { - throw std::domain_error("cannot use operator[] with " + type_name()); - } + + throw std::domain_error("cannot use operator[] with " + type_name()); } /*! @@ -3702,10 +3674,8 @@ class basic_json { return *it; } - else - { - return default_value; - } + + return default_value; } else { @@ -4131,10 +4101,8 @@ class basic_json { return m_value.object->erase(key); } - else - { - throw std::domain_error("cannot use erase() with " + type_name()); - } + + throw std::domain_error("cannot use erase() with " + type_name()); } /*! @@ -5186,10 +5154,8 @@ class basic_json result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); return result; } - else - { - throw std::domain_error("cannot use insert() with " + type_name()); - } + + throw std::domain_error("cannot use insert() with " + type_name()); } /*! @@ -5241,10 +5207,8 @@ class basic_json result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); return result; } - else - { - throw std::domain_error("cannot use insert() with " + type_name()); - } + + throw std::domain_error("cannot use insert() with " + type_name()); } /*! @@ -6122,7 +6086,7 @@ class basic_json { // assertion to check that the iterator range is indeed contiguous, // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate(first, last, std::make_pair(true, 0), + assert(std::accumulate(first, last, std::pair(true, 0), [&first](std::pair res, decltype(*first) val) { res.first &= (val == *(std::next(std::addressof(*first), res.second++))); @@ -6327,7 +6291,7 @@ class basic_json } T result; - uint8_t* ptr = reinterpret_cast(&result); + auto* ptr = reinterpret_cast(&result); for (size_t i = 0; i < sizeof(T); ++i) { *ptr++ = vec[current_index + sizeof(T) - i]; @@ -6473,7 +6437,7 @@ class basic_json { // float 64 v.push_back(0xcb); - const uint8_t* helper = reinterpret_cast(&(j.m_value.number_float)); + const auto* helper = reinterpret_cast(&(j.m_value.number_float)); for (size_t i = 0; i < 8; ++i) { v.push_back(helper[7 - i]); @@ -6716,7 +6680,7 @@ class basic_json { // Double-Precision Float v.push_back(0xfb); - const uint8_t* helper = reinterpret_cast(&(j.m_value.number_float)); + const auto* helper = reinterpret_cast(&(j.m_value.number_float)); for (size_t i = 0; i < 8; ++i) { v.push_back(helper[7 - i]); @@ -6916,7 +6880,7 @@ class basic_json { return v[current_idx]; } - else if (v[current_idx] <= 0x8f) // fixmap + if (v[current_idx] <= 0x8f) // fixmap { basic_json result = value_t::object; const size_t len = v[current_idx] & 0x0f; @@ -7577,7 +7541,7 @@ class basic_json { val = mant == 0 ? INFINITY : NAN; } - return half & 0x8000 ? -val : val; + return (half & 0x8000) != 0 ? -val : val; } case 0xfa: // Single-Precision Float (four-byte IEEE 754) @@ -7800,10 +7764,8 @@ class basic_json // from c (1 byte) to \uxxxx (6 bytes) return res + 5; } - else - { - return res; - } + + return res; } } }); @@ -8509,10 +8471,8 @@ class basic_json { return *m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8545,10 +8505,8 @@ class basic_json { return m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8861,10 +8819,8 @@ class basic_json { return *m_object; } - else - { - throw std::out_of_range("cannot get value"); - } + + throw std::out_of_range("cannot get value"); } } } @@ -8881,10 +8837,8 @@ class basic_json { return m_it.object_iterator->first; } - else - { - throw std::domain_error("cannot use key() for non-object iterators"); - } + + throw std::domain_error("cannot use key() for non-object iterators"); } /*! @@ -9359,7 +9313,7 @@ class basic_json assert(m_marker == nullptr or m_marker <= m_limit); // number of processed characters (p) - const size_t num_processed_chars = static_cast(m_start - m_content); + const auto num_processed_chars = static_cast(m_start - m_content); // offset for m_marker wrt. to m_start const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; // number of unprocessed characters (u) @@ -9751,7 +9705,7 @@ class basic_json else { // parse with strtod - result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + result.m_value.number_float = str_to_float_t(static_cast(nullptr), nullptr); // replace infinity and NAN by null if (not std::isfinite(result.m_value.number_float)) @@ -10486,7 +10440,7 @@ class basic_json // - start: position after the previous slash for ( // search for the first slash after the first character - size_t slash = reference_string.find_first_of("/", 1), + size_t slash = reference_string.find_first_of('/', 1), // set the beginning of the first reference token start = 1; // we can stop if start == string::npos+1 = 0 @@ -10495,16 +10449,16 @@ class basic_json // (will eventually be 0 if slash == std::string::npos) start = slash + 1, // find next slash - slash = reference_string.find_first_of("/", start)) + slash = reference_string.find_first_of('/', start)) { // use the text between the beginning of the reference token // (start) and the last slash (slash). auto reference_token = reference_string.substr(start, slash - start); // check reference tokens are properly escaped - for (size_t pos = reference_token.find_first_of("~"); + for (size_t pos = reference_token.find_first_of('~'); pos != std::string::npos; - pos = reference_token.find_first_of("~", pos + 1)) + pos = reference_token.find_first_of('~', pos + 1)) { assert(reference_token[pos] == '~'); @@ -11338,7 +11292,7 @@ uses the standard template types. @since version 1.0.0 */ using json = basic_json<>; -} +} // namespace nlohmann /////////////////////// @@ -11379,7 +11333,7 @@ struct hash return h(j.dump()); } }; -} +} // namespace std /*! @brief user-defined string literal for JSON values diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index f11d8538b..76f9a16b2 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -80,7 +80,7 @@ struct my_allocator : std::allocator } else { - ::new(reinterpret_cast(p)) T(std::forward(args)...); + ::new (reinterpret_cast(p)) T(std::forward(args)...); } } diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index 6bfb4402a..d03a5f408 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -912,7 +912,7 @@ TEST_CASE("constructors") SECTION("array") { - json j { {"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false} , 13 }; + json j { {"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}, 13 }; CHECK(j.type() == json::value_t::array); } } From f8d640b185c4b34bfb651250eb3b7113caf0317b Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 3 Jan 2017 22:35:31 +0100 Subject: [PATCH 022/174] :construction_worker: better support for OSS-Fuzz --- test/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/Makefile b/test/Makefile index 68520bd3b..678276bae 100644 --- a/test/Makefile +++ b/test/Makefile @@ -51,7 +51,7 @@ TESTCASES = $(patsubst src/unit-%.cpp,test-%,$(wildcard src/unit-*.cpp)) all: $(TESTCASES) clean: - rm -fr json_unit $(OBJECTS) $(SOURCES:.cpp=.gcno) $(SOURCES:.cpp=.gcda) $(TESTCASES) + rm -fr json_unit $(OBJECTS) $(SOURCES:.cpp=.gcno) $(SOURCES:.cpp=.gcda) $(TESTCASES) parse_afl_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer ############################################################################## # single test file @@ -84,13 +84,14 @@ check: $(TESTCASES) # fuzzer ############################################################################## +FUZZER_ENGINE = src/fuzzer-driver_afl.cpp fuzzers: parse_afl_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer parse_afl_fuzzer: - $(CXX) $(CXXFLAGS) $(CPPFLAGS) src/fuzzer-driver_afl.cpp src/fuzzer-parse_json.cpp -o $@ + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_json.cpp -o $@ parse_cbor_fuzzer: - $(CXX) $(CXXFLAGS) $(CPPFLAGS) src/fuzzer-driver_afl.cpp src/fuzzer-parse_cbor.cpp -o $@ + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_cbor.cpp -o $@ parse_msgpack_fuzzer: - $(CXX) $(CXXFLAGS) $(CPPFLAGS) src/fuzzer-driver_afl.cpp src/fuzzer-parse_msgpack.cpp -o $@ + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_msgpack.cpp -o $@ From 767637877b6004ed16a0474ed3e3aa022fb493da Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 3 Jan 2017 22:37:07 +0100 Subject: [PATCH 023/174] :lipstick: cleanup --- src/json.hpp | 52 ++++++++++++++++++++++++----------------------- src/json.hpp.re2c | 52 ++++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 50 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 4e043ad5c..f3b77a41c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -153,7 +153,8 @@ default) @requirement The class satisfies the following concept requirements: - Basic - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): - JSON values can be default constructed. The result will be a JSON null value. + JSON values can be default constructed. The result will be a JSON null + value. - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): A JSON value can be constructed from an rvalue argument. - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): @@ -168,8 +169,8 @@ default) - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): JSON values have [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): - All non-static data members are private and standard layout types, the class - has no virtual functions or (virtual) base classes. + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. - Library-wide - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): JSON values can be compared with `==`, see @ref @@ -1894,13 +1895,15 @@ class basic_json case value_t::object: { - m_value.object = create(first.m_it.object_iterator, last.m_it.object_iterator); + m_value.object = create(first.m_it.object_iterator, + last.m_it.object_iterator); break; } case value_t::array: { - m_value.array = create(first.m_it.array_iterator, last.m_it.array_iterator); + m_value.array = create(first.m_it.array_iterator, + last.m_it.array_iterator); break; } @@ -3084,7 +3087,7 @@ class basic_json template < typename ValueType, typename std::enable_if < not std::is_pointer::value and not std::is_same::value -#ifndef _MSC_VER // Fix for issue #167 operator<< abiguity under VS2015 +#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015 and not std::is_same>::value #endif , int >::type = 0 > @@ -3750,10 +3753,8 @@ class basic_json return default_value; } } - else - { - throw std::domain_error("cannot use value() with " + type_name()); - } + + throw std::domain_error("cannot use value() with " + type_name()); } /*! @@ -5065,8 +5066,8 @@ class basic_json /*! @brief add an object to an object if key does not exist - Inserts a new element into a JSON object constructed in-place with the given - @a args if there is no element with the key in the container. If the + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from @a args. @@ -5131,8 +5132,8 @@ class basic_json @throw std::domain_error if @a pos is not an iterator of *this; example: `"iterator does not fit current value"` - @complexity Constant plus linear in the distance between pos and end of the - container. + @complexity Constant plus linear in the distance between pos and end of + the container. @liveexample{The example shows how `insert()` is used.,insert} @@ -5358,8 +5359,8 @@ class basic_json @param[in,out] other array to exchange the contents with - @throw std::domain_error when JSON value is not an array; example: `"cannot - use swap() with string"` + @throw std::domain_error when JSON value is not an array; example: + `"cannot use swap() with string"` @complexity Constant. @@ -6332,8 +6333,9 @@ class basic_json if (j.m_value.number_integer >= 0) { // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. + // signed integers and unsigned integers. Therefore, we + // used the code from the value_t::number_unsigned case + // here. if (j.m_value.number_unsigned < 128) { // positive fixnum @@ -6608,8 +6610,8 @@ class basic_json } else { - // The conversions below encode the sign in the first byte, - // and the value is converted to a positive number. + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. const auto positive_number = -1 - j.m_value.number_integer; if (j.m_value.number_integer >= -24) { @@ -6814,12 +6816,12 @@ class basic_json To secure the access to the byte vector during CBOR/MessagePack deserialization, bytes are copied from the vector into buffers. This - function checks if the number of bytes to copy (@a len) does not exceed the - size @s size of the vector. Additionally, an @a offset is given from where - to start reading the bytes. + function checks if the number of bytes to copy (@a len) does not exceed + the size @s size of the vector. Additionally, an @a offset is given from + where to start reading the bytes. - This function checks whether reading the bytes is safe; that is, offset is a - valid index in the vector, offset+len + This function checks whether reading the bytes is safe; that is, offset is + a valid index in the vector, offset+len @param[in] size size of the byte vector @param[in] len number of bytes to read diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index a64762b90..42459f4e3 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -153,7 +153,8 @@ default) @requirement The class satisfies the following concept requirements: - Basic - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): - JSON values can be default constructed. The result will be a JSON null value. + JSON values can be default constructed. The result will be a JSON null + value. - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): A JSON value can be constructed from an rvalue argument. - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): @@ -168,8 +169,8 @@ default) - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): JSON values have [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): - All non-static data members are private and standard layout types, the class - has no virtual functions or (virtual) base classes. + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. - Library-wide - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): JSON values can be compared with `==`, see @ref @@ -1894,13 +1895,15 @@ class basic_json case value_t::object: { - m_value.object = create(first.m_it.object_iterator, last.m_it.object_iterator); + m_value.object = create(first.m_it.object_iterator, + last.m_it.object_iterator); break; } case value_t::array: { - m_value.array = create(first.m_it.array_iterator, last.m_it.array_iterator); + m_value.array = create(first.m_it.array_iterator, + last.m_it.array_iterator); break; } @@ -3084,7 +3087,7 @@ class basic_json template < typename ValueType, typename std::enable_if < not std::is_pointer::value and not std::is_same::value -#ifndef _MSC_VER // Fix for issue #167 operator<< abiguity under VS2015 +#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015 and not std::is_same>::value #endif , int >::type = 0 > @@ -3750,10 +3753,8 @@ class basic_json return default_value; } } - else - { - throw std::domain_error("cannot use value() with " + type_name()); - } + + throw std::domain_error("cannot use value() with " + type_name()); } /*! @@ -5065,8 +5066,8 @@ class basic_json /*! @brief add an object to an object if key does not exist - Inserts a new element into a JSON object constructed in-place with the given - @a args if there is no element with the key in the container. If the + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from @a args. @@ -5131,8 +5132,8 @@ class basic_json @throw std::domain_error if @a pos is not an iterator of *this; example: `"iterator does not fit current value"` - @complexity Constant plus linear in the distance between pos and end of the - container. + @complexity Constant plus linear in the distance between pos and end of + the container. @liveexample{The example shows how `insert()` is used.,insert} @@ -5358,8 +5359,8 @@ class basic_json @param[in,out] other array to exchange the contents with - @throw std::domain_error when JSON value is not an array; example: `"cannot - use swap() with string"` + @throw std::domain_error when JSON value is not an array; example: + `"cannot use swap() with string"` @complexity Constant. @@ -6332,8 +6333,9 @@ class basic_json if (j.m_value.number_integer >= 0) { // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. + // signed integers and unsigned integers. Therefore, we + // used the code from the value_t::number_unsigned case + // here. if (j.m_value.number_unsigned < 128) { // positive fixnum @@ -6608,8 +6610,8 @@ class basic_json } else { - // The conversions below encode the sign in the first byte, - // and the value is converted to a positive number. + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. const auto positive_number = -1 - j.m_value.number_integer; if (j.m_value.number_integer >= -24) { @@ -6814,12 +6816,12 @@ class basic_json To secure the access to the byte vector during CBOR/MessagePack deserialization, bytes are copied from the vector into buffers. This - function checks if the number of bytes to copy (@a len) does not exceed the - size @s size of the vector. Additionally, an @a offset is given from where - to start reading the bytes. + function checks if the number of bytes to copy (@a len) does not exceed + the size @s size of the vector. Additionally, an @a offset is given from + where to start reading the bytes. - This function checks whether reading the bytes is safe; that is, offset is a - valid index in the vector, offset+len + This function checks whether reading the bytes is safe; that is, offset is + a valid index in the vector, offset+len @param[in] size size of the byte vector @param[in] len number of bytes to read From cdd3b5a68c9cae62815808e36486aab60fe87ffe Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 3 Jan 2017 23:52:01 +0100 Subject: [PATCH 024/174] :ambulance: fix for #416 --- src/json.hpp | 12 ++++-------- src/json.hpp.re2c | 15 +++++---------- test/src/unit-regression.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f3b77a41c..4aa293d29 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6938,11 +6938,10 @@ class basic_json case 0xca: // float 32 { // copy bytes in reverse order into the double variable - check_length(v.size(), sizeof(float), 1); float res; for (size_t byte = 0; byte < sizeof(float); ++byte) { - reinterpret_cast(&res)[sizeof(float) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(float) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(float); // skip content bytes return res; @@ -6951,11 +6950,10 @@ class basic_json case 0xcb: // float 64 { // copy bytes in reverse order into the double variable - check_length(v.size(), sizeof(double), 1); double res; for (size_t byte = 0; byte < sizeof(double); ++byte) { - reinterpret_cast(&res)[sizeof(double) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(double) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(double); // skip content bytes return res; @@ -7549,11 +7547,10 @@ class basic_json case 0xfa: // Single-Precision Float (four-byte IEEE 754) { // copy bytes in reverse order into the float variable - check_length(v.size(), sizeof(float), 1); float res; for (size_t byte = 0; byte < sizeof(float); ++byte) { - reinterpret_cast(&res)[sizeof(float) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(float) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(float); // skip content bytes return res; @@ -7561,12 +7558,11 @@ class basic_json case 0xfb: // Double-Precision Float (eight-byte IEEE 754) { - check_length(v.size(), sizeof(double), 1); // copy bytes in reverse order into the double variable double res; for (size_t byte = 0; byte < sizeof(double); ++byte) { - reinterpret_cast(&res)[sizeof(double) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(double) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(double); // skip content bytes return res; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 42459f4e3..73c4131a9 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -6938,11 +6938,10 @@ class basic_json case 0xca: // float 32 { // copy bytes in reverse order into the double variable - check_length(v.size(), sizeof(float), 1); float res; for (size_t byte = 0; byte < sizeof(float); ++byte) { - reinterpret_cast(&res)[sizeof(float) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(float) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(float); // skip content bytes return res; @@ -6951,11 +6950,10 @@ class basic_json case 0xcb: // float 64 { // copy bytes in reverse order into the double variable - check_length(v.size(), sizeof(double), 1); double res; for (size_t byte = 0; byte < sizeof(double); ++byte) { - reinterpret_cast(&res)[sizeof(double) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(double) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(double); // skip content bytes return res; @@ -7517,7 +7515,6 @@ class basic_json case 0xf9: // Half-Precision Float (two-byte IEEE 754) { - check_length(v.size(), 2, 1); idx += 2; // skip two content bytes // code from RFC 7049, Appendix D, Figure 3: @@ -7527,7 +7524,7 @@ class basic_json // include at least decoding support for them even without such // support. An example of a small decoder for half-precision // floating-point numbers in the C language is shown in Fig. 3. - const int half = (v[current_idx + 1] << 8) + v[current_idx + 2]; + const int half = (v.at(current_idx + 1) << 8) + v.at(current_idx + 2); const int exp = (half >> 10) & 0x1f; const int mant = half & 0x3ff; double val; @@ -7549,11 +7546,10 @@ class basic_json case 0xfa: // Single-Precision Float (four-byte IEEE 754) { // copy bytes in reverse order into the float variable - check_length(v.size(), sizeof(float), 1); float res; for (size_t byte = 0; byte < sizeof(float); ++byte) { - reinterpret_cast(&res)[sizeof(float) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(float) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(float); // skip content bytes return res; @@ -7561,12 +7557,11 @@ class basic_json case 0xfb: // Double-Precision Float (eight-byte IEEE 754) { - check_length(v.size(), sizeof(double), 1); // copy bytes in reverse order into the double variable double res; for (size_t byte = 0; byte < sizeof(double); ++byte) { - reinterpret_cast(&res)[sizeof(double) - byte - 1] = v[current_idx + 1 + byte]; + reinterpret_cast(&res)[sizeof(double) - byte - 1] = v.at(current_idx + 1 + byte); } idx += sizeof(double); // skip content bytes return res; diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 401867c26..7cb9169f2 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -663,4 +663,31 @@ TEST_CASE("regression tests") std::vector vec3 {0xbf, 0x61, 0x61, 0x01}; CHECK_THROWS_AS(json::from_cbor(vec3), std::out_of_range); } + + SECTION("issue #416 - Use-of-uninitialized-value (OSS-Fuzz issue 377)") + { + // original test case + std::vector vec1 + { + 0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, + 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, + 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, + 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfa + }; + CHECK_THROWS_AS(json::from_cbor(vec1), std::out_of_range); + + // related test case: double-precision + std::vector vec2 + { + 0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, + 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, + 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, + 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfb + }; + CHECK_THROWS_AS(json::from_cbor(vec2), std::out_of_range); + } } From 476507031890fd6effb7b447a156168803b0bd37 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 4 Jan 2017 18:07:46 +0100 Subject: [PATCH 025/174] :memo: added documentation wrt. UTF-8 strings #406 --- README.md | 1 + src/json.hpp | 9 +++++++-- src/json.hpp.re2c | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 498d1bbe6..071d847aa 100644 --- a/README.md +++ b/README.md @@ -600,6 +600,7 @@ Thanks a lot for helping out! - Other encodings such as Latin-1, UTF-16, or UTF-32 are not supported and will yield parse errors. - [Unicode noncharacters](http://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. - Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. + - The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs. ## Execute unit tests diff --git a/src/json.hpp b/src/json.hpp index 4aa293d29..6b1dc6636 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -450,6 +450,12 @@ class basic_json std::string @endcode + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + #### String comparison [RFC 7159](http://rfc7159.net/rfc7159) states: @@ -7515,7 +7521,6 @@ class basic_json case 0xf9: // Half-Precision Float (two-byte IEEE 754) { - check_length(v.size(), 2, 1); idx += 2; // skip two content bytes // code from RFC 7049, Appendix D, Figure 3: @@ -7525,7 +7530,7 @@ class basic_json // include at least decoding support for them even without such // support. An example of a small decoder for half-precision // floating-point numbers in the C language is shown in Fig. 3. - const int half = (v[current_idx + 1] << 8) + v[current_idx + 2]; + const int half = (v.at(current_idx + 1) << 8) + v.at(current_idx + 2); const int exp = (half >> 10) & 0x1f; const int mant = half & 0x3ff; double val; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 73c4131a9..0eed0e6d9 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -450,6 +450,12 @@ class basic_json std::string @endcode + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + #### String comparison [RFC 7159](http://rfc7159.net/rfc7159) states: From 9f6c86f23317ccc67429be779a6f17855c6e5a0b Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 4 Jan 2017 18:54:44 +0100 Subject: [PATCH 026/174] :bug: fix for #417 --- src/json.hpp | 6 ++---- src/json.hpp.re2c | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 6b1dc6636..e88619268 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -58,13 +58,11 @@ SOFTWARE. // exclude unsupported compilers #if defined(__clang__) - #define CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) - #if CLANG_VERSION < 30400 + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" #endif #elif defined(__GNUC__) - #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) - #if GCC_VERSION < 40900 + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #endif #endif diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 0eed0e6d9..3a12a78de 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -58,13 +58,11 @@ SOFTWARE. // exclude unsupported compilers #if defined(__clang__) - #define CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) - #if CLANG_VERSION < 30400 + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" #endif #elif defined(__GNUC__) - #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) - #if GCC_VERSION < 40900 + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #endif #endif From dd45ba6f8957cb32f92af7b0d2aefee94d50ed2a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 8 Jan 2017 09:19:44 +0100 Subject: [PATCH 027/174] :construction: renamed `version()` to `meta()` --- src/json.hpp | 8 ++++---- src/json.hpp.re2c | 8 ++++---- test/src/unit-version.cpp | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9e065e594..3200e095a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -284,11 +284,11 @@ class basic_json /*! @brief returns version information on the library */ - static basic_json version() + static basic_json meta() { basic_json result; - result["copyright"] = "(C) 2013-2016 Niels Lohmann"; + result["copyright"] = "(C) 2013-2017 Niels Lohmann"; result["name"] = "JSON for Modern C++"; result["url"] = "https://github.com/nlohmann/json"; result["version"] = @@ -312,11 +312,11 @@ class basic_json #endif #if defined(__clang__) - result["compiler"] = {{"family", "clang"}, {"version", CLANG_VERSION}}; + result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; #elif defined(__ICC) || defined(__INTEL_COMPILER) result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; #elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, {"version", GCC_VERSION}}; + result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; #elif defined(__HP_cc) || defined(__HP_aCC) result["compiler"] = "hp" #elif defined(__IBMCPP__) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index a66a02381..c7171a276 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -284,11 +284,11 @@ class basic_json /*! @brief returns version information on the library */ - static basic_json version() + static basic_json meta() { basic_json result; - result["copyright"] = "(C) 2013-2016 Niels Lohmann"; + result["copyright"] = "(C) 2013-2017 Niels Lohmann"; result["name"] = "JSON for Modern C++"; result["url"] = "https://github.com/nlohmann/json"; result["version"] = @@ -312,11 +312,11 @@ class basic_json #endif #if defined(__clang__) - result["compiler"] = {{"family", "clang"}, {"version", CLANG_VERSION}}; + result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; #elif defined(__ICC) || defined(__INTEL_COMPILER) result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; #elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, {"version", GCC_VERSION}}; + result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; #elif defined(__HP_cc) || defined(__HP_aCC) result["compiler"] = "hp" #elif defined(__IBMCPP__) diff --git a/test/src/unit-version.cpp b/test/src/unit-version.cpp index bede4ff38..1b4ea91c4 100644 --- a/test/src/unit-version.cpp +++ b/test/src/unit-version.cpp @@ -35,6 +35,7 @@ TEST_CASE("version information") { SECTION("version()") { - CHECK(json::version()["name"] == "JSON for Modern C++"); + CHECK(json::meta()["name"] == "JSON for Modern C++"); + CHECK(json::meta()["compiler"] == "JSON for Modern C++"); } } From e9bbf5aabad1a90a5f5cf43ca8df49d5e7a52aca Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 8 Jan 2017 09:31:40 +0100 Subject: [PATCH 028/174] :bug: forgot to remove a test case --- test/src/unit-version.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/test/src/unit-version.cpp b/test/src/unit-version.cpp index 1b4ea91c4..f7b16e19c 100644 --- a/test/src/unit-version.cpp +++ b/test/src/unit-version.cpp @@ -36,6 +36,5 @@ TEST_CASE("version information") SECTION("version()") { CHECK(json::meta()["name"] == "JSON for Modern C++"); - CHECK(json::meta()["compiler"] == "JSON for Modern C++"); } } From 0f03543861b08bbe488abade89a9d2a4e6faa67a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 11 Jan 2017 22:23:02 +0100 Subject: [PATCH 029/174] :arrow_up: upgraded to Catch 1.6.0 --- test/thirdparty/catch/catch.hpp | 101 ++++++++++++++++++++++---------- 1 file changed, 69 insertions(+), 32 deletions(-) mode change 100755 => 100644 test/thirdparty/catch/catch.hpp diff --git a/test/thirdparty/catch/catch.hpp b/test/thirdparty/catch/catch.hpp old mode 100755 new mode 100644 index 3d18eadb1..1d49e7382 --- a/test/thirdparty/catch/catch.hpp +++ b/test/thirdparty/catch/catch.hpp @@ -1,6 +1,6 @@ /* - * Catch v1.5.9 - * Generated: 2016-11-29 12:14:38.049276 + * Catch v1.6.0 + * Generated: 2017-01-11 16:38:09.405017 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -60,21 +60,6 @@ // #included from: catch_common.h #define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED -#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 -#include -#include - // #included from: catch_compiler_capabilities.h #define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED @@ -181,6 +166,7 @@ #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 #endif #endif // _MSC_VER @@ -246,6 +232,9 @@ # 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 #endif // __cplusplus >= 201103L @@ -268,18 +257,21 @@ #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_NO_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_CPP11) +#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_NO_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_CPP11) +#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_NO_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_CPP11) +#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 #if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) # 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_SUPPRESS_PARENTHESES_WARNINGS) # define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS @@ -315,6 +307,21 @@ # define CATCH_AUTO_PTR( T ) std::auto_ptr #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 +#include +#include + namespace Catch { struct IConfig; @@ -2668,6 +2675,26 @@ namespace Detail { 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; @@ -3257,11 +3284,12 @@ namespace Catch { namespace Catch { class TestSpecParser { - enum Mode{ None, Name, QuotedName, Tag }; + 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 m_escapeChars; TestSpec::Filter m_currentFilter; TestSpec m_testSpec; ITagAliasRegistry const* m_tagAliases; @@ -3274,6 +3302,7 @@ namespace Catch { 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 ) @@ -3292,6 +3321,7 @@ namespace Catch { 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; } } @@ -3307,7 +3337,11 @@ namespace Catch { addPattern(); startNewMode( Tag, ++m_pos ); } + else if( c == '\\' ) + escape(); } + else if( m_mode == EscapedName ) + m_mode = Name; else if( m_mode == QuotedName && c == '"' ) addPattern(); else if( m_mode == Tag && c == ']' ) @@ -3317,10 +3351,17 @@ namespace Catch { m_mode = mode; m_start = start; } + void escape() { + m_mode = EscapedName; + m_escapeChars.push_back( m_pos ); + } std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); } template void addPattern() { std::string token = subString(); + for( size_t i = 0; i < m_escapeChars.size(); ++i ) + token = token.substr( 0, m_escapeChars[i] ) + token.substr( m_escapeChars[i]+1 ); + m_escapeChars.clear(); if( startsWith( token, "exclude:" ) ) { m_exclusion = true; token = token.substr( 8 ); @@ -6458,10 +6499,6 @@ namespace Catch { #include #include -#ifdef CATCH_CPP14_OR_GREATER -#include -#endif - namespace Catch { struct RandomNumberGenerator { @@ -6469,7 +6506,7 @@ namespace Catch { result_type operator()( result_type n ) const { return std::rand() % n; } -#ifdef CATCH_CPP14_OR_GREATER +#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(); } @@ -6477,7 +6514,7 @@ namespace Catch { template static void shuffle( V& vector ) { RandomNumberGenerator rng; -#ifdef CATCH_CPP14_OR_GREATER +#ifdef CATCH_CONFIG_CPP11_SHUFFLE std::shuffle( vector.begin(), vector.end(), rng ); #else std::random_shuffle( vector.begin(), vector.end(), rng ); @@ -7147,7 +7184,7 @@ namespace { 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::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" ); @@ -7582,7 +7619,7 @@ namespace Catch { return os; } - Version libraryVersion( 1, 5, 9, "", 0 ); + Version libraryVersion( 1, 6, 0, "", 0 ); } @@ -8349,7 +8386,7 @@ namespace Catch { } std::string ResultBuilder::reconstructExpression() const { if( m_exprComponents.op == "" ) - return m_exprComponents.lhs.empty() ? m_assertionInfo.capturedExpression : m_exprComponents.op + m_exprComponents.lhs; + return m_exprComponents.lhs.empty() ? m_assertionInfo.capturedExpression : m_exprComponents.lhs; else if( m_exprComponents.op == "matches" ) return m_exprComponents.lhs + " " + m_exprComponents.rhs; else if( m_exprComponents.op != "!" ) { @@ -8967,7 +9004,7 @@ namespace Catch { default: // Escape control chars - based on contribution by @espenalb in PR #465 and // by @mrpi PR #588 - if ( ( c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) + if ( ( c >= 0 && c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) os << "&#x" << std::uppercase << std::hex << std::setfill('0') << std::setw(2) << static_cast( c ) << ';'; else os << c; @@ -10400,7 +10437,7 @@ int main (int argc, char * const argv[]) { #define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) #define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) -#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS" ) +#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CATCH_CHECK_THROWS" ) #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) #define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) #define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) From 3a9ccfac226918727532c03892b20b4d705a3558 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 12 Jan 2017 21:35:27 +0100 Subject: [PATCH 030/174] :construction: cleanup --- test/CMakeLists.txt | 2 +- test/Makefile | 4 ++-- test/src/{unit-version.cpp => unit-meta.cpp} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename test/src/{unit-version.cpp => unit-meta.cpp} (97%) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 11c8d5b1d..62213ad31 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -26,6 +26,7 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-iterators2.cpp" "src/unit-json_patch.cpp" "src/unit-json_pointer.cpp" + "src/unit-meta.cpp" "src/unit-modifiers.cpp" "src/unit-msgpack.cpp" "src/unit-pointer_access.cpp" @@ -35,7 +36,6 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-serialization.cpp" "src/unit-testsuites.cpp" "src/unit-unicode.cpp" - "src/unit-version.cpp" ) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES diff --git a/test/Makefile b/test/Makefile index 5f7d55b26..3d5595d21 100644 --- a/test/Makefile +++ b/test/Makefile @@ -30,6 +30,7 @@ SOURCES = src/unit.cpp \ src/unit-iterators2.cpp \ src/unit-json_patch.cpp \ src/unit-json_pointer.cpp \ + src/unit-meta.cpp \ src/unit-modifiers.cpp \ src/unit-msgpack.cpp \ src/unit-pointer_access.cpp \ @@ -38,8 +39,7 @@ SOURCES = src/unit.cpp \ src/unit-regression.cpp \ src/unit-serialization.cpp \ src/unit-testsuites.cpp \ - src/unit-unicode.cpp \ - src/unit-version.cpp + src/unit-unicode.cpp OBJECTS = $(SOURCES:.cpp=.o) diff --git a/test/src/unit-version.cpp b/test/src/unit-meta.cpp similarity index 97% rename from test/src/unit-version.cpp rename to test/src/unit-meta.cpp index f7b16e19c..7040042ed 100644 --- a/test/src/unit-version.cpp +++ b/test/src/unit-meta.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.9 +| | |__ | | | | | | version 2.0.10 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . From a7f39383913d5adce906253b6775d8398243d8ef Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 16 Jan 2017 20:03:50 +0100 Subject: [PATCH 031/174] :white_check_mark: added Big List of Naughty Strings --- test/data/big-list-of-naughty-strings/LICENSE | 22 + .../big-list-of-naughty-strings/blns.json | 496 ++++++++++++++++++ test/src/unit-testsuites.cpp | 11 + 3 files changed, 529 insertions(+) create mode 100644 test/data/big-list-of-naughty-strings/LICENSE create mode 100644 test/data/big-list-of-naughty-strings/blns.json diff --git a/test/data/big-list-of-naughty-strings/LICENSE b/test/data/big-list-of-naughty-strings/LICENSE new file mode 100644 index 000000000..3a0416426 --- /dev/null +++ b/test/data/big-list-of-naughty-strings/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Max Woolf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/test/data/big-list-of-naughty-strings/blns.json b/test/data/big-list-of-naughty-strings/blns.json new file mode 100644 index 000000000..ed832d4d1 --- /dev/null +++ b/test/data/big-list-of-naughty-strings/blns.json @@ -0,0 +1,496 @@ +[ + "", + "undefined", + "undef", + "null", + "NULL", + "(null)", + "nil", + "NIL", + "true", + "false", + "True", + "False", + "TRUE", + "FALSE", + "None", + "hasOwnProperty", + "\\", + "\\\\", + "0", + "1", + "1.00", + "$1.00", + "1/2", + "1E2", + "1E02", + "1E+02", + "-1", + "-1.00", + "-$1.00", + "-1/2", + "-1E2", + "-1E02", + "-1E+02", + "1/0", + "0/0", + "-2147483648/-1", + "-9223372036854775808/-1", + "0.00", + "0..0", + ".", + "0.0.0", + "0,00", + "0,,0", + ",", + "0,0,0", + "0.0/0", + "1.0/0.0", + "0.0/0.0", + "1,0/0,0", + "0,0/0,0", + "--1", + "-", + "-.", + "-,", + "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", + "NaN", + "Infinity", + "-Infinity", + "INF", + "1#INF", + "-1#IND", + "1#QNAN", + "1#SNAN", + "1#IND", + "0x0", + "0xffffffff", + "0xffffffffffffffff", + "0xabad1dea", + "123456789012345678901234567890123456789", + "1,000.00", + "1 000.00", + "1'000.00", + "1,000,000.00", + "1 000 000.00", + "1'000'000.00", + "1.000,00", + "1 000,00", + "1'000,00", + "1.000.000,00", + "1 000 000,00", + "1'000'000,00", + "01000", + "08", + "09", + "2.2250738585072011e-308", + ",./;'[]\\-=", + "<>?:\"{}|_+", + "!@#$%^&*()`~", + "Ω≈ç√∫˜µ≤≥÷", + "åß∂ƒ©˙∆˚¬…æ", + "œ∑´®†¥¨ˆøπ“‘", + "¡™£¢∞§¶•ªº–≠", + "¸˛Ç◊ı˜Â¯˘¿", + "ÅÍÎÏ˝ÓÔÒÚÆ☃", + "Œ„´‰ˇÁ¨ˆØ∏”’", + "`⁄€‹›fifl‡°·‚—±", + "⅛⅜⅝⅞", + "ЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", + "٠١٢٣٤٥٦٧٨٩", + "⁰⁴⁵", + "₀₁₂", + "⁰⁴⁵₀₁₂", + "ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็", + "'", + "\"", + "''", + "\"\"", + "'\"'", + "\"''''\"'\"", + "\"'\"'\"''''\"", + "", + "", + "", + "", + "田中さんにあげて下さい", + "パーティーへ行かないか", + "和製漢語", + "部落格", + "사회과학원 어학연구소", + "찦차를 타고 온 펲시맨과 쑛다리 똠방각하", + "社會科學院語學研究所", + "울란바토르", + "𠜎𠜱𠝹𠱓𠱸𠲖𠳏", + "ヽ༼ຈل͜ຈ༽ノ ヽ༼ຈل͜ຈ༽ノ ", + "(。◕ ∀ ◕。)", + "`ィ(´∀`∩", + "__ロ(,_,*)", + "・( ̄∀ ̄)・:*:", + "゚・✿ヾ╲(。◕‿◕。)╱✿・゚", + ",。・:*:・゜’( ☻ ω ☻ )。・:*:・゜’", + "(╯°□°)╯︵ ┻━┻) ", + "(ノಥ益ಥ)ノ ┻━┻", + "┬─┬ノ( º _ ºノ)", + "( ͡° ͜ʖ ͡°)", + "😍", + "👩🏽", + "👾 🙇 💁 🙅 🙆 🙋 🙎 🙍 ", + "🐵 🙈 🙉 🙊", + "❤️ 💔 💌 💕 💞 💓 💗 💖 💘 💝 💟 💜 💛 💚 💙", + "✋🏿 💪🏿 👐🏿 🙌🏿 👏🏿 🙏🏿", + "🚾 🆒 🆓 🆕 🆖 🆗 🆙 🏧", + "0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ 🔟", + "🇺🇸🇷🇺🇸 🇦🇫🇦🇲🇸 ", + "🇺🇸🇷🇺🇸🇦🇫🇦🇲", + "🇺🇸🇷🇺🇸🇦", + "123", + "١٢٣", + "ثم نفس سقطت وبالتحديد،, جزيرتي باستخدام أن دنو. إذ هنا؟ الستار وتنصيب كان. أهّل ايطاليا، بريطانيا-فرنسا قد أخذ. سليمان، إتفاقية بين ما, يذكر الحدود أي بعد, معاملة بولندا، الإطلاق عل إيو.", + "בְּרֵאשִׁית, בָּרָא אֱלֹהִים, אֵת הַשָּׁמַיִם, וְאֵת הָאָרֶץ", + "הָיְתָהtestالصفحات التّحول", + "﷽", + "ﷺ", + "مُنَاقَشَةُ سُبُلِ اِسْتِخْدَامِ اللُّغَةِ فِي النُّظُمِ الْقَائِمَةِ وَفِيم يَخُصَّ التَّطْبِيقَاتُ الْحاسُوبِيَّةُ، ", + "​", + " ", + "᠎", + " ", + "", + "␣", + "␢", + "␡", + "‪‪test‪", + "‫test‫", + "
test
", + "test⁠test‫", + "⁦test⁧", + "Ṱ̺̺̕o͞ ̷i̲̬͇̪͙n̝̗͕v̟̜̘̦͟o̶̙̰̠kè͚̮̺̪̹̱̤ ̖t̝͕̳̣̻̪͞h̼͓̲̦̳̘̲e͇̣̰̦̬͎ ̢̼̻̱̘h͚͎͙̜̣̲ͅi̦̲̣̰̤v̻͍e̺̭̳̪̰-m̢iͅn̖̺̞̲̯̰d̵̼̟͙̩̼̘̳ ̞̥̱̳̭r̛̗̘e͙p͠r̼̞̻̭̗e̺̠̣͟s̘͇̳͍̝͉e͉̥̯̞̲͚̬͜ǹ̬͎͎̟̖͇̤t͍̬̤͓̼̭͘ͅi̪̱n͠g̴͉ ͏͉ͅc̬̟h͡a̫̻̯͘o̫̟̖͍̙̝͉s̗̦̲.̨̹͈̣", + "̡͓̞ͅI̗̘̦͝n͇͇͙v̮̫ok̲̫̙͈i̖͙̭̹̠̞n̡̻̮̣̺g̲͈͙̭͙̬͎ ̰t͔̦h̞̲e̢̤ ͍̬̲͖f̴̘͕̣è͖ẹ̥̩l͖͔͚i͓͚̦͠n͖͍̗͓̳̮g͍ ̨o͚̪͡f̘̣̬ ̖̘͖̟͙̮c҉͔̫͖͓͇͖ͅh̵̤̣͚͔á̗̼͕ͅo̼̣̥s̱͈̺̖̦̻͢.̛̖̞̠̫̰", + "̗̺͖̹̯͓Ṯ̤͍̥͇͈h̲́e͏͓̼̗̙̼̣͔ ͇̜̱̠͓͍ͅN͕͠e̗̱z̘̝̜̺͙p̤̺̹͍̯͚e̠̻̠͜r̨̤͍̺̖͔̖̖d̠̟̭̬̝͟i̦͖̩͓͔̤a̠̗̬͉̙n͚͜ ̻̞̰͚ͅh̵͉i̳̞v̢͇ḙ͎͟-҉̭̩̼͔m̤̭̫i͕͇̝̦n̗͙ḍ̟ ̯̲͕͞ǫ̟̯̰̲͙̻̝f ̪̰̰̗̖̭̘͘c̦͍̲̞͍̩̙ḥ͚a̮͎̟̙͜ơ̩̹͎s̤.̝̝ ҉Z̡̖̜͖̰̣͉̜a͖̰͙̬͡l̲̫̳͍̩g̡̟̼̱͚̞̬ͅo̗͜.̟", + "̦H̬̤̗̤͝e͜ ̜̥̝̻͍̟́w̕h̖̯͓o̝͙̖͎̱̮ ҉̺̙̞̟͈W̷̼̭a̺̪͍į͈͕̭͙̯̜t̶̼̮s̘͙͖̕ ̠̫̠B̻͍͙͉̳ͅe̵h̵̬͇̫͙i̹͓̳̳̮͎̫̕n͟d̴̪̜̖ ̰͉̩͇͙̲͞ͅT͖̼͓̪͢h͏͓̮̻e̬̝̟ͅ ̤̹̝W͙̞̝͔͇͝ͅa͏͓͔̹̼̣l̴͔̰̤̟͔ḽ̫.͕", + "Z̮̞̠͙͔ͅḀ̗̞͈̻̗Ḷ͙͎̯̹̞͓G̻O̭̗̮", + "˙ɐnbᴉlɐ ɐuƃɐɯ ǝɹolop ʇǝ ǝɹoqɐl ʇn ʇunpᴉpᴉɔuᴉ ɹodɯǝʇ poɯsnᴉǝ op pǝs 'ʇᴉlǝ ƃuᴉɔsᴉdᴉpɐ ɹnʇǝʇɔǝsuoɔ 'ʇǝɯɐ ʇᴉs ɹolop ɯnsdᴉ ɯǝɹo˥", + "00˙Ɩ$-", + "The quick brown fox jumps over the lazy dog", + "𝐓𝐡𝐞 𝐪𝐮𝐢𝐜𝐤 𝐛𝐫𝐨𝐰𝐧 𝐟𝐨𝐱 𝐣𝐮𝐦𝐩𝐬 𝐨𝐯𝐞𝐫 𝐭𝐡𝐞 𝐥𝐚𝐳𝐲 𝐝𝐨𝐠", + "𝕿𝖍𝖊 𝖖𝖚𝖎𝖈𝖐 𝖇𝖗𝖔𝖜𝖓 𝖋𝖔𝖝 𝖏𝖚𝖒𝖕𝖘 𝖔𝖛𝖊𝖗 𝖙𝖍𝖊 𝖑𝖆𝖟𝖞 𝖉𝖔𝖌", + "𝑻𝒉𝒆 𝒒𝒖𝒊𝒄𝒌 𝒃𝒓𝒐𝒘𝒏 𝒇𝒐𝒙 𝒋𝒖𝒎𝒑𝒔 𝒐𝒗𝒆𝒓 𝒕𝒉𝒆 𝒍𝒂𝒛𝒚 𝒅𝒐𝒈", + "𝓣𝓱𝓮 𝓺𝓾𝓲𝓬𝓴 𝓫𝓻𝓸𝔀𝓷 𝓯𝓸𝔁 𝓳𝓾𝓶𝓹𝓼 𝓸𝓿𝓮𝓻 𝓽𝓱𝓮 𝓵𝓪𝔃𝔂 𝓭𝓸𝓰", + "𝕋𝕙𝕖 𝕢𝕦𝕚𝕔𝕜 𝕓𝕣𝕠𝕨𝕟 𝕗𝕠𝕩 𝕛𝕦𝕞𝕡𝕤 𝕠𝕧𝕖𝕣 𝕥𝕙𝕖 𝕝𝕒𝕫𝕪 𝕕𝕠𝕘", + "𝚃𝚑𝚎 𝚚𝚞𝚒𝚌𝚔 𝚋𝚛𝚘𝚠𝚗 𝚏𝚘𝚡 𝚓𝚞𝚖𝚙𝚜 𝚘𝚟𝚎𝚛 𝚝𝚑𝚎 𝚕𝚊𝚣𝚢 𝚍𝚘𝚐", + "⒯⒣⒠ ⒬⒰⒤⒞⒦ ⒝⒭⒪⒲⒩ ⒡⒪⒳ ⒥⒰⒨⒫⒮ ⒪⒱⒠⒭ ⒯⒣⒠ ⒧⒜⒵⒴ ⒟⒪⒢", + "", + "<script>alert('123');</script>", + "", + " ", + "\">", + "'>", + ">", + "", + "< / script >< script >alert(123)< / script >", + " onfocus=JaVaSCript:alert(123) autofocus ", + "\" onfocus=JaVaSCript:alert(123) autofocus ", + "' onfocus=JaVaSCript:alert(123) autofocus ", + "<script>alert(123)</script>", + "ript>alert(123)ript>", + "-->", + "\";alert(123);t=\"", + "';alert(123);t='", + "JavaSCript:alert(123)", + ";alert(123);", + "src=JaVaSCript:prompt(132)", + "\"><\\x3Cscript>javascript:alert(1) ", + "'`\"><\\x00script>javascript:alert(1)", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "ABC
DEF", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "XXX", + "javascript:alert(1)\"` `>", + "", + "", + "<a href=http://foo.bar/#x=`y></a><img alt=\"`><img src=x:x onerror=javascript:alert(1)></a>\">", + "<!--[if]><script>javascript:alert(1)</script -->", + "<!--[if<img src=x onerror=javascript:alert(1)//]> -->", + "<script src=\"/\\%(jscript)s\"></script>", + "<script src=\"\\\\%(jscript)s\"></script>", + "<IMG \"\"\"><SCRIPT>alert(\"XSS\")</SCRIPT>\">", + "<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>", + "<IMG SRC=# onmouseover=\"alert('xxs')\">", + "<IMG SRC= onmouseover=\"alert('xxs')\">", + "<IMG onmouseover=\"alert('xxs')\">", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "perl -e 'print \"<IMG SRC=java\\0script:alert(\\\"XSS\\\")>\";' > out", + "<IMG SRC=\"  javascript:alert('XSS');\">", + "<SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT>", + "<BODY onload!#$%&()*~+-_.,:;?@[/|\\]^`=alert(\"XSS\")>", + "<SCRIPT/SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT>", + "<<SCRIPT>alert(\"XSS\");//<</SCRIPT>", + "<SCRIPT SRC=http://ha.ckers.org/xss.js?< B >", + "<SCRIPT SRC=//ha.ckers.org/.j>", + "<IMG SRC=\"javascript:alert('XSS')\"", + "<iframe src=http://ha.ckers.org/scriptlet.html <", + "\\\";alert('XSS');//", + "<u oncopy=alert()> Copy me</u>", + "<i onwheel=alert(1)> Scroll over me </i>", + "<plaintext>", + "http://a/%%30%30", + "</textarea><script>alert(123)</script>", + "1;DROP TABLE users", + "1'; DROP TABLE users-- 1", + "' OR 1=1 -- 1", + "' OR '1'='1", + " ", + "%", + "_", + "-", + "--", + "--version", + "--help", + "$USER", + "/dev/null; touch /tmp/blns.fail ; echo", + "`touch /tmp/blns.fail`", + "$(touch /tmp/blns.fail)", + "@{[system \"touch /tmp/blns.fail\"]}", + "eval(\"puts 'hello world'\")", + "System(\"ls -al /\")", + "`ls -al /`", + "Kernel.exec(\"ls -al /\")", + "Kernel.exit(1)", + "%x('ls -al /')", + "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><!DOCTYPE foo [ <!ELEMENT foo ANY ><!ENTITY xxe SYSTEM \"file:///etc/passwd\" >]><foo>&xxe;</foo>", + "$HOME", + "$ENV{'HOME'}", + "%d", + "%s", + "{0}", + "%*.*s", + "../../../../../../../../../../../etc/passwd%00", + "../../../../../../../../../../../etc/hosts", + "() { 0; }; touch /tmp/blns.shellshock1.fail;", + "() { _; } >_[$($())] { touch /tmp/blns.shellshock2.fail; }", + "+++ATH0", + "<<< %s(un='%s') = %u", + "CON", + "PRN", + "AUX", + "CLOCK$", + "NUL", + "A:", + "ZZ:", + "COM1", + "LPT1", + "LPT2", + "LPT3", + "COM2", + "COM3", + "COM4", + "DCC SEND STARTKEYLOGGER 0 0 0", + "Scunthorpe General Hospital", + "Penistone Community Church", + "Lightwater Country Park", + "Jimmy Clitheroe", + "Horniman Museum", + "shitake mushrooms", + "RomansInSussex.co.uk", + "http://www.cum.qc.ca/", + "Craig Cockburn, Software Specialist", + "Linda Callahan", + "Dr. Herman I. Libshitz", + "magna cum laude", + "Super Bowl XXX", + "medieval erection of parapets", + "evaluate", + "mocha", + "expression", + "Arsenal canal", + "classic", + "Tyson Gay", + "Dick Van Dyke", + "basement", + "If you're reading this, you've been in a coma for almost 20 years now. We're trying a new technique. We don't know where this message will end up in your dream, but we hope it works. Please wake up, we miss you.", + "Roses are \u001b[0;31mred\u001b[0m, violets are \u001b[0;34mblue. Hope you enjoy terminal hue", + "But now...\u001b[20Cfor my greatest trick...\u001b[8m", + "The quic\b\b\b\b\b\bk brown fo\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007x... [Beeeep]", + "Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ冗" +] diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index a43e19971..b939bb620 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -815,3 +815,14 @@ TEST_CASE("nst's JSONTestSuite") } } } + +TEST_CASE("Big List of Naughty Strings") +{ + // test from https://github.com/minimaxir/big-list-of-naughty-strings + SECTION("blns.json") + { + std::ifstream f("test/data/big-list-of-naughty-strings/blns.json"); + json j; + CHECK_NOTHROW(j << f); + } +} From 74cbd30cd079bb86c2c19f1e4848775f1b2c6e16 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Mon, 16 Jan 2017 20:04:47 +0100 Subject: [PATCH 032/174] :page_facing_up: it's 2017 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 071d847aa..6182a2df9 100644 --- a/README.md +++ b/README.md @@ -521,7 +521,7 @@ The following compilers are currently used in continuous integration at [Travis] The class is licensed under the [MIT License](http://opensource.org/licenses/MIT): -Copyright © 2013-2016 [Niels Lohmann](http://nlohmann.me) +Copyright © 2013-2017 [Niels Lohmann](http://nlohmann.me) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From 1ab26ab36750fd7426014b55bf6efdd7e0339216 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Mon, 16 Jan 2017 22:11:07 +0100 Subject: [PATCH 033/174] :sparkles: option to switch off exceptions --- .travis.yml | 15 ++ src/json.hpp | 262 ++++++++++++++++-------------- src/json.hpp.re2c | 262 ++++++++++++++++-------------- test/Makefile | 2 +- test/src/unit-cbor.cpp | 2 +- test/src/unit-element_access2.cpp | 53 +++--- 6 files changed, 335 insertions(+), 261 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6bf2297e2..6a154deb7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,6 +71,21 @@ matrix: after_success: - make cppcheck + # no exceptions + + - os: linux + compiler: gcc + env: + - COMPILER=g++-4.9 + - SPECIAL=no_exceptions + - TEST_PATTERN="-e \"*\"" + addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: [g++-4.9, cppcheck] + before_script: + - make FLAGS="-fno-exceptions" + # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/) - os: linux diff --git a/src/json.hpp b/src/json.hpp index 3200e095a..69d49ec17 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -88,6 +88,17 @@ SOFTWARE. #define JSON_DEPRECATED #endif +// allow to disable exceptions +#if defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#else + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#endif + /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann @@ -945,7 +956,7 @@ class basic_json { if (t == value_t::null) { - throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10"); // LCOV_EXCL_LINE + JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10")); // LCOV_EXCL_LINE } break; } @@ -1717,7 +1728,7 @@ class basic_json // if object is wanted but impossible, throw an exception if (manual_type == value_t::object and not is_an_object) { - throw std::domain_error("cannot create object from initializer list"); + JSON_THROW(std::domain_error("cannot create object from initializer list")); } } @@ -1895,7 +1906,7 @@ class basic_json // make sure iterator fits the current value if (first.m_object != last.m_object) { - throw std::domain_error("iterators are not compatible"); + JSON_THROW(std::domain_error("iterators are not compatible")); } // copy type from first iterator @@ -1912,7 +1923,7 @@ class basic_json { if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end()) { - throw std::out_of_range("iterators out of range"); + JSON_THROW(std::out_of_range("iterators out of range")); } break; } @@ -1971,7 +1982,7 @@ class basic_json default: { - throw std::domain_error("cannot use construct with iterators from " + first.m_object->type_name()); + JSON_THROW(std::domain_error("cannot use construct with iterators from " + first.m_object->type_name())); } } @@ -2655,7 +2666,7 @@ class basic_json return T(m_value.object->begin(), m_value.object->end()); } - throw std::domain_error("type must be object, but is " + type_name()); + JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } /// get an object (explicit) @@ -2666,7 +2677,7 @@ class basic_json return *(m_value.object); } - throw std::domain_error("type must be object, but is " + type_name()); + JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } /// get an array (explicit) @@ -2689,7 +2700,7 @@ class basic_json return to_vector; } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2710,7 +2721,7 @@ class basic_json return to_vector; } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2724,7 +2735,7 @@ class basic_json return T(m_value.array->begin(), m_value.array->end()); } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2735,7 +2746,7 @@ class basic_json return *(m_value.array); } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get a string (explicit) @@ -2748,7 +2759,7 @@ class basic_json return *m_value.string; } - throw std::domain_error("type must be string, but is " + type_name()); + JSON_THROW(std::domain_error("type must be string, but is " + type_name())); } /// get a number (explicit) @@ -2775,17 +2786,22 @@ class basic_json default: { - throw std::domain_error("type must be number, but is " + type_name()); + JSON_THROW(std::domain_error("type must be number, but is " + type_name())); } } } /// get a boolean (explicit) - constexpr boolean_t get_impl(boolean_t* /*unused*/) const + boolean_t get_impl(boolean_t* /*unused*/) const { - return is_boolean() - ? m_value.boolean - : throw std::domain_error("type must be boolean, but is " + type_name()); + if (is_boolean()) + { + return m_value.boolean; + } + else + { + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); + } } /// get a pointer to the value (object) @@ -3197,19 +3213,19 @@ class basic_json // at only works for arrays if (is_array()) { - try + JSON_TRY { return m_value.array->at(idx); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3240,19 +3256,19 @@ class basic_json // at only works for arrays if (is_array()) { - try + JSON_TRY { return m_value.array->at(idx); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3287,19 +3303,19 @@ class basic_json // at only works for objects if (is_object()) { - try + JSON_TRY { return m_value.object->at(key); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("key '" + key + "' not found"); + JSON_THROW(std::out_of_range("key '" + key + "' not found")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3334,19 +3350,19 @@ class basic_json // at only works for objects if (is_object()) { - try + JSON_TRY { return m_value.object->at(key); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("key '" + key + "' not found"); + JSON_THROW(std::out_of_range("key '" + key + "' not found")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3399,7 +3415,7 @@ class basic_json return m_value.array->operator[](idx); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3429,7 +3445,7 @@ class basic_json return m_value.array->operator[](idx); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3475,7 +3491,7 @@ class basic_json return m_value.object->operator[](key); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3517,7 +3533,7 @@ class basic_json return m_value.object->find(key)->second; } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3632,7 +3648,7 @@ class basic_json return m_value.object->operator[](key); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3675,7 +3691,7 @@ class basic_json return m_value.object->find(key)->second; } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3744,7 +3760,7 @@ class basic_json } else { - throw std::domain_error("cannot use value() with " + type_name()); + JSON_THROW(std::domain_error("cannot use value() with " + type_name())); } } @@ -3806,17 +3822,17 @@ class basic_json if (is_object()) { // if pointer resolves a value, return it or use default value - try + JSON_TRY { return ptr.get_checked(this); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { return default_value; } } - throw std::domain_error("cannot use value() with " + type_name()); + JSON_THROW(std::domain_error("cannot use value() with " + type_name())); } /*! @@ -3967,7 +3983,7 @@ class basic_json // make sure iterator fits the current value if (this != pos.m_object) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } IteratorType result = end(); @@ -3982,7 +3998,7 @@ class basic_json { if (not pos.m_it.primitive_iterator.is_begin()) { - throw std::out_of_range("iterator out of range"); + JSON_THROW(std::out_of_range("iterator out of range")); } if (is_string()) @@ -4012,7 +4028,7 @@ class basic_json default: { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4074,7 +4090,7 @@ class basic_json // make sure iterator fits the current value if (this != first.m_object or this != last.m_object) { - throw std::domain_error("iterators do not fit current value"); + JSON_THROW(std::domain_error("iterators do not fit current value")); } IteratorType result = end(); @@ -4089,7 +4105,7 @@ class basic_json { if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end()) { - throw std::out_of_range("iterators out of range"); + JSON_THROW(std::out_of_range("iterators out of range")); } if (is_string()) @@ -4121,7 +4137,7 @@ class basic_json default: { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4165,7 +4181,7 @@ class basic_json return m_value.object->erase(key); } - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } /*! @@ -4199,14 +4215,14 @@ class basic_json { if (idx >= size()) { - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx)); } else { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4924,7 +4940,7 @@ class basic_json // push_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an array @@ -4960,7 +4976,7 @@ class basic_json // push_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an array @@ -5010,7 +5026,7 @@ class basic_json // push_back only works for null objects or objects if (not(is_null() or is_object())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an object @@ -5110,7 +5126,7 @@ class basic_json // emplace_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use emplace_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use emplace_back() with " + type_name())); } // transform null object into an array @@ -5158,7 +5174,7 @@ class basic_json // emplace only works for null objects or arrays if (not(is_null() or is_object())) { - throw std::domain_error("cannot use emplace() with " + type_name()); + JSON_THROW(std::domain_error("cannot use emplace() with " + type_name())); } // transform null object into an object @@ -5209,7 +5225,7 @@ class basic_json // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5218,7 +5234,7 @@ class basic_json return result; } - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } /*! @@ -5262,7 +5278,7 @@ class basic_json // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5271,7 +5287,7 @@ class basic_json return result; } - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } /*! @@ -5309,24 +5325,24 @@ class basic_json // insert only works for arrays if (not is_array()) { - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // check if range iterators belong to the same JSON object if (first.m_object != last.m_object) { - throw std::domain_error("iterators do not fit"); + JSON_THROW(std::domain_error("iterators do not fit")); } if (first.m_object == this or last.m_object == this) { - throw std::domain_error("passed iterators may not belong to container"); + JSON_THROW(std::domain_error("passed iterators may not belong to container")); } // insert to array and return iterator @@ -5367,13 +5383,13 @@ class basic_json // insert only works for arrays if (not is_array()) { - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5440,7 +5456,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -5473,7 +5489,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -5506,7 +5522,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -6350,7 +6366,7 @@ class basic_json { if (current_index + sizeof(T) + 1 > vec.size()) { - throw std::out_of_range("cannot read " + std::to_string(sizeof(T)) + " bytes from vector"); + JSON_THROW(std::out_of_range("cannot read " + std::to_string(sizeof(T)) + " bytes from vector")); } T result; @@ -6900,19 +6916,19 @@ class basic_json // simple case: requested length is greater than the vector's length if (len > size or offset > size) { - throw std::out_of_range("len out of range"); + JSON_THROW(std::out_of_range("len out of range")); } // second case: adding offset would result in overflow if ((size > (std::numeric_limits<size_t>::max() - offset))) { - throw std::out_of_range("len+offset out of range"); + JSON_THROW(std::out_of_range("len+offset out of range")); } // last case: reading past the end of the vector if (len + offset > size) { - throw std::out_of_range("len+offset out of range"); + JSON_THROW(std::out_of_range("len+offset out of range")); } } @@ -7148,7 +7164,7 @@ class basic_json default: { - throw std::invalid_argument("error parsing a msgpack @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx]))); + JSON_THROW(std::invalid_argument("error parsing a msgpack @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx])))); } } } @@ -7631,7 +7647,7 @@ class basic_json default: // anything else (0xFF is handled inside the other types) { - throw std::invalid_argument("error parsing a CBOR @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx]))); + JSON_THROW(std::invalid_argument("error parsing a CBOR @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx])))); } } } @@ -8521,7 +8537,7 @@ class basic_json case basic_json::value_t::null: { - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } default: @@ -8531,7 +8547,7 @@ class basic_json return *m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8565,7 +8581,7 @@ class basic_json return m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8665,7 +8681,7 @@ class basic_json // if objects are not the same, the comparison is undefined if (m_object != other.m_object) { - throw std::domain_error("cannot compare iterators of different containers"); + JSON_THROW(std::domain_error("cannot compare iterators of different containers")); } assert(m_object != nullptr); @@ -8707,7 +8723,7 @@ class basic_json // if objects are not the same, the comparison is undefined if (m_object != other.m_object) { - throw std::domain_error("cannot compare iterators of different containers"); + JSON_THROW(std::domain_error("cannot compare iterators of different containers")); } assert(m_object != nullptr); @@ -8716,7 +8732,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot compare order of object iterators"); + JSON_THROW(std::domain_error("cannot compare order of object iterators")); } case basic_json::value_t::array: @@ -8770,7 +8786,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use offsets with object iterators"); + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); } case basic_json::value_t::array: @@ -8832,7 +8848,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use offsets with object iterators"); + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); } case basic_json::value_t::array: @@ -8859,7 +8875,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use operator[] for object iterators"); + JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); } case basic_json::value_t::array: @@ -8869,7 +8885,7 @@ class basic_json case basic_json::value_t::null: { - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } default: @@ -8879,7 +8895,7 @@ class basic_json return *m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8897,7 +8913,7 @@ class basic_json return m_it.object_iterator->first; } - throw std::domain_error("cannot use key() for non-object iterators"); + JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); } /*! @@ -9082,7 +9098,7 @@ class basic_json // immediately abort if stream is erroneous if (s.fail()) { - throw std::invalid_argument("stream error"); + JSON_THROW(std::invalid_argument("stream error")); } // fill buffer @@ -9149,7 +9165,7 @@ class basic_json } else { - throw std::invalid_argument("missing or wrong low surrogate"); + JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); } } @@ -9183,7 +9199,7 @@ class basic_json } else { - throw std::out_of_range("code points above 0x10FFFF are invalid"); + JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); } return result; @@ -10415,7 +10431,7 @@ basic_json_parser_66: // make sure there is a subsequent unicode if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') { - throw std::invalid_argument("missing low surrogate"); + JSON_THROW(std::invalid_argument("missing low surrogate")); } // get code yyyy from uxxxx\uyyyy @@ -10428,7 +10444,7 @@ basic_json_parser_66: else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) { // we found a lone low surrogate - throw std::invalid_argument("missing high surrogate"); + JSON_THROW(std::invalid_argument("missing high surrogate")); } else { @@ -10906,7 +10922,7 @@ basic_json_parser_66: "'") : lexer::token_type_name(last_token)); error_msg += "; expected " + lexer::token_type_name(t); - throw std::invalid_argument(error_msg); + JSON_THROW(std::invalid_argument(error_msg)); } } @@ -10918,7 +10934,7 @@ basic_json_parser_66: error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + "'") : lexer::token_type_name(last_token)); - throw std::invalid_argument(error_msg); + JSON_THROW(std::invalid_argument(error_msg)); } } @@ -11014,7 +11030,7 @@ basic_json_parser_66: { if (is_root()) { - throw std::domain_error("JSON pointer has no parent"); + JSON_THROW(std::domain_error("JSON pointer has no parent")); } auto last = reference_tokens.back(); @@ -11032,7 +11048,7 @@ basic_json_parser_66: { if (is_root()) { - throw std::domain_error("JSON pointer has no parent"); + JSON_THROW(std::domain_error("JSON pointer has no parent")); } json_pointer result = *this; @@ -11093,7 +11109,7 @@ basic_json_parser_66: */ default: { - throw std::domain_error("invalid value to unflatten"); + JSON_THROW(std::domain_error("invalid value to unflatten")); } } } @@ -11161,7 +11177,7 @@ basic_json_parser_66: // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } if (reference_token == "-") @@ -11179,7 +11195,7 @@ basic_json_parser_66: default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -11213,7 +11229,7 @@ basic_json_parser_66: // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // note: at performs range check @@ -11223,7 +11239,7 @@ basic_json_parser_66: default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -11265,7 +11281,7 @@ basic_json_parser_66: // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // use unchecked array access @@ -11275,7 +11291,7 @@ basic_json_parser_66: default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -11309,7 +11325,7 @@ basic_json_parser_66: // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // note: at performs range check @@ -11319,7 +11335,7 @@ basic_json_parser_66: default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -11341,7 +11357,7 @@ basic_json_parser_66: // check if nonempty reference string begins with slash if (reference_string[0] != '/') { - throw std::domain_error("JSON pointer must be empty or begin with '/'"); + JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); } // extract the reference tokens: @@ -11376,7 +11392,7 @@ basic_json_parser_66: (reference_token[pos + 1] != '0' and reference_token[pos + 1] != '1')) { - throw std::domain_error("escape error: '~' must be followed with '0' or '1'"); + JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); } } @@ -11502,7 +11518,7 @@ basic_json_parser_66: { if (not value.is_object()) { - throw std::domain_error("only objects can be unflattened"); + JSON_THROW(std::domain_error("only objects can be unflattened")); } basic_json result; @@ -11512,7 +11528,7 @@ basic_json_parser_66: { if (not element.second.is_primitive()) { - throw std::domain_error("values in object must be primitive"); + JSON_THROW(std::domain_error("values in object must be primitive")); } // assign value to reference pointed to by JSON pointer; Note @@ -11841,7 +11857,7 @@ basic_json_parser_66: if (static_cast<size_type>(idx) > parent.size()) { // avoid undefined behavior - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } else { @@ -11879,7 +11895,7 @@ basic_json_parser_66: } else { - throw std::out_of_range("key '" + last_path + "' not found"); + JSON_THROW(std::out_of_range("key '" + last_path + "' not found")); } } else if (parent.is_array()) @@ -11893,7 +11909,7 @@ basic_json_parser_66: if (not json_patch.is_array()) { // a JSON patch must be an array of objects - throw std::invalid_argument("JSON patch must be an array of objects"); + JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } // iterate and apply th eoperations @@ -11913,13 +11929,13 @@ basic_json_parser_66: // check if desired value is present if (it == val.m_value.object->end()) { - throw std::invalid_argument(error_msg + " must have member '" + member + "'"); + JSON_THROW(std::invalid_argument(error_msg + " must have member '" + member + "'")); } // check if result is of type string if (string_type and not it->second.is_string()) { - throw std::invalid_argument(error_msg + " must have string member '" + member + "'"); + JSON_THROW(std::invalid_argument(error_msg + " must have string member '" + member + "'")); } // no error: return value @@ -11929,7 +11945,7 @@ basic_json_parser_66: // type check if (not val.is_object()) { - throw std::invalid_argument("JSON patch must be an array of objects"); + JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } // collect mandatory members @@ -11988,13 +12004,13 @@ basic_json_parser_66: case patch_operations::test: { bool success = false; - try + JSON_TRY { // check if "value" matches the one at "path" // the "path" location must exist - use at() success = (result.at(ptr) == get_value("test", "value", false)); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // ignore out of range errors: success remains false } @@ -12002,7 +12018,7 @@ basic_json_parser_66: // throw an exception if test fails if (not success) { - throw std::domain_error("unsuccessful: " + val.dump()); + JSON_THROW(std::domain_error("unsuccessful: " + val.dump())); } break; @@ -12012,7 +12028,7 @@ basic_json_parser_66: { // op must be "add", "remove", "replace", "move", "copy", or // "test" - throw std::invalid_argument("operation value '" + op + "' is invalid"); + JSON_THROW(std::invalid_argument("operation value '" + op + "' is invalid")); } } } @@ -12285,4 +12301,10 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std #pragma GCC diagnostic pop #endif +// clean up +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_CATCH +#undef JSON_DEPRECATED + #endif diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c7171a276..31accc98f 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -88,6 +88,17 @@ SOFTWARE. #define JSON_DEPRECATED #endif +// allow to disable exceptions +#if defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#else + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#endif + /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann @@ -945,7 +956,7 @@ class basic_json { if (t == value_t::null) { - throw std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10"); // LCOV_EXCL_LINE + JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10")); // LCOV_EXCL_LINE } break; } @@ -1717,7 +1728,7 @@ class basic_json // if object is wanted but impossible, throw an exception if (manual_type == value_t::object and not is_an_object) { - throw std::domain_error("cannot create object from initializer list"); + JSON_THROW(std::domain_error("cannot create object from initializer list")); } } @@ -1895,7 +1906,7 @@ class basic_json // make sure iterator fits the current value if (first.m_object != last.m_object) { - throw std::domain_error("iterators are not compatible"); + JSON_THROW(std::domain_error("iterators are not compatible")); } // copy type from first iterator @@ -1912,7 +1923,7 @@ class basic_json { if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end()) { - throw std::out_of_range("iterators out of range"); + JSON_THROW(std::out_of_range("iterators out of range")); } break; } @@ -1971,7 +1982,7 @@ class basic_json default: { - throw std::domain_error("cannot use construct with iterators from " + first.m_object->type_name()); + JSON_THROW(std::domain_error("cannot use construct with iterators from " + first.m_object->type_name())); } } @@ -2655,7 +2666,7 @@ class basic_json return T(m_value.object->begin(), m_value.object->end()); } - throw std::domain_error("type must be object, but is " + type_name()); + JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } /// get an object (explicit) @@ -2666,7 +2677,7 @@ class basic_json return *(m_value.object); } - throw std::domain_error("type must be object, but is " + type_name()); + JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } /// get an array (explicit) @@ -2689,7 +2700,7 @@ class basic_json return to_vector; } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2710,7 +2721,7 @@ class basic_json return to_vector; } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2724,7 +2735,7 @@ class basic_json return T(m_value.array->begin(), m_value.array->end()); } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get an array (explicit) @@ -2735,7 +2746,7 @@ class basic_json return *(m_value.array); } - throw std::domain_error("type must be array, but is " + type_name()); + JSON_THROW(std::domain_error("type must be array, but is " + type_name())); } /// get a string (explicit) @@ -2748,7 +2759,7 @@ class basic_json return *m_value.string; } - throw std::domain_error("type must be string, but is " + type_name()); + JSON_THROW(std::domain_error("type must be string, but is " + type_name())); } /// get a number (explicit) @@ -2775,17 +2786,22 @@ class basic_json default: { - throw std::domain_error("type must be number, but is " + type_name()); + JSON_THROW(std::domain_error("type must be number, but is " + type_name())); } } } /// get a boolean (explicit) - constexpr boolean_t get_impl(boolean_t* /*unused*/) const + boolean_t get_impl(boolean_t* /*unused*/) const { - return is_boolean() - ? m_value.boolean - : throw std::domain_error("type must be boolean, but is " + type_name()); + if (is_boolean()) + { + return m_value.boolean; + } + else + { + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); + } } /// get a pointer to the value (object) @@ -3197,19 +3213,19 @@ class basic_json // at only works for arrays if (is_array()) { - try + JSON_TRY { return m_value.array->at(idx); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3240,19 +3256,19 @@ class basic_json // at only works for arrays if (is_array()) { - try + JSON_TRY { return m_value.array->at(idx); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3287,19 +3303,19 @@ class basic_json // at only works for objects if (is_object()) { - try + JSON_TRY { return m_value.object->at(key); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("key '" + key + "' not found"); + JSON_THROW(std::out_of_range("key '" + key + "' not found")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3334,19 +3350,19 @@ class basic_json // at only works for objects if (is_object()) { - try + JSON_TRY { return m_value.object->at(key); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // create better exception explanation - throw std::out_of_range("key '" + key + "' not found"); + JSON_THROW(std::out_of_range("key '" + key + "' not found")); } } else { - throw std::domain_error("cannot use at() with " + type_name()); + JSON_THROW(std::domain_error("cannot use at() with " + type_name())); } } @@ -3399,7 +3415,7 @@ class basic_json return m_value.array->operator[](idx); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3429,7 +3445,7 @@ class basic_json return m_value.array->operator[](idx); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3475,7 +3491,7 @@ class basic_json return m_value.object->operator[](key); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3517,7 +3533,7 @@ class basic_json return m_value.object->find(key)->second; } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3632,7 +3648,7 @@ class basic_json return m_value.object->operator[](key); } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3675,7 +3691,7 @@ class basic_json return m_value.object->find(key)->second; } - throw std::domain_error("cannot use operator[] with " + type_name()); + JSON_THROW(std::domain_error("cannot use operator[] with " + type_name())); } /*! @@ -3744,7 +3760,7 @@ class basic_json } else { - throw std::domain_error("cannot use value() with " + type_name()); + JSON_THROW(std::domain_error("cannot use value() with " + type_name())); } } @@ -3806,17 +3822,17 @@ class basic_json if (is_object()) { // if pointer resolves a value, return it or use default value - try + JSON_TRY { return ptr.get_checked(this); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { return default_value; } } - throw std::domain_error("cannot use value() with " + type_name()); + JSON_THROW(std::domain_error("cannot use value() with " + type_name())); } /*! @@ -3967,7 +3983,7 @@ class basic_json // make sure iterator fits the current value if (this != pos.m_object) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } IteratorType result = end(); @@ -3982,7 +3998,7 @@ class basic_json { if (not pos.m_it.primitive_iterator.is_begin()) { - throw std::out_of_range("iterator out of range"); + JSON_THROW(std::out_of_range("iterator out of range")); } if (is_string()) @@ -4012,7 +4028,7 @@ class basic_json default: { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4074,7 +4090,7 @@ class basic_json // make sure iterator fits the current value if (this != first.m_object or this != last.m_object) { - throw std::domain_error("iterators do not fit current value"); + JSON_THROW(std::domain_error("iterators do not fit current value")); } IteratorType result = end(); @@ -4089,7 +4105,7 @@ class basic_json { if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end()) { - throw std::out_of_range("iterators out of range"); + JSON_THROW(std::out_of_range("iterators out of range")); } if (is_string()) @@ -4121,7 +4137,7 @@ class basic_json default: { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4165,7 +4181,7 @@ class basic_json return m_value.object->erase(key); } - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } /*! @@ -4199,14 +4215,14 @@ class basic_json { if (idx >= size()) { - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx)); } else { - throw std::domain_error("cannot use erase() with " + type_name()); + JSON_THROW(std::domain_error("cannot use erase() with " + type_name())); } } @@ -4924,7 +4940,7 @@ class basic_json // push_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an array @@ -4960,7 +4976,7 @@ class basic_json // push_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an array @@ -5010,7 +5026,7 @@ class basic_json // push_back only works for null objects or objects if (not(is_null() or is_object())) { - throw std::domain_error("cannot use push_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use push_back() with " + type_name())); } // transform null object into an object @@ -5110,7 +5126,7 @@ class basic_json // emplace_back only works for null objects or arrays if (not(is_null() or is_array())) { - throw std::domain_error("cannot use emplace_back() with " + type_name()); + JSON_THROW(std::domain_error("cannot use emplace_back() with " + type_name())); } // transform null object into an array @@ -5158,7 +5174,7 @@ class basic_json // emplace only works for null objects or arrays if (not(is_null() or is_object())) { - throw std::domain_error("cannot use emplace() with " + type_name()); + JSON_THROW(std::domain_error("cannot use emplace() with " + type_name())); } // transform null object into an object @@ -5209,7 +5225,7 @@ class basic_json // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5218,7 +5234,7 @@ class basic_json return result; } - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } /*! @@ -5262,7 +5278,7 @@ class basic_json // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5271,7 +5287,7 @@ class basic_json return result; } - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } /*! @@ -5309,24 +5325,24 @@ class basic_json // insert only works for arrays if (not is_array()) { - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // check if range iterators belong to the same JSON object if (first.m_object != last.m_object) { - throw std::domain_error("iterators do not fit"); + JSON_THROW(std::domain_error("iterators do not fit")); } if (first.m_object == this or last.m_object == this) { - throw std::domain_error("passed iterators may not belong to container"); + JSON_THROW(std::domain_error("passed iterators may not belong to container")); } // insert to array and return iterator @@ -5367,13 +5383,13 @@ class basic_json // insert only works for arrays if (not is_array()) { - throw std::domain_error("cannot use insert() with " + type_name()); + JSON_THROW(std::domain_error("cannot use insert() with " + type_name())); } // check if iterator pos fits to this JSON value if (pos.m_object != this) { - throw std::domain_error("iterator does not fit current value"); + JSON_THROW(std::domain_error("iterator does not fit current value")); } // insert to array and return iterator @@ -5440,7 +5456,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -5473,7 +5489,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -5506,7 +5522,7 @@ class basic_json } else { - throw std::domain_error("cannot use swap() with " + type_name()); + JSON_THROW(std::domain_error("cannot use swap() with " + type_name())); } } @@ -6350,7 +6366,7 @@ class basic_json { if (current_index + sizeof(T) + 1 > vec.size()) { - throw std::out_of_range("cannot read " + std::to_string(sizeof(T)) + " bytes from vector"); + JSON_THROW(std::out_of_range("cannot read " + std::to_string(sizeof(T)) + " bytes from vector")); } T result; @@ -6900,19 +6916,19 @@ class basic_json // simple case: requested length is greater than the vector's length if (len > size or offset > size) { - throw std::out_of_range("len out of range"); + JSON_THROW(std::out_of_range("len out of range")); } // second case: adding offset would result in overflow if ((size > (std::numeric_limits<size_t>::max() - offset))) { - throw std::out_of_range("len+offset out of range"); + JSON_THROW(std::out_of_range("len+offset out of range")); } // last case: reading past the end of the vector if (len + offset > size) { - throw std::out_of_range("len+offset out of range"); + JSON_THROW(std::out_of_range("len+offset out of range")); } } @@ -7148,7 +7164,7 @@ class basic_json default: { - throw std::invalid_argument("error parsing a msgpack @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx]))); + JSON_THROW(std::invalid_argument("error parsing a msgpack @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx])))); } } } @@ -7631,7 +7647,7 @@ class basic_json default: // anything else (0xFF is handled inside the other types) { - throw std::invalid_argument("error parsing a CBOR @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx]))); + JSON_THROW(std::invalid_argument("error parsing a CBOR @ " + std::to_string(current_idx) + ": " + std::to_string(static_cast<int>(v[current_idx])))); } } } @@ -8521,7 +8537,7 @@ class basic_json case basic_json::value_t::null: { - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } default: @@ -8531,7 +8547,7 @@ class basic_json return *m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8565,7 +8581,7 @@ class basic_json return m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8665,7 +8681,7 @@ class basic_json // if objects are not the same, the comparison is undefined if (m_object != other.m_object) { - throw std::domain_error("cannot compare iterators of different containers"); + JSON_THROW(std::domain_error("cannot compare iterators of different containers")); } assert(m_object != nullptr); @@ -8707,7 +8723,7 @@ class basic_json // if objects are not the same, the comparison is undefined if (m_object != other.m_object) { - throw std::domain_error("cannot compare iterators of different containers"); + JSON_THROW(std::domain_error("cannot compare iterators of different containers")); } assert(m_object != nullptr); @@ -8716,7 +8732,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot compare order of object iterators"); + JSON_THROW(std::domain_error("cannot compare order of object iterators")); } case basic_json::value_t::array: @@ -8770,7 +8786,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use offsets with object iterators"); + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); } case basic_json::value_t::array: @@ -8832,7 +8848,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use offsets with object iterators"); + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); } case basic_json::value_t::array: @@ -8859,7 +8875,7 @@ class basic_json { case basic_json::value_t::object: { - throw std::domain_error("cannot use operator[] for object iterators"); + JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); } case basic_json::value_t::array: @@ -8869,7 +8885,7 @@ class basic_json case basic_json::value_t::null: { - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } default: @@ -8879,7 +8895,7 @@ class basic_json return *m_object; } - throw std::out_of_range("cannot get value"); + JSON_THROW(std::out_of_range("cannot get value")); } } } @@ -8897,7 +8913,7 @@ class basic_json return m_it.object_iterator->first; } - throw std::domain_error("cannot use key() for non-object iterators"); + JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); } /*! @@ -9082,7 +9098,7 @@ class basic_json // immediately abort if stream is erroneous if (s.fail()) { - throw std::invalid_argument("stream error"); + JSON_THROW(std::invalid_argument("stream error")); } // fill buffer @@ -9149,7 +9165,7 @@ class basic_json } else { - throw std::invalid_argument("missing or wrong low surrogate"); + JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); } } @@ -9183,7 +9199,7 @@ class basic_json } else { - throw std::out_of_range("code points above 0x10FFFF are invalid"); + JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); } return result; @@ -9565,7 +9581,7 @@ class basic_json // make sure there is a subsequent unicode if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') { - throw std::invalid_argument("missing low surrogate"); + JSON_THROW(std::invalid_argument("missing low surrogate")); } // get code yyyy from uxxxx\uyyyy @@ -9578,7 +9594,7 @@ class basic_json else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) { // we found a lone low surrogate - throw std::invalid_argument("missing high surrogate"); + JSON_THROW(std::invalid_argument("missing high surrogate")); } else { @@ -10056,7 +10072,7 @@ class basic_json "'") : lexer::token_type_name(last_token)); error_msg += "; expected " + lexer::token_type_name(t); - throw std::invalid_argument(error_msg); + JSON_THROW(std::invalid_argument(error_msg)); } } @@ -10068,7 +10084,7 @@ class basic_json error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + "'") : lexer::token_type_name(last_token)); - throw std::invalid_argument(error_msg); + JSON_THROW(std::invalid_argument(error_msg)); } } @@ -10164,7 +10180,7 @@ class basic_json { if (is_root()) { - throw std::domain_error("JSON pointer has no parent"); + JSON_THROW(std::domain_error("JSON pointer has no parent")); } auto last = reference_tokens.back(); @@ -10182,7 +10198,7 @@ class basic_json { if (is_root()) { - throw std::domain_error("JSON pointer has no parent"); + JSON_THROW(std::domain_error("JSON pointer has no parent")); } json_pointer result = *this; @@ -10243,7 +10259,7 @@ class basic_json */ default: { - throw std::domain_error("invalid value to unflatten"); + JSON_THROW(std::domain_error("invalid value to unflatten")); } } } @@ -10311,7 +10327,7 @@ class basic_json // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } if (reference_token == "-") @@ -10329,7 +10345,7 @@ class basic_json default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -10363,7 +10379,7 @@ class basic_json // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // note: at performs range check @@ -10373,7 +10389,7 @@ class basic_json default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -10415,7 +10431,7 @@ class basic_json // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // use unchecked array access @@ -10425,7 +10441,7 @@ class basic_json default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -10459,7 +10475,7 @@ class basic_json // error condition (cf. RFC 6901, Sect. 4) if (reference_token.size() > 1 and reference_token[0] == '0') { - throw std::domain_error("array index must not begin with '0'"); + JSON_THROW(std::domain_error("array index must not begin with '0'")); } // note: at performs range check @@ -10469,7 +10485,7 @@ class basic_json default: { - throw std::out_of_range("unresolved reference token '" + reference_token + "'"); + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } @@ -10491,7 +10507,7 @@ class basic_json // check if nonempty reference string begins with slash if (reference_string[0] != '/') { - throw std::domain_error("JSON pointer must be empty or begin with '/'"); + JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); } // extract the reference tokens: @@ -10526,7 +10542,7 @@ class basic_json (reference_token[pos + 1] != '0' and reference_token[pos + 1] != '1')) { - throw std::domain_error("escape error: '~' must be followed with '0' or '1'"); + JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); } } @@ -10652,7 +10668,7 @@ class basic_json { if (not value.is_object()) { - throw std::domain_error("only objects can be unflattened"); + JSON_THROW(std::domain_error("only objects can be unflattened")); } basic_json result; @@ -10662,7 +10678,7 @@ class basic_json { if (not element.second.is_primitive()) { - throw std::domain_error("values in object must be primitive"); + JSON_THROW(std::domain_error("values in object must be primitive")); } // assign value to reference pointed to by JSON pointer; Note @@ -10991,7 +11007,7 @@ class basic_json if (static_cast<size_type>(idx) > parent.size()) { // avoid undefined behavior - throw std::out_of_range("array index " + std::to_string(idx) + " is out of range"); + JSON_THROW(std::out_of_range("array index " + std::to_string(idx) + " is out of range")); } else { @@ -11029,7 +11045,7 @@ class basic_json } else { - throw std::out_of_range("key '" + last_path + "' not found"); + JSON_THROW(std::out_of_range("key '" + last_path + "' not found")); } } else if (parent.is_array()) @@ -11043,7 +11059,7 @@ class basic_json if (not json_patch.is_array()) { // a JSON patch must be an array of objects - throw std::invalid_argument("JSON patch must be an array of objects"); + JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } // iterate and apply th eoperations @@ -11063,13 +11079,13 @@ class basic_json // check if desired value is present if (it == val.m_value.object->end()) { - throw std::invalid_argument(error_msg + " must have member '" + member + "'"); + JSON_THROW(std::invalid_argument(error_msg + " must have member '" + member + "'")); } // check if result is of type string if (string_type and not it->second.is_string()) { - throw std::invalid_argument(error_msg + " must have string member '" + member + "'"); + JSON_THROW(std::invalid_argument(error_msg + " must have string member '" + member + "'")); } // no error: return value @@ -11079,7 +11095,7 @@ class basic_json // type check if (not val.is_object()) { - throw std::invalid_argument("JSON patch must be an array of objects"); + JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } // collect mandatory members @@ -11138,13 +11154,13 @@ class basic_json case patch_operations::test: { bool success = false; - try + JSON_TRY { // check if "value" matches the one at "path" // the "path" location must exist - use at() success = (result.at(ptr) == get_value("test", "value", false)); } - catch (std::out_of_range&) + JSON_CATCH (std::out_of_range&) { // ignore out of range errors: success remains false } @@ -11152,7 +11168,7 @@ class basic_json // throw an exception if test fails if (not success) { - throw std::domain_error("unsuccessful: " + val.dump()); + JSON_THROW(std::domain_error("unsuccessful: " + val.dump())); } break; @@ -11162,7 +11178,7 @@ class basic_json { // op must be "add", "remove", "replace", "move", "copy", or // "test" - throw std::invalid_argument("operation value '" + op + "' is invalid"); + JSON_THROW(std::invalid_argument("operation value '" + op + "' is invalid")); } } } @@ -11435,4 +11451,10 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std #pragma GCC diagnostic pop #endif +// clean up +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_CATCH +#undef JSON_DEPRECATED + #endif diff --git a/test/Makefile b/test/Makefile index 3d5595d21..0b235ba19 100644 --- a/test/Makefile +++ b/test/Makefile @@ -75,7 +75,7 @@ test-%: src/unit-%.cpp ../src/json.hpp thirdparty/catch/catch.hpp @echo "[CXXLD] $@" @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -DCATCH_CONFIG_MAIN $< -o $@ -TEST_PATTERN = "*" +TEST_PATTERN ?= "*" TEST_PREFIX = "" check: $(TESTCASES) @cd .. ; for testcase in $(TESTCASES); do echo "Executing $$testcase..."; $(TEST_PREFIX)test/$$testcase $(TEST_PATTERN) || exit 1; done diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp index 92238b79f..43f9f4338 100644 --- a/test/src/unit-cbor.cpp +++ b/test/src/unit-cbor.cpp @@ -1187,7 +1187,7 @@ TEST_CASE("single CBOR roundtrip") } } -TEST_CASE("CBOR regressions") +TEST_CASE("CBOR regressions", "[!throws]") { SECTION("fuzz test results") { diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp index 1ba6aa613..f12da1e43 100644 --- a/test/src/unit-element_access2.cpp +++ b/test/src/unit-element_access2.cpp @@ -298,25 +298,6 @@ TEST_CASE("element access 2") CHECK(j_const.value("/array"_json_pointer, json({10, 100})) == json({1, 2, 3})); } - SECTION("access non-existing value") - { - CHECK(j.value("/not/existing"_json_pointer, 2) == 2); - CHECK(j.value("/not/existing"_json_pointer, 2u) == 2u); - CHECK(j.value("/not/existing"_json_pointer, false) == false); - CHECK(j.value("/not/existing"_json_pointer, "bar") == "bar"); - CHECK(j.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); - CHECK(j.value("/not/existing"_json_pointer, json({{"foo", "bar"}})) == json({{"foo", "bar"}})); - CHECK(j.value("/not/existing"_json_pointer, json({10, 100})) == json({10, 100})); - - CHECK(j_const.value("/not/existing"_json_pointer, 2) == 2); - CHECK(j_const.value("/not/existing"_json_pointer, 2u) == 2u); - CHECK(j_const.value("/not/existing"_json_pointer, false) == false); - CHECK(j_const.value("/not/existing"_json_pointer, "bar") == "bar"); - CHECK(j_const.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); - CHECK(j_const.value("/not/existing"_json_pointer, json({{"foo", "bar"}})) == json({{"foo", "bar"}})); - CHECK(j_const.value("/not/existing"_json_pointer, json({10, 100})) == json({10, 100})); - } - SECTION("access on non-object type") { SECTION("null") @@ -957,3 +938,37 @@ TEST_CASE("element access 2") } } } + +TEST_CASE("element access 2 (throwing tests)", "[!throws]") +{ + SECTION("object") + { + json j = {{"integer", 1}, {"unsigned", 1u}, {"floating", 42.23}, {"null", nullptr}, {"string", "hello world"}, {"boolean", true}, {"object", json::object()}, {"array", {1, 2, 3}}}; + const json j_const = j; + + SECTION("access specified element with default value") + { + SECTION("given a JSON pointer") + { + SECTION("access non-existing value") + { + CHECK(j.value("/not/existing"_json_pointer, 2) == 2); + CHECK(j.value("/not/existing"_json_pointer, 2u) == 2u); + CHECK(j.value("/not/existing"_json_pointer, false) == false); + CHECK(j.value("/not/existing"_json_pointer, "bar") == "bar"); + CHECK(j.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); + CHECK(j.value("/not/existing"_json_pointer, json({{"foo", "bar"}})) == json({{"foo", "bar"}})); + CHECK(j.value("/not/existing"_json_pointer, json({10, 100})) == json({10, 100})); + + CHECK(j_const.value("/not/existing"_json_pointer, 2) == 2); + CHECK(j_const.value("/not/existing"_json_pointer, 2u) == 2u); + CHECK(j_const.value("/not/existing"_json_pointer, false) == false); + CHECK(j_const.value("/not/existing"_json_pointer, "bar") == "bar"); + CHECK(j_const.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); + CHECK(j_const.value("/not/existing"_json_pointer, json({{"foo", "bar"}})) == json({{"foo", "bar"}})); + CHECK(j_const.value("/not/existing"_json_pointer, json({10, 100})) == json({10, 100})); + } + } + } + } +} From a00149f8ee60a48fe7735d3eecd209b509e2168f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Mon, 16 Jan 2017 22:36:58 +0100 Subject: [PATCH 034/174] :bug: fixed logic error --- .travis.yml | 4 ++-- src/json.hpp | 10 +++++----- src/json.hpp.re2c | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6a154deb7..fc7e5db0c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -78,13 +78,13 @@ matrix: env: - COMPILER=g++-4.9 - SPECIAL=no_exceptions - - TEST_PATTERN="-e \"*\"" + - TEST_PATTERN=-e "*" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: [g++-4.9, cppcheck] before_script: - - make FLAGS="-fno-exceptions" + - CPPFLAGS="-DJSON_NOEXCEPTION" make # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/) diff --git a/src/json.hpp b/src/json.hpp index 69d49ec17..fa9b85f26 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -89,14 +89,14 @@ SOFTWARE. #endif // allow to disable exceptions -#if defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#else +#if not defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) #endif /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 31accc98f..886b9dde5 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -89,14 +89,14 @@ SOFTWARE. #endif // allow to disable exceptions -#if defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#else +#if not defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) #endif /*! From 87c5e32e1faf7f54a3f6241c288aa0c1a39c4a3f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Mon, 16 Jan 2017 22:46:49 +0100 Subject: [PATCH 035/174] :bug: fixed escaping --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fc7e5db0c..ef5c6143f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -78,7 +78,7 @@ matrix: env: - COMPILER=g++-4.9 - SPECIAL=no_exceptions - - TEST_PATTERN=-e "*" + - TEST_PATTERN=-e \"*\" addons: apt: sources: ['ubuntu-toolchain-r-test'] From 046f6da82f6e1d439b049f97ed4cb7cc5e0bf989 Mon Sep 17 00:00:00 2001 From: Jonathan Lee <vjon207@gmail.com> Date: Wed, 18 Jan 2017 11:43:14 -0800 Subject: [PATCH 036/174] Fix documentation error Move comparison before "j.clear()" function call, such that the intended return value "true" is actually correct. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6182a2df9..902cdaad1 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,9 @@ const std::string tmp = j[0]; j[1] = 42; bool foo = j.at(2); +// comparison +j == "[\"foo\", 1, true]"_json; // true + // other stuff j.size(); // 3 entries j.empty(); // false @@ -277,9 +280,6 @@ j.is_object(); j.is_array(); j.is_string(); -// comparison -j == "[\"foo\", 1, true]"_json; // true - // create an object json o; o["foo"] = 23; From 5e3f9c8969355062851195751d628407a687108f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 19 Jan 2017 17:09:55 +0100 Subject: [PATCH 037/174] :page_facing_up: help Github find the license --- LICENSE.MIT => LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE.MIT => LICENSE (100%) diff --git a/LICENSE.MIT b/LICENSE similarity index 100% rename from LICENSE.MIT rename to LICENSE From 69be3fa8424a8c56fb9802284a510b8b14837d9b Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 19 Jan 2017 18:19:20 +0100 Subject: [PATCH 038/174] :memo: small documentation update --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 902cdaad1..69676370a 100644 --- a/README.md +++ b/README.md @@ -587,8 +587,9 @@ I deeply appreciate the help of the following people. - [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check. - [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one. - [Daniel599](https://github.com/Daniel599) helped to get Travis execute the tests with Clang's sanitizers. +- [Jonathan Lee](https://github.com/vjon) fixed an example in the README file. -Thanks a lot for helping out! +Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. ## Notes @@ -601,6 +602,8 @@ Thanks a lot for helping out! - [Unicode noncharacters](http://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. - Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. - The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs. +- The code can be compiled without C++ **runtime type identification** features; that is, you can use the `-fno-rtti` compiler flag. +- **Exceptions** are used widly within the library. They can, however, be switched off with either using the compiler flag `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION`. In this case, exceptions are replaced by an `abort()` call. ## Execute unit tests From 145188f2640a4f8a642467c68e6737547ebaa245 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 19 Jan 2017 19:23:56 +0100 Subject: [PATCH 039/174] :rewind: renaming did not help --- LICENSE => LICENSE.MIT | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE => LICENSE.MIT (100%) diff --git a/LICENSE b/LICENSE.MIT similarity index 100% rename from LICENSE rename to LICENSE.MIT From ce0b3fe5a334567825a554a08b76c725d0790500 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 21 Jan 2017 16:12:17 +0100 Subject: [PATCH 040/174] :construction: made type_name() public --- doc/examples/type_name.cpp | 24 ++++++++++++++++++++++++ doc/examples/type_name.link | 1 + doc/examples/type_name.output | 7 +++++++ src/json.hpp | 5 ++++- src/json.hpp.re2c | 5 ++++- 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 doc/examples/type_name.cpp create mode 100644 doc/examples/type_name.link create mode 100644 doc/examples/type_name.output diff --git a/doc/examples/type_name.cpp b/doc/examples/type_name.cpp new file mode 100644 index 000000000..815e92d7e --- /dev/null +++ b/doc/examples/type_name.cpp @@ -0,0 +1,24 @@ +#include <json.hpp> + +using json = nlohmann::json; + +int main() +{ + // create JSON values + json j_null; + json j_boolean = true; + json j_number_integer = 17; + json j_number_float = 23.42; + json j_object = {{"one", 1}, {"two", 2}}; + json j_array = {1, 2, 4, 8, 16}; + json j_string = "Hello, world"; + + // call type_name() + std::cout << j_null.type_name() << '\n'; + std::cout << j_boolean.type_name() << '\n'; + std::cout << j_number_integer.type_name() << '\n'; + std::cout << j_number_float.type_name() << '\n'; + std::cout << j_object.type_name() << '\n'; + std::cout << j_array.type_name() << '\n'; + std::cout << j_string.type_name() << '\n'; +} diff --git a/doc/examples/type_name.link b/doc/examples/type_name.link new file mode 100644 index 000000000..39d1f973e --- /dev/null +++ b/doc/examples/type_name.link @@ -0,0 +1 @@ +<a target="_blank" href="http://melpon.org/wandbox/permlink/V6imubWo6Lkp8gk1"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/type_name.output b/doc/examples/type_name.output new file mode 100644 index 000000000..ad906a497 --- /dev/null +++ b/doc/examples/type_name.output @@ -0,0 +1,7 @@ +null +boolean +number +number +object +array +string diff --git a/src/json.hpp b/src/json.hpp index fa9b85f26..2c1fd6585 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7767,7 +7767,6 @@ class basic_json /// @} - private: /////////////////////////// // convenience functions // /////////////////////////// @@ -7782,6 +7781,9 @@ class basic_json @complexity Constant. + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,typename} + @since version 1.0.0 */ std::string type_name() const @@ -7805,6 +7807,7 @@ class basic_json } } + private: /*! @brief calculates the extra space to escape a JSON string diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 886b9dde5..f552a390d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7767,7 +7767,6 @@ class basic_json /// @} - private: /////////////////////////// // convenience functions // /////////////////////////// @@ -7782,6 +7781,9 @@ class basic_json @complexity Constant. + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,typename} + @since version 1.0.0 */ std::string type_name() const @@ -7805,6 +7807,7 @@ class basic_json } } + private: /*! @brief calculates the extra space to escape a JSON string From b443edf49e2741bd27cdfb148fa42abf58d6bac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Delrieu?= <theo@tanker.io> Date: Sun, 16 Oct 2016 17:29:57 +0200 Subject: [PATCH 041/174] add first version support for user-defined types --- src/json.hpp | 96 +++++++++-- test/CMakeLists.txt | 1 + test/src/unit-constructor3.cpp | 302 +++++++++++++++++++++++++++++++++ 3 files changed, 383 insertions(+), 16 deletions(-) create mode 100644 test/src/unit-constructor3.cpp diff --git a/src/json.hpp b/src/json.hpp index 2c1fd6585..05fb8c922 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -106,12 +106,14 @@ SOFTWARE. */ namespace nlohmann { - +template <typename T, typename = void> +struct json_traits; /*! @brief unnamed namespace with internal helper functions @since version 1.0.0 */ +// TODO transform this anon ns to detail? namespace { /*! @@ -137,7 +139,47 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; -} // namespace +// taken from http://stackoverflow.com/questions/10711952/how-to-detect-existence-of-a-class-using-sfinae +template <typename T> +struct has_destructor +{ + template <typename U> + static std::true_type detect(decltype(std::declval<U>().~U())*); + + template <typename> + static std::false_type detect(...); + + static constexpr bool value = decltype(detect<T>(0))::value; +}; + +template<typename T> +struct has_json_traits +{ + static constexpr bool value = has_destructor<json_traits<T>>::value; +}; + +template <> struct has_json_traits<void> : std::false_type {}; + +/*! +@brief helper class to create locales with decimal point + +This struct is used a default locale during the JSON serialization. JSON +requires the decimal point to be `.`, so this function overloads the +`do_decimal_point()` function to return `.`. This function is called by +float-to-string conversions to retrieve the decimal separator between integer +and fractional parts. + +@sa https://github.com/nlohmann/json/issues/51#issuecomment-86869315 +@since version 2.0.0 +*/ +struct DecimalSeparator : std::numpunct<char> +{ + char do_decimal_point() const + { + return '.'; + } +}; + /*! @brief a class to store JSON values @@ -1295,6 +1337,15 @@ class basic_json assert_invariant(); } + template < + typename T, + typename = + typename std::enable_if<has_json_traits<typename std::remove_cv< + typename std::remove_reference<T>::type>::type>::value>::type> + explicit basic_json(T &&val) + : basic_json(json_traits<typename std::remove_cv< + typename std::remove_reference<T>::type>::type>:: + to_json(std::forward<T>(val))) {} /*! @brief create a string (explicit) @@ -1311,15 +1362,14 @@ class basic_json @sa @ref basic_json(const typename string_t::value_type*) -- create a string value from a character pointer - @sa @ref basic_json(const CompatibleStringType&) -- create a string value + @sa @ref basic_json(const CompatibleStringType&) -- create a string + value from a compatible string container @since version 1.0.0 */ - basic_json(const string_t& val) - : m_type(value_t::string), m_value(val) - { - assert_invariant(); + basic_json(const string_t &val) : m_type(value_t::string), m_value(val) { + assert_invariant(); } /*! @@ -2655,16 +2705,30 @@ class basic_json // value access // ////////////////// + template < + typename T, + typename = + typename std::enable_if<has_json_traits<typename std::remove_cv< + typename std::remove_reference<T>::type>::type>::value>::type> + auto get_impl(T *) const -> decltype( + json_traits<typename std::remove_cv<typename std::remove_reference< + T>::type>::type>::from_json(std::declval<basic_json>())) { + return json_traits<typename std::remove_cv< + typename std::remove_reference<T>::type>::type>::from_json(*this); + } + /// get an object (explicit) - template<class T, typename std::enable_if< - std::is_convertible<typename object_t::key_type, typename T::key_type>::value and - std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_object()) - { - return T(m_value.object->begin(), m_value.object->end()); - } + template <class T, + typename std::enable_if< + std::is_convertible<typename object_t::key_type, + typename T::key_type>::value and + std::is_convertible<basic_json_t, + typename T::mapped_type>::value, + int>::type = 0> + T get_impl(T *) const { + if (is_object()) { + return T(m_value.object->begin(), m_value.object->end()); + } else { JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 62213ad31..8279b157e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,6 +15,7 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-concepts.cpp" "src/unit-constructor1.cpp" "src/unit-constructor2.cpp" + "src/unit-constructor3.cpp" "src/unit-convenience.cpp" "src/unit-conversions.cpp" "src/unit-deserialization.cpp" diff --git a/test/src/unit-constructor3.cpp b/test/src/unit-constructor3.cpp new file mode 100644 index 000000000..d119625fa --- /dev/null +++ b/test/src/unit-constructor3.cpp @@ -0,0 +1,302 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 2.0.5 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License <http://opensource.org/licenses/MIT>. +Copyright (c) 2013-2016 Niels Lohmann <http://nlohmann.me>. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include <string> +#include <memory> +#include "catch.hpp" + +#include "json.hpp" +using nlohmann::json; + +namespace udt +{ +struct empty_type {}; +struct pod_type { + int a; + char b; + short c; +}; + +inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept +{ + return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); +} + +struct bit_more_complex_type { + pod_type a; + pod_type b; + std::string c; +}; + +inline bool operator==(bit_more_complex_type const &lhs, + bit_more_complex_type const &rhs) noexcept { + return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); +} + +// best optional implementation ever +template <typename T> +class optional_type +{ +public: + optional_type() = default; + explicit optional_type(T val) : _val(std::make_shared<T>(std::move(val))) {} + explicit operator bool() const noexcept { return _val != nullptr; } + + T const &operator*() const { return *_val; } + +private: + std::shared_ptr<T> _val; +}; + +template <typename T> +inline bool operator==(optional_type<T> const& lhs, optional_type<T> const& rhs) +{ + if (!lhs && !rhs) + return true; + if (!lhs || !rhs) + return false; + return *lhs == *rhs; +} +} + +namespace nlohmann +{ +template <> +struct json_traits<udt::empty_type> +{ + using type = udt::empty_type; + + static json to_json(type) + { + return json::object(); + } + + static type from_json(json const& j) + { + assert(j.is_object() and j.empty()); + return {}; + } +}; + +template <> +struct json_traits<udt::pod_type> +{ + using type = udt::pod_type; + + static json to_json(type const& t) + { + return {{"a", t.a}, {"b", t.b}, {"c", t.c}}; + } + + static type from_json(json const& j) + { + assert(j.is_object()); + return {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; + } +}; + +template <> +struct json_traits<udt::bit_more_complex_type> +{ + using type = udt::bit_more_complex_type; + + static json to_json(type const& t) + { + return json{{"a", json{t.a}}, {"b", json{t.b}}, {"c", t.c}}; + } + + static type from_json(json const& j) + { + return {j["a"].get<udt::pod_type>(), j["b"].get<udt::pod_type>(), + j["c"].get<std::string>()}; + } +}; + +template <typename T> +struct json_traits<udt::optional_type<T>> +{ + using type = udt::optional_type<T>; + + static json to_json(type const& t) + { + if (t) + return json(*t); + return {}; + } + + static type from_json(json const& j) + { + if (j.is_null()) + return {}; + return type{j.get<T>()}; + } +}; +} + + +TEST_CASE("constructors for user-defined types", "[udt]") +{ + SECTION("empty type") + { + udt::empty_type const e; + auto const j = json{e}; + auto k = json::object(); + CHECK(j == k); + } + + SECTION("pod type") + { + auto const e = udt::pod_type{42, 42, 42}; + auto j = json{e}; + auto k = json{{"a", 42}, {"b", 42}, {"c", 42}}; + CHECK(j == k); + } + + SECTION("bit more complex type") + { + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + + auto j = json{e}; + auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + CHECK(j == k); + } + + SECTION("vector of udt") + { + std::vector<udt::bit_more_complex_type> v; + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + + v.emplace_back(e); + v.emplace_back(e); + v.emplace_back(e); + + json j = v; + auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + auto l = json{k, k, k}; + CHECK(j == l); + } + + SECTION("optional type") { + SECTION("regular case") { + udt::optional_type<int> u{3}; + CHECK(json{u} == json(3)); + } + + SECTION("nullopt case") { + udt::optional_type<float> v; + CHECK(json{v} == json{}); + } + + SECTION("optional of json convertible type") + { + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + udt::optional_type<udt::bit_more_complex_type> o{e}; + auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + CHECK(json{o} == k); + } + + SECTION("optional of vector of json convertible type") + { + std::vector<udt::bit_more_complex_type> v; + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + v.emplace_back(e); + v.emplace_back(e); + v.emplace_back(e); + udt::optional_type<std::vector<udt::bit_more_complex_type>> o{v}; + auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + auto l = json{k, k, k}; + CHECK(json{o} == l); + } + } +} + +TEST_CASE("get<> for user-defined types", "[udt]") +{ + SECTION("pod type") + { + auto const e = udt::pod_type{42, 42, 42}; + auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; + + auto const obj = j.get<udt::pod_type>(); + CHECK(e == obj); + } + + SECTION("bit more complex type") + { + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + auto const j = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + + auto const obj = j.get<udt::bit_more_complex_type>(); + CHECK(e == obj); + } + + SECTION("vector of udt") + { + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + std::vector<udt::bit_more_complex_type> v{e, e, e}; + auto const j = json(v); + + auto const obj = j.get<decltype(v)>(); + CHECK(v == obj); + } + + SECTION("optional") + { + SECTION("from null") + { + udt::optional_type<int> o; + json j; + CHECK(j.get<decltype(o)>() == o); + } + + SECTION("from value") + { + json j{{"a", 42}, {"b", 42}, {"c", 42}}; + auto v = j.get<udt::optional_type<udt::pod_type>>(); + auto expected = udt::pod_type{42,42,42}; + REQUIRE(v); + CHECK(*v == expected); + } + } +} From fe628b585b5bccbea2687dbb7f3557717086ef6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Mon, 17 Oct 2016 23:41:53 +0200 Subject: [PATCH 042/174] anonymous namespace renamed to detail --- src/json.hpp | 93 ++++++++++++-- test/src/unit-constructor3.cpp | 218 +++++++++++++++++++++++++++++++-- 2 files changed, 292 insertions(+), 19 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 05fb8c922..3d4994e3f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -106,6 +106,14 @@ SOFTWARE. */ namespace nlohmann { +// TODO add real documentation before PR + +// Traits structure declaration, users can specialize it for their own types +// +// constructing a json object from a user-defined type will call the +// 'json to_json(T)' function +// +// whereas calling json::get<T> will call 'T from_json(json const&)' template <typename T, typename = void> struct json_traits; @@ -113,8 +121,8 @@ struct json_traits; @brief unnamed namespace with internal helper functions @since version 1.0.0 */ -// TODO transform this anon ns to detail? -namespace + +namespace detail { /*! @brief Helper to determine whether there's a key_type for T. @@ -140,6 +148,7 @@ struct has_mapped_type }; // taken from http://stackoverflow.com/questions/10711952/how-to-detect-existence-of-a-class-using-sfinae +// used to determine if json_traits is defined for a given type T template <typename T> struct has_destructor { @@ -158,7 +167,23 @@ struct has_json_traits static constexpr bool value = has_destructor<json_traits<T>>::value; }; -template <> struct has_json_traits<void> : std::false_type {}; +struct to_json_fn +{ + template <typename T> + constexpr auto operator()(T&& val) const -> decltype(to_json(std::forward<T>(val))) + { + return to_json(std::forward<T>(val)); + } +}; + +struct from_json_fn +{ + template <typename Json, typename T> + constexpr auto operator()(Json const& from, T& to) const -> decltype(from_json(from, to)) + { + return from_json(from, to); + } +}; /*! @brief helper class to create locales with decimal point @@ -181,6 +206,23 @@ struct DecimalSeparator : std::numpunct<char> }; +// taken from ranges-v3 +// TODO add doc +template <typename T> +struct __static_const +{ + static constexpr T value{}; +}; + +template <typename T> +constexpr T __static_const<T>::value; + +inline namespace +{ + constexpr auto const& to_json = __static_const<detail::to_json_fn>::value; + constexpr auto const& from_json = __static_const<detail::from_json_fn>::value; +} + /*! @brief a class to store JSON values @@ -1337,10 +1379,24 @@ class basic_json assert_invariant(); } + // constructor chosen if json_traits is specialized for type T + // note: constructor is marked explicit to avoid the following issue: + // + // struct not_equality_comparable{}; + // + // not_equality_comparable{} == not_equality_comparable{}; + // + // this will construct implicitely 2 json objects and call operator== on them + // which can cause nasty bugs on the user's in json-unrelated code + // + // the trade-off is expressivety in initializer-lists + // auto j = json{{"a", json(not_equality_comparable{})}}; + // + // we can remove this constraint though, since lots of ctor are not explicit already template < typename T, typename = - typename std::enable_if<has_json_traits<typename std::remove_cv< + typename std::enable_if<detail::has_json_traits<typename std::remove_cv< typename std::remove_reference<T>::type>::type>::value>::type> explicit basic_json(T &&val) : basic_json(json_traits<typename std::remove_cv< @@ -2705,10 +2761,13 @@ class basic_json // value access // ////////////////// + // get_impl overload chosen if json_traits struct is specialized for type T + // simply returns json_traits<T>::from_json(*this); + // TODO add alias templates (enable_if_t etc) template < typename T, - typename = - typename std::enable_if<has_json_traits<typename std::remove_cv< + typename = typename std::enable_if< + detail::has_json_traits<typename std::remove_cv< typename std::remove_reference<T>::type>::type>::value>::type> auto get_impl(T *) const -> decltype( json_traits<typename std::remove_cv<typename std::remove_reference< @@ -2717,6 +2776,24 @@ class basic_json typename std::remove_reference<T>::type>::type>::from_json(*this); } + // this one is quite atrocious + // this overload is chosen ONLY if json_traits struct is not specialized, and if the expression nlohmann::from_json(*this, T&) is valid + // I chose to prefer the json_traits specialization if it exists, since it's a more advanced use. + // But we can of course change this behaviour + template <typename T> + auto get_impl(T *) const -> typename std::enable_if< + not detail::has_json_traits<typename std::remove_cv<T>::type>::value, + typename std::remove_cv<typename std::remove_reference< + decltype(::nlohmann::from_json(std::declval<basic_json>(), + std::declval<T &>()), + std::declval<T>())>::type>::type>::type + { + typename std::remove_cv<typename std::remove_reference<T>::type>::type + ret; + ::nlohmann::from_json(*this, ret); + return ret; + } + /// get an object (explicit) template <class T, typename std::enable_if< @@ -2750,7 +2827,7 @@ class basic_json not std::is_same<basic_json_t, typename T::value_type>::value and not std::is_arithmetic<T>::value and not std::is_convertible<std::string, T>::value and - not has_mapped_type<T>::value, int>::type = 0> + not detail::has_mapped_type<T>::value, int>::type = 0> T get_impl(T* /*unused*/) const { if (is_array()) @@ -2791,7 +2868,7 @@ class basic_json /// get an array (explicit) template<class T, typename std::enable_if< std::is_same<basic_json, typename T::value_type>::value and - not has_mapped_type<T>::value, int>::type = 0> + not detail::has_mapped_type<T>::value, int>::type = 0> T get_impl(T* /*unused*/) const { if (is_array()) diff --git a/test/src/unit-constructor3.cpp b/test/src/unit-constructor3.cpp index d119625fa..cfe638673 100644 --- a/test/src/unit-constructor3.cpp +++ b/test/src/unit-constructor3.cpp @@ -42,22 +42,12 @@ struct pod_type { short c; }; -inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept -{ - return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); -} - struct bit_more_complex_type { pod_type a; pod_type b; std::string c; }; -inline bool operator==(bit_more_complex_type const &lhs, - bit_more_complex_type const &rhs) noexcept { - return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); -} - // best optional implementation ever template <typename T> class optional_type @@ -68,11 +58,97 @@ public: explicit operator bool() const noexcept { return _val != nullptr; } T const &operator*() const { return *_val; } + optional_type& operator=(T const& t) + { + _val = std::make_shared<T>(t); + return *this; + } private: std::shared_ptr<T> _val; }; +struct no_json_traits_type +{ + int a; +}; + +// free to/from_json functions + +json to_json(empty_type) +{ + return json::object(); +} + +json to_json(pod_type const& p) +{ + return {{"a", p.a}, {"b", p.b}, {"c", p.c}}; +} + +json to_json(bit_more_complex_type const& p) +{ + using nlohmann::to_json; + return json{{"a", to_json(p.a)}, {"b", to_json(p.b)}, {"c", p.c}}; +} + +template <typename T> +json to_json(optional_type<T> const& opt) +{ + using nlohmann::to_json; + if (!opt) + return nullptr; + return to_json(*opt); +} + +json to_json(no_json_traits_type const& p) +{ + json ret; + ret["a"] = p.a; + return ret; +} + +void from_json(json const&j, empty_type& t) +{ + assert(j.empty()); + t = empty_type{}; +} + +void from_json(json const&j, pod_type& t) +{ + t = {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; +} + +void from_json(json const&j, bit_more_complex_type& t) +{ + // relying on json_traits struct here.. + t = {j["a"].get<udt::pod_type>(), j["b"].get<udt::pod_type>(), + j["c"].get<std::string>()}; +} + +void from_json(json const& j, no_json_traits_type& t) +{ + t.a = j["a"].get<int>(); +} + +template <typename T> +void from_json(json const& j, optional_type<T>& t) +{ + if (j.is_null()) + t = optional_type<T>{}; + else + t = j.get<T>(); +} + +inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept +{ + return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); +} + +inline bool operator==(bit_more_complex_type const &lhs, + bit_more_complex_type const &rhs) noexcept { + return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); +} + template <typename T> inline bool operator==(optional_type<T> const& lhs, optional_type<T> const& rhs) { @@ -82,6 +158,11 @@ inline bool operator==(optional_type<T> const& lhs, optional_type<T> const& rhs) return false; return *lhs == *rhs; } + +inline bool operator==(no_json_traits_type const& lhs, no_json_traits_type const& rhs) +{ + return lhs.a == rhs.a; +} } namespace nlohmann @@ -163,7 +244,7 @@ TEST_CASE("constructors for user-defined types", "[udt]") { SECTION("empty type") { - udt::empty_type const e; + udt::empty_type const e{}; auto const j = json{e}; auto k = json::object(); CHECK(j == k); @@ -300,3 +381,118 @@ TEST_CASE("get<> for user-defined types", "[udt]") } } } + +TEST_CASE("to_json free function", "[udt]") +{ + SECTION("pod_type") + { + auto const e = udt::pod_type{42, 42, 42}; + auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; + + auto const j = nlohmann::to_json(e); + CHECK(j == expected); + } + + SECTION("bit_more_complex_type") + { + auto const e = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + auto const expected = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + auto const j = nlohmann::to_json(e); + CHECK(j == expected); + } + + SECTION("optional_type") + { + SECTION("from null") + { + udt::optional_type<udt::pod_type> o; + + json expected; + auto const j = nlohmann::to_json(o); + CHECK(expected == j); + } + + SECTION("from value") + { + udt::optional_type<udt::pod_type> o{{42, 42, 42}}; + + auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; + auto const j = nlohmann::to_json(o); + CHECK(expected == j); + } + } + + SECTION("no json_traits specialization") + { + udt::no_json_traits_type t{42}; + + json expected; + expected["a"] = 42; + auto const j = nlohmann::to_json(t); + CHECK(j == expected); + } +} + +TEST_CASE("from_json free function", "[udt]") +{ + SECTION("pod_type") + { + auto const expected = udt::pod_type{42, 42, 42}; + auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; + + udt::pod_type p; + nlohmann::from_json(j, p); + CHECK(p == expected); + } + + SECTION("bit_more_complex_type") + { + auto const expected = + udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; + auto const j = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, + {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, + {"c", "forty"}}; + udt::bit_more_complex_type p; + nlohmann::from_json(j, p); + CHECK(p == expected); + } + + SECTION("optional_type") + { + SECTION("from null") + { + udt::optional_type<udt::pod_type> expected; + json j; + udt::optional_type<udt::pod_type> o; + + nlohmann::from_json(j, o); + CHECK(expected == o); + } + + SECTION("from value") + { + udt::optional_type<udt::pod_type> expected{{42, 42, 42}}; + auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; + udt::optional_type<udt::pod_type> o; + + nlohmann::from_json(j, o); + CHECK(expected == o); + } + } + + SECTION("no json_traits specialization") + { + udt::no_json_traits_type expected{42}; + udt::no_json_traits_type res; + json j; + j["a"] = 42; + nlohmann::from_json(j, res); + CHECK(res == expected); + + res = j.get<udt::no_json_traits_type>(); + CHECK(res == expected); + } +} From d54d6bb84cc9d0cd74155dc0e10b15a4023f3b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Tue, 18 Oct 2016 23:45:58 +0200 Subject: [PATCH 043/174] add alias templates to reduce boilerplate --- src/json.hpp | 92 ++++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 3d4994e3f..23709788a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -117,6 +117,17 @@ namespace nlohmann template <typename T, typename = void> struct json_traits; +// alias templates to reduce boilerplate +template <bool B, typename T = void> +using enable_if_t = typename std::enable_if<B, T>::type; + +template <typename T> +using remove_cv_t = typename std::remove_cv<T>::type; + +template <typename T> +using remove_reference_t = typename std::remove_reference<T>::type; + +// TODO update this doc /*! @brief unnamed namespace with internal helper functions @since version 1.0.0 @@ -1393,15 +1404,11 @@ class basic_json // auto j = json{{"a", json(not_equality_comparable{})}}; // // we can remove this constraint though, since lots of ctor are not explicit already - template < - typename T, - typename = - typename std::enable_if<detail::has_json_traits<typename std::remove_cv< - typename std::remove_reference<T>::type>::type>::value>::type> + template <typename T, typename = enable_if_t<detail::has_json_traits< + remove_cv_t<remove_reference_t<T>>>::value>> explicit basic_json(T &&val) - : basic_json(json_traits<typename std::remove_cv< - typename std::remove_reference<T>::type>::type>:: - to_json(std::forward<T>(val))) {} + : basic_json(json_traits<remove_cv_t<remove_reference_t<T>>>::to_json( + std::forward<T>(val))) {} /*! @brief create a string (explicit) @@ -1418,14 +1425,15 @@ class basic_json @sa @ref basic_json(const typename string_t::value_type*) -- create a string value from a character pointer - @sa @ref basic_json(const CompatibleStringType&) -- create a string - value + @sa @ref basic_json(const CompatibleStringType&) -- create a string value from a compatible string container @since version 1.0.0 */ - basic_json(const string_t &val) : m_type(value_t::string), m_value(val) { - assert_invariant(); + basic_json(const string_t& val) + : m_type(value_t::string), m_value(val) + { + assert_invariant(); } /*! @@ -2763,17 +2771,12 @@ class basic_json // get_impl overload chosen if json_traits struct is specialized for type T // simply returns json_traits<T>::from_json(*this); - // TODO add alias templates (enable_if_t etc) - template < - typename T, - typename = typename std::enable_if< - detail::has_json_traits<typename std::remove_cv< - typename std::remove_reference<T>::type>::type>::value>::type> - auto get_impl(T *) const -> decltype( - json_traits<typename std::remove_cv<typename std::remove_reference< - T>::type>::type>::from_json(std::declval<basic_json>())) { - return json_traits<typename std::remove_cv< - typename std::remove_reference<T>::type>::type>::from_json(*this); + template <typename T, typename = enable_if_t<detail::has_json_traits< + remove_cv_t<remove_reference_t<T>>>::value>> + auto get_impl(T *) const + -> decltype(json_traits<remove_cv_t<remove_reference_t<T>>>::from_json( + std::declval<basic_json>())) { + return json_traits<remove_cv_t<remove_reference_t<T>>>::from_json(*this); } // this one is quite atrocious @@ -2781,31 +2784,34 @@ class basic_json // I chose to prefer the json_traits specialization if it exists, since it's a more advanced use. // But we can of course change this behaviour template <typename T> - auto get_impl(T *) const -> typename std::enable_if< - not detail::has_json_traits<typename std::remove_cv<T>::type>::value, - typename std::remove_cv<typename std::remove_reference< - decltype(::nlohmann::from_json(std::declval<basic_json>(), - std::declval<T &>()), - std::declval<T>())>::type>::type>::type + auto get_impl(T *) const + -> enable_if_t<not detail::has_json_traits<remove_cv_t<T>>::value, + remove_cv_t<remove_reference_t<decltype( + ::nlohmann::from_json(std::declval<basic_json>(), + std::declval<T &>()), + std::declval<T>())>>> { - typename std::remove_cv<typename std::remove_reference<T>::type>::type - ret; + remove_cv_t<T> ret; + // I guess this output parameter is the only way to get ADL + // Even if users can use the get<T> method to have a more 'functional' behaviour + // i.e. having a return type, could there be a way to have the same behaviour with from_json? + // e.g. auto t = nlohmann::from_json<T>(json{}); + // this seems to require variable templates though... (at least it did when I tried to implement it) ::nlohmann::from_json(*this, ret); return ret; } - /// get an object (explicit) - template <class T, - typename std::enable_if< - std::is_convertible<typename object_t::key_type, - typename T::key_type>::value and - std::is_convertible<basic_json_t, - typename T::mapped_type>::value, - int>::type = 0> - T get_impl(T *) const { - if (is_object()) { - return T(m_value.object->begin(), m_value.object->end()); - } else { + template<class T, typename std::enable_if< + std::is_convertible<typename object_t::key_type, typename T::key_type>::value and + std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> + T get_impl(T*) const + { + if (is_object()) + { + return T(m_value.object->begin(), m_value.object->end()); + } + else + { JSON_THROW(std::domain_error("type must be object, but is " + type_name())); } From 877d96c1d80ad860a6d5c22766cd8682e5cd889d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Thu, 20 Oct 2016 13:45:48 +0200 Subject: [PATCH 044/174] rename __static_const to _static_const (reserved identifier) --- src/json.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 23709788a..68ac29fcc 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -220,18 +220,18 @@ struct DecimalSeparator : std::numpunct<char> // taken from ranges-v3 // TODO add doc template <typename T> -struct __static_const +struct _static_const { static constexpr T value{}; }; template <typename T> -constexpr T __static_const<T>::value; +constexpr T _static_const<T>::value; inline namespace { - constexpr auto const& to_json = __static_const<detail::to_json_fn>::value; - constexpr auto const& from_json = __static_const<detail::from_json_fn>::value; + constexpr auto const& to_json = _static_const<detail::to_json_fn>::value; + constexpr auto const& from_json = _static_const<detail::from_json_fn>::value; } /*! From 12b4555b13678902d39ee9e2c4d18822e9b4455e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Thu, 20 Oct 2016 14:02:31 +0200 Subject: [PATCH 045/174] use uncvref_t<T> instead of remove_cv_t<remove_reference_t<T>>> --- src/json.hpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 68ac29fcc..528c92b24 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -127,6 +127,9 @@ using remove_cv_t = typename std::remove_cv<T>::type; template <typename T> using remove_reference_t = typename std::remove_reference<T>::type; +template <typename T> +using uncvref_t = remove_cv_t<remove_reference_t<T>>; + // TODO update this doc /*! @brief unnamed namespace with internal helper functions @@ -1404,11 +1407,12 @@ class basic_json // auto j = json{{"a", json(not_equality_comparable{})}}; // // we can remove this constraint though, since lots of ctor are not explicit already - template <typename T, typename = enable_if_t<detail::has_json_traits< - remove_cv_t<remove_reference_t<T>>>::value>> + template <typename T, typename = enable_if_t< + detail::has_json_traits<uncvref_t<T>>::value>> explicit basic_json(T &&val) - : basic_json(json_traits<remove_cv_t<remove_reference_t<T>>>::to_json( - std::forward<T>(val))) {} + : basic_json(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val))) + { + } /*! @brief create a string (explicit) @@ -2771,12 +2775,12 @@ class basic_json // get_impl overload chosen if json_traits struct is specialized for type T // simply returns json_traits<T>::from_json(*this); - template <typename T, typename = enable_if_t<detail::has_json_traits< - remove_cv_t<remove_reference_t<T>>>::value>> - auto get_impl(T *) const - -> decltype(json_traits<remove_cv_t<remove_reference_t<T>>>::from_json( - std::declval<basic_json>())) { - return json_traits<remove_cv_t<remove_reference_t<T>>>::from_json(*this); + template <typename T, typename = enable_if_t< + detail::has_json_traits<uncvref_t<T>>::value>> + auto get_impl(T *) const -> decltype( + json_traits<uncvref_t<T>>::from_json(std::declval<basic_json>())) + { + return json_traits<uncvref_t<T>>::from_json(*this); } // this one is quite atrocious @@ -2784,12 +2788,11 @@ class basic_json // I chose to prefer the json_traits specialization if it exists, since it's a more advanced use. // But we can of course change this behaviour template <typename T> - auto get_impl(T *) const - -> enable_if_t<not detail::has_json_traits<remove_cv_t<T>>::value, - remove_cv_t<remove_reference_t<decltype( - ::nlohmann::from_json(std::declval<basic_json>(), + auto get_impl(T *) const -> enable_if_t< + not detail::has_json_traits<remove_cv_t<T>>::value, + uncvref_t<decltype(::nlohmann::from_json(std::declval<basic_json>(), std::declval<T &>()), - std::declval<T>())>>> + std::declval<T>())>> { remove_cv_t<T> ret; // I guess this output parameter is the only way to get ADL From 03b391c37bb234c23c2c993057ff4be64efc7883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Thu, 20 Oct 2016 18:02:07 +0200 Subject: [PATCH 046/174] remove has_destructor and has_json_traits, use decltype instead --- src/json.hpp | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 528c92b24..390d4e792 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -161,26 +161,6 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; -// taken from http://stackoverflow.com/questions/10711952/how-to-detect-existence-of-a-class-using-sfinae -// used to determine if json_traits is defined for a given type T -template <typename T> -struct has_destructor -{ - template <typename U> - static std::true_type detect(decltype(std::declval<U>().~U())*); - - template <typename> - static std::false_type detect(...); - - static constexpr bool value = decltype(detect<T>(0))::value; -}; - -template<typename T> -struct has_json_traits -{ - static constexpr bool value = has_destructor<json_traits<T>>::value; -}; - struct to_json_fn { template <typename T> @@ -1407,8 +1387,7 @@ class basic_json // auto j = json{{"a", json(not_equality_comparable{})}}; // // we can remove this constraint though, since lots of ctor are not explicit already - template <typename T, typename = enable_if_t< - detail::has_json_traits<uncvref_t<T>>::value>> + template <typename T, typename = decltype(json_traits<uncvref_t<T>>::to_json(std::declval<uncvref_t<T>>()))> explicit basic_json(T &&val) : basic_json(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val))) { @@ -2775,24 +2754,19 @@ class basic_json // get_impl overload chosen if json_traits struct is specialized for type T // simply returns json_traits<T>::from_json(*this); - template <typename T, typename = enable_if_t< - detail::has_json_traits<uncvref_t<T>>::value>> - auto get_impl(T *) const -> decltype( - json_traits<uncvref_t<T>>::from_json(std::declval<basic_json>())) + // dual argument to avoid conflicting with get_impl overloads taking a pointer + template <typename T> + auto get_impl(int, int) const -> decltype(json_traits<uncvref_t<T>>::from_json(*this)) { return json_traits<uncvref_t<T>>::from_json(*this); } - // this one is quite atrocious // this overload is chosen ONLY if json_traits struct is not specialized, and if the expression nlohmann::from_json(*this, T&) is valid // I chose to prefer the json_traits specialization if it exists, since it's a more advanced use. // But we can of course change this behaviour template <typename T> - auto get_impl(T *) const -> enable_if_t< - not detail::has_json_traits<remove_cv_t<T>>::value, - uncvref_t<decltype(::nlohmann::from_json(std::declval<basic_json>(), - std::declval<T &>()), - std::declval<T>())>> + auto get_impl(long, long) const -> uncvref_t<decltype(::nlohmann::from_json(*this, std::declval<T &>()), + std::declval<T>())> { remove_cv_t<T> ret; // I guess this output parameter is the only way to get ADL @@ -3108,11 +3082,16 @@ class basic_json */ template<typename ValueType, typename std::enable_if< not std::is_pointer<ValueType>::value, int>::type = 0> - ValueType get() const + auto get() const -> decltype(get_impl(static_cast<ValueType*>(nullptr))) { return get_impl(static_cast<ValueType*>(nullptr)); } + template <typename ValueType> + auto get() const -> decltype(get_impl<ValueType>(0, 0)) + { + return get_impl<ValueType>(0, 0); + } /*! @brief get a pointer value (explicit) From 4cdc61e49356533c67227d74fffe39588388b0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Fri, 21 Oct 2016 16:28:01 +0200 Subject: [PATCH 047/174] move most SFINAE trickery in to/from_json_fn --- src/json.hpp | 126 +++++++++++++++++++++------------ test/src/unit-constructor3.cpp | 68 +++++++++++++++--- 2 files changed, 141 insertions(+), 53 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 390d4e792..8b281d938 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -161,22 +161,70 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; +void to_json(); +void from_json(); + struct to_json_fn { - template <typename T> - constexpr auto operator()(T&& val) const -> decltype(to_json(std::forward<T>(val))) - { - return to_json(std::forward<T>(val)); - } + private: + // fallback overload + template <typename T> + static constexpr auto + impl(T &&val, long) noexcept(noexcept(to_json(std::forward<T>(val)))) + -> decltype(to_json(std::forward<T>(val))) + { + return to_json(std::forward<T>(val)); + } + + // preferred overload + template <typename T> + static constexpr auto impl(T &&val, int) noexcept( + noexcept(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val)))) + -> decltype(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val))) + { + return json_traits<uncvref_t<T>>::to_json(std::forward<T>(val)); + } + + public: + template <typename T> + constexpr auto operator()(T &&val) const + noexcept(noexcept(to_json_fn::impl(std::forward<T>(val), 0))) + -> decltype(to_json_fn::impl(std::forward<T>(val), 0)) + { + // decltype(0) -> int, so the compiler will try to take the 'preferred overload' + // if there is no specialization, the 'fallback overload' will be taken by converting 0 to long + return to_json_fn::impl(std::forward<T>(val), 0); + } }; struct from_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json const& from, T& to) const -> decltype(from_json(from, to)) - { - return from_json(from, to); - } + private: + template <typename T, typename Json> + static constexpr auto impl(Json const &j, T &val, + long) noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val)) + { + return from_json(j, val); + } + + template <typename T, typename Json> + static constexpr auto + impl(Json const &j, T &val, + int) noexcept(noexcept(json_traits<T>::from_json(j, val))) + -> decltype(json_traits<T>::from_json(j, val)) + { + return json_traits<T>::from_json(j, val); + } + + public: + template <typename T, typename Json> + constexpr auto operator()(Json const &j, T &val) const + noexcept(noexcept(from_json_fn::impl(j, val, 0))) + -> decltype(from_json_fn::impl(j, val, 0)) + { + return from_json_fn::impl(j, val, 0); + } }; /*! @@ -1373,7 +1421,13 @@ class basic_json assert_invariant(); } - // constructor chosen if json_traits is specialized for type T + // constructor chosen for user-defined types that either have: + // - a to_json free function in their type's namespace + // - a json_traits specialization for their type + // + // If there is both a free function and a specialization, the latter will be chosen, + // since it is a more advanced use + // // note: constructor is marked explicit to avoid the following issue: // // struct not_equality_comparable{}; @@ -1383,15 +1437,15 @@ class basic_json // this will construct implicitely 2 json objects and call operator== on them // which can cause nasty bugs on the user's in json-unrelated code // - // the trade-off is expressivety in initializer-lists + // the trade-off is expressiveness in initializer-lists // auto j = json{{"a", json(not_equality_comparable{})}}; // // we can remove this constraint though, since lots of ctor are not explicit already - template <typename T, typename = decltype(json_traits<uncvref_t<T>>::to_json(std::declval<uncvref_t<T>>()))> + template <typename T, typename = decltype(::nlohmann::to_json( + std::declval<uncvref_t<T>>()))> explicit basic_json(T &&val) - : basic_json(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val))) - { - } + : basic_json(::nlohmann::to_json(std::forward<T>(val))) {} + /*! @brief create a string (explicit) @@ -2752,32 +2806,6 @@ class basic_json // value access // ////////////////// - // get_impl overload chosen if json_traits struct is specialized for type T - // simply returns json_traits<T>::from_json(*this); - // dual argument to avoid conflicting with get_impl overloads taking a pointer - template <typename T> - auto get_impl(int, int) const -> decltype(json_traits<uncvref_t<T>>::from_json(*this)) - { - return json_traits<uncvref_t<T>>::from_json(*this); - } - - // this overload is chosen ONLY if json_traits struct is not specialized, and if the expression nlohmann::from_json(*this, T&) is valid - // I chose to prefer the json_traits specialization if it exists, since it's a more advanced use. - // But we can of course change this behaviour - template <typename T> - auto get_impl(long, long) const -> uncvref_t<decltype(::nlohmann::from_json(*this, std::declval<T &>()), - std::declval<T>())> - { - remove_cv_t<T> ret; - // I guess this output parameter is the only way to get ADL - // Even if users can use the get<T> method to have a more 'functional' behaviour - // i.e. having a return type, could there be a way to have the same behaviour with from_json? - // e.g. auto t = nlohmann::from_json<T>(json{}); - // this seems to require variable templates though... (at least it did when I tried to implement it) - ::nlohmann::from_json(*this, ret); - return ret; - } - template<class T, typename std::enable_if< std::is_convertible<typename object_t::key_type, typename T::key_type>::value and std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> @@ -3082,16 +3110,24 @@ class basic_json */ template<typename ValueType, typename std::enable_if< not std::is_pointer<ValueType>::value, int>::type = 0> - auto get() const -> decltype(get_impl(static_cast<ValueType*>(nullptr))) + auto get() const -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) { return get_impl(static_cast<ValueType*>(nullptr)); } template <typename ValueType> - auto get() const -> decltype(get_impl<ValueType>(0, 0)) + auto get() const -> remove_reference_t< + decltype(::nlohmann::from_json(*this, std::declval<ValueType &>()), + std::declval<ValueType>())> { - return get_impl<ValueType>(0, 0); + static_assert(std::is_default_constructible<ValueType>::value, + "ValueType must be default-constructible when user-defined " + "from_json method is used"); + ValueType ret; + ::nlohmann::from_json(*this, ret); + return ret; } + /*! @brief get a pointer value (explicit) diff --git a/test/src/unit-constructor3.cpp b/test/src/unit-constructor3.cpp index cfe638673..de52762f6 100644 --- a/test/src/unit-constructor3.cpp +++ b/test/src/unit-constructor3.cpp @@ -35,6 +35,9 @@ using nlohmann::json; namespace udt { +// only used by counter_type +auto nb_free_function_calls = 0; + struct empty_type {}; struct pod_type { int a; @@ -48,6 +51,10 @@ struct bit_more_complex_type { std::string c; }; +struct counter_type +{ +}; + // best optional implementation ever template <typename T> class optional_type @@ -97,14 +104,18 @@ json to_json(optional_type<T> const& opt) using nlohmann::to_json; if (!opt) return nullptr; - return to_json(*opt); + return json(*opt); } json to_json(no_json_traits_type const& p) { - json ret; - ret["a"] = p.a; - return ret; + return {{"a", p.a}}; +} + +json to_json(counter_type) +{ + ++nb_free_function_calls; + return json::object(); } void from_json(json const&j, empty_type& t) @@ -139,6 +150,11 @@ void from_json(json const& j, optional_type<T>& t) t = j.get<T>(); } +void from_json(json const&, counter_type&) +{ + ++nb_free_function_calls; +} + inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept { return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); @@ -176,7 +192,7 @@ struct json_traits<udt::empty_type> { return json::object(); } - + static type from_json(json const& j) { assert(j.is_object() and j.empty()); @@ -193,7 +209,7 @@ struct json_traits<udt::pod_type> { return {{"a", t.a}, {"b", t.b}, {"c", t.c}}; } - + static type from_json(json const& j) { assert(j.is_object()); @@ -237,6 +253,25 @@ struct json_traits<udt::optional_type<T>> return type{j.get<T>()}; } }; + +template <> +struct json_traits<udt::counter_type> +{ + using type = udt::counter_type; + static int nb_calls; + + static json to_json(type) + { + ++nb_calls; + return json::object(); + } + + static void from_json(json const&, type&) + { + ++nb_calls; + } +}; +int json_traits<udt::counter_type>::nb_calls{0}; } @@ -380,6 +415,24 @@ TEST_CASE("get<> for user-defined types", "[udt]") CHECK(*v == expected); } } + + SECTION("no json_traits specialization, use of ADL") + { + udt::no_json_traits_type val{42}; + auto const expected = json{{"a", 42}}; + auto const j = json(val); + CHECK(j == expected); + } + + SECTION("counter_type") + { + // check that the traits specialization is chosen + auto const j = json{udt::counter_type{}}; + CHECK(nlohmann::json_traits<udt::counter_type>::nb_calls == 1); + auto const elem = j.get<udt::counter_type>(); + CHECK(nlohmann::json_traits<udt::counter_type>::nb_calls == 2); + CHECK(udt::nb_free_function_calls == 0); + } } TEST_CASE("to_json free function", "[udt]") @@ -487,8 +540,7 @@ TEST_CASE("from_json free function", "[udt]") { udt::no_json_traits_type expected{42}; udt::no_json_traits_type res; - json j; - j["a"] = 42; + auto const j = json{{"a", 42}}; nlohmann::from_json(j, res); CHECK(res == expected); From 7dc268ef420124c741171538b362b954f4b00296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Mon, 7 Nov 2016 23:24:54 +0100 Subject: [PATCH 048/174] add first version for alternate implementation --- src/json.hpp | 131 ++++++++----------------- test/src/unit-constructor3.cpp | 172 --------------------------------- 2 files changed, 41 insertions(+), 262 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 8b281d938..8dc9b383d 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -106,17 +106,6 @@ SOFTWARE. */ namespace nlohmann { -// TODO add real documentation before PR - -// Traits structure declaration, users can specialize it for their own types -// -// constructing a json object from a user-defined type will call the -// 'json to_json(T)' function -// -// whereas calling json::get<T> will call 'T from_json(json const&)' -template <typename T, typename = void> -struct json_traits; - // alias templates to reduce boilerplate template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; @@ -166,64 +155,24 @@ void from_json(); struct to_json_fn { - private: - // fallback overload template <typename T> - static constexpr auto - impl(T &&val, long) noexcept(noexcept(to_json(std::forward<T>(val)))) + constexpr auto + operator()(T &&val) const noexcept(noexcept(to_json(std::forward<T>(val)))) -> decltype(to_json(std::forward<T>(val))) { return to_json(std::forward<T>(val)); } - // preferred overload - template <typename T> - static constexpr auto impl(T &&val, int) noexcept( - noexcept(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val)))) - -> decltype(json_traits<uncvref_t<T>>::to_json(std::forward<T>(val))) - { - return json_traits<uncvref_t<T>>::to_json(std::forward<T>(val)); - } - - public: - template <typename T> - constexpr auto operator()(T &&val) const - noexcept(noexcept(to_json_fn::impl(std::forward<T>(val), 0))) - -> decltype(to_json_fn::impl(std::forward<T>(val), 0)) - { - // decltype(0) -> int, so the compiler will try to take the 'preferred overload' - // if there is no specialization, the 'fallback overload' will be taken by converting 0 to long - return to_json_fn::impl(std::forward<T>(val), 0); - } }; struct from_json_fn { - private: template <typename T, typename Json> - static constexpr auto impl(Json const &j, T &val, - long) noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val)) + constexpr auto operator()(Json &&j, T &val) const + noexcept(noexcept(from_json(std::forward<Json>(j), val))) + -> decltype(from_json(std::forward<Json>(j), val)) { - return from_json(j, val); - } - - template <typename T, typename Json> - static constexpr auto - impl(Json const &j, T &val, - int) noexcept(noexcept(json_traits<T>::from_json(j, val))) - -> decltype(json_traits<T>::from_json(j, val)) - { - return json_traits<T>::from_json(j, val); - } - - public: - template <typename T, typename Json> - constexpr auto operator()(Json const &j, T &val) const - noexcept(noexcept(from_json_fn::impl(j, val, 0))) - -> decltype(from_json_fn::impl(j, val, 0)) - { - return from_json_fn::impl(j, val, 0); + return from_json(std::forward<Json>(j), val); } }; @@ -265,6 +214,32 @@ inline namespace constexpr auto const& from_json = _static_const<detail::from_json_fn>::value; } +// default JSONSerializer template argument +// will use ADL for serialization +struct adl_serializer +{ + template <typename T, typename Json, typename = enable_if_t<std::is_default_constructible<uncvref_t<T>>::value>> + static auto from_json(Json&& j) -> uncvref_t<decltype(::nlohmann::from_json(std::forward<Json>(j), std::declval<T&>()), std::declval<T>())> + { + uncvref_t<T> ret; + ::nlohmann::from_json(std::forward<Json>(j), ret); + return ret; + } + + template <typename T, typename Json> + static auto from_json(Json&& j, T& val) -> decltype(::nlohmann::from_json(std::forward<Json>(j), val)) + { + ::nlohmann::from_json(std::forward<Json>(j), val); + } + + template <typename T> + static auto to_json(T&& val) -> decltype(::nlohmann::to_json(std::forward<T>(val))) + { + return ::nlohmann::to_json(std::forward<T>(val)); + } +}; + + /*! @brief a class to store JSON values @@ -352,7 +327,8 @@ template < class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, - template<typename U> class AllocatorType = std::allocator + template<typename U> class AllocatorType = std::allocator, + class JSONSerializer = adl_serializer > class basic_json { @@ -1421,30 +1397,10 @@ class basic_json assert_invariant(); } - // constructor chosen for user-defined types that either have: - // - a to_json free function in their type's namespace - // - a json_traits specialization for their type - // - // If there is both a free function and a specialization, the latter will be chosen, - // since it is a more advanced use - // - // note: constructor is marked explicit to avoid the following issue: - // - // struct not_equality_comparable{}; - // - // not_equality_comparable{} == not_equality_comparable{}; - // - // this will construct implicitely 2 json objects and call operator== on them - // which can cause nasty bugs on the user's in json-unrelated code - // - // the trade-off is expressiveness in initializer-lists - // auto j = json{{"a", json(not_equality_comparable{})}}; - // - // we can remove this constraint though, since lots of ctor are not explicit already - template <typename T, typename = decltype(::nlohmann::to_json( - std::declval<uncvref_t<T>>()))> + // constructor chosen when JSONSerializer::to_json exists for type T + template <typename T, typename = decltype(JSONSerializer::to_json(std::declval<uncvref_t<T>>()))> explicit basic_json(T &&val) - : basic_json(::nlohmann::to_json(std::forward<T>(val))) {} + : basic_json(JSONSerializer::to_json(std::forward<T>(val))) {} /*! @brief create a string (explicit) @@ -3115,16 +3071,11 @@ class basic_json return get_impl(static_cast<ValueType*>(nullptr)); } - template <typename ValueType> - auto get() const -> remove_reference_t< - decltype(::nlohmann::from_json(*this, std::declval<ValueType &>()), - std::declval<ValueType>())> + template <typename ValueType, typename = enable_if_t<std::is_default_constructible<uncvref_t<ValueType>>::value, float>> + auto get() const -> remove_reference_t<decltype(JSONSerializer::from_json(*this, std::declval<ValueType&>()), std::declval<ValueType>())> { - static_assert(std::is_default_constructible<ValueType>::value, - "ValueType must be default-constructible when user-defined " - "from_json method is used"); - ValueType ret; - ::nlohmann::from_json(*this, ret); + uncvref_t<ValueType> ret; + JSONSerializer::from_json(*this, ret); return ret; } diff --git a/test/src/unit-constructor3.cpp b/test/src/unit-constructor3.cpp index de52762f6..77b31c6ac 100644 --- a/test/src/unit-constructor3.cpp +++ b/test/src/unit-constructor3.cpp @@ -35,9 +35,6 @@ using nlohmann::json; namespace udt { -// only used by counter_type -auto nb_free_function_calls = 0; - struct empty_type {}; struct pod_type { int a; @@ -51,10 +48,6 @@ struct bit_more_complex_type { std::string c; }; -struct counter_type -{ -}; - // best optional implementation ever template <typename T> class optional_type @@ -75,11 +68,6 @@ private: std::shared_ptr<T> _val; }; -struct no_json_traits_type -{ - int a; -}; - // free to/from_json functions json to_json(empty_type) @@ -107,17 +95,6 @@ json to_json(optional_type<T> const& opt) return json(*opt); } -json to_json(no_json_traits_type const& p) -{ - return {{"a", p.a}}; -} - -json to_json(counter_type) -{ - ++nb_free_function_calls; - return json::object(); -} - void from_json(json const&j, empty_type& t) { assert(j.empty()); @@ -136,11 +113,6 @@ void from_json(json const&j, bit_more_complex_type& t) j["c"].get<std::string>()}; } -void from_json(json const& j, no_json_traits_type& t) -{ - t.a = j["a"].get<int>(); -} - template <typename T> void from_json(json const& j, optional_type<T>& t) { @@ -150,11 +122,6 @@ void from_json(json const& j, optional_type<T>& t) t = j.get<T>(); } -void from_json(json const&, counter_type&) -{ - ++nb_free_function_calls; -} - inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept { return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); @@ -174,106 +141,7 @@ inline bool operator==(optional_type<T> const& lhs, optional_type<T> const& rhs) return false; return *lhs == *rhs; } - -inline bool operator==(no_json_traits_type const& lhs, no_json_traits_type const& rhs) -{ - return lhs.a == rhs.a; } -} - -namespace nlohmann -{ -template <> -struct json_traits<udt::empty_type> -{ - using type = udt::empty_type; - - static json to_json(type) - { - return json::object(); - } - - static type from_json(json const& j) - { - assert(j.is_object() and j.empty()); - return {}; - } -}; - -template <> -struct json_traits<udt::pod_type> -{ - using type = udt::pod_type; - - static json to_json(type const& t) - { - return {{"a", t.a}, {"b", t.b}, {"c", t.c}}; - } - - static type from_json(json const& j) - { - assert(j.is_object()); - return {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; - } -}; - -template <> -struct json_traits<udt::bit_more_complex_type> -{ - using type = udt::bit_more_complex_type; - - static json to_json(type const& t) - { - return json{{"a", json{t.a}}, {"b", json{t.b}}, {"c", t.c}}; - } - - static type from_json(json const& j) - { - return {j["a"].get<udt::pod_type>(), j["b"].get<udt::pod_type>(), - j["c"].get<std::string>()}; - } -}; - -template <typename T> -struct json_traits<udt::optional_type<T>> -{ - using type = udt::optional_type<T>; - - static json to_json(type const& t) - { - if (t) - return json(*t); - return {}; - } - - static type from_json(json const& j) - { - if (j.is_null()) - return {}; - return type{j.get<T>()}; - } -}; - -template <> -struct json_traits<udt::counter_type> -{ - using type = udt::counter_type; - static int nb_calls; - - static json to_json(type) - { - ++nb_calls; - return json::object(); - } - - static void from_json(json const&, type&) - { - ++nb_calls; - } -}; -int json_traits<udt::counter_type>::nb_calls{0}; -} - TEST_CASE("constructors for user-defined types", "[udt]") { @@ -415,24 +283,6 @@ TEST_CASE("get<> for user-defined types", "[udt]") CHECK(*v == expected); } } - - SECTION("no json_traits specialization, use of ADL") - { - udt::no_json_traits_type val{42}; - auto const expected = json{{"a", 42}}; - auto const j = json(val); - CHECK(j == expected); - } - - SECTION("counter_type") - { - // check that the traits specialization is chosen - auto const j = json{udt::counter_type{}}; - CHECK(nlohmann::json_traits<udt::counter_type>::nb_calls == 1); - auto const elem = j.get<udt::counter_type>(); - CHECK(nlohmann::json_traits<udt::counter_type>::nb_calls == 2); - CHECK(udt::nb_free_function_calls == 0); - } } TEST_CASE("to_json free function", "[udt]") @@ -477,16 +327,6 @@ TEST_CASE("to_json free function", "[udt]") CHECK(expected == j); } } - - SECTION("no json_traits specialization") - { - udt::no_json_traits_type t{42}; - - json expected; - expected["a"] = 42; - auto const j = nlohmann::to_json(t); - CHECK(j == expected); - } } TEST_CASE("from_json free function", "[udt]") @@ -535,16 +375,4 @@ TEST_CASE("from_json free function", "[udt]") CHECK(expected == o); } } - - SECTION("no json_traits specialization") - { - udt::no_json_traits_type expected{42}; - udt::no_json_traits_type res; - auto const j = json{{"a", 42}}; - nlohmann::from_json(j, res); - CHECK(res == expected); - - res = j.get<udt::no_json_traits_type>(); - CHECK(res == expected); - } } From 33abccf8476cb6e4f330a3728ffd61fe24e5fb39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 8 Nov 2016 13:16:14 +0100 Subject: [PATCH 049/174] add template arguments for JSONSerializer --- src/json.hpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 8dc9b383d..bd59e83b6 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -214,8 +214,9 @@ inline namespace constexpr auto const& from_json = _static_const<detail::from_json_fn>::value; } -// default JSONSerializer template argument +// default JSONSerializer template argument, doesn't care about template argument // will use ADL for serialization +template <typename = void, typename = void> struct adl_serializer { template <typename T, typename Json, typename = enable_if_t<std::is_default_constructible<uncvref_t<T>>::value>> @@ -328,7 +329,7 @@ template < class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template<typename U> class AllocatorType = std::allocator, - class JSONSerializer = adl_serializer + template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer > class basic_json { @@ -1398,9 +1399,9 @@ class basic_json } // constructor chosen when JSONSerializer::to_json exists for type T - template <typename T, typename = decltype(JSONSerializer::to_json(std::declval<uncvref_t<T>>()))> + template <typename T, typename = decltype(JSONSerializer<uncvref_t<T>>::to_json(std::declval<uncvref_t<T>>()))> explicit basic_json(T &&val) - : basic_json(JSONSerializer::to_json(std::forward<T>(val))) {} + : basic_json(JSONSerializer<uncvref_t<T>>::to_json(std::forward<T>(val))) {} /*! @brief create a string (explicit) @@ -3072,10 +3073,10 @@ class basic_json } template <typename ValueType, typename = enable_if_t<std::is_default_constructible<uncvref_t<ValueType>>::value, float>> - auto get() const -> remove_reference_t<decltype(JSONSerializer::from_json(*this, std::declval<ValueType&>()), std::declval<ValueType>())> + auto get() const -> remove_reference_t<decltype(JSONSerializer<uncvref_t<ValueType>>::from_json(*this, std::declval<ValueType&>()), std::declval<ValueType>())> { uncvref_t<ValueType> ret; - JSONSerializer::from_json(*this, ret); + JSONSerializer<uncvref_t<ValueType>>::from_json(*this, ret); return ret; } From 837b81d6722da33c83b60668eb2ce3ae74a2b9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 8 Nov 2016 13:17:16 +0100 Subject: [PATCH 050/174] renamed unit-constructor3.cpp to unit-udt.cpp --- test/CMakeLists.txt | 2 +- test/src/{unit-constructor3.cpp => unit-udt.cpp} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename test/src/{unit-constructor3.cpp => unit-udt.cpp} (100%) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8279b157e..a988f47be 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,7 +15,6 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-concepts.cpp" "src/unit-constructor1.cpp" "src/unit-constructor2.cpp" - "src/unit-constructor3.cpp" "src/unit-convenience.cpp" "src/unit-conversions.cpp" "src/unit-deserialization.cpp" @@ -36,6 +35,7 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-regression.cpp" "src/unit-serialization.cpp" "src/unit-testsuites.cpp" + "src/unit-udt.cpp" "src/unit-unicode.cpp" ) diff --git a/test/src/unit-constructor3.cpp b/test/src/unit-udt.cpp similarity index 100% rename from test/src/unit-constructor3.cpp rename to test/src/unit-udt.cpp From 2bc685f6b4ae2f53d80eaf526a073244c060a80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 9 Nov 2016 23:55:03 +0100 Subject: [PATCH 051/174] to_json and from_json takes both two arguments now the first is the basic_json type, the second the user-defined type --- src/json.hpp | 49 +++++++++++++++++++------------------------ test/src/unit-udt.cpp | 35 +++++++++++++++++-------------- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index bd59e83b6..4f4710707 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -155,22 +155,21 @@ void from_json(); struct to_json_fn { - template <typename T> + template <typename Json, typename T> constexpr auto - operator()(T &&val) const noexcept(noexcept(to_json(std::forward<T>(val)))) - -> decltype(to_json(std::forward<T>(val))) + operator()(Json&& j, T &&val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) + -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), void()) { - return to_json(std::forward<T>(val)); + return to_json(std::forward<Json>(j), std::forward<T>(val)); } - }; struct from_json_fn { - template <typename T, typename Json> + template <typename Json, typename T> constexpr auto operator()(Json &&j, T &val) const noexcept(noexcept(from_json(std::forward<Json>(j), val))) - -> decltype(from_json(std::forward<Json>(j), val)) + -> decltype(from_json(std::forward<Json>(j), val), void()) { return from_json(std::forward<Json>(j), val); } @@ -219,28 +218,19 @@ inline namespace template <typename = void, typename = void> struct adl_serializer { - template <typename T, typename Json, typename = enable_if_t<std::is_default_constructible<uncvref_t<T>>::value>> - static auto from_json(Json&& j) -> uncvref_t<decltype(::nlohmann::from_json(std::forward<Json>(j), std::declval<T&>()), std::declval<T>())> - { - uncvref_t<T> ret; - ::nlohmann::from_json(std::forward<Json>(j), ret); - return ret; - } - - template <typename T, typename Json> - static auto from_json(Json&& j, T& val) -> decltype(::nlohmann::from_json(std::forward<Json>(j), val)) + template <typename Json, typename T> + static auto from_json(Json&& j, T& val) -> decltype(::nlohmann::from_json(std::forward<Json>(j), val), void()) { ::nlohmann::from_json(std::forward<Json>(j), val); } - template <typename T> - static auto to_json(T&& val) -> decltype(::nlohmann::to_json(std::forward<T>(val))) + template <typename Json, typename T> + static auto to_json(Json& j, T&& val) -> decltype(::nlohmann::to_json(j, std::forward<T>(val)), void()) { - return ::nlohmann::to_json(std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<T>(val)); } }; - /*! @brief a class to store JSON values @@ -1399,9 +1389,11 @@ class basic_json } // constructor chosen when JSONSerializer::to_json exists for type T - template <typename T, typename = decltype(JSONSerializer<uncvref_t<T>>::to_json(std::declval<uncvref_t<T>>()))> + template <typename T, typename = decltype(JSONSerializer<uncvref_t<T>>::to_json(std::declval<basic_json&>(), std::declval<uncvref_t<T>>()))> explicit basic_json(T &&val) - : basic_json(JSONSerializer<uncvref_t<T>>::to_json(std::forward<T>(val))) {} + { + JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + } /*! @brief create a string (explicit) @@ -3072,11 +3064,14 @@ class basic_json return get_impl(static_cast<ValueType*>(nullptr)); } - template <typename ValueType, typename = enable_if_t<std::is_default_constructible<uncvref_t<ValueType>>::value, float>> - auto get() const -> remove_reference_t<decltype(JSONSerializer<uncvref_t<ValueType>>::from_json(*this, std::declval<ValueType&>()), std::declval<ValueType>())> + template <typename ValueType, typename = decltype(JSONSerializer<uncvref_t<ValueType>>::from_json(std::declval<basic_json>(), std::declval<ValueType&>()))> + auto get() const -> uncvref_t<ValueType> { - uncvref_t<ValueType> ret; - JSONSerializer<uncvref_t<ValueType>>::from_json(*this, ret); + using type = uncvref_t<ValueType>; + static_assert(std::is_default_constructible<type>::value && std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and CopyConstructible when used with get"); + type ret; + JSONSerializer<type>::from_json(*this, ret); return ret; } diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 77b31c6ac..17494a45c 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -70,32 +70,31 @@ private: // free to/from_json functions -json to_json(empty_type) +void to_json(json& j, empty_type) { - return json::object(); + j = json::object(); } -json to_json(pod_type const& p) +void to_json(json& j, pod_type const& p) { - return {{"a", p.a}, {"b", p.b}, {"c", p.c}}; + j = json{{"a", p.a}, {"b", p.b}, {"c", p.c}}; } -json to_json(bit_more_complex_type const& p) +void to_json(json& j, bit_more_complex_type const& p) { - using nlohmann::to_json; - return json{{"a", to_json(p.a)}, {"b", to_json(p.b)}, {"c", p.c}}; + j = json{{"a", json(p.a)}, {"b", json(p.b)}, {"c", p.c}}; } template <typename T> -json to_json(optional_type<T> const& opt) +void to_json(json& j, optional_type<T> const& opt) { - using nlohmann::to_json; if (!opt) - return nullptr; - return json(*opt); + j = nullptr; + else + j = json(*opt); } -void from_json(json const&j, empty_type& t) +void from_json(json const& j, empty_type& t) { assert(j.empty()); t = empty_type{}; @@ -292,7 +291,8 @@ TEST_CASE("to_json free function", "[udt]") auto const e = udt::pod_type{42, 42, 42}; auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; - auto const j = nlohmann::to_json(e); + json j; + nlohmann::to_json(j, e); CHECK(j == expected); } @@ -303,7 +303,8 @@ TEST_CASE("to_json free function", "[udt]") auto const expected = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, {"c", "forty"}}; - auto const j = nlohmann::to_json(e); + json j; + nlohmann::to_json(j, e); CHECK(j == expected); } @@ -314,7 +315,8 @@ TEST_CASE("to_json free function", "[udt]") udt::optional_type<udt::pod_type> o; json expected; - auto const j = nlohmann::to_json(o); + json j; + nlohmann::to_json(j, o); CHECK(expected == j); } @@ -323,7 +325,8 @@ TEST_CASE("to_json free function", "[udt]") udt::optional_type<udt::pod_type> o{{42, 42, 42}}; auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; - auto const j = nlohmann::to_json(o); + json j; + nlohmann::to_json(j, o); CHECK(expected == j); } } From 178441cdfd12a8b7f4c49778259470bd40d4f32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 15 Nov 2016 14:22:12 +0100 Subject: [PATCH 052/174] add basic test for custom serializer --- src/json.hpp | 62 +++++++++++++++++++++++++++++++++++-------- test/src/unit-udt.cpp | 56 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 11 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 4f4710707..d8f337599 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -150,6 +150,38 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_from_json +{ +private: + template <typename U, typename = decltype(uncvref_t<U>::from_json( + std::declval<Json>(), std::declval<T &>()))> + static int detect(U &&); + + static void detect(...); + +public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; +}; + +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_to_json +{ +private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json &>(), std::declval<T>()))> + static int detect(U &&); + + static void detect(...); + +public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; +}; + void to_json(); void from_json(); @@ -1389,7 +1421,8 @@ class basic_json } // constructor chosen when JSONSerializer::to_json exists for type T - template <typename T, typename = decltype(JSONSerializer<uncvref_t<T>>::to_json(std::declval<basic_json&>(), std::declval<uncvref_t<T>>()))> + template <typename T, typename = typename std::enable_if<detail::has_to_json< + JSONSerializer, basic_json, uncvref_t<T>>::value>::type> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); @@ -3057,19 +3090,26 @@ class basic_json @since version 1.0.0 */ - template<typename ValueType, typename std::enable_if< - not std::is_pointer<ValueType>::value, int>::type = 0> - auto get() const -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) - { - return get_impl(static_cast<ValueType*>(nullptr)); + template <typename ValueType, + typename std::enable_if< + not std::is_pointer<ValueType>::value and + not detail::has_from_json<JSONSerializer, basic_json, + uncvref_t<ValueType>>::value, + int>::type = 0> + auto get() const + -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { + return get_impl(static_cast<ValueType *>(nullptr)); } - template <typename ValueType, typename = decltype(JSONSerializer<uncvref_t<ValueType>>::from_json(std::declval<basic_json>(), std::declval<ValueType&>()))> - auto get() const -> uncvref_t<ValueType> - { + template <typename ValueType, + typename = enable_if_t<detail::has_from_json< + JSONSerializer, basic_json, uncvref_t<ValueType>>::value>> + auto get() const -> uncvref_t<ValueType> { using type = uncvref_t<ValueType>; - static_assert(std::is_default_constructible<type>::value && std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and CopyConstructible when used with get"); + static_assert(std::is_default_constructible<type>::value && + std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and " + "CopyConstructible when used with get"); type ret; JSONSerializer<type>::from_json(*this, ret); return ret; diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 17494a45c..dc35019ca 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -379,3 +379,59 @@ TEST_CASE("from_json free function", "[udt]") } } } + +// custom serializer, uses adl by default +template <typename T, typename = void> +struct my_serializer; + +template<> +struct my_serializer<udt::pod_type> +{ + template <typename Json> + static void from_json(Json const& j, udt::pod_type& val) + { + nlohmann::from_json(j, val); + } + + template <typename Json> + static void to_json(Json& j, udt::pod_type const& val) + { + nlohmann::to_json(j, val); + } +}; + +using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, + std::int64_t, std::uint64_t, double, + std::allocator, my_serializer>; + +namespace udt +{ + void to_json(my_json& j, pod_type const& val) + { + j = my_json{{"a", val.a}, {"b", val.b}, {"c", val.c}}; + } + + void from_json(my_json const& j, pod_type& val) + { + val = {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; + } +} + +TEST_CASE("custom serializer") +{ + + + SECTION("default use works like default serializer") + { + udt::pod_type pod{1, 2, 3}; + auto const j = my_json{pod}; + + auto const j2 = json{pod}; + CHECK(j.dump() == j2.dump()); + + auto const pod2 = j.get<udt::pod_type>(); + auto const pod3 = j2.get<udt::pod_type>(); + CHECK(pod2 == pod3); + CHECK(pod2 == pod); + } +} From 23bd2bce358230ea4d52aca35bbe328692256e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 16 Nov 2016 20:49:24 +0100 Subject: [PATCH 053/174] add is_compatible_* traits --- src/json.hpp | 124 ++++++++++++++++++++++++++++++++++-------- test/src/unit-udt.cpp | 16 ++---- 2 files changed, 106 insertions(+), 34 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index d8f337599..703a1e023 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -150,6 +150,96 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; +template<typename T> +struct has_key_type +{ + private: + template <typename U, typename = typename U::key_type> + static int detect(U&&); + + static void detect(...); + public: + static constexpr bool value = + std::is_integral<decltype(detect(std::declval<T>()))>::value; +}; + +template<typename T> +struct has_value_type +{ + private: + template <typename U, typename = typename U::value_type> + static int detect(U&&); + + static void detect(...); + public: + static constexpr bool value = + std::is_integral<decltype(detect(std::declval<T>()))>::value; +}; + +template <bool B, class RealType, class CompatibleObjectType> +struct is_compatible_object_type_impl : std::false_type{}; + +template <class RealType, class CompatibleObjectType> +struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> +{ + static constexpr auto value = + std::is_constructible<typename RealType::key_type, typename CompatibleObjectType::key_type>::value and + std::is_constructible<typename RealType::mapped_type, typename CompatibleObjectType::mapped_type>::value; +}; + +template<class RealType, class CompatibleObjectType, typename = enable_if_t<has_mapped_type<CompatibleObjectType>::value and has_key_type<CompatibleObjectType>::value>> +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl<has_mapped_type<CompatibleObjectType>::value and has_key_type<CompatibleObjectType>::value, RealType, CompatibleObjectType>::value; +}; + +template <bool B, class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type_impl : std::false_type{}; + +template <class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> +{ + static constexpr auto value = + not std::is_same<CompatibleArrayType, typename BasicJson::iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>::value and + std::is_constructible<BasicJson, typename CompatibleArrayType::value_type>::value; + +}; + +template <class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type +{ + static auto constexpr value = is_compatible_array_type_impl<has_value_type<CompatibleArrayType>::value, BasicJson, CompatibleArrayType>::value; +}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type +{ + static constexpr auto value = + std::is_constructible<RealIntegerType, CompatibleNumberIntegerType>::value and + std::numeric_limits<CompatibleNumberIntegerType>::is_integer and + std::numeric_limits<CompatibleNumberIntegerType>::is_signed; +}; + +template <typename RealInteger, typename CompatibleNumberUnsignedType> +struct is_compatible_unsigned_integer_type +{ + static constexpr auto value = std::is_constructible<RealInteger, CompatibleNumberUnsignedType>::value and + std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and + not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed; +}; + +template <typename RealFloat, typename CompatibleFloat> +struct is_compatible_float_type +{ + static constexpr auto value = std::is_constructible<RealFloat, CompatibleFloat>::value and + std::is_floating_point<CompatibleFloat>::value; +}; + template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json @@ -361,6 +451,11 @@ class basic_json BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType>; + template <template <typename...> class T> + struct wrapper{}; + + using supported_tpl_types = std::tuple<wrapper<ObjectType>, wrapper<ArrayType>, wrapper<AllocatorType>, wrapper<JSONSerializer>>; + public: // forward declarations template<typename U> class iter_impl; @@ -1340,9 +1435,7 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleObjectType, typename std::enable_if< - std::is_constructible<typename object_t::key_type, typename CompatibleObjectType::key_type>::value and - std::is_constructible<basic_json, typename CompatibleObjectType::mapped_type>::value, int>::type = 0> + template<class CompatibleObjectType, enable_if_t<detail::is_compatible_object_type<object_t, CompatibleObjectType>::value, int> = 0> basic_json(const CompatibleObjectType& val) : m_type(value_t::object) { @@ -1403,14 +1496,7 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleArrayType, typename std::enable_if< - not std::is_same<CompatibleArrayType, typename basic_json_t::iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::const_iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename array_t::iterator>::value and - not std::is_same<CompatibleArrayType, typename array_t::const_iterator>::value and - std::is_constructible<basic_json, typename CompatibleArrayType::value_type>::value, int>::type = 0> + template<class CompatibleArrayType, enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, int> = 0> basic_json(const CompatibleArrayType& val) : m_type(value_t::array) { @@ -1621,11 +1707,7 @@ class basic_json @since version 1.0.0 */ - template<typename CompatibleNumberIntegerType, typename std::enable_if< - std::is_constructible<number_integer_t, CompatibleNumberIntegerType>::value and - std::numeric_limits<CompatibleNumberIntegerType>::is_integer and - std::numeric_limits<CompatibleNumberIntegerType>::is_signed, - CompatibleNumberIntegerType>::type = 0> + template<typename CompatibleNumberIntegerType, enable_if_t<detail::is_compatible_integer_type<number_integer_t, CompatibleNumberIntegerType>::value, int> = 0> basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) @@ -1679,11 +1761,7 @@ class basic_json @since version 2.0.0 */ - template<typename CompatibleNumberUnsignedType, typename std::enable_if < - std::is_constructible<number_unsigned_t, CompatibleNumberUnsignedType>::value and - std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and - not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed, - CompatibleNumberUnsignedType>::type = 0> + template<typename CompatibleNumberUnsignedType, enable_if_t<detail::is_compatible_unsigned_integer_type<number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0> basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), m_value(static_cast<number_unsigned_t>(val)) @@ -1759,9 +1837,7 @@ class basic_json @since version 1.0.0 */ - template<typename CompatibleNumberFloatType, typename = typename std::enable_if< - std::is_constructible<number_float_t, CompatibleNumberFloatType>::value and - std::is_floating_point<CompatibleNumberFloatType>::value>::type> + template<typename CompatibleNumberFloatType, enable_if_t<detail::is_compatible_float_type<number_float_t, CompatibleNumberFloatType>::value, int> = 0> basic_json(const CompatibleNumberFloatType val) noexcept : basic_json(number_float_t(val)) { diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index dc35019ca..2e2a92cca 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.5 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. @@ -382,25 +382,22 @@ TEST_CASE("from_json free function", "[udt]") // custom serializer, uses adl by default template <typename T, typename = void> -struct my_serializer; - -template<> -struct my_serializer<udt::pod_type> +struct my_serializer { template <typename Json> - static void from_json(Json const& j, udt::pod_type& val) + static void from_json(Json const& j, T& val) { nlohmann::from_json(j, val); } template <typename Json> - static void to_json(Json& j, udt::pod_type const& val) + static void to_json(Json& j, T const& val) { nlohmann::to_json(j, val); } }; -using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, +/*using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, my_serializer>; @@ -419,8 +416,6 @@ namespace udt TEST_CASE("custom serializer") { - - SECTION("default use works like default serializer") { udt::pod_type pod{1, 2, 3}; @@ -435,3 +430,4 @@ TEST_CASE("custom serializer") CHECK(pod2 == pod); } } +*/ From 88819449c2893ec319428ca2893b24bae8fb1308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 16 Nov 2016 23:20:05 +0100 Subject: [PATCH 054/174] remove constraints on JSONSerializer instances, constrain correctly new methods --- src/json.hpp | 97 ++++++++++++++++++++++++++++++------------- test/src/unit-udt.cpp | 3 +- 2 files changed, 70 insertions(+), 30 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 703a1e023..096aecc8b 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -150,6 +150,9 @@ struct has_mapped_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; +template <template <typename...> class T> +struct wrapper{}; + template<typename T> struct has_key_type { @@ -176,6 +179,19 @@ struct has_value_type std::is_integral<decltype(detect(std::declval<T>()))>::value; }; +template<typename T> +struct has_iterator +{ + private: + template <typename U, typename = typename U::iterator> + static int detect(U&&); + + static void detect(...); + public: + static constexpr bool value = + std::is_integral<decltype(detect(std::declval<T>()))>::value; +}; + template <bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type{}; @@ -187,7 +203,7 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> std::is_constructible<typename RealType::mapped_type, typename CompatibleObjectType::mapped_type>::value; }; -template<class RealType, class CompatibleObjectType, typename = enable_if_t<has_mapped_type<CompatibleObjectType>::value and has_key_type<CompatibleObjectType>::value>> +template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl<has_mapped_type<CompatibleObjectType>::value and has_key_type<CompatibleObjectType>::value, RealType, CompatibleObjectType>::value; @@ -213,26 +229,43 @@ struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - static auto constexpr value = is_compatible_array_type_impl<has_value_type<CompatibleArrayType>::value, BasicJson, CompatibleArrayType>::value; + static auto constexpr value = is_compatible_array_type_impl<not is_compatible_object_type<typename BasicJson::object_t, CompatibleArrayType>::value and has_value_type<CompatibleArrayType>::value and has_iterator<CompatibleArrayType>::value, BasicJson, CompatibleArrayType>::value; +}; + +template <bool, typename, typename> +struct is_compatible_integer_type_impl : std::false_type{}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> +{ + static constexpr auto value = std::is_constructible<RealIntegerType, CompatibleNumberIntegerType>::value and + std::numeric_limits<CompatibleNumberIntegerType>::is_integer and + std::numeric_limits<CompatibleNumberIntegerType>::is_signed; }; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto value = - std::is_constructible<RealIntegerType, CompatibleNumberIntegerType>::value and - std::numeric_limits<CompatibleNumberIntegerType>::is_integer and - std::numeric_limits<CompatibleNumberIntegerType>::is_signed; + static constexpr auto value = is_compatible_integer_type_impl<std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, CompatibleNumberIntegerType>::value; }; -template <typename RealInteger, typename CompatibleNumberUnsignedType> -struct is_compatible_unsigned_integer_type +template <bool, typename, typename> +struct is_compatible_unsigned_integer_type_impl : std::false_type{}; + +template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> +struct is_compatible_unsigned_integer_type_impl<true, RealUnsignedType, CompatibleNumberUnsignedType> { - static constexpr auto value = std::is_constructible<RealInteger, CompatibleNumberUnsignedType>::value and + static constexpr auto value = std::is_constructible<RealUnsignedType, CompatibleNumberUnsignedType>::value and std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed; }; +template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> +struct is_compatible_unsigned_integer_type +{ + static constexpr auto value = is_compatible_unsigned_integer_type_impl<std::is_arithmetic<CompatibleNumberUnsignedType>::value, RealUnsignedType, CompatibleNumberUnsignedType>::value; +}; + template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { @@ -341,13 +374,13 @@ template <typename = void, typename = void> struct adl_serializer { template <typename Json, typename T> - static auto from_json(Json&& j, T& val) -> decltype(::nlohmann::from_json(std::forward<Json>(j), val), void()) + static void from_json(Json&& j, T& val) { ::nlohmann::from_json(std::forward<Json>(j), val); } template <typename Json, typename T> - static auto to_json(Json& j, T&& val) -> decltype(::nlohmann::to_json(j, std::forward<T>(val)), void()) + static void to_json(Json& j, T&& val) { ::nlohmann::to_json(j, std::forward<T>(val)); } @@ -451,11 +484,6 @@ class basic_json BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType>; - template <template <typename...> class T> - struct wrapper{}; - - using supported_tpl_types = std::tuple<wrapper<ObjectType>, wrapper<ArrayType>, wrapper<AllocatorType>, wrapper<JSONSerializer>>; - public: // forward declarations template<typename U> class iter_impl; @@ -1507,8 +1535,15 @@ class basic_json } // constructor chosen when JSONSerializer::to_json exists for type T - template <typename T, typename = typename std::enable_if<detail::has_to_json< - JSONSerializer, basic_json, uncvref_t<T>>::value>::type> + template <typename T, enable_if_t<detail::has_to_json< + JSONSerializer, basic_json, uncvref_t<T>>::value and not (detail::is_compatible_object_type<object_t, uncvref_t<T>>::value or + detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>::value or + detail::is_compatible_float_type<number_float_t, uncvref_t<T>>::value or + detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>::value or + detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>::value or + std::is_constructible<string_t, uncvref_t<T>>::value or + std::is_base_of<std::istream, uncvref_t<T>>::value or + std::is_same<boolean_t, uncvref_t<T>>::value), int> = 0> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); @@ -3167,21 +3202,27 @@ class basic_json @since version 1.0.0 */ template <typename ValueType, - typename std::enable_if< - not std::is_pointer<ValueType>::value and - not detail::has_from_json<JSONSerializer, basic_json, - uncvref_t<ValueType>>::value, - int>::type = 0> + enable_if_t< + not std::is_pointer<ValueType>::value, + int> = 0> auto get() const -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { return get_impl(static_cast<ValueType *>(nullptr)); } - template <typename ValueType, - typename = enable_if_t<detail::has_from_json< - JSONSerializer, basic_json, uncvref_t<ValueType>>::value>> - auto get() const -> uncvref_t<ValueType> { - using type = uncvref_t<ValueType>; + template <typename T, + enable_if_t<detail::has_from_json< + JSONSerializer, basic_json, uncvref_t<T>>::value + and not (detail::is_compatible_object_type<object_t, uncvref_t<T>>::value or + detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>::value or + detail::is_compatible_float_type<number_float_t, uncvref_t<T>>::value or + detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>::value or + detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>::value or + std::is_constructible<string_t, uncvref_t<T>>::value or + std::is_same<boolean_t, uncvref_t<T>>::value), int> = 0> + auto get() const -> uncvref_t<T> + { + using type = uncvref_t<T>; static_assert(std::is_default_constructible<type>::value && std::is_copy_constructible<type>::value, "user-defined types must be DefaultConstructible and " diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 2e2a92cca..826baaae3 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -397,7 +397,7 @@ struct my_serializer } }; -/*using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, +using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, my_serializer>; @@ -430,4 +430,3 @@ TEST_CASE("custom serializer") CHECK(pod2 == pod); } } -*/ From 0d91113ccf757d501ab698631827440f6a470181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Mon, 21 Nov 2016 00:22:47 +0100 Subject: [PATCH 055/174] add negation, disjunction, and conjunction from C++17 --- src/json.hpp | 48 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 096aecc8b..ff58df203 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -119,6 +119,9 @@ using remove_reference_t = typename std::remove_reference<T>::type; template <typename T> using uncvref_t = remove_cv_t<remove_reference_t<T>>; +template <bool If, typename Then, typename Else> +using conditional_t = typename std::conditional<If, Then, Else>::type; + // TODO update this doc /*! @brief unnamed namespace with internal helper functions @@ -127,6 +130,23 @@ using uncvref_t = remove_cv_t<remove_reference_t<T>>; namespace detail { +// implementation of 3 C++17 constructs: conjunction, disjunction, negation. +// This is needed to avoid evaluating all the traits, MSVC cannot compile due +// to std::is_constructible<basic_json_t, void> being instantiated +// (void -> back_insert_iterator::value_type) +// this could slow down compilation, since this implementation is taken from the example in cppreference... +template <class...> struct conjunction : std::true_type {}; +template <class B1> struct conjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct conjunction<B1, Bn...> + : conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; +template <class B> struct negation : std::integral_constant<bool, !B::value> {}; +template <class...> struct disjunction : std::false_type {}; +template <class B1> struct disjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct disjunction<B1, Bn...> + : conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; + /*! @brief Helper to determine whether there's a key_type for T. @@ -206,7 +226,12 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { - static auto constexpr value = is_compatible_object_type_impl<has_mapped_type<CompatibleObjectType>::value and has_key_type<CompatibleObjectType>::value, RealType, CompatibleObjectType>::value; + static auto constexpr value = is_compatible_object_type_impl< + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + RealType, CompatibleObjectType>::value; + }; template <bool B, class BasicJson, class CompatibleArrayType> @@ -216,20 +241,25 @@ template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> { static constexpr auto value = - not std::is_same<CompatibleArrayType, typename BasicJson::iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>::value and - std::is_constructible<BasicJson, typename CompatibleArrayType::value_type>::value; + conjunction< + negation<disjunction< + std::is_same<CompatibleArrayType, typename BasicJson::iterator>, + std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>, + std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>, + std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>, + std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>, + std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>>>, + std::is_constructible<BasicJson, typename CompatibleArrayType::value_type>>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - static auto constexpr value = is_compatible_array_type_impl<not is_compatible_object_type<typename BasicJson::object_t, CompatibleArrayType>::value and has_value_type<CompatibleArrayType>::value and has_iterator<CompatibleArrayType>::value, BasicJson, CompatibleArrayType>::value; + static auto constexpr value = is_compatible_array_type_impl< + conjunction<negation<is_compatible_object_type<typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, BasicJson, CompatibleArrayType>::value; }; template <bool, typename, typename> From e2dbe7a69f09eeae66a806334ac2620514c69465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 21 Nov 2016 10:17:26 +0100 Subject: [PATCH 056/174] correctly constrain basic_json udt constructor --- src/json.hpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index ff58df203..2265457fb 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -512,7 +512,7 @@ class basic_json /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, - AllocatorType>; + AllocatorType, JSONSerializer>; public: // forward declarations @@ -1565,15 +1565,19 @@ class basic_json } // constructor chosen when JSONSerializer::to_json exists for type T - template <typename T, enable_if_t<detail::has_to_json< - JSONSerializer, basic_json, uncvref_t<T>>::value and not (detail::is_compatible_object_type<object_t, uncvref_t<T>>::value or - detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>::value or - detail::is_compatible_float_type<number_float_t, uncvref_t<T>>::value or - detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>::value or - detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>::value or - std::is_constructible<string_t, uncvref_t<T>>::value or - std::is_base_of<std::istream, uncvref_t<T>>::value or - std::is_same<boolean_t, uncvref_t<T>>::value), int> = 0> + template <typename T, enable_if_t<detail::conjunction<detail::negation<std::is_same<uncvref_t<T>, basic_json_t>>, +detail::negation<detail::disjunction< + detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>, + detail::is_compatible_object_type<object_t, uncvref_t<T>>, + detail::is_compatible_float_type<number_float_t, uncvref_t<T>>, + detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>, + detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>, + std::is_constructible<string_t, uncvref_t<T>>, + std::is_base_of<std::istream, uncvref_t<T>>, + std::is_same<boolean_t, uncvref_t<T>>>>, + detail::has_to_json< + JSONSerializer, basic_json, uncvref_t<T>> +>::value, int> = 0> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); From 9b401972a0d5324789e25be2ba6854273d378afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Delrieu?= <theo@tanker.io> Date: Thu, 17 Nov 2016 18:15:40 +0100 Subject: [PATCH 057/174] add a macro for has_xxx types --- src/json.hpp | 72 +++++++++++++--------------------------------------- 1 file changed, 18 insertions(+), 54 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2265457fb..bd91a6152 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -140,6 +140,7 @@ template <class B1> struct conjunction<B1> : B1 {}; template <class B1, class... Bn> struct conjunction<B1, Bn...> : conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; + template <class B> struct negation : std::integral_constant<bool, !B::value> {}; template <class...> struct disjunction : std::false_type {}; template <class B1> struct disjunction<B1> : B1 {}; @@ -149,68 +150,31 @@ struct disjunction<B1, Bn...> /*! @brief Helper to determine whether there's a key_type for T. - Thus helper is used to tell associative containers apart from other containers such as sequence containers. For instance, `std::map` passes the test as it contains a `mapped_type`, whereas `std::vector` fails the test. - @sa http://stackoverflow.com/a/7728728/266378 @since version 1.0.0, overworked in version 2.0.6 */ -template<typename T> -struct has_mapped_type -{ - private: - template <typename U, typename = typename U::mapped_type> - static int detect(U&&); +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template <typename T> struct has_##type { \ + private: \ + template <typename U, typename = typename U::type> \ + static int detect(U &&); \ + \ + static void detect(...); \ + \ + public: \ + static constexpr bool value = \ + std::is_integral<decltype(detect(std::declval<T>()))>::value; \ + }; - static void detect(...); - public: - static constexpr bool value = - std::is_integral<decltype(detect(std::declval<T>()))>::value; -}; +NLOHMANN_JSON_HAS_HELPER(mapped_type) +NLOHMANN_JSON_HAS_HELPER(key_type) +NLOHMANN_JSON_HAS_HELPER(value_type) +NLOHMANN_JSON_HAS_HELPER(iterator) -template <template <typename...> class T> -struct wrapper{}; - -template<typename T> -struct has_key_type -{ - private: - template <typename U, typename = typename U::key_type> - static int detect(U&&); - - static void detect(...); - public: - static constexpr bool value = - std::is_integral<decltype(detect(std::declval<T>()))>::value; -}; - -template<typename T> -struct has_value_type -{ - private: - template <typename U, typename = typename U::value_type> - static int detect(U&&); - - static void detect(...); - public: - static constexpr bool value = - std::is_integral<decltype(detect(std::declval<T>()))>::value; -}; - -template<typename T> -struct has_iterator -{ - private: - template <typename U, typename = typename U::iterator> - static int detect(U&&); - - static void detect(...); - public: - static constexpr bool value = - std::is_integral<decltype(detect(std::declval<T>()))>::value; -}; +#undef NLOHMANN_JSON_HAS_HELPER template <bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type{}; From ee19acaf056e310447acba40f53a0786a67215f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 21 Nov 2016 13:23:25 +0100 Subject: [PATCH 058/174] add is_compatible_basic_json_type trait --- src/json.hpp | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index bd91a6152..0c477a0d2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -267,6 +267,19 @@ struct is_compatible_float_type std::is_floating_point<CompatibleFloat>::value; }; +template <typename T, typename BasicJson> +struct is_compatible_basic_json_type +{ + static auto constexpr value = disjunction< + is_compatible_array_type<BasicJson, T>, + is_compatible_object_type<typename BasicJson::object_t, T>, + is_compatible_float_type<typename BasicJson::number_float_t, T>, + is_compatible_integer_type<typename BasicJson::number_integer_t, T>, + is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, T>, + std::is_constructible<typename BasicJson::string_t, T>, + std::is_same<typename BasicJson::boolean_t, T>>::value; +}; + template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json @@ -1528,20 +1541,13 @@ class basic_json assert_invariant(); } + // constructor chosen when JSONSerializer::to_json exists for type T + // first check avoids being chosen instead of move/copy constructor template <typename T, enable_if_t<detail::conjunction<detail::negation<std::is_same<uncvref_t<T>, basic_json_t>>, -detail::negation<detail::disjunction< - detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>, - detail::is_compatible_object_type<object_t, uncvref_t<T>>, - detail::is_compatible_float_type<number_float_t, uncvref_t<T>>, - detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>, - detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>, - std::is_constructible<string_t, uncvref_t<T>>, - std::is_base_of<std::istream, uncvref_t<T>>, - std::is_same<boolean_t, uncvref_t<T>>>>, - detail::has_to_json< - JSONSerializer, basic_json, uncvref_t<T>> ->::value, int> = 0> +detail::negation<std::is_base_of<std::istream, uncvref_t<T>>>, +detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_t>>, detail::has_to_json< + JSONSerializer, basic_json, uncvref_t<T>>>::value, int> = 0> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); @@ -3209,15 +3215,8 @@ detail::negation<detail::disjunction< } template <typename T, - enable_if_t<detail::has_from_json< - JSONSerializer, basic_json, uncvref_t<T>>::value - and not (detail::is_compatible_object_type<object_t, uncvref_t<T>>::value or - detail::is_compatible_array_type<basic_json_t, uncvref_t<T>>::value or - detail::is_compatible_float_type<number_float_t, uncvref_t<T>>::value or - detail::is_compatible_integer_type<number_integer_t, uncvref_t<T>>::value or - detail::is_compatible_unsigned_integer_type<number_unsigned_t, uncvref_t<T>>::value or - std::is_constructible<string_t, uncvref_t<T>>::value or - std::is_same<boolean_t, uncvref_t<T>>::value), int> = 0> + enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, uncvref_t<T>>>::value, int> = 0> auto get() const -> uncvref_t<T> { using type = uncvref_t<T>; From 47bc4021130e66dd235de387e10081259489623b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Delrieu?= <theo@tanker.io> Date: Tue, 22 Nov 2016 13:27:00 +0100 Subject: [PATCH 059/174] only use conjunction & co when needed to avoid MSVC crashing --- src/json.hpp | 69 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 0c477a0d2..34d3cb202 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -205,25 +205,28 @@ template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> { static constexpr auto value = - conjunction< - negation<disjunction< - std::is_same<CompatibleArrayType, typename BasicJson::iterator>, - std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>, - std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>, - std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>, - std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>, - std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>>>, - std::is_constructible<BasicJson, typename CompatibleArrayType::value_type>>::value; + not std::is_same<CompatibleArrayType, typename BasicJson::iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>::value and + not std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>::value and +not std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - static auto constexpr value = is_compatible_array_type_impl< - conjunction<negation<is_compatible_object_type<typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, BasicJson, CompatibleArrayType>::value; + static auto constexpr value = disjunction<std::is_same<BasicJson, CompatibleArrayType>, + is_compatible_array_type_impl< + conjunction<negation< + // MSVC has troubles on that one + std::is_same<void, CompatibleArrayType>>, + negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -270,14 +273,16 @@ struct is_compatible_float_type template <typename T, typename BasicJson> struct is_compatible_basic_json_type { - static auto constexpr value = disjunction< - is_compatible_array_type<BasicJson, T>, - is_compatible_object_type<typename BasicJson::object_t, T>, - is_compatible_float_type<typename BasicJson::number_float_t, T>, - is_compatible_integer_type<typename BasicJson::number_integer_t, T>, - is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, T>, - std::is_constructible<typename BasicJson::string_t, T>, - std::is_same<typename BasicJson::boolean_t, T>>::value; + static auto constexpr value = + + std::is_same<T, BasicJson>::value or + std::is_constructible<typename BasicJson::string_t, T>::value or + std::is_same<typename BasicJson::boolean_t, T>::value or + is_compatible_array_type<BasicJson, T>::value or + is_compatible_object_type<typename BasicJson::object_t, T>::value or + is_compatible_float_type<typename BasicJson::number_float_t, T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or + is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, T>::value; }; template <template <typename, typename> class JSONSerializer, typename Json, @@ -1531,14 +1536,20 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleArrayType, enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, int> = 0> - basic_json(const CompatibleArrayType& val) - : m_type(value_t::array) - { - using std::begin; - using std::end; - m_value.array = create<array_t>(begin(val), end(val)); - assert_invariant(); + template < + class CompatibleArrayType, + enable_if_t< + detail::disjunction< + // MSVC.. + std::is_same<uncvref_t<CompatibleArrayType>, basic_json_t>, + detail::is_compatible_array_type<basic_json_t, + CompatibleArrayType>>::value, + int> = 0> + basic_json(const CompatibleArrayType &val) : m_type(value_t::array) { + using std::begin; + using std::end; + m_value.array = create<array_t>(begin(val), end(val)); + assert_invariant(); } From 907484fb4368ed7e21a5ea11a1bb13c769e80e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Thu, 24 Nov 2016 00:29:56 +0100 Subject: [PATCH 060/174] format biggest lines --- src/json.hpp | 193 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 119 insertions(+), 74 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 34d3cb202..2ab6efd96 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -183,19 +183,20 @@ template <class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> { static constexpr auto value = - std::is_constructible<typename RealType::key_type, typename CompatibleObjectType::key_type>::value and - std::is_constructible<typename RealType::mapped_type, typename CompatibleObjectType::mapped_type>::value; + std::is_constructible<typename RealType::key_type, + typename CompatibleObjectType::key_type>::value and + std::is_constructible<typename RealType::mapped_type, + typename CompatibleObjectType::mapped_type>::value; }; template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl< - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - RealType, CompatibleObjectType>::value; - + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + RealType, CompatibleObjectType>::value; }; template <bool B, class BasicJson, class CompatibleArrayType> @@ -205,28 +206,34 @@ template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> { static constexpr auto value = - not std::is_same<CompatibleArrayType, typename BasicJson::iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::const_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename BasicJson::array_t::iterator>::value and -not std::is_same<CompatibleArrayType, typename BasicJson::array_t::const_iterator>::value; - + not std::is_same<CompatibleArrayType, + typename BasicJson::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::const_iterator>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - static auto constexpr value = disjunction<std::is_same<BasicJson, CompatibleArrayType>, - is_compatible_array_type_impl< - conjunction<negation< - // MSVC has troubles on that one - std::is_same<void, CompatibleArrayType>>, - negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType>>::value; + static auto constexpr value = disjunction< + std::is_same<BasicJson, CompatibleArrayType>, + is_compatible_array_type_impl< + conjunction<negation< + // MSVC has troubles without this + std::is_same<void, CompatibleArrayType>>, + negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -235,15 +242,19 @@ struct is_compatible_integer_type_impl : std::false_type{}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { - static constexpr auto value = std::is_constructible<RealIntegerType, CompatibleNumberIntegerType>::value and - std::numeric_limits<CompatibleNumberIntegerType>::is_integer and - std::numeric_limits<CompatibleNumberIntegerType>::is_signed; + static constexpr auto value = + std::is_constructible<RealIntegerType, + CompatibleNumberIntegerType>::value and + std::numeric_limits<CompatibleNumberIntegerType>::is_integer and + std::numeric_limits<CompatibleNumberIntegerType>::is_signed; }; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto value = is_compatible_integer_type_impl<std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, CompatibleNumberIntegerType>::value; + static constexpr auto value = is_compatible_integer_type_impl< + std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, + CompatibleNumberIntegerType>::value; }; template <bool, typename, typename> @@ -252,37 +263,43 @@ struct is_compatible_unsigned_integer_type_impl : std::false_type{}; template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> struct is_compatible_unsigned_integer_type_impl<true, RealUnsignedType, CompatibleNumberUnsignedType> { - static constexpr auto value = std::is_constructible<RealUnsignedType, CompatibleNumberUnsignedType>::value and - std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and - not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed; + static constexpr auto value = + std::is_constructible<RealUnsignedType, + CompatibleNumberUnsignedType>::value and + std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and + not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed; }; template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> struct is_compatible_unsigned_integer_type { - static constexpr auto value = is_compatible_unsigned_integer_type_impl<std::is_arithmetic<CompatibleNumberUnsignedType>::value, RealUnsignedType, CompatibleNumberUnsignedType>::value; + static constexpr auto value = is_compatible_unsigned_integer_type_impl< + std::is_arithmetic<CompatibleNumberUnsignedType>::value, RealUnsignedType, + CompatibleNumberUnsignedType>::value; }; template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { - static constexpr auto value = std::is_constructible<RealFloat, CompatibleFloat>::value and - std::is_floating_point<CompatibleFloat>::value; + static constexpr auto value = + std::is_constructible<RealFloat, CompatibleFloat>::value and + std::is_floating_point<CompatibleFloat>::value; }; template <typename T, typename BasicJson> struct is_compatible_basic_json_type { - static auto constexpr value = - - std::is_same<T, BasicJson>::value or - std::is_constructible<typename BasicJson::string_t, T>::value or - std::is_same<typename BasicJson::boolean_t, T>::value or - is_compatible_array_type<BasicJson, T>::value or - is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_float_type<typename BasicJson::number_float_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or - is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, T>::value; + static auto constexpr value = + std::is_same<T, BasicJson>::value or + std::is_constructible<typename BasicJson::string_t, T>::value or + std::is_same<typename BasicJson::boolean_t, T>::value or + is_compatible_array_type<BasicJson, T>::value or + is_compatible_object_type<typename BasicJson::object_t, T>::value or + is_compatible_float_type<typename BasicJson::number_float_t, T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, + T>::value or + is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, + T>::value; }; template <template <typename, typename> class JSONSerializer, typename Json, @@ -322,23 +339,24 @@ void from_json(); struct to_json_fn { - template <typename Json, typename T> - constexpr auto - operator()(Json&& j, T &&val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) - -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), void()) - { - return to_json(std::forward<Json>(j), std::forward<T>(val)); - } + template <typename Json, typename T> + constexpr auto operator()(Json &&j, T &&val) const + noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) + -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), + void()) + { + return to_json(std::forward<Json>(j), std::forward<T>(val)); + } }; struct from_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json &&j, T &val) const - noexcept(noexcept(from_json(std::forward<Json>(j), val))) - -> decltype(from_json(std::forward<Json>(j), val), void()) - { - return from_json(std::forward<Json>(j), val); + template <typename Json, typename T> + constexpr auto operator()(Json &&j, T &val) const + noexcept(noexcept(from_json(std::forward<Json>(j), val))) + -> decltype(from_json(std::forward<Json>(j), val), void()) + { + return from_json(std::forward<Json>(j), val); } }; @@ -1555,10 +1573,17 @@ class basic_json // constructor chosen when JSONSerializer::to_json exists for type T // first check avoids being chosen instead of move/copy constructor - template <typename T, enable_if_t<detail::conjunction<detail::negation<std::is_same<uncvref_t<T>, basic_json_t>>, -detail::negation<std::is_base_of<std::istream, uncvref_t<T>>>, -detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_t>>, detail::has_to_json< - JSONSerializer, basic_json, uncvref_t<T>>>::value, int> = 0> + template < + typename T, + enable_if_t< + detail::conjunction< + detail::negation<std::is_same<uncvref_t<T>, basic_json_t>>, + detail::negation<std::is_base_of<std::istream, uncvref_t<T>>>, + detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_to_json<JSONSerializer, basic_json, + uncvref_t<T>>>::value, + int> = 0> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); @@ -1757,7 +1782,11 @@ detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_ @since version 1.0.0 */ - template<typename CompatibleNumberIntegerType, enable_if_t<detail::is_compatible_integer_type<number_integer_t, CompatibleNumberIntegerType>::value, int> = 0> + template < + typename CompatibleNumberIntegerType, + enable_if_t<detail::is_compatible_integer_type< + number_integer_t, CompatibleNumberIntegerType>::value, + int> = 0> basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) @@ -1811,7 +1840,11 @@ detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_ @since version 2.0.0 */ - template<typename CompatibleNumberUnsignedType, enable_if_t<detail::is_compatible_unsigned_integer_type<number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0> + template < + typename CompatibleNumberUnsignedType, + enable_if_t<detail::is_compatible_unsigned_integer_type< + number_unsigned_t, CompatibleNumberUnsignedType>::value, + int> = 0> basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), m_value(static_cast<number_unsigned_t>(val)) @@ -1887,7 +1920,10 @@ detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_ @since version 1.0.0 */ - template<typename CompatibleNumberFloatType, enable_if_t<detail::is_compatible_float_type<number_float_t, CompatibleNumberFloatType>::value, int> = 0> + template <typename CompatibleNumberFloatType, + enable_if_t<detail::is_compatible_float_type< + number_float_t, CompatibleNumberFloatType>::value, + int> = 0> basic_json(const CompatibleNumberFloatType val) noexcept : basic_json(number_float_t(val)) { @@ -2941,13 +2977,17 @@ detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_ } /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_convertible<basic_json_t, typename T::value_type>::value and - not std::is_same<basic_json_t, typename T::value_type>::value and - not std::is_arithmetic<T>::value and - not std::is_convertible<std::string, T>::value and - not detail::has_mapped_type<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const + template < + class T, + typename std::enable_if< + std::is_convertible<basic_json_t, typename T::value_type>::value and + not std::is_same<basic_json_t, + typename T::value_type>::value and + not std::is_arithmetic<T>::value and + not std::is_convertible<std::string, T>::value and + not detail::has_mapped_type<T>::value, + int>::type = 0> + T get_impl(T *) const { if (is_array()) { @@ -3225,9 +3265,14 @@ detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_ return get_impl(static_cast<ValueType *>(nullptr)); } - template <typename T, - enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type<uncvref_t<T>, basic_json_t>>, - detail::has_from_json<JSONSerializer, basic_json_t, uncvref_t<T>>>::value, int> = 0> + template < + typename T, + enable_if_t<detail::conjunction< + detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value, + int> = 0> auto get() const -> uncvref_t<T> { using type = uncvref_t<T>; From 74bb11d92c965c9ce10e87376f1b969adcac7960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Delrieu?= <theo@tanker.io> Date: Thu, 24 Nov 2016 13:22:46 +0100 Subject: [PATCH 061/174] remove some useless checks, format a bit, added some comments --- src/json.hpp | 151 +++++++++++++++++++++++---------------------------- 1 file changed, 68 insertions(+), 83 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2ab6efd96..109691380 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -130,11 +130,17 @@ using conditional_t = typename std::conditional<If, Then, Else>::type; namespace detail { -// implementation of 3 C++17 constructs: conjunction, disjunction, negation. -// This is needed to avoid evaluating all the traits, MSVC cannot compile due -// to std::is_constructible<basic_json_t, void> being instantiated -// (void -> back_insert_iterator::value_type) -// this could slow down compilation, since this implementation is taken from the example in cppreference... +// Implementation of 3 C++17 constructs: conjunction, disjunction, negation. +// This is needed to avoid evaluating all the traits in a condition +// +// For example: not std::is_same<void, T>::value and has_value_type<T>::value +// will not compile when T = void (on MSVC at least) +// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value +// will stop evaluating if negation<...>::value == false +// +// Please note that those constructs must be used with caution, since symbols can +// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) +// Only use it when you have too (see example ahead) template <class...> struct conjunction : std::true_type {}; template <class B1> struct conjunction<B1> : B1 {}; template <class B1, class... Bn> @@ -192,6 +198,8 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { + // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void + // hence the conjunction static auto constexpr value = is_compatible_object_type_impl< conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, @@ -223,17 +231,14 @@ struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - static auto constexpr value = disjunction< - std::is_same<BasicJson, CompatibleArrayType>, - is_compatible_array_type_impl< - conjunction<negation< - // MSVC has troubles without this - std::is_same<void, CompatibleArrayType>>, - negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType>>::value; + // the check for CompatibleArrayType = void is done in is_compatible_object_type + // but we need the conjunction here as well + static auto constexpr value = is_compatible_array_type_impl< + conjunction<negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType>::value; }; template <bool, typename, typename> @@ -242,11 +247,14 @@ struct is_compatible_integer_type_impl : std::false_type{}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { + using RealLimits = std::numeric_limits<RealIntegerType>; + using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; + static constexpr auto value = std::is_constructible<RealIntegerType, CompatibleNumberIntegerType>::value and - std::numeric_limits<CompatibleNumberIntegerType>::is_integer and - std::numeric_limits<CompatibleNumberIntegerType>::is_signed; + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; }; template <typename RealIntegerType, typename CompatibleNumberIntegerType> @@ -257,27 +265,6 @@ struct is_compatible_integer_type CompatibleNumberIntegerType>::value; }; -template <bool, typename, typename> -struct is_compatible_unsigned_integer_type_impl : std::false_type{}; - -template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> -struct is_compatible_unsigned_integer_type_impl<true, RealUnsignedType, CompatibleNumberUnsignedType> -{ - static constexpr auto value = - std::is_constructible<RealUnsignedType, - CompatibleNumberUnsignedType>::value and - std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and - not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed; -}; - -template <typename RealUnsignedType, typename CompatibleNumberUnsignedType> -struct is_compatible_unsigned_integer_type -{ - static constexpr auto value = is_compatible_unsigned_integer_type_impl< - std::is_arithmetic<CompatibleNumberUnsignedType>::value, RealUnsignedType, - CompatibleNumberUnsignedType>::value; -}; - template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { @@ -298,8 +285,8 @@ struct is_compatible_basic_json_type is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or - is_compatible_unsigned_integer_type<typename BasicJson::number_unsigned_t, - T>::value; + is_compatible_integer_type<typename BasicJson::number_unsigned_t, + T>::value; }; template <template <typename, typename> class JSONSerializer, typename Json, @@ -334,11 +321,14 @@ public: detect(std::declval<JSONSerializer<T, void>>()))>::value; }; +// those declarations are needed to workaround a MSVC bug related to ADL +// (idea taken from MSVC-Ranges implementation void to_json(); void from_json(); struct to_json_fn { + // is it really useful to mark those as constexpr? template <typename Json, typename T> constexpr auto operator()(Json &&j, T &&val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) @@ -357,7 +347,7 @@ struct from_json_fn -> decltype(from_json(std::forward<Json>(j), val), void()) { return from_json(std::forward<Json>(j), val); - } + } }; /*! @@ -384,18 +374,18 @@ struct DecimalSeparator : std::numpunct<char> // taken from ranges-v3 // TODO add doc template <typename T> -struct _static_const +struct static_const { static constexpr T value{}; }; template <typename T> -constexpr T _static_const<T>::value; +constexpr T static_const<T>::value; inline namespace { - constexpr auto const& to_json = _static_const<detail::to_json_fn>::value; - constexpr auto const& from_json = _static_const<detail::from_json_fn>::value; + constexpr auto const& to_json = static_const<detail::to_json_fn>::value; + constexpr auto const& from_json = static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -1493,14 +1483,16 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleObjectType, enable_if_t<detail::is_compatible_object_type<object_t, CompatibleObjectType>::value, int> = 0> - basic_json(const CompatibleObjectType& val) - : m_type(value_t::object) + template <class CompatibleObjectType, + enable_if_t<detail::is_compatible_object_type< + object_t, CompatibleObjectType>::value, + int> = 0> + basic_json(const CompatibleObjectType &val) : m_type(value_t::object) { - using std::begin; - using std::end; - m_value.object = create<object_t>(begin(val), end(val)); - assert_invariant(); + using std::begin; + using std::end; + m_value.object = create<object_t>(begin(val), end(val)); + assert_invariant(); } /*! @@ -1554,16 +1546,12 @@ class basic_json @since version 1.0.0 */ - template < - class CompatibleArrayType, - enable_if_t< - detail::disjunction< - // MSVC.. - std::is_same<uncvref_t<CompatibleArrayType>, basic_json_t>, - detail::is_compatible_array_type<basic_json_t, - CompatibleArrayType>>::value, - int> = 0> - basic_json(const CompatibleArrayType &val) : m_type(value_t::array) { + template <class CompatibleArrayType, + enable_if_t<detail::is_compatible_array_type< + basic_json_t, CompatibleArrayType>::value, + int> = 0> + basic_json(const CompatibleArrayType &val) : m_type(value_t::array) + { using std::begin; using std::end; m_value.array = create<array_t>(begin(val), end(val)); @@ -1571,19 +1559,18 @@ class basic_json } - // constructor chosen when JSONSerializer::to_json exists for type T - // first check avoids being chosen instead of move/copy constructor + // constructor chosen when: + // - JSONSerializer::to_json exists for type T + // - T is not a istream, nor convertible to basic_json (float, vectors, etc) + // is_compatible_basic_json_type == not is_user_defined_type template < typename T, - enable_if_t< - detail::conjunction< - detail::negation<std::is_same<uncvref_t<T>, basic_json_t>>, - detail::negation<std::is_base_of<std::istream, uncvref_t<T>>>, - detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>>::value, - int> = 0> + enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and + not detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>::value and + detail::has_to_json<JSONSerializer, basic_json, + uncvref_t<T>>::value, + int> = 0> explicit basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); @@ -1842,7 +1829,7 @@ class basic_json */ template < typename CompatibleNumberUnsignedType, - enable_if_t<detail::is_compatible_unsigned_integer_type< + enable_if_t<detail::is_compatible_integer_type< number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0> basic_json(const CompatibleNumberUnsignedType val) noexcept @@ -3257,21 +3244,19 @@ class basic_json @since version 1.0.0 */ template <typename ValueType, - enable_if_t< - not std::is_pointer<ValueType>::value, - int> = 0> + enable_if_t<not std::is_pointer<ValueType>::value, int> = 0> auto get() const - -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { + -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) + { return get_impl(static_cast<ValueType *>(nullptr)); } template < typename T, - enable_if_t<detail::conjunction< - detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, + enable_if_t<not detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>::value and detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, + uncvref_t<T>>::value, int> = 0> auto get() const -> uncvref_t<T> { From e5999c6c822a37562dde3e031e231b73195e56cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Sat, 26 Nov 2016 01:31:06 +0100 Subject: [PATCH 062/174] add a few tests --- src/json.hpp | 5 ++++- test/src/unit-udt.cpp | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 109691380..1e3c6f3b4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -289,6 +289,8 @@ struct is_compatible_basic_json_type T>::value; }; + +// This trait checks if JSONSerializer<T>::from_json exists template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json @@ -305,6 +307,7 @@ public: detect(std::declval<JSONSerializer<T, void>>()))>::value; }; +// This trait checks if JSONSerializer<T>::to_json exists template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_to_json @@ -322,7 +325,7 @@ public: }; // those declarations are needed to workaround a MSVC bug related to ADL -// (idea taken from MSVC-Ranges implementation +// (taken from MSVC-Ranges implementation) void to_json(); void from_json(); diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 826baaae3..800f9868e 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -397,6 +397,29 @@ struct my_serializer } }; +// partial specialization on optional_type +template <typename T> +struct my_serializer<udt::optional_type<T>> +{ + template <typename Json> + static void from_json(Json const& j, udt::optional_type<T>& opt) + { + if (j.is_null()) + opt = nullptr; + else + opt = j.get<T>(); + } + + template <typename Json> + static void to_json(Json& j, udt::optional_type<T> const& opt) + { + if (opt) + j = *opt; + else + j = nullptr; + } +}; + using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, my_serializer>; @@ -414,7 +437,7 @@ namespace udt } } -TEST_CASE("custom serializer") +TEST_CASE("custom serializer", "[udt]") { SECTION("default use works like default serializer") { @@ -429,4 +452,17 @@ TEST_CASE("custom serializer") CHECK(pod2 == pod3); CHECK(pod2 == pod); } + + SECTION("serializer specialization") + { + udt::optional_type<int> opt; + + json j{opt}; + CHECK(j.is_null()); + + opt = 42; + j = json{opt}; + CHECK(j.get<udt::optional_type<int>>() == opt); + CHECK(42 == j.get<int>()); + } } From 60e6f822fa25fd8f030728b02821da8f1d63b7b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 29 Nov 2016 13:09:51 +0100 Subject: [PATCH 063/174] add support for non-default-constructible udt --- src/json.hpp | 139 +++++++----- test/src/unit-udt.cpp | 486 +++++++----------------------------------- 2 files changed, 162 insertions(+), 463 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 1e3c6f3b4..2dfa7c022 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -290,14 +290,32 @@ struct is_compatible_basic_json_type }; -// This trait checks if JSONSerializer<T>::from_json exists +// This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json { private: - template <typename U, typename = decltype(uncvref_t<U>::from_json( - std::declval<Json>(), std::declval<T &>()))> + // also check the return type of from_json + template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( + std::declval<Json>(), std::declval<T &>()))>::value>> + static int detect(U &&); + + static void detect(...); + +public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; +}; + +// This trait checks if JSONSerializer<T>::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_non_default_from_json +{ +private: + template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> static int detect(U &&); static void detect(...); @@ -326,8 +344,8 @@ public: // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) -void to_json(); -void from_json(); +//void to_json(); +//void from_json(); struct to_json_fn { @@ -2467,57 +2485,63 @@ class basic_json return *this; } - /*! - @brief destructor - - Destroys the JSON value and frees all allocated memory. - - @complexity Linear. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - All stored elements are destroyed and all memory is freed. - - @since version 1.0.0 - */ - ~basic_json() + // this overload is needed, since constructor for udt is explicit + template <typename T, enable_if_t<not detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>::value and + detail::has_to_json<JSONSerializer, basic_json_t, uncvref_t<T>>::value>> + reference &operator=(T &&val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and + std::is_nothrow_move_assignable<uncvref_t<T>>::value) { - assert_invariant(); + static_assert(sizeof(T) == 0 , ""); + // I'm not sure this a is good practice... + return *this = basic_json_t{std::forward<T>(val)}; + } - switch (m_type) - { - case value_t::object: - { - AllocatorType<object_t> alloc; - alloc.destroy(m_value.object); - alloc.deallocate(m_value.object, 1); - break; - } + /*! + @brief destructor - case value_t::array: - { - AllocatorType<array_t> alloc; - alloc.destroy(m_value.array); - alloc.deallocate(m_value.array, 1); - break; - } + Destroys the JSON value and frees all allocated memory. - case value_t::string: - { - AllocatorType<string_t> alloc; - alloc.destroy(m_value.string); - alloc.deallocate(m_value.string, 1); - break; - } + @complexity Linear. - default: - { - // all other types need no specific destructor - break; - } - } + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. + + @since version 1.0.0 + */ + ~basic_json() { + assert_invariant(); + + switch (m_type) { + case value_t::object: { + AllocatorType<object_t> alloc; + alloc.destroy(m_value.object); + alloc.deallocate(m_value.object, 1); + break; + } + + case value_t::array: { + AllocatorType<array_t> alloc; + alloc.destroy(m_value.array); + alloc.deallocate(m_value.array, 1); + break; + } + + case value_t::string: { + AllocatorType<string_t> alloc; + alloc.destroy(m_value.string); + alloc.deallocate(m_value.string, 1); + break; + } + + default: { + // all other types need no specific destructor + break; + } + } } /// @} @@ -3273,6 +3297,19 @@ class basic_json return ret; } + // This overload is chosen for non-default constructible user-defined-types + template < + typename T, + enable_if_t<not detail::is_compatible_basic_json_type< + T, basic_json_t>::value and + detail::has_non_default_from_json<JSONSerializer, basic_json_t, + T>::value, + short> = 0> + T get() const + { + return JSONSerializer<T>::from_json(*this); + } + /*! @brief get a pointer value (explicit) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 800f9868e..cd9ec1c46 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -26,443 +26,105 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include <array> #include <string> #include <memory> #include "catch.hpp" #include "json.hpp" -using nlohmann::json; namespace udt { -struct empty_type {}; -struct pod_type { - int a; - char b; - short c; -}; - -struct bit_more_complex_type { - pod_type a; - pod_type b; - std::string c; -}; - -// best optional implementation ever -template <typename T> -class optional_type -{ -public: - optional_type() = default; - explicit optional_type(T val) : _val(std::make_shared<T>(std::move(val))) {} - explicit operator bool() const noexcept { return _val != nullptr; } - - T const &operator*() const { return *_val; } - optional_type& operator=(T const& t) + struct age { - _val = std::make_shared<T>(t); - return *this; - } + int val; + }; -private: - std::shared_ptr<T> _val; -}; + struct name + { + std::string val; + }; -// free to/from_json functions + struct address + { + std::string val; + }; -void to_json(json& j, empty_type) -{ - j = json::object(); + struct person + { + age age; + name name; + }; + + struct contact + { + person person; + address address; + }; + + struct contact_book + { + name book_name; + std::vector<contact> contacts; + }; } -void to_json(json& j, pod_type const& p) -{ - j = json{{"a", p.a}, {"b", p.b}, {"c", p.c}}; -} - -void to_json(json& j, bit_more_complex_type const& p) -{ - j = json{{"a", json(p.a)}, {"b", json(p.b)}, {"c", p.c}}; -} - -template <typename T> -void to_json(json& j, optional_type<T> const& opt) -{ - if (!opt) - j = nullptr; - else - j = json(*opt); -} - -void from_json(json const& j, empty_type& t) -{ - assert(j.empty()); - t = empty_type{}; -} - -void from_json(json const&j, pod_type& t) -{ - t = {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; -} - -void from_json(json const&j, bit_more_complex_type& t) -{ - // relying on json_traits struct here.. - t = {j["a"].get<udt::pod_type>(), j["b"].get<udt::pod_type>(), - j["c"].get<std::string>()}; -} - -template <typename T> -void from_json(json const& j, optional_type<T>& t) -{ - if (j.is_null()) - t = optional_type<T>{}; - else - t = j.get<T>(); -} - -inline bool operator==(pod_type const& lhs, pod_type const& rhs) noexcept -{ - return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); -} - -inline bool operator==(bit_more_complex_type const &lhs, - bit_more_complex_type const &rhs) noexcept { - return std::tie(lhs.a, lhs.b, lhs.c) == std::tie(rhs.a, rhs.b, rhs.c); -} - -template <typename T> -inline bool operator==(optional_type<T> const& lhs, optional_type<T> const& rhs) -{ - if (!lhs && !rhs) - return true; - if (!lhs || !rhs) - return false; - return *lhs == *rhs; -} -} - -TEST_CASE("constructors for user-defined types", "[udt]") -{ - SECTION("empty type") - { - udt::empty_type const e{}; - auto const j = json{e}; - auto k = json::object(); - CHECK(j == k); - } - - SECTION("pod type") - { - auto const e = udt::pod_type{42, 42, 42}; - auto j = json{e}; - auto k = json{{"a", 42}, {"b", 42}, {"c", 42}}; - CHECK(j == k); - } - - SECTION("bit more complex type") - { - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - - auto j = json{e}; - auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - CHECK(j == k); - } - - SECTION("vector of udt") - { - std::vector<udt::bit_more_complex_type> v; - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - - v.emplace_back(e); - v.emplace_back(e); - v.emplace_back(e); - - json j = v; - auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - auto l = json{k, k, k}; - CHECK(j == l); - } - - SECTION("optional type") { - SECTION("regular case") { - udt::optional_type<int> u{3}; - CHECK(json{u} == json(3)); - } - - SECTION("nullopt case") { - udt::optional_type<float> v; - CHECK(json{v} == json{}); - } - - SECTION("optional of json convertible type") - { - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - udt::optional_type<udt::bit_more_complex_type> o{e}; - auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - CHECK(json{o} == k); - } - - SECTION("optional of vector of json convertible type") - { - std::vector<udt::bit_more_complex_type> v; - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - v.emplace_back(e); - v.emplace_back(e); - v.emplace_back(e); - udt::optional_type<std::vector<udt::bit_more_complex_type>> o{v}; - auto k = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - auto l = json{k, k, k}; - CHECK(json{o} == l); - } - } -} - -TEST_CASE("get<> for user-defined types", "[udt]") -{ - SECTION("pod type") - { - auto const e = udt::pod_type{42, 42, 42}; - auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; - - auto const obj = j.get<udt::pod_type>(); - CHECK(e == obj); - } - - SECTION("bit more complex type") - { - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - auto const j = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - - auto const obj = j.get<udt::bit_more_complex_type>(); - CHECK(e == obj); - } - - SECTION("vector of udt") - { - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - std::vector<udt::bit_more_complex_type> v{e, e, e}; - auto const j = json(v); - - auto const obj = j.get<decltype(v)>(); - CHECK(v == obj); - } - - SECTION("optional") - { - SECTION("from null") - { - udt::optional_type<int> o; - json j; - CHECK(j.get<decltype(o)>() == o); - } - - SECTION("from value") - { - json j{{"a", 42}, {"b", 42}, {"c", 42}}; - auto v = j.get<udt::optional_type<udt::pod_type>>(); - auto expected = udt::pod_type{42,42,42}; - REQUIRE(v); - CHECK(*v == expected); - } - } -} - -TEST_CASE("to_json free function", "[udt]") -{ - SECTION("pod_type") - { - auto const e = udt::pod_type{42, 42, 42}; - auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; - - json j; - nlohmann::to_json(j, e); - CHECK(j == expected); - } - - SECTION("bit_more_complex_type") - { - auto const e = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - auto const expected = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - json j; - nlohmann::to_json(j, e); - CHECK(j == expected); - } - - SECTION("optional_type") - { - SECTION("from null") - { - udt::optional_type<udt::pod_type> o; - - json expected; - json j; - nlohmann::to_json(j, o); - CHECK(expected == j); - } - - SECTION("from value") - { - udt::optional_type<udt::pod_type> o{{42, 42, 42}}; - - auto const expected = json{{"a", 42}, {"b", 42}, {"c", 42}}; - json j; - nlohmann::to_json(j, o); - CHECK(expected == j); - } - } -} - -TEST_CASE("from_json free function", "[udt]") -{ - SECTION("pod_type") - { - auto const expected = udt::pod_type{42, 42, 42}; - auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; - - udt::pod_type p; - nlohmann::from_json(j, p); - CHECK(p == expected); - } - - SECTION("bit_more_complex_type") - { - auto const expected = - udt::bit_more_complex_type{{42, 42, 42}, {41, 41, 41}, "forty"}; - auto const j = json{{"a", {{"a", 42}, {"b", 42}, {"c", 42}}}, - {"b", {{"a", 41}, {"b", 41}, {"c", 41}}}, - {"c", "forty"}}; - udt::bit_more_complex_type p; - nlohmann::from_json(j, p); - CHECK(p == expected); - } - - SECTION("optional_type") - { - SECTION("from null") - { - udt::optional_type<udt::pod_type> expected; - json j; - udt::optional_type<udt::pod_type> o; - - nlohmann::from_json(j, o); - CHECK(expected == o); - } - - SECTION("from value") - { - udt::optional_type<udt::pod_type> expected{{42, 42, 42}}; - auto const j = json{{"a", 42}, {"b", 42}, {"c", 42}}; - udt::optional_type<udt::pod_type> o; - - nlohmann::from_json(j, o); - CHECK(expected == o); - } - } -} - -// custom serializer, uses adl by default -template <typename T, typename = void> -struct my_serializer -{ - template <typename Json> - static void from_json(Json const& j, T& val) - { - nlohmann::from_json(j, val); - } - - template <typename Json> - static void to_json(Json& j, T const& val) - { - nlohmann::to_json(j, val); - } -}; - -// partial specialization on optional_type -template <typename T> -struct my_serializer<udt::optional_type<T>> -{ - template <typename Json> - static void from_json(Json const& j, udt::optional_type<T>& opt) - { - if (j.is_null()) - opt = nullptr; - else - opt = j.get<T>(); - } - - template <typename Json> - static void to_json(Json& j, udt::optional_type<T> const& opt) - { - if (opt) - j = *opt; - else - j = nullptr; - } -}; - -using my_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, - std::int64_t, std::uint64_t, double, - std::allocator, my_serializer>; - +// to_json methods for default basic_json namespace udt { - void to_json(my_json& j, pod_type const& val) + void to_json(nlohmann::json& j, age a) { - j = my_json{{"a", val.a}, {"b", val.b}, {"c", val.c}}; + j = a.val; } - void from_json(my_json const& j, pod_type& val) + void to_json(nlohmann::json& j, name const& n) { - val = {j["a"].get<int>(), j["b"].get<char>(), j["c"].get<short>()}; + j = n.val; + } + + void to_json(nlohmann::json& j, person const& p) + { + using nlohmann::json; + j = json{{"age", json{p.age}}, {"name", json{p.name}}}; + + // this unfortunately does not compile ... + // j["age"] = p.age; + // j["name"] = p.name; + } + + void to_json(nlohmann::json& j, address const& a) + { + j = a.val; + } + + void to_json(nlohmann::json& j, contact const& c) + { + using nlohmann::json; + j = json{{"person", json{c.person}}, {"address", json{c.address}}}; + } + + void to_json(nlohmann::json& j, contact_book const& cb) + { + using nlohmann::json; + j = json{{"name", json{cb.book_name}}, {"contacts", cb.contacts}}; } } -TEST_CASE("custom serializer", "[udt]") +TEST_CASE("basic usage", "[udt]") { - SECTION("default use works like default serializer") + using nlohmann::json; + + SECTION("conversion to json via free-functions") { - udt::pod_type pod{1, 2, 3}; - auto const j = my_json{pod}; + udt::age a{23}; - auto const j2 = json{pod}; - CHECK(j.dump() == j2.dump()); + CHECK(json{a} == json{23}); - auto const pod2 = j.get<udt::pod_type>(); - auto const pod3 = j2.get<udt::pod_type>(); - CHECK(pod2 == pod3); - CHECK(pod2 == pod); + // a bit narcissic maybe :) ? + udt::name n{"theo"}; + CHECK(json{n} == json{"theo"}); + + udt::person sfinae_addict{a, n}; + CHECK(json{sfinae_addict} == R"({"name":"theo", "age":23})"_json); } - - SECTION("serializer specialization") - { - udt::optional_type<int> opt; - - json j{opt}; - CHECK(j.is_null()); - - opt = 42; - j = json{opt}; - CHECK(j.get<udt::optional_type<int>>() == opt); - CHECK(42 == j.get<int>()); - } -} +} \ No newline at end of file From c0c72b5b62c29f9c220c1eb56273ff2a6bcc273f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Delrieu?= <theo@tanker.io> Date: Wed, 30 Nov 2016 23:16:54 +0100 Subject: [PATCH 064/174] rewrite unit-udt: basic usage --- src/json.hpp | 138 ++++++++++++++++++++-- test/src/unit-class_const_iterator.cpp | 36 +++--- test/src/unit-class_iterator.cpp | 36 +++--- test/src/unit-udt.cpp | 156 ++++++++++++++++++++----- 4 files changed, 290 insertions(+), 76 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2dfa7c022..fc7781eac 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -257,6 +257,30 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn RealLimits::is_signed == CompatibleLimits::is_signed; }; +// quickfix, just trying to make things compile before refactoring +template <bool B, typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type_impl : std::false_type{}; + +template <typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type_impl<true, RealIntegerType, CompatibleEnumType> +{ + using RealLimits = std::numeric_limits<RealIntegerType>; + using CompatibleLimits = std::numeric_limits<typename std::underlying_type<CompatibleEnumType>::type>; + + static constexpr auto value = + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template <typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type +{ + static constexpr auto value = is_compatible_enum_type_impl< +// quickfix for all enums + std::is_enum<CompatibleEnumType>::value, RealIntegerType, + CompatibleEnumType>::value; +}; + template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { @@ -281,6 +305,7 @@ struct is_compatible_basic_json_type std::is_constructible<typename BasicJson::string_t, T>::value or std::is_same<typename BasicJson::boolean_t, T>::value or is_compatible_array_type<BasicJson, T>::value or + is_compatible_enum_type<T, typename BasicJson::number_integer_t>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, @@ -289,6 +314,16 @@ struct is_compatible_basic_json_type T>::value; }; +template <typename T, typename BasicJson, typename PrimitiveIterator> +struct is_basic_json_nested_class +{ + static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or + std::is_same<T, typename BasicJson::const_iterator>::value or + std::is_same<T, typename BasicJson::reverse_iterator>::value or + std::is_same<T, typename BasicJson::const_reverse_iterator>::value or + std::is_same<T, PrimitiveIterator>::value or + std::is_same<T, typename BasicJson::json_pointer>::value; +}; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists template <template <typename, typename> class JSONSerializer, typename Json, @@ -344,8 +379,8 @@ public: // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) -//void to_json(); -//void from_json(); +void to_json(); +void from_json(); struct to_json_fn { @@ -524,6 +559,7 @@ class basic_json using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer>; + class primitive_iterator_t; public: // forward declarations @@ -1589,10 +1625,15 @@ class basic_json enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and not detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>::value and + not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and +// quickfix +not std::is_enum<uncvref_t<T>>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::has_to_json<JSONSerializer, basic_json, uncvref_t<T>>::value, int> = 0> - explicit basic_json(T &&val) + basic_json(T &&val) { JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } @@ -1793,7 +1834,8 @@ class basic_json template < typename CompatibleNumberIntegerType, enable_if_t<detail::is_compatible_integer_type< - number_integer_t, CompatibleNumberIntegerType>::value, + number_integer_t, CompatibleNumberIntegerType>::value or +detail::is_compatible_enum_type<number_integer_t, CompatibleNumberIntegerType>::value, int> = 0> basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), @@ -8502,6 +8544,11 @@ class basic_json class primitive_iterator_t { public: + + difference_type get_value() const noexcept + { + return m_it; + } /// set iterator to a defined beginning void set_begin() noexcept { @@ -8526,16 +8573,85 @@ class basic_json return (m_it == end_value); } - /// return reference to the value to change and compare - operator difference_type& () noexcept + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { - return m_it; + return lhs.m_it == rhs.m_it; } - /// return value to compare - constexpr operator difference_type () const noexcept + friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { - return m_it; + return !(lhs == rhs); + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it <= rhs.m_it; + } + + friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it > rhs.m_it; + } + + friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it >= rhs.m_it; + } + + friend constexpr bool operator+(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it + rhs.m_it; + } + + friend constexpr bool operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t& operator++(int) + { + m_it++; + return *this; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t& operator--(int) + { + m_it--; + return *this; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; } private: @@ -9240,7 +9356,7 @@ class basic_json default: { - if (m_it.primitive_iterator == -n) + if (m_it.primitive_iterator.get_value() == -n) { return *m_object; } diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index 13ce7c3f3..a1f6b827a 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -220,20 +220,20 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it++; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); it++; - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it++; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -271,20 +271,20 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); ++it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); ++it; - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); ++it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -322,18 +322,18 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it--; - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); it--; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -371,18 +371,18 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); --it; - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); --it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 640bc816c..1e8a3cec4 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -204,20 +204,20 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it++; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("number") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); it++; - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it++; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -255,20 +255,20 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); ++it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("number") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); ++it; - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); ++it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -306,18 +306,18 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); it--; - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); it--; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") @@ -355,18 +355,18 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator == 1); + CHECK(it.m_it.primitive_iterator.m_it == 1); --it; - CHECK(it.m_it.primitive_iterator == 0); + CHECK(it.m_it.primitive_iterator.m_it == 0); --it; - CHECK((it.m_it.primitive_iterator != 0 and it.m_it.primitive_iterator != 1)); + CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } SECTION("object") diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index cd9ec1c46..284433446 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -37,35 +37,35 @@ namespace udt { struct age { - int val; + int m_val; }; struct name { - std::string val; + std::string m_val; }; struct address { - std::string val; + std::string m_val; }; struct person { - age age; - name name; + age m_age; + name m_name; }; struct contact { - person person; - address address; + person m_person; + address m_address; }; struct contact_book { - name book_name; - std::vector<contact> contacts; + name m_book_name; + std::vector<contact> m_contacts; }; } @@ -74,39 +74,105 @@ namespace udt { void to_json(nlohmann::json& j, age a) { - j = a.val; + j = a.m_val; } void to_json(nlohmann::json& j, name const& n) { - j = n.val; + j = n.m_val; } void to_json(nlohmann::json& j, person const& p) { using nlohmann::json; - j = json{{"age", json{p.age}}, {"name", json{p.name}}}; - - // this unfortunately does not compile ... - // j["age"] = p.age; - // j["name"] = p.name; + j = json{{"age", json{p.m_age}}, {"name", json{p.m_name}}}; } void to_json(nlohmann::json& j, address const& a) { - j = a.val; + j = a.m_val; } void to_json(nlohmann::json& j, contact const& c) { using nlohmann::json; - j = json{{"person", json{c.person}}, {"address", json{c.address}}}; + j = json{{"person", json{c.m_person}}, {"address", json{c.m_address}}}; } void to_json(nlohmann::json& j, contact_book const& cb) { using nlohmann::json; - j = json{{"name", json{cb.book_name}}, {"contacts", cb.contacts}}; + j = json{{"name", json{cb.m_book_name}}, {"contacts", cb.m_contacts}}; + } + + // operators + bool operator==(age lhs, age rhs) + { + return lhs.m_val == rhs.m_val; + } + + bool operator==(address const &lhs, address const &rhs) + { + return lhs.m_val == rhs.m_val; + } + + bool operator==(name const &lhs, name const &rhs) + { + return lhs.m_val == rhs.m_val; + } + + bool operator==(person const &lhs, person const &rhs) + { + return std::tie(lhs.m_name, lhs.m_age) == std::tie(rhs.m_name, rhs.m_age); + } + + bool operator==(contact const &lhs, contact const &rhs) + { + return std::tie(lhs.m_person, lhs.m_address) == + std::tie(rhs.m_person, rhs.m_address); + } + + bool operator==(contact_book const &lhs, contact_book const &rhs) + { + return std::tie(lhs.m_book_name, lhs.m_contacts) == + std::tie(rhs.m_book_name, rhs.m_contacts); + } +} + +// from_json methods for default basic_json +namespace udt +{ + void from_json(nlohmann::json const& j, age &a) + { + a.m_val = j.get<int>(); + } + + void from_json(nlohmann::json const& j, name &n) + { + n.m_val = j.get<std::string>(); + } + + void from_json(nlohmann::json const& j, person &p) + { + p.m_age = j["age"].get<age>(); + p.m_name = j["name"].get<name>(); + } + + void from_json(nlohmann::json const &j, address &a) + { + a.m_val = j.get<std::string>(); + } + + void from_json(nlohmann::json const& j, contact &c) + { + c.m_person = j["person"].get<person>(); + c.m_address = j["address"].get<address>(); + } + + void from_json(nlohmann::json const&j, contact_book &cb) + { + cb.m_book_name = j["name"].get<name>(); + cb.m_contacts = j["contacts"].get<std::vector<contact>>(); } } @@ -114,17 +180,49 @@ TEST_CASE("basic usage", "[udt]") { using nlohmann::json; + // a bit narcissic maybe :) ? + const udt::age a{23}; + const udt::name n{"theo"}; + const udt::person sfinae_addict{a, n}; + const udt::address addr{"Paris"}; + const udt::contact cpp_programmer{sfinae_addict, addr}; + const udt::contact_book book{{"C++"}, {cpp_programmer, cpp_programmer}}; + SECTION("conversion to json via free-functions") { - udt::age a{23}; - - CHECK(json{a} == json{23}); - - // a bit narcissic maybe :) ? - udt::name n{"theo"}; - CHECK(json{n} == json{"theo"}); - - udt::person sfinae_addict{a, n}; + CHECK(json{a} == json(23)); + CHECK(json{n} == json("theo")); CHECK(json{sfinae_addict} == R"({"name":"theo", "age":23})"_json); + CHECK(json("Paris") == json{addr}); + CHECK(json{cpp_programmer} == + R"({"person" : {"age":23, "name":"theo"}, "address":"Paris"})"_json); + + CHECK( + json{book} == + R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo"}, "address":"Paris"}, {"person" : {"age":23, "name":"theo"}, "address":"Paris"}]})"_json); } -} \ No newline at end of file + + SECTION("conversion from json via free-functions") + { + const auto big_json = + R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo"}, "address":"Paris"}, {"person" : {"age":23, "name":"theo"}, "address":"Paris"}]})"_json; + const auto parsed_book = big_json.get<udt::contact_book>(); + const auto book_name = big_json["name"].get<udt::name>(); + const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); + const auto contact_json = big_json["contacts"].at(0); + const auto contact = contact_json.get<udt::contact>(); + const auto person = contact_json["person"].get<udt::person>(); + const auto address = contact_json["address"].get<udt::address>(); + const auto age = contact_json["person"]["age"].get<udt::age>(); + const auto name = contact_json["person"]["name"].get<udt::name>(); + + CHECK(age == a); + CHECK(name == n); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } +} From 1eafac722016a8cacc2a657dcbd303b6f51ac074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Sun, 4 Dec 2016 17:52:55 +0100 Subject: [PATCH 065/174] remove explicit keyword on udt-constructor --- src/json.hpp | 90 ++++++++++++++++++++++--------------------- test/src/unit-udt.cpp | 18 ++++----- 2 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index fc7781eac..310779ea4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -257,30 +257,6 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn RealLimits::is_signed == CompatibleLimits::is_signed; }; -// quickfix, just trying to make things compile before refactoring -template <bool B, typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type_impl : std::false_type{}; - -template <typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type_impl<true, RealIntegerType, CompatibleEnumType> -{ - using RealLimits = std::numeric_limits<RealIntegerType>; - using CompatibleLimits = std::numeric_limits<typename std::underlying_type<CompatibleEnumType>::type>; - - static constexpr auto value = - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template <typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type -{ - static constexpr auto value = is_compatible_enum_type_impl< -// quickfix for all enums - std::is_enum<CompatibleEnumType>::value, RealIntegerType, - CompatibleEnumType>::value; -}; - template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { @@ -289,6 +265,27 @@ struct is_compatible_integer_type CompatibleNumberIntegerType>::value; }; +// quickfix, just trying to make things compile before refactoring +template <bool B, typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type_impl : std::false_type {}; + +template <typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type_impl<true, RealIntegerType, CompatibleEnumType> +{ + using Underlying = typename std::underlying_type<CompatibleEnumType>::type; + static constexpr auto value = + is_compatible_integer_type<RealIntegerType, Underlying>::value; +}; + +template <typename RealIntegerType, typename CompatibleEnumType> +struct is_compatible_enum_type +{ + static constexpr auto value = + is_compatible_enum_type_impl<std::is_enum<CompatibleEnumType>::value, + RealIntegerType, + CompatibleEnumType>::value; +}; + template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { @@ -306,6 +303,7 @@ struct is_compatible_basic_json_type std::is_same<typename BasicJson::boolean_t, T>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_enum_type<T, typename BasicJson::number_integer_t>::value or + is_compatible_enum_type<T, typename BasicJson::number_unsigned_t>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, @@ -1627,8 +1625,8 @@ class basic_json uncvref_t<T>, basic_json_t>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and -// quickfix -not std::is_enum<uncvref_t<T>>::value and + not detail::is_compatible_enum_type<number_integer_t, uncvref_t<T>>::value and + not detail::is_compatible_enum_type<number_unsigned_t, uncvref_t<T>>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::has_to_json<JSONSerializer, basic_json, uncvref_t<T>>::value, @@ -1831,17 +1829,17 @@ not std::is_enum<uncvref_t<T>>::value and @since version 1.0.0 */ - template < - typename CompatibleNumberIntegerType, - enable_if_t<detail::is_compatible_integer_type< - number_integer_t, CompatibleNumberIntegerType>::value or -detail::is_compatible_enum_type<number_integer_t, CompatibleNumberIntegerType>::value, - int> = 0> + template <typename CompatibleNumberIntegerType, + enable_if_t< + detail::is_compatible_integer_type< + number_integer_t, CompatibleNumberIntegerType>::value or + detail::is_compatible_enum_type< + number_integer_t, CompatibleNumberIntegerType>::value, + int> = 0> basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) - { - assert_invariant(); + m_value(static_cast<number_integer_t>(val)) { + assert_invariant(); } /*! @@ -1892,14 +1890,16 @@ detail::is_compatible_enum_type<number_integer_t, CompatibleNumberIntegerType>:: */ template < typename CompatibleNumberUnsignedType, - enable_if_t<detail::is_compatible_integer_type< - number_unsigned_t, CompatibleNumberUnsignedType>::value, - int> = 0> + enable_if_t< + detail::is_compatible_integer_type< + number_unsigned_t, CompatibleNumberUnsignedType>::value or + detail::is_compatible_enum_type< + number_integer_t, CompatibleNumberUnsignedType>::value, + int> = 0> basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), - m_value(static_cast<number_unsigned_t>(val)) - { - assert_invariant(); + m_value(static_cast<number_unsigned_t>(val)) { + assert_invariant(); } /*! @@ -8603,12 +8603,14 @@ detail::is_compatible_enum_type<number_integer_t, CompatibleNumberIntegerType>:: return lhs.m_it >= rhs.m_it; } - friend constexpr bool operator+(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + primitive_iterator_t operator+(difference_type i) { - return lhs.m_it + rhs.m_it; + auto result = *this; + result += i; + return result; } - friend constexpr bool operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it - rhs.m_it; } diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 284433446..2518fcfc5 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -85,7 +85,7 @@ namespace udt void to_json(nlohmann::json& j, person const& p) { using nlohmann::json; - j = json{{"age", json{p.m_age}}, {"name", json{p.m_name}}}; + j = json{{"age", p.m_age}, {"name", p.m_name}}; } void to_json(nlohmann::json& j, address const& a) @@ -96,13 +96,13 @@ namespace udt void to_json(nlohmann::json& j, contact const& c) { using nlohmann::json; - j = json{{"person", json{c.m_person}}, {"address", json{c.m_address}}}; + j = json{{"person", c.m_person}, {"address", c.m_address}}; } void to_json(nlohmann::json& j, contact_book const& cb) { using nlohmann::json; - j = json{{"name", json{cb.m_book_name}}, {"contacts", cb.m_contacts}}; + j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; } // operators @@ -190,15 +190,15 @@ TEST_CASE("basic usage", "[udt]") SECTION("conversion to json via free-functions") { - CHECK(json{a} == json(23)); - CHECK(json{n} == json("theo")); - CHECK(json{sfinae_addict} == R"({"name":"theo", "age":23})"_json); - CHECK(json("Paris") == json{addr}); - CHECK(json{cpp_programmer} == + CHECK(json(a) == json(23)); + CHECK(json(n) == json("theo")); + CHECK(json(sfinae_addict) == R"({"name":"theo", "age":23})"_json); + CHECK(json("Paris") == json(addr)); + CHECK(json(cpp_programmer) == R"({"person" : {"age":23, "name":"theo"}, "address":"Paris"})"_json); CHECK( - json{book} == + json(book) == R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo"}, "address":"Paris"}, {"person" : {"age":23, "name":"theo"}, "address":"Paris"}]})"_json); } From f5cb089f8927167ae934d510c752bce581e8f62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 7 Dec 2016 23:21:10 +0100 Subject: [PATCH 066/174] add an enum constructor (quickfix) --- src/json.hpp | 52 +++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 39 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 310779ea4..35d3d0a60 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -265,27 +265,6 @@ struct is_compatible_integer_type CompatibleNumberIntegerType>::value; }; -// quickfix, just trying to make things compile before refactoring -template <bool B, typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type_impl : std::false_type {}; - -template <typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type_impl<true, RealIntegerType, CompatibleEnumType> -{ - using Underlying = typename std::underlying_type<CompatibleEnumType>::type; - static constexpr auto value = - is_compatible_integer_type<RealIntegerType, Underlying>::value; -}; - -template <typename RealIntegerType, typename CompatibleEnumType> -struct is_compatible_enum_type -{ - static constexpr auto value = - is_compatible_enum_type_impl<std::is_enum<CompatibleEnumType>::value, - RealIntegerType, - CompatibleEnumType>::value; -}; - template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { @@ -302,8 +281,6 @@ struct is_compatible_basic_json_type std::is_constructible<typename BasicJson::string_t, T>::value or std::is_same<typename BasicJson::boolean_t, T>::value or is_compatible_array_type<BasicJson, T>::value or - is_compatible_enum_type<T, typename BasicJson::number_integer_t>::value or - is_compatible_enum_type<T, typename BasicJson::number_unsigned_t>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, @@ -1624,9 +1601,8 @@ class basic_json not detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_enum<uncvref_t<T>>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and - not detail::is_compatible_enum_type<number_integer_t, uncvref_t<T>>::value and - not detail::is_compatible_enum_type<number_unsigned_t, uncvref_t<T>>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::has_to_json<JSONSerializer, basic_json, uncvref_t<T>>::value, @@ -1797,7 +1773,10 @@ class basic_json @since version 1.0.0 */ - basic_json(const int val) noexcept + + // Quickfix, accept every enum type, without looking if a to_json method is provided... + template <typename T, enable_if_t<std::is_enum<T>::value, int> = 0> + basic_json(T val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) { @@ -1829,13 +1808,11 @@ class basic_json @since version 1.0.0 */ - template <typename CompatibleNumberIntegerType, - enable_if_t< - detail::is_compatible_integer_type< - number_integer_t, CompatibleNumberIntegerType>::value or - detail::is_compatible_enum_type< - number_integer_t, CompatibleNumberIntegerType>::value, - int> = 0> + template < + typename CompatibleNumberIntegerType, + enable_if_t<detail::is_compatible_integer_type< + number_integer_t, CompatibleNumberIntegerType>::value, + int> = 0> basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) { @@ -1890,12 +1867,9 @@ class basic_json */ template < typename CompatibleNumberUnsignedType, - enable_if_t< - detail::is_compatible_integer_type< - number_unsigned_t, CompatibleNumberUnsignedType>::value or - detail::is_compatible_enum_type< - number_integer_t, CompatibleNumberUnsignedType>::value, - int> = 0> + enable_if_t<detail::is_compatible_integer_type< + number_unsigned_t, CompatibleNumberUnsignedType>::value, + int> = 0> basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), m_value(static_cast<number_unsigned_t>(val)) { From 8e43d476d35e53de10fe338e808a7c3a65e4f169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Tue, 13 Dec 2016 22:01:38 +0100 Subject: [PATCH 067/174] add more tests to unit-udt.cpp --- test/src/unit-udt.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 2518fcfc5..81fae3eed 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -226,3 +226,130 @@ TEST_CASE("basic usage", "[udt]") CHECK(book == parsed_book); } } + +namespace udt +{ +template <typename T> +class optional_type +{ +public: + optional_type() = default; + optional_type(T t) { _impl = std::make_shared<T>(std::move(t)); } + optional_type(std::nullptr_t) { _impl = nullptr; } + + optional_type &operator=(std::nullptr_t) + { + _impl = nullptr; + return *this; + } + + optional_type& operator=(T t) + { + _impl = std::make_shared<T>(std::move(t)); + return *this; + } + + explicit operator bool() const noexcept { return _impl != nullptr; } + T const &operator*() const noexcept { return *_impl; } + T &operator*() noexcept { return *_impl; } + +private: + std::shared_ptr<T> _impl; +}; + +struct legacy_type +{ + std::string number; +}; +} + +namespace nlohmann +{ +template <typename T> +struct adl_serializer<udt::optional_type<T>> +{ + static void to_json(json& j, udt::optional_type<T> const& opt) + { + if (opt) + j = *opt; + else + j = nullptr; + } + + static void from_json(json const &j, udt::optional_type<T> &opt) + { + if (j.is_null()) + opt = nullptr; + else + opt = j.get<T>(); + } +}; + +template <> +struct adl_serializer<udt::legacy_type> +{ + static void to_json(json& j, udt::legacy_type const& l) + { + j = std::stoi(l.number); + } + + static void from_json(json const& j, udt::legacy_type& l) + { + l.number = std::to_string(j.get<int>()); + } +}; +} + +TEST_CASE("adl_serializer specialization", "[udt]") +{ + using nlohmann::json; + + SECTION("partial specialization") + { + SECTION("to_json") + { + udt::optional_type<udt::person> optPerson; + + json j = optPerson; + CHECK(j.is_null()); + + optPerson = udt::person{{42}, {"John Doe"}}; + j = optPerson; + CHECK_FALSE(j.is_null()); + + CHECK(j.get<udt::person>() == *optPerson); + } + + SECTION("from_json") + { + auto person = udt::person{{42}, {"John Doe"}}; + json j = person; + + auto optPerson = j.get<udt::optional_type<udt::person>>(); + REQUIRE(optPerson); + CHECK(*optPerson == person); + + j = nullptr; + optPerson = j.get<udt::optional_type<udt::person>>(); + CHECK(!optPerson); + } + } + + SECTION("total specialization") + { + SECTION("to_json") + { + udt::legacy_type lt{"4242"}; + + json j = lt; + CHECK(j.get<int>() == 4242); + } + + SECTION("from_json") + { + json j = 4242; + auto lt = j.get<udt::legacy_type>(); + CHECK(lt.number == "4242"); + } + } +} From 3d405c6883113b3e26a3ab4fd5200bc2f6299325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 14 Dec 2016 00:03:55 +0100 Subject: [PATCH 068/174] add support for enum classes --- src/json.hpp | 21 ++++++++++++--- test/src/unit-udt.cpp | 62 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 12 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 35d3d0a60..e60340299 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -122,6 +122,17 @@ using uncvref_t = remove_cv_t<remove_reference_t<T>>; template <bool If, typename Then, typename Else> using conditional_t = typename std::conditional<If, Then, Else>::type; +// Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait +template <typename T> +using is_scoped_enum = + std::integral_constant<bool, not std::is_convertible<T, int>::value and + std::is_enum<T>::value>; + +template <typename T> +using is_unscoped_enum = + std::integral_constant<bool, std::is_convertible<T, int>::value and + std::is_enum<T>::value>; + // TODO update this doc /*! @brief unnamed namespace with internal helper functions @@ -130,6 +141,10 @@ using conditional_t = typename std::conditional<If, Then, Else>::type; namespace detail { +// Very useful construct against boilerplate (more boilerplate needed than in C++17: http://en.cppreference.com/w/cpp/types/void_t) +template <typename...> struct make_void { using type = void; }; +template <typename... Ts> using void_t = typename make_void<Ts...>::type; + // Implementation of 3 C++17 constructs: conjunction, disjunction, negation. // This is needed to avoid evaluating all the traits in a condition // @@ -277,6 +292,7 @@ template <typename T, typename BasicJson> struct is_compatible_basic_json_type { static auto constexpr value = + is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or std::is_constructible<typename BasicJson::string_t, T>::value or std::is_same<typename BasicJson::boolean_t, T>::value or @@ -1601,7 +1617,6 @@ class basic_json not detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and - not std::is_enum<uncvref_t<T>>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::has_to_json<JSONSerializer, basic_json, @@ -1774,8 +1789,8 @@ class basic_json @since version 1.0.0 */ - // Quickfix, accept every enum type, without looking if a to_json method is provided... - template <typename T, enable_if_t<std::is_enum<T>::value, int> = 0> + // Constructor for unscoped enums (not enum classes) + template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> basic_json(T val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 81fae3eed..df0e47dd5 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -35,6 +35,13 @@ SOFTWARE. namespace udt { + enum class country + { + china, + france, + russia + }; + struct age { int m_val; @@ -54,6 +61,7 @@ namespace udt { age m_age; name m_name; + country m_country; }; struct contact @@ -69,7 +77,7 @@ namespace udt }; } -// to_json methods for default basic_json +// to_json methods namespace udt { void to_json(nlohmann::json& j, age a) @@ -82,10 +90,26 @@ namespace udt j = n.m_val; } + void to_json(nlohmann::json& j, country c) + { + switch (c) + { + case country::china: + j = u8"中华人民共和国"; + return; + case country::france: + j = "France"; + return; + case country::russia: + j = u8"Российская Федерация"; + return; + } + } + void to_json(nlohmann::json& j, person const& p) { using nlohmann::json; - j = json{{"age", p.m_age}, {"name", p.m_name}}; + j = json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; } void to_json(nlohmann::json& j, address const& a) @@ -139,7 +163,7 @@ namespace udt } } -// from_json methods for default basic_json +// from_json methods namespace udt { void from_json(nlohmann::json const& j, age &a) @@ -152,10 +176,24 @@ namespace udt n.m_val = j.get<std::string>(); } + void from_json(nlohmann::json const &j, country &c) + { + const auto str = j.get<std::string>(); + static const std::map<std::string, country> m = { + {u8"中华人民共和国", country::china}, + {"France", country::france}, + {"Российская Федерация", country::russia}}; + + const auto it = m.find(str); + // TODO test exceptions + c = it->second; + } + void from_json(nlohmann::json const& j, person &p) { p.m_age = j["age"].get<age>(); p.m_name = j["name"].get<name>(); + p.m_country = j["country"].get<country>(); } void from_json(nlohmann::json const &j, address &a) @@ -183,29 +221,33 @@ TEST_CASE("basic usage", "[udt]") // a bit narcissic maybe :) ? const udt::age a{23}; const udt::name n{"theo"}; - const udt::person sfinae_addict{a, n}; + const udt::country c{udt::country::france}; + const udt::person sfinae_addict{a, n, c}; + const udt::person senior_programmer{{42}, {u8"王芳"}, udt::country::china}; const udt::address addr{"Paris"}; const udt::contact cpp_programmer{sfinae_addict, addr}; - const udt::contact_book book{{"C++"}, {cpp_programmer, cpp_programmer}}; + const udt::contact_book book{{"C++"}, {cpp_programmer, {senior_programmer, addr}}}; SECTION("conversion to json via free-functions") { CHECK(json(a) == json(23)); CHECK(json(n) == json("theo")); - CHECK(json(sfinae_addict) == R"({"name":"theo", "age":23})"_json); + CHECK(json(c) == json("France")); + CHECK(json(sfinae_addict) == R"({"name":"theo", "age":23, "country":"France"})"_json); CHECK(json("Paris") == json(addr)); CHECK(json(cpp_programmer) == - R"({"person" : {"age":23, "name":"theo"}, "address":"Paris"})"_json); + R"({"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"})"_json); CHECK( json(book) == - R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo"}, "address":"Paris"}, {"person" : {"age":23, "name":"theo"}, "address":"Paris"}]})"_json); + R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json); + } SECTION("conversion from json via free-functions") { const auto big_json = - R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo"}, "address":"Paris"}, {"person" : {"age":23, "name":"theo"}, "address":"Paris"}]})"_json; + R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; const auto parsed_book = big_json.get<udt::contact_book>(); const auto book_name = big_json["name"].get<udt::name>(); const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); @@ -214,10 +256,12 @@ TEST_CASE("basic usage", "[udt]") const auto person = contact_json["person"].get<udt::person>(); const auto address = contact_json["address"].get<udt::address>(); const auto age = contact_json["person"]["age"].get<udt::age>(); + const auto country = contact_json["person"]["country"].get<udt::country>(); const auto name = contact_json["person"]["name"].get<udt::name>(); CHECK(age == a); CHECK(name == n); + CHECK(country == c); CHECK(address == addr); CHECK(person == sfinae_addict); CHECK(contact == cpp_programmer); From 7e750ec1fa0e40271a3948e0b8cf4bcacee33994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 14 Dec 2016 21:53:10 +0100 Subject: [PATCH 069/174] fix msvc, by doubling parenthesis on catch assertions --- test/src/unit-class_lexer.cpp | 130 +++++++++++++++++----------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 33ea610a5..40867b19d 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -38,86 +38,86 @@ TEST_CASE("lexer class") { SECTION("structural characters") { - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("["), - 1).scan() == json::lexer::token_type::begin_array); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("]"), - 1).scan() == json::lexer::token_type::end_array); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("{"), - 1).scan() == json::lexer::token_type::begin_object); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("}"), - 1).scan() == json::lexer::token_type::end_object); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(","), - 1).scan() == json::lexer::token_type::value_separator); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(":"), - 1).scan() == json::lexer::token_type::name_separator); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("["), + 1).scan() == json::lexer::token_type::begin_array)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("]"), + 1).scan() == json::lexer::token_type::end_array)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("{"), + 1).scan() == json::lexer::token_type::begin_object)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("}"), + 1).scan() == json::lexer::token_type::end_object)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(","), + 1).scan() == json::lexer::token_type::value_separator)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(":"), + 1).scan() == json::lexer::token_type::name_separator)); } SECTION("literal names") { - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("null"), - 4).scan() == json::lexer::token_type::literal_null); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("true"), - 4).scan() == json::lexer::token_type::literal_true); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("false"), - 5).scan() == json::lexer::token_type::literal_false); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("null"), + 4).scan() == json::lexer::token_type::literal_null)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("true"), + 4).scan() == json::lexer::token_type::literal_true)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("false"), + 5).scan() == json::lexer::token_type::literal_false)); } SECTION("numbers") { - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("0"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("2"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("3"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("4"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("5"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("6"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("7"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("8"), - 1).scan() == json::lexer::token_type::value_number); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("9"), - 1).scan() == json::lexer::token_type::value_number); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("0"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("2"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("3"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("4"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("5"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("6"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("7"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("8"), + 1).scan() == json::lexer::token_type::value_number)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("9"), + 1).scan() == json::lexer::token_type::value_number)); } SECTION("whitespace") { // result is end_of_input, because not token is following - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" "), - 1).scan() == json::lexer::token_type::end_of_input); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\t"), - 1).scan() == json::lexer::token_type::end_of_input); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\n"), - 1).scan() == json::lexer::token_type::end_of_input); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\r"), - 1).scan() == json::lexer::token_type::end_of_input); - CHECK(json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" \t\n\r\n\t "), - 7).scan() == json::lexer::token_type::end_of_input); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" "), + 1).scan() == json::lexer::token_type::end_of_input)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\t"), + 1).scan() == json::lexer::token_type::end_of_input)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\n"), + 1).scan() == json::lexer::token_type::end_of_input)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\r"), + 1).scan() == json::lexer::token_type::end_of_input)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" \t\n\r\n\t "), + 7).scan() == json::lexer::token_type::end_of_input)); } } SECTION("token_type_name") { - CHECK(json::lexer::token_type_name(json::lexer::token_type::uninitialized) == "<uninitialized>"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::literal_true) == "true literal"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::literal_false) == "false literal"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::literal_null) == "null literal"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::value_string) == "string literal"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::value_number) == "number literal"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::begin_array) == "'['"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::begin_object) == "'{'"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::end_array) == "']'"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::end_object) == "'}'"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::name_separator) == "':'"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::value_separator) == "','"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::parse_error) == "<parse error>"); - CHECK(json::lexer::token_type_name(json::lexer::token_type::end_of_input) == "end of input"); + CHECK((json::lexer::token_type_name(json::lexer::token_type::uninitialized) == "<uninitialized>")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_true) == "true literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_false) == "false literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_null) == "null literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_string) == "string literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_number) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_array) == "'['")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_object) == "'{'")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::end_array) == "']'")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::end_object) == "'}'")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::name_separator) == "':'")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_separator) == "','")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::parse_error) == "<parse error>")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::end_of_input) == "end of input")); } SECTION("parse errors on first character") @@ -150,7 +150,7 @@ TEST_CASE("lexer class") case ('8'): case ('9'): { - CHECK(res != json::lexer::token_type::parse_error); + CHECK((res != json::lexer::token_type::parse_error)); break; } @@ -160,14 +160,14 @@ TEST_CASE("lexer class") case ('\n'): case ('\r'): { - CHECK(res == json::lexer::token_type::end_of_input); + CHECK((res == json::lexer::token_type::end_of_input)); break; } // anything else is not expected default: { - CHECK(res == json::lexer::token_type::parse_error); + CHECK((res == json::lexer::token_type::parse_error)); break; } } From 1c21c87e6fe4a65268c8eae598587af5aec8f5ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Wed, 14 Dec 2016 22:08:36 +0100 Subject: [PATCH 070/174] use u8 prefix in unit-udt.cpp --- test/src/unit-udt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index df0e47dd5..e860cc896 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -240,14 +240,14 @@ TEST_CASE("basic usage", "[udt]") CHECK( json(book) == - R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json); + u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json); } SECTION("conversion from json via free-functions") { const auto big_json = - R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; + u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; const auto parsed_book = big_json.get<udt::contact_book>(); const auto book_name = big_json["name"].get<udt::name>(); const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); From d5ee5830eddc2ec86a2661c3ca644965e176e17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Thu, 15 Dec 2016 00:06:37 +0100 Subject: [PATCH 071/174] add more tests --- test/src/unit-udt.cpp | 249 +++++++++++++++++++++++++++++++++--------- 1 file changed, 199 insertions(+), 50 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index e860cc896..9ead6eba0 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -33,6 +33,8 @@ SOFTWARE. #include "json.hpp" +using nlohmann::json; + namespace udt { enum class country @@ -80,17 +82,21 @@ namespace udt // to_json methods namespace udt { - void to_json(nlohmann::json& j, age a) + // templates because of the custom_json tests (see below) + template <typename Json> + void to_json(Json& j, age a) { j = a.m_val; } - void to_json(nlohmann::json& j, name const& n) + template <typename Json> + void to_json(Json& j, name const& n) { j = n.m_val; } - void to_json(nlohmann::json& j, country c) + template <typename Json> + void to_json(Json& j, country c) { switch (c) { @@ -106,10 +112,10 @@ namespace udt } } - void to_json(nlohmann::json& j, person const& p) + template <typename Json> + void to_json(Json& j, person const& p) { - using nlohmann::json; - j = json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; + j = Json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; } void to_json(nlohmann::json& j, address const& a) @@ -119,13 +125,11 @@ namespace udt void to_json(nlohmann::json& j, contact const& c) { - using nlohmann::json; j = json{{"person", c.m_person}, {"address", c.m_address}}; } void to_json(nlohmann::json& j, contact_book const& cb) { - using nlohmann::json; j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; } @@ -166,17 +170,20 @@ namespace udt // from_json methods namespace udt { - void from_json(nlohmann::json const& j, age &a) + template <typename Json> + void from_json(Json const& j, age &a) { a.m_val = j.get<int>(); } - void from_json(nlohmann::json const& j, name &n) + template <typename Json> + void from_json(Json const& j, name &n) { n.m_val = j.get<std::string>(); } - void from_json(nlohmann::json const &j, country &c) + template <typename Json> + void from_json(Json const &j, country &c) { const auto str = j.get<std::string>(); static const std::map<std::string, country> m = { @@ -189,7 +196,8 @@ namespace udt c = it->second; } - void from_json(nlohmann::json const& j, person &p) + template <typename Json> + void from_json(Json const& j, person &p) { p.m_age = j["age"].get<age>(); p.m_name = j["name"].get<name>(); @@ -216,7 +224,6 @@ namespace udt TEST_CASE("basic usage", "[udt]") { - using nlohmann::json; // a bit narcissic maybe :) ? const udt::age a{23}; @@ -273,34 +280,6 @@ TEST_CASE("basic usage", "[udt]") namespace udt { -template <typename T> -class optional_type -{ -public: - optional_type() = default; - optional_type(T t) { _impl = std::make_shared<T>(std::move(t)); } - optional_type(std::nullptr_t) { _impl = nullptr; } - - optional_type &operator=(std::nullptr_t) - { - _impl = nullptr; - return *this; - } - - optional_type& operator=(T t) - { - _impl = std::make_shared<T>(std::move(t)); - return *this; - } - - explicit operator bool() const noexcept { return _impl != nullptr; } - T const &operator*() const noexcept { return *_impl; } - T &operator*() noexcept { return *_impl; } - -private: - std::shared_ptr<T> _impl; -}; - struct legacy_type { std::string number; @@ -310,9 +289,9 @@ struct legacy_type namespace nlohmann { template <typename T> -struct adl_serializer<udt::optional_type<T>> +struct adl_serializer<std::shared_ptr<T>> { - static void to_json(json& j, udt::optional_type<T> const& opt) + static void to_json(json& j, std::shared_ptr<T> const& opt) { if (opt) j = *opt; @@ -320,12 +299,12 @@ struct adl_serializer<udt::optional_type<T>> j = nullptr; } - static void from_json(json const &j, udt::optional_type<T> &opt) + static void from_json(json const &j, std::shared_ptr<T> &opt) { if (j.is_null()) opt = nullptr; else - opt = j.get<T>(); + opt.reset(new T(j.get<T>())); } }; @@ -346,18 +325,17 @@ struct adl_serializer<udt::legacy_type> TEST_CASE("adl_serializer specialization", "[udt]") { - using nlohmann::json; SECTION("partial specialization") { SECTION("to_json") { - udt::optional_type<udt::person> optPerson; + std::shared_ptr<udt::person> optPerson; json j = optPerson; CHECK(j.is_null()); - optPerson = udt::person{{42}, {"John Doe"}}; + optPerson.reset(new udt::person{{42}, {"John Doe"}}); j = optPerson; CHECK_FALSE(j.is_null()); @@ -369,12 +347,12 @@ TEST_CASE("adl_serializer specialization", "[udt]") auto person = udt::person{{42}, {"John Doe"}}; json j = person; - auto optPerson = j.get<udt::optional_type<udt::person>>(); + auto optPerson = j.get<std::shared_ptr<udt::person>>(); REQUIRE(optPerson); CHECK(*optPerson == person); j = nullptr; - optPerson = j.get<udt::optional_type<udt::person>>(); + optPerson = j.get<std::shared_ptr<udt::person>>(); CHECK(!optPerson); } } @@ -397,3 +375,174 @@ TEST_CASE("adl_serializer specialization", "[udt]") } } } + +namespace nlohmann +{ +// this might work in the future, not in the scope of this PR though +// we have to make this very clear in the doc +template <typename T> +struct adl_serializer<std::vector<T>> +{ + static void to_json(json& j, std::vector<T> const& opt) + { + } + + static void from_json(json const &j, std::vector<T> &opt) + { + } +}; +} + +TEST_CASE("current supported types are preferred over specializations", "[udt]") +{ + + json j = std::vector<int>{1, 2, 3}; + auto f = j.get<std::vector<int>>(); + CHECK((f == std::vector<int>{1, 2, 3})); +} + +namespace nlohmann +{ +template <typename T> +struct adl_serializer<std::unique_ptr<T>> +{ + static void to_json(json& j, std::unique_ptr<T> const& opt) + { + if (opt) + j = *opt; + else + j = nullptr; + } + + // this is the overload needed for non-copyable types, + // should we add a priority tag in the implementation to prefer this overload if it exists? + static std::unique_ptr<T> from_json(json const &j) + { + if (j.is_null()) + return nullptr; + else + return std::unique_ptr<T>(new T(j.get<T>())); + } +}; +} + +TEST_CASE("Non-copyable types", "[udt]") +{ + SECTION("to_json") + { + std::unique_ptr<udt::person> optPerson; + + json j = optPerson; + CHECK(j.is_null()); + + optPerson.reset(new udt::person{{42}, {"John Doe"}}); + j = optPerson; + CHECK_FALSE(j.is_null()); + + CHECK(j.get<udt::person>() == *optPerson); + } + + SECTION("from_json") + { + auto person = udt::person{{42}, {"John Doe"}}; + json j = person; + + auto optPerson = j.get<std::unique_ptr<udt::person>>(); + REQUIRE(optPerson); + CHECK(*optPerson == person); + + j = nullptr; + optPerson = j.get<std::unique_ptr<udt::person>>(); + CHECK(!optPerson); + } +} + +// custom serializer +// advanced usage (I did not have a real use case in mind) +template <typename T, typename = typename std::enable_if<std::is_pod<T>::value>::type> +struct pod_serializer +{ + // I could forward-declare this struct, and add a basic_json alias + template <typename Json> + static void from_json(Json const& j , T& t) + { + auto value = j.template get<std::uint64_t>(); + auto bytes = static_cast<char*>(static_cast<void*>(&value)); + std::memcpy(&t, bytes, sizeof(value)); + } + + template <typename Json> + static void to_json(Json& j, T const& t) + { + auto bytes = static_cast<char const*>(static_cast<void const*>(&t)); + std::uint64_t value = bytes[0]; + for (auto i = 1; i < 8; ++i) + value |= bytes[i] << 8 * i; + + j = value; + } +}; + +namespace udt +{ +struct small_pod +{ + int begin; + char middle; + short end; +}; + +bool operator==(small_pod lhs, small_pod rhs) +{ + return std::tie(lhs.begin, lhs.middle, lhs.end) == + std::tie(lhs.begin, lhs.middle, lhs.end); +} +} + +TEST_CASE("custom serializer for pods", "[udt]") +{ + using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, pod_serializer>; + + auto p = udt::small_pod{42, '/', 42}; + custom_json j = p; + + auto p2 = j.get<udt::small_pod>(); + + CHECK(p == p2); +} + +template <typename T, typename> +struct another_adl_serializer; + + using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, another_adl_serializer>; + +template <typename T, typename> +struct another_adl_serializer +{ + static void from_json(custom_json const& j , T& t) + { + using nlohmann::from_json; + from_json(j, t); + } + + static void to_json(custom_json& j , T const& t) + { + using nlohmann::to_json; + to_json(j, t); + } +}; + +TEST_CASE("custom serializer that does adl by default", "[udt]") +{ + using json = nlohmann::json; + + auto me = udt::person{23, "theo", udt::country::france}; + + json j = me; + custom_json cj = me; + + CHECK(j.dump() == cj.dump()); + + CHECK(me == j.get<udt::person>()); + CHECK(me == cj.get<udt::person>()); +} From aa2679a8ce1f92b107907cd188762d3c7b0ee9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Thu, 15 Dec 2016 12:22:53 +0100 Subject: [PATCH 072/174] fix tests, avoid instantiating JSONSerializer when it will not be used --- src/json.hpp | 19 ++++++++++--------- test/src/unit-udt.cpp | 14 +++++++------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index e60340299..f883d9ed0 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1614,13 +1614,14 @@ class basic_json template < typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and - not detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and + + detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>::value, + uncvref_t<T>>>::value, int> = 0> basic_json(T &&val) { @@ -3311,10 +3312,10 @@ class basic_json template < typename T, - enable_if_t<not detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>::value and + enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>::value, + uncvref_t<T>>>::value, int> = 0> auto get() const -> uncvref_t<T> { @@ -3331,10 +3332,10 @@ class basic_json // This overload is chosen for non-default constructible user-defined-types template < typename T, - enable_if_t<not detail::is_compatible_basic_json_type< - T, basic_json_t>::value and + enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, detail::has_non_default_from_json<JSONSerializer, basic_json_t, - T>::value, + uncvref_t<T>>>::value, short> = 0> T get() const { diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 9ead6eba0..364c5ae7b 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -27,6 +27,7 @@ SOFTWARE. */ #include <array> +#include <map> #include <string> #include <memory> #include "catch.hpp" @@ -173,19 +174,19 @@ namespace udt template <typename Json> void from_json(Json const& j, age &a) { - a.m_val = j.get<int>(); + a.m_val = j.template get<int>(); } template <typename Json> void from_json(Json const& j, name &n) { - n.m_val = j.get<std::string>(); + n.m_val = j.template get<std::string>(); } template <typename Json> void from_json(Json const &j, country &c) { - const auto str = j.get<std::string>(); + const auto str = j.template get<std::string>(); static const std::map<std::string, country> m = { {u8"中华人民共和国", country::china}, {"France", country::france}, @@ -199,9 +200,9 @@ namespace udt template <typename Json> void from_json(Json const& j, person &p) { - p.m_age = j["age"].get<age>(); - p.m_name = j["name"].get<name>(); - p.m_country = j["country"].get<country>(); + p.m_age = j["age"].template get<age>(); + p.m_name = j["name"].template get<name>(); + p.m_country = j["country"].template get<country>(); } void from_json(nlohmann::json const &j, address &a) @@ -325,7 +326,6 @@ struct adl_serializer<udt::legacy_type> TEST_CASE("adl_serializer specialization", "[udt]") { - SECTION("partial specialization") { SECTION("to_json") From be1d3de49be7cf8453171b9c0bc5149a6404c68d Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sun, 18 Dec 2016 20:32:09 +0100 Subject: [PATCH 073/174] :lipstick: moved changes to re2c file and ran `make pretty` --- src/json.hpp | 6315 +++++++++++++++++---------------- src/json.hpp.re2c | 4716 +++++++++++++----------- test/src/unit-class_lexer.cpp | 48 +- test/src/unit-udt.cpp | 623 ++-- 4 files changed, 6100 insertions(+), 5602 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f883d9ed0..7325e7c89 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -126,12 +126,12 @@ using conditional_t = typename std::conditional<If, Then, Else>::type; template <typename T> using is_scoped_enum = std::integral_constant<bool, not std::is_convertible<T, int>::value and - std::is_enum<T>::value>; + std::is_enum<T>::value>; template <typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and - std::is_enum<T>::value>; + std::is_enum<T>::value>; // TODO update this doc /*! @@ -142,7 +142,10 @@ using is_unscoped_enum = namespace detail { // Very useful construct against boilerplate (more boilerplate needed than in C++17: http://en.cppreference.com/w/cpp/types/void_t) -template <typename...> struct make_void { using type = void; }; +template <typename...> struct make_void +{ + using type = void; +}; template <typename... Ts> using void_t = typename make_void<Ts...>::type; // Implementation of 3 C++17 constructs: conjunction, disjunction, negation. @@ -160,14 +163,14 @@ template <class...> struct conjunction : std::true_type {}; template <class B1> struct conjunction<B1> : B1 {}; template <class B1, class... Bn> struct conjunction<B1, Bn...> - : conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; +: conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; -template <class B> struct negation : std::integral_constant<bool, !B::value> {}; +template <class B> struct negation : std::integral_constant < bool, !B::value > {}; template <class...> struct disjunction : std::false_type {}; template <class B1> struct disjunction<B1> : B1 {}; template <class B1, class... Bn> struct disjunction<B1, Bn...> - : conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; +: conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; /*! @brief Helper to determine whether there's a key_type for T. @@ -178,17 +181,17 @@ contains a `mapped_type`, whereas `std::vector` fails the test. @since version 1.0.0, overworked in version 2.0.6 */ #define NLOHMANN_JSON_HAS_HELPER(type) \ - template <typename T> struct has_##type { \ - private: \ - template <typename U, typename = typename U::type> \ - static int detect(U &&); \ - \ - static void detect(...); \ - \ - public: \ - static constexpr bool value = \ - std::is_integral<decltype(detect(std::declval<T>()))>::value; \ - }; + template <typename T> struct has_##type { \ + private: \ + template <typename U, typename = typename U::type> \ + static int detect(U &&); \ + \ + static void detect(...); \ + \ + public: \ + static constexpr bool value = \ + std::is_integral<decltype(detect(std::declval<T>()))>::value; \ + }; NLOHMANN_JSON_HAS_HELPER(mapped_type) NLOHMANN_JSON_HAS_HELPER(key_type) @@ -198,122 +201,122 @@ NLOHMANN_JSON_HAS_HELPER(iterator) #undef NLOHMANN_JSON_HAS_HELPER template <bool B, class RealType, class CompatibleObjectType> -struct is_compatible_object_type_impl : std::false_type{}; +struct is_compatible_object_type_impl : std::false_type {}; template <class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> { - static constexpr auto value = - std::is_constructible<typename RealType::key_type, - typename CompatibleObjectType::key_type>::value and - std::is_constructible<typename RealType::mapped_type, - typename CompatibleObjectType::mapped_type>::value; + static constexpr auto value = + std::is_constructible<typename RealType::key_type, + typename CompatibleObjectType::key_type>::value and + std::is_constructible<typename RealType::mapped_type, + typename CompatibleObjectType::mapped_type>::value; }; template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { - // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void - // hence the conjunction - static auto constexpr value = is_compatible_object_type_impl< - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - RealType, CompatibleObjectType>::value; + // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void + // hence the conjunction + static auto constexpr value = is_compatible_object_type_impl < + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + RealType, CompatibleObjectType >::value; }; template <bool B, class BasicJson, class CompatibleArrayType> -struct is_compatible_array_type_impl : std::false_type{}; +struct is_compatible_array_type_impl : std::false_type {}; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> { - static constexpr auto value = - not std::is_same<CompatibleArrayType, - typename BasicJson::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::const_iterator>::value; + static constexpr auto value = + not std::is_same<CompatibleArrayType, + typename BasicJson::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::const_iterator>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // the check for CompatibleArrayType = void is done in is_compatible_object_type - // but we need the conjunction here as well - static auto constexpr value = is_compatible_array_type_impl< - conjunction<negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType>::value; + // the check for CompatibleArrayType = void is done in is_compatible_object_type + // but we need the conjunction here as well + static auto constexpr value = is_compatible_array_type_impl < + conjunction<negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType >::value; }; template <bool, typename, typename> -struct is_compatible_integer_type_impl : std::false_type{}; +struct is_compatible_integer_type_impl : std::false_type {}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { - using RealLimits = std::numeric_limits<RealIntegerType>; - using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; + using RealLimits = std::numeric_limits<RealIntegerType>; + using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; - static constexpr auto value = - std::is_constructible<RealIntegerType, - CompatibleNumberIntegerType>::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; + static constexpr auto value = + std::is_constructible<RealIntegerType, + CompatibleNumberIntegerType>::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; }; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto value = is_compatible_integer_type_impl< - std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, - CompatibleNumberIntegerType>::value; + static constexpr auto value = is_compatible_integer_type_impl < + std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, + CompatibleNumberIntegerType >::value; }; template <typename RealFloat, typename CompatibleFloat> struct is_compatible_float_type { - static constexpr auto value = - std::is_constructible<RealFloat, CompatibleFloat>::value and - std::is_floating_point<CompatibleFloat>::value; + static constexpr auto value = + std::is_constructible<RealFloat, CompatibleFloat>::value and + std::is_floating_point<CompatibleFloat>::value; }; template <typename T, typename BasicJson> struct is_compatible_basic_json_type { - static auto constexpr value = - is_unscoped_enum<T>::value or - std::is_same<T, BasicJson>::value or - std::is_constructible<typename BasicJson::string_t, T>::value or - std::is_same<typename BasicJson::boolean_t, T>::value or - is_compatible_array_type<BasicJson, T>::value or - is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_float_type<typename BasicJson::number_float_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, - T>::value or - is_compatible_integer_type<typename BasicJson::number_unsigned_t, - T>::value; + static auto constexpr value = + is_unscoped_enum<T>::value or + std::is_same<T, BasicJson>::value or + std::is_constructible<typename BasicJson::string_t, T>::value or + std::is_same<typename BasicJson::boolean_t, T>::value or + is_compatible_array_type<BasicJson, T>::value or + is_compatible_object_type<typename BasicJson::object_t, T>::value or + is_compatible_float_type<typename BasicJson::number_float_t, T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, + T>::value or + is_compatible_integer_type<typename BasicJson::number_unsigned_t, + T>::value; }; template <typename T, typename BasicJson, typename PrimitiveIterator> struct is_basic_json_nested_class { - static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or - std::is_same<T, typename BasicJson::const_iterator>::value or - std::is_same<T, typename BasicJson::reverse_iterator>::value or - std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, PrimitiveIterator>::value or - std::is_same<T, typename BasicJson::json_pointer>::value; + static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or + std::is_same<T, typename BasicJson::const_iterator>::value or + std::is_same<T, typename BasicJson::reverse_iterator>::value or + std::is_same<T, typename BasicJson::const_reverse_iterator>::value or + std::is_same<T, PrimitiveIterator>::value or + std::is_same<T, typename BasicJson::json_pointer>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists @@ -321,17 +324,17 @@ template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json { -private: - // also check the return type of from_json - template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( - std::declval<Json>(), std::declval<T &>()))>::value>> - static int detect(U &&); + private: + // also check the return type of from_json + template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( + std::declval<Json>(), std::declval<T&>()))>::value>> + static int detect(U&&); - static void detect(...); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&) exists @@ -340,15 +343,15 @@ template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_non_default_from_json { -private: - template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> - static int detect(U &&); + private: + template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> + static int detect(U&&); - static void detect(...); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::to_json exists @@ -356,16 +359,16 @@ template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_to_json { -private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json &>(), std::declval<T>()))> - static int detect(U &&); + private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json&>(), std::declval<T>()))> + static int detect(U&&); - static void detect(...); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; }; // those declarations are needed to workaround a MSVC bug related to ADL @@ -375,26 +378,26 @@ void from_json(); struct to_json_fn { - // is it really useful to mark those as constexpr? - template <typename Json, typename T> - constexpr auto operator()(Json &&j, T &&val) const - noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) - -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), - void()) - { - return to_json(std::forward<Json>(j), std::forward<T>(val)); - } + // is it really useful to mark those as constexpr? + template <typename Json, typename T> + constexpr auto operator()(Json&& j, T&& val) const + noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) + -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), + void()) + { + return to_json(std::forward<Json>(j), std::forward<T>(val)); + } }; struct from_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json &&j, T &val) const - noexcept(noexcept(from_json(std::forward<Json>(j), val))) - -> decltype(from_json(std::forward<Json>(j), val), void()) - { - return from_json(std::forward<Json>(j), val); - } + template <typename Json, typename T> + constexpr auto operator()(Json&& j, T& val) const + noexcept(noexcept(from_json(std::forward<Json>(j), val))) + -> decltype(from_json(std::forward<Json>(j), val), void()) + { + return from_json(std::forward<Json>(j), val); + } }; /*! @@ -423,7 +426,7 @@ struct DecimalSeparator : std::numpunct<char> template <typename T> struct static_const { - static constexpr T value{}; + static constexpr T value{}; }; template <typename T> @@ -431,8 +434,8 @@ constexpr T static_const<T>::value; inline namespace { - constexpr auto const& to_json = static_const<detail::to_json_fn>::value; - constexpr auto const& from_json = static_const<detail::from_json_fn>::value; +constexpr auto const& to_json = static_const<detail::to_json_fn>::value; +constexpr auto const& from_json = static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -440,17 +443,17 @@ inline namespace template <typename = void, typename = void> struct adl_serializer { - template <typename Json, typename T> - static void from_json(Json&& j, T& val) - { - ::nlohmann::from_json(std::forward<Json>(j), val); - } + template <typename Json, typename T> + static void from_json(Json&& j, T& val) + { + ::nlohmann::from_json(std::forward<Json>(j), val); + } - template <typename Json, typename T> - static void to_json(Json& j, T&& val) - { - ::nlohmann::to_json(j, std::forward<T>(val)); - } + template <typename Json, typename T> + static void to_json(Json& j, T&& val) + { + ::nlohmann::to_json(j, std::forward<T>(val)); + } }; /*! @@ -1535,12 +1538,12 @@ class basic_json enable_if_t<detail::is_compatible_object_type< object_t, CompatibleObjectType>::value, int> = 0> - basic_json(const CompatibleObjectType &val) : m_type(value_t::object) + basic_json(const CompatibleObjectType& val) : m_type(value_t::object) { - using std::begin; - using std::end; - m_value.object = create<object_t>(begin(val), end(val)); - assert_invariant(); + using std::begin; + using std::end; + m_value.object = create<object_t>(begin(val), end(val)); + assert_invariant(); } /*! @@ -1598,12 +1601,12 @@ class basic_json enable_if_t<detail::is_compatible_array_type< basic_json_t, CompatibleArrayType>::value, int> = 0> - basic_json(const CompatibleArrayType &val) : m_type(value_t::array) + basic_json(const CompatibleArrayType& val) : m_type(value_t::array) { - using std::begin; - using std::end; - m_value.array = create<array_t>(begin(val), end(val)); - assert_invariant(); + using std::begin; + using std::end; + m_value.array = create<array_t>(begin(val), end(val)); + assert_invariant(); } @@ -1614,18 +1617,18 @@ class basic_json template < typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and - not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and + not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>>::value, - int> = 0> - basic_json(T &&val) + detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_to_json<JSONSerializer, basic_json, + uncvref_t<T>>>::value, + int> = 0 > + basic_json(T && val) { - JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } /*! @@ -1828,11 +1831,12 @@ class basic_json typename CompatibleNumberIntegerType, enable_if_t<detail::is_compatible_integer_type< number_integer_t, CompatibleNumberIntegerType>::value, - int> = 0> + int> = 0 > basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) { - assert_invariant(); + m_value(static_cast<number_integer_t>(val)) + { + assert_invariant(); } /*! @@ -1885,11 +1889,12 @@ class basic_json typename CompatibleNumberUnsignedType, enable_if_t<detail::is_compatible_integer_type< number_unsigned_t, CompatibleNumberUnsignedType>::value, - int> = 0> + int> = 0 > basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), - m_value(static_cast<number_unsigned_t>(val)) { - assert_invariant(); + m_value(static_cast<number_unsigned_t>(val)) + { + assert_invariant(); } /*! @@ -2123,7 +2128,7 @@ class basic_json @since version 1.0.0 */ static basic_json array(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::array); } @@ -2163,7 +2168,7 @@ class basic_json @since version 1.0.0 */ static basic_json object(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::object); } @@ -2504,7 +2509,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { // check that passed value is valid other.assert_invariant(); @@ -2521,59 +2526,65 @@ class basic_json template <typename T, enable_if_t<not detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>::value and detail::has_to_json<JSONSerializer, basic_json_t, uncvref_t<T>>::value>> - reference &operator=(T &&val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and + reference& operator=(T&& val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and std::is_nothrow_move_assignable<uncvref_t<T>>::value) { - static_assert(sizeof(T) == 0 , ""); - // I'm not sure this a is good practice... - return *this = basic_json_t{std::forward<T>(val)}; + static_assert(sizeof(T) == 0 , ""); + // I'm not sure this a is good practice... + return *this = basic_json_t{std::forward<T>(val)}; } - /*! - @brief destructor + /*! + @brief destructor - Destroys the JSON value and frees all allocated memory. + Destroys the JSON value and frees all allocated memory. - @complexity Linear. + @complexity Linear. - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - All stored elements are destroyed and all memory is freed. + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. - @since version 1.0.0 - */ - ~basic_json() { - assert_invariant(); + @since version 1.0.0 + */ + ~basic_json() + { + assert_invariant(); - switch (m_type) { - case value_t::object: { - AllocatorType<object_t> alloc; - alloc.destroy(m_value.object); - alloc.deallocate(m_value.object, 1); - break; - } + switch (m_type) + { + case value_t::object: + { + AllocatorType<object_t> alloc; + alloc.destroy(m_value.object); + alloc.deallocate(m_value.object, 1); + break; + } - case value_t::array: { - AllocatorType<array_t> alloc; - alloc.destroy(m_value.array); - alloc.deallocate(m_value.array, 1); - break; - } + case value_t::array: + { + AllocatorType<array_t> alloc; + alloc.destroy(m_value.array); + alloc.deallocate(m_value.array, 1); + break; + } - case value_t::string: { - AllocatorType<string_t> alloc; - alloc.destroy(m_value.string); - alloc.deallocate(m_value.string, 1); - break; - } + case value_t::string: + { + AllocatorType<string_t> alloc; + alloc.destroy(m_value.string); + alloc.deallocate(m_value.string, 1); + break; + } - default: { - // all other types need no specific destructor - break; - } - } + default: + { + // all other types need no specific destructor + break; + } + } } /// @} @@ -3025,15 +3036,15 @@ class basic_json /// get an array (explicit) template < class T, - typename std::enable_if< + typename std::enable_if < std::is_convertible<basic_json_t, typename T::value_type>::value and - not std::is_same<basic_json_t, - typename T::value_type>::value and - not std::is_arithmetic<T>::value and - not std::is_convertible<std::string, T>::value and - not detail::has_mapped_type<T>::value, - int>::type = 0> - T get_impl(T *) const + not std::is_same<basic_json_t, + typename T::value_type>::value and + not std::is_arithmetic<T>::value and + not std::is_convertible<std::string, T>::value and + not detail::has_mapped_type<T>::value, + int >::type = 0 > + T get_impl(T*) const { if (is_array()) { @@ -3305,41 +3316,41 @@ class basic_json template <typename ValueType, enable_if_t<not std::is_pointer<ValueType>::value, int> = 0> auto get() const - -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) + -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) { - return get_impl(static_cast<ValueType *>(nullptr)); + return get_impl(static_cast<ValueType*>(nullptr)); } template < typename T, enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - int> = 0> - auto get() const -> uncvref_t<T> + uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value, + int> = 0 > + auto get() const -> uncvref_t<T> { - using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value && - std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and " - "CopyConstructible when used with get"); - type ret; - JSONSerializer<type>::from_json(*this, ret); - return ret; + using type = uncvref_t<T>; + static_assert(std::is_default_constructible<type>::value&& + std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and " + "CopyConstructible when used with get"); + type ret; + JSONSerializer<type>::from_json(*this, ret); + return ret; } // This overload is chosen for non-default constructible user-defined-types template < typename T, enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_non_default_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - short> = 0> - T get() const + uncvref_t<T>, basic_json_t>>, + detail::has_non_default_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value, + short> = 0 > + T get() const { - return JSONSerializer<T>::from_json(*this); + return JSONSerializer<T>::from_json(*this); } /*! @@ -3421,8 +3432,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -3449,8 +3460,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -4503,14 +4514,14 @@ class basic_json case value_t::object: { result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); + last.m_it.object_iterator); break; } case value_t::array: { result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); + last.m_it.array_iterator); break; } @@ -5727,9 +5738,9 @@ class basic_json // insert to array and return iterator iterator result(this); result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); return result; } @@ -5799,7 +5810,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { std::swap(m_type, other.m_type); std::swap(m_value, other.m_value); @@ -8399,13 +8410,13 @@ class basic_json o << (pretty_print ? ",\n" : ","); } o << string_t(new_indent, ' ') << "\"" - << escape_string(i->first) << "\":" - << (pretty_print ? " " : ""); - i->second.dump(o, pretty_print, indent_step, new_indent); + << escape_string(i->first) << "\":" + << (pretty_print ? " " : ""); + i->second.dump(o, pretty_print, indent_step, new_indent); } - // decrease indentation - if (pretty_print) + // decrease indentation + if (pretty_print) { new_indent -= indent_step; o << "\n"; @@ -8450,16 +8461,16 @@ class basic_json } o << string_t(new_indent, ' ') << "]"; - return; + return; } - case value_t::string: + case value_t::string: { o << string_t("\"") << escape_string(*m_value.string) << "\""; - return; + return; } - case value_t::boolean: + case value_t::boolean: { o << (m_value.boolean ? "true" : "false"); return; @@ -8533,126 +8544,126 @@ class basic_json */ class primitive_iterator_t { - public: + public: difference_type get_value() const noexcept - { - return m_it; - } - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } + { + return m_it; + } + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return (m_it == begin_value); - } + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return (m_it == begin_value); + } - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return (m_it == end_value); - } + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return (m_it == end_value); + } - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } - friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return !(lhs == rhs); - } + friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return !(lhs == rhs); + } - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } - friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it <= rhs.m_it; - } + friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it <= rhs.m_it; + } - friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it > rhs.m_it; - } + friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it > rhs.m_it; + } - friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it >= rhs.m_it; - } + friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it >= rhs.m_it; + } - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } - primitive_iterator_t& operator++(int) - { - m_it++; - return *this; - } + primitive_iterator_t& operator++(int) + { + m_it++; + return *this; + } - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } - primitive_iterator_t& operator--(int) - { - m_it--; - return *this; - } + primitive_iterator_t& operator--(int) + { + m_it--; + return *this; + } - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; - /// iterator as signed integer type - difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); - }; + /// iterator as signed integer type + difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); + }; /*! @brief an iterator value @@ -8672,104 +8683,104 @@ class basic_json /// create an uninitialized internal_iterator internal_iterator() noexcept - : object_iterator(), array_iterator(), primitive_iterator() - {} + : object_iterator(), array_iterator(), primitive_iterator() + {} }; /// proxy class for the iterator_wrapper functions template<typename IteratorType> class iteration_proxy { - private: + private: /// helper class for iteration class iteration_proxy_internal { - private: + private: /// the iterator IteratorType anchor; /// an index for arrays (used to create key names) size_t array_index = 0; - public: + public: explicit iteration_proxy_internal(IteratorType it) noexcept - : anchor(it) - {} + : anchor(it) + {} - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// inequality operator (needed for range-based for) + bool operator!= (const iteration_proxy_internal& o) const + { + return anchor != o.anchor; + } + + /// return key of the iterator + typename basic_json::string_t key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: { - return *this; + return std::to_string(array_index); } - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() + // use key from the object + case value_t::object: { - ++anchor; - ++array_index; - - return *this; + return anchor.key(); } - /// inequality operator (needed for range-based for) - bool operator!= (const iteration_proxy_internal& o) const + // use an empty key for all primitive types + default: { - return anchor != o.anchor; + return ""; } + } + } - /// return key of the iterator - typename basic_json::string_t key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - { - return std::to_string(array_index); - } - - // use key from the object - case value_t::object: - { - return anchor.key(); - } - - // use an empty key for all primitive types - default: - { - return ""; - } - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } }; - /// the container to iterate - typename IteratorType::reference container; + /// the container to iterate + typename IteratorType::reference container; - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) - {} + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) + {} - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } }; public: @@ -8793,7 +8804,7 @@ class basic_json @since version 1.0.0, simplified in version 2.0.9 */ template<typename U> - class iter_impl : public std::iterator<std::random_access_iterator_tag, U> + class iter_impl : public std::iterator<std::random_access_iterator_tag, U> { /// allow basic_json to access private members friend class basic_json; @@ -8803,19 +8814,19 @@ class basic_json or std::is_same<U, const basic_json>::value, "iter_impl only accepts (const) basic_json"); - public: + public: /// the type of the values when the iterator is dereferenced using value_type = typename basic_json::value_type; /// a type to represent differences between iterators using difference_type = typename basic_json::difference_type; /// defines a pointer to the type iterated over (value_type) using pointer = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_pointer, - typename basic_json::pointer>::type; + typename basic_json::const_pointer, + typename basic_json::pointer>::type; /// defines a reference to the type iterated over (value_type) using reference = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_reference, - typename basic_json::reference>::type; + typename basic_json::const_reference, + typename basic_json::reference>::type; /// the category of the iterator using iterator_category = std::bidirectional_iterator_tag; @@ -8829,566 +8840,566 @@ class basic_json @post The iterator is initialized; i.e. `m_object != nullptr`. */ explicit iter_impl(pointer object) noexcept - : m_object(object) + : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /* - Use operator `const_iterator` instead of `const_iterator(const iterator& - other) noexcept` to avoid two class definitions for @ref iterator and - @ref const_iterator. - - This function is only called if this class is an @ref iterator. If this - class is a @ref const_iterator this function is not called. - */ - operator const_iterator() const - { - const_iterator ret; - - if (m_object) - { - ret.m_object = m_object; - ret.m_it = m_it; + m_it.object_iterator = typename object_t::iterator(); + break; } - return ret; - } - - /*! - @brief copy constructor - @param[in] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief copy assignment - @param[in,out] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(iter_impl other) noexcept( - std::is_nothrow_move_constructible<pointer>::value and - std::is_nothrow_move_assignable<pointer>::value and - std::is_nothrow_move_constructible<internal_iterator>::value and - std::is_nothrow_move_assignable<internal_iterator>::value - ) - { - std::swap(m_object, other.m_object); - std::swap(m_it, other.m_it); - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } + m_it.array_iterator = typename array_t::iterator(); + break; + } - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case basic_json::value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; } } + } - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept + /* + Use operator `const_iterator` instead of `const_iterator(const iterator& + other) noexcept` to avoid two class definitions for @ref iterator and + @ref const_iterator. + + This function is only called if this class is an @ref iterator. If this + class is a @ref const_iterator this function is not called. + */ + operator const_iterator() const + { + const_iterator ret; + + if (m_object) { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } + ret.m_object = m_object; + ret.m_it = m_it; } - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const + return ret; + } + + /*! + @brief copy constructor + @param[in] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief copy assignment + @param[in,out] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(iter_impl other) noexcept( + std::is_nothrow_move_constructible<pointer>::value and + std::is_nothrow_move_assignable<pointer>::value and + std::is_nothrow_move_constructible<internal_iterator>::value and + std::is_nothrow_move_assignable<internal_iterator>::value + ) + { + std::swap(m_object, other.m_object); + std::swap(m_it, other.m_it); + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } - case basic_json::value_t::null: - { + case basic_json::value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } + } - default: + default: + { + if (m_it.primitive_iterator.is_begin()) { - if (m_it.primitive_iterator.is_begin()) - { - return *m_object; - } + return *m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } } } + } - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } - default: + default: + { + if (m_it.primitive_iterator.is_begin()) { - if (m_it.primitive_iterator.is_begin()) - { - return m_object; - } + return m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; } } - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator++(int) - { - auto result = *this; - ++(*this); - return result; - } + return *this; + } - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator--(int) + { + auto result = *this; + --(*this); + return result; + } - switch (m_object->m_type) + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; - } + std::advance(m_it.object_iterator, -1); + break; } - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - default: - { - --m_it.primitive_iterator; - break; - } + std::advance(m_it.array_iterator, -1); + break; } - return *this; + default: + { + --m_it.primitive_iterator; + break; + } } - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) - { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - return (m_it.object_iterator == other.m_it.object_iterator); - } - - case basic_json::value_t::array: - { - return (m_it.array_iterator == other.m_it.array_iterator); - } - - default: - { - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } } - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } + assert(m_object != nullptr); - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const + switch (m_object->m_type) { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + case basic_json::value_t::object: { + return (m_it.object_iterator == other.m_it.object_iterator); + } + + case basic_json::value_t::array: + { + return (m_it.array_iterator == other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } + } - assert(m_object != nullptr); + assert(m_object != nullptr); - switch (m_object->m_type) + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot compare order of object iterators")); - } + } - case basic_json::value_t::array: - { - return (m_it.array_iterator < other.m_it.array_iterator); - } + case basic_json::value_t::array: + { + return (m_it.array_iterator < other.m_it.array_iterator); + } - default: - { - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } + default: + { + return (m_it.primitive_iterator < other.m_it.primitive_iterator); } } + } - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } } - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } + } - case basic_json::value_t::array: - { - return m_it.array_iterator - other.m_it.array_iterator; - } + case basic_json::value_t::array: + { + return m_it.array_iterator - other.m_it.array_iterator; + } - default: - { - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } + default: + { + return m_it.primitive_iterator - other.m_it.primitive_iterator; } } + } - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); - } + } - case basic_json::value_t::array: - { - return *std::next(m_it.array_iterator, n); - } + case basic_json::value_t::array: + { + return *std::next(m_it.array_iterator, n); + } - case basic_json::value_t::null: - { + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } + } - default: + default: + { + if (m_it.primitive_iterator.get_value() == -n) { - if (m_it.primitive_iterator.get_value() == -n) - { - return *m_object; - } + return *m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } } } + } - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (m_object->is_object()) { - assert(m_object != nullptr); - - if (m_object->is_object()) - { - return m_it.object_iterator->first; - } + return m_it.object_iterator->first; + } JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); - } + } - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator m_it = internal_iterator(); - }; + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator m_it = internal_iterator(); + }; /*! @brief a template for a reverse iterator class @@ -9408,9 +9419,9 @@ class basic_json @since version 1.0.0 */ template<typename Base> - class json_reverse_iterator : public std::reverse_iterator<Base> + class json_reverse_iterator : public std::reverse_iterator<Base> { - public: + public: /// shortcut to the reverse iterator adaptor using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element @@ -9418,89 +9429,89 @@ class basic_json /// create reverse iterator from iterator json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) - {} + : base_iterator(it) + {} - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept - : base_iterator(it) - {} + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept + : base_iterator(it) + {} - /// post-increment (it++) - json_reverse_iterator operator++(int) - { - return base_iterator::operator++(1); - } + /// post-increment (it++) + json_reverse_iterator operator++(int) + { + return base_iterator::operator++(1); + } - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - base_iterator::operator++(); - return *this; - } + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + base_iterator::operator++(); + return *this; + } - /// post-decrement (it--) - json_reverse_iterator operator--(int) - { - return base_iterator::operator--(1); - } + /// post-decrement (it--) + json_reverse_iterator operator--(int) + { + return base_iterator::operator--(1); + } - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - base_iterator::operator--(); - return *this; - } + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + base_iterator::operator--(); + return *this; + } - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - base_iterator::operator+=(i); - return *this; - } + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + base_iterator::operator+=(i); + return *this; + } - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return this->base() - other.base(); - } + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return this->base() - other.base(); + } - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } - /// return the key of an object iterator - typename object_t::key_type key() const - { - auto it = --this->base(); - return it.key(); - } + /// return the key of an object iterator + typename object_t::key_type key() const + { + auto it = --this->base(); + return it.key(); + } - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } - }; + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } + }; private: @@ -9517,656 +9528,666 @@ class basic_json */ class lexer { - public: + public: /// token types for the parser enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input ///< indicating the end of the input buffer - }; + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_number, ///< a number -- use get_number() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input ///< indicating the end of the input buffer + }; - /// the char type to use in the lexer - using lexer_char_t = unsigned char; + /// the char type to use in the lexer + using lexer_char_t = unsigned char; - /// a lexer from a buffer with given length - lexer(const lexer_char_t* buff, const size_t len) noexcept - : m_content(buff) - { - assert(m_content != nullptr); - m_start = m_cursor = m_content; - m_limit = m_content + len; - } + /// a lexer from a buffer with given length + lexer(const lexer_char_t* buff, const size_t len) noexcept + : m_content(buff) + { + assert(m_content != nullptr); + m_start = m_cursor = m_content; + m_limit = m_content + len; + } - /// a lexer from an input stream - explicit lexer(std::istream& s) - : m_stream(&s), m_line_buffer() + /// a lexer from an input stream + explicit lexer(std::istream& s) + : m_stream(&s), m_line_buffer() + { + // immediately abort if stream is erroneous + if (s.fail()) { - // immediately abort if stream is erroneous - if (s.fail()) - { JSON_THROW(std::invalid_argument("stream error")); - } - - // fill buffer - fill_line_buffer(); - - // skip UTF-8 byte-order mark - if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") - { - m_line_buffer[0] = ' '; - m_line_buffer[1] = ' '; - m_line_buffer[2] = ' '; - } } - // switch off unwanted functions (due to pointer members) - lexer() = delete; - lexer(const lexer&) = delete; - lexer operator=(const lexer&) = delete; + // fill buffer + fill_line_buffer(); - /*! - @brief create a string from one or two Unicode code points - - There are two cases: (1) @a codepoint1 is in the Basic Multilingual - Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) - @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to - represent a code point above U+FFFF. - - @param[in] codepoint1 the code point (can be high surrogate) - @param[in] codepoint2 the code point (can be low surrogate or 0) - - @return string representation of the code point; the length of the - result string is between 1 and 4 characters. - - @throw std::out_of_range if code point is > 0x10ffff; example: `"code - points above 0x10FFFF are invalid"` - @throw std::invalid_argument if the low surrogate is invalid; example: - `""missing or wrong low surrogate""` - - @complexity Constant. - - @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> - */ - static string_t to_unicode(const std::size_t codepoint1, - const std::size_t codepoint2 = 0) + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") { - // calculate the code point from the given code points - std::size_t codepoint = codepoint1; + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; + } + } - // check if codepoint1 is a high surrogate - if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) - { - // check if codepoint2 is a low surrogate - if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) - { - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); - } - } + // switch off unwanted functions (due to pointer members) + lexer() = delete; + lexer(const lexer&) = delete; + lexer operator=(const lexer&) = delete; - string_t result; + /*! + @brief create a string from one or two Unicode code points - if (codepoint < 0x80) + There are two cases: (1) @a codepoint1 is in the Basic Multilingual + Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) + @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to + represent a code point above U+FFFF. + + @param[in] codepoint1 the code point (can be high surrogate) + @param[in] codepoint2 the code point (can be low surrogate or 0) + + @return string representation of the code point; the length of the + result string is between 1 and 4 characters. + + @throw std::out_of_range if code point is > 0x10ffff; example: `"code + points above 0x10FFFF are invalid"` + @throw std::invalid_argument if the low surrogate is invalid; example: + `""missing or wrong low surrogate""` + + @complexity Constant. + + @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> + */ + static string_t to_unicode(const std::size_t codepoint1, + const std::size_t codepoint2 = 0) + { + // calculate the code point from the given code points + std::size_t codepoint = codepoint1; + + // check if codepoint1 is a high surrogate + if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) + { + // check if codepoint2 is a low surrogate + if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) { - // 1-byte characters: 0xxxxxxx (ASCII) - result.append(1, static_cast<typename string_t::value_type>(codepoint)); - } - else if (codepoint <= 0x7ff) - { - // 2-byte characters: 110xxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0xffff) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0x10ffff) - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; } else { + JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); + } + } + + string_t result; + + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + result.append(1, static_cast<typename string_t::value_type>(codepoint)); + } + else if (codepoint <= 0x7ff) + { + // 2-byte characters: 110xxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0xffff) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0x10ffff) + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else + { JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); - } - - return result; } - /// return name of values of type token_type (only used for errors) - static std::string token_type_name(const token_type t) + return result; + } + + /// return name of values of type token_type (only used for errors) + static std::string token_type_name(const token_type t) + { + switch (t) { - switch (t) + case token_type::uninitialized: + return "<uninitialized>"; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_number: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return "<parse error>"; + case token_type::end_of_input: + return "end of input"; + default: { - case token_type::uninitialized: - return "<uninitialized>"; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case token_type::value_number: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return "<parse error>"; - case token_type::end_of_input: - return "end of input"; - default: + // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + } + + /*! + This function implements a scanner for JSON. It is specified using + regular expressions that try to follow RFC 7159 as close as possible. + These regular expressions are then translated into a minimized + deterministic finite automaton (DFA) by the tool + [re2c](http://re2c.org). As a result, the translated code for this + function consists of a large block of code with `goto` jumps. + + @return the class of the next token read from the buffer + + @complexity Linear in the length of the input.\n + + Proposition: The loop below will always terminate for finite input.\n + + Proof (by contradiction): Assume a finite input. To loop forever, the + loop must never hit code with a `break` statement. The only code + snippets without a `break` statement are the continue statements for + whitespace and byte-order-marks. To loop forever, the input must be an + infinite sequence of whitespace or byte-order-marks. This contradicts + the assumption of finite input, q.e.d. + */ + token_type scan() + { + while (true) + { + // pointer for backtracking information + m_marker = nullptr; + + // remember the begin of the token + m_start = m_cursor; + assert(m_start != nullptr); + + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { - // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) + { + fill_line_buffer(5); // LCOV_EXCL_LINE } - } - } - - /*! - This function implements a scanner for JSON. It is specified using - regular expressions that try to follow RFC 7159 as close as possible. - These regular expressions are then translated into a minimized - deterministic finite automaton (DFA) by the tool - [re2c](http://re2c.org). As a result, the translated code for this - function consists of a large block of code with `goto` jumps. - - @return the class of the next token read from the buffer - - @complexity Linear in the length of the input.\n - - Proposition: The loop below will always terminate for finite input.\n - - Proof (by contradiction): Assume a finite input. To loop forever, the - loop must never hit code with a `break` statement. The only code - snippets without a `break` statement are the continue statements for - whitespace and byte-order-marks. To loop forever, the input must be an - infinite sequence of whitespace or byte-order-marks. This contradicts - the assumption of finite input, q.e.d. - */ - token_type scan() - { - while (true) - { - // pointer for backtracking information - m_marker = nullptr; - - // remember the begin of the token - m_start = m_cursor; - assert(m_start != nullptr); - - + yych = *m_cursor; + if (yybm[0 + yych] & 32) { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = + goto basic_json_parser_6; + } + if (yych <= '[') + { + if (yych <= '-') { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) - { - fill_line_buffer(5); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - if (yych <= '[') - { - if (yych <= '-') + if (yych <= '"') { - if (yych <= '"') + if (yych <= 0x00) { - if (yych <= 0x00) - { - goto basic_json_parser_2; - } - if (yych <= '!') - { - goto basic_json_parser_4; - } - goto basic_json_parser_9; + goto basic_json_parser_2; } - else + if (yych <= '!') { - if (yych <= '+') - { - goto basic_json_parser_4; - } - if (yych <= ',') - { - goto basic_json_parser_10; - } - goto basic_json_parser_12; + goto basic_json_parser_4; } + goto basic_json_parser_9; } else { - if (yych <= '9') + if (yych <= '+') { - if (yych <= '/') - { - goto basic_json_parser_4; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - goto basic_json_parser_15; + goto basic_json_parser_4; } - else + if (yych <= ',') { - if (yych <= ':') - { - goto basic_json_parser_17; - } - if (yych <= 'Z') - { - goto basic_json_parser_4; - } - goto basic_json_parser_19; + goto basic_json_parser_10; } + goto basic_json_parser_12; } } else { - if (yych <= 'n') + if (yych <= '9') { - if (yych <= 'e') + if (yych <= '/') { - if (yych == ']') - { - goto basic_json_parser_21; - } goto basic_json_parser_4; } - else + if (yych <= '0') { - if (yych <= 'f') - { - goto basic_json_parser_23; - } - if (yych <= 'm') - { - goto basic_json_parser_4; - } - goto basic_json_parser_24; + goto basic_json_parser_13; } + goto basic_json_parser_15; } else { - if (yych <= 'z') + if (yych <= ':') + { + goto basic_json_parser_17; + } + if (yych <= 'Z') { - if (yych == 't') - { - goto basic_json_parser_25; - } - goto basic_json_parser_4; - } - else - { - if (yych <= '{') - { - goto basic_json_parser_26; - } - if (yych == '}') - { - goto basic_json_parser_28; - } goto basic_json_parser_4; } + goto basic_json_parser_19; } } + } + else + { + if (yych <= 'n') + { + if (yych <= 'e') + { + if (yych == ']') + { + goto basic_json_parser_21; + } + goto basic_json_parser_4; + } + else + { + if (yych <= 'f') + { + goto basic_json_parser_23; + } + if (yych <= 'm') + { + goto basic_json_parser_4; + } + goto basic_json_parser_24; + } + } + else + { + if (yych <= 'z') + { + if (yych == 't') + { + goto basic_json_parser_25; + } + goto basic_json_parser_4; + } + else + { + if (yych <= '{') + { + goto basic_json_parser_26; + } + if (yych == '}') + { + goto basic_json_parser_28; + } + goto basic_json_parser_4; + } + } + } basic_json_parser_2: - ++m_cursor; - { - last_token_type = token_type::end_of_input; - break; - } + ++m_cursor; + { + last_token_type = token_type::end_of_input; + break; + } basic_json_parser_4: - ++m_cursor; + ++m_cursor; basic_json_parser_5: - { - last_token_type = token_type::parse_error; - break; - } + { + last_token_type = token_type::parse_error; + break; + } basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - { - continue; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + { + continue; + } basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) - { - goto basic_json_parser_5; - } - if (yych <= 0x7F) - { - goto basic_json_parser_31; - } - if (yych <= 0xC1) - { - goto basic_json_parser_5; - } - if (yych <= 0xF4) - { - goto basic_json_parser_31; - } + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) + { goto basic_json_parser_5; + } + if (yych <= 0x7F) + { + goto basic_json_parser_31; + } + if (yych <= 0xC1) + { + goto basic_json_parser_5; + } + if (yych <= 0xF4) + { + goto basic_json_parser_31; + } + goto basic_json_parser_5; basic_json_parser_10: - ++m_cursor; - { - last_token_type = token_type::value_separator; - break; - } + ++m_cursor; + { + last_token_type = token_type::value_separator; + break; + } basic_json_parser_12: - yych = *++m_cursor; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_5; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + if (yych <= '9') + { + goto basic_json_parser_15; + } + goto basic_json_parser_5; +basic_json_parser_13: + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + } +basic_json_parser_14: + { + last_token_type = token_type::value_number; + break; + } +basic_json_parser_15: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 64) + { + goto basic_json_parser_15; + } + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } +basic_json_parser_17: + ++m_cursor; + { + last_token_type = token_type::name_separator; + break; + } +basic_json_parser_19: + ++m_cursor; + { + last_token_type = token_type::begin_array; + break; + } +basic_json_parser_21: + ++m_cursor; + { + last_token_type = token_type::end_array; + break; + } +basic_json_parser_23: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') + { + goto basic_json_parser_45; + } + goto basic_json_parser_5; +basic_json_parser_24: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') + { + goto basic_json_parser_46; + } + goto basic_json_parser_5; +basic_json_parser_25: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') + { + goto basic_json_parser_47; + } + goto basic_json_parser_5; +basic_json_parser_26: + ++m_cursor; + { + last_token_type = token_type::begin_object; + break; + } +basic_json_parser_28: + ++m_cursor; + { + last_token_type = token_type::end_object; + break; + } +basic_json_parser_30: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; +basic_json_parser_31: + if (yybm[0 + yych] & 128) + { + goto basic_json_parser_30; + } + if (yych <= 0xE0) + { + if (yych <= '\\') + { + if (yych <= 0x1F) + { + goto basic_json_parser_32; + } + if (yych <= '"') + { + goto basic_json_parser_33; + } + goto basic_json_parser_35; + } + else + { + if (yych <= 0xC1) + { + goto basic_json_parser_32; + } + if (yych <= 0xDF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_37; + } + } + else + { + if (yych <= 0xEF) + { + if (yych == 0xED) + { + goto basic_json_parser_39; + } + goto basic_json_parser_38; + } + else + { + if (yych <= 0xF0) + { + goto basic_json_parser_40; + } + if (yych <= 0xF3) + { + goto basic_json_parser_41; + } + if (yych <= 0xF4) + { + goto basic_json_parser_42; + } + } + } +basic_json_parser_32: + m_cursor = m_marker; + if (yyaccept == 0) + { + goto basic_json_parser_5; + } + else + { + goto basic_json_parser_14; + } +basic_json_parser_33: + ++m_cursor; + { + last_token_type = token_type::value_string; + break; + } +basic_json_parser_35: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'e') + { if (yych <= '/') { - goto basic_json_parser_5; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - if (yych <= '9') - { - goto basic_json_parser_15; - } - goto basic_json_parser_5; -basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') - { - if (yych == '.') + if (yych == '"') { - goto basic_json_parser_43; + goto basic_json_parser_30; } - } - else - { - if (yych <= 'E') + if (yych <= '.') { - goto basic_json_parser_44; + goto basic_json_parser_32; } - if (yych == 'e') - { - goto basic_json_parser_44; - } - } -basic_json_parser_14: - { - last_token_type = token_type::value_number; - break; - } -basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 64) - { - goto basic_json_parser_15; - } - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_17: - ++m_cursor; - { - last_token_type = token_type::name_separator; - break; - } -basic_json_parser_19: - ++m_cursor; - { - last_token_type = token_type::begin_array; - break; - } -basic_json_parser_21: - ++m_cursor; - { - last_token_type = token_type::end_array; - break; - } -basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') - { - goto basic_json_parser_45; - } - goto basic_json_parser_5; -basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') - { - goto basic_json_parser_46; - } - goto basic_json_parser_5; -basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') - { - goto basic_json_parser_47; - } - goto basic_json_parser_5; -basic_json_parser_26: - ++m_cursor; - { - last_token_type = token_type::begin_object; - break; - } -basic_json_parser_28: - ++m_cursor; - { - last_token_type = token_type::end_object; - break; - } -basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; -basic_json_parser_31: - if (yybm[0 + yych] & 128) - { goto basic_json_parser_30; } - if (yych <= 0xE0) + else { if (yych <= '\\') { - if (yych <= 0x1F) - { - goto basic_json_parser_32; - } - if (yych <= '"') - { - goto basic_json_parser_33; - } - goto basic_json_parser_35; - } - else - { - if (yych <= 0xC1) - { - goto basic_json_parser_32; - } - if (yych <= 0xDF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_37; - } - } - else - { - if (yych <= 0xEF) - { - if (yych == 0xED) - { - goto basic_json_parser_39; - } - goto basic_json_parser_38; - } - else - { - if (yych <= 0xF0) - { - goto basic_json_parser_40; - } - if (yych <= 0xF3) - { - goto basic_json_parser_41; - } - if (yych <= 0xF4) - { - goto basic_json_parser_42; - } - } - } -basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) - { - goto basic_json_parser_5; - } - else - { - goto basic_json_parser_14; - } -basic_json_parser_33: - ++m_cursor; - { - last_token_type = token_type::value_string; - break; - } -basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'e') - { - if (yych <= '/') - { - if (yych == '"') - { - goto basic_json_parser_30; - } - if (yych <= '.') + if (yych <= '[') { goto basic_json_parser_32; } @@ -10174,33 +10195,33 @@ basic_json_parser_35: } else { - if (yych <= '\\') + if (yych == 'b') { - if (yych <= '[') - { - goto basic_json_parser_32; - } goto basic_json_parser_30; } - else - { - if (yych == 'b') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } + goto basic_json_parser_32; } } + } + else + { + if (yych <= 'q') + { + if (yych <= 'f') + { + goto basic_json_parser_30; + } + if (yych == 'n') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } else { - if (yych <= 'q') + if (yych <= 's') { - if (yych <= 'f') - { - goto basic_json_parser_30; - } - if (yych == 'n') + if (yych <= 'r') { goto basic_json_parser_30; } @@ -10208,920 +10229,910 @@ basic_json_parser_35: } else { - if (yych <= 's') + if (yych <= 't') { - if (yych <= 'r') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; + goto basic_json_parser_30; } - else + if (yych <= 'u') { - if (yych <= 't') - { - goto basic_json_parser_30; - } - if (yych <= 'u') - { - goto basic_json_parser_48; - } - goto basic_json_parser_32; + goto basic_json_parser_48; } + goto basic_json_parser_32; } } + } basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_30; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x9F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x9F) + { goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x9F) - { - goto basic_json_parser_36; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { goto basic_json_parser_32; + } + if (yych <= 0x9F) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x8F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x8F) + { goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x8F) - { - goto basic_json_parser_38; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { goto basic_json_parser_32; + } + if (yych <= 0x8F) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } + yych = *++m_cursor; + if (yych <= '/') + { goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_32; basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') + yych = *++m_cursor; + if (yych <= ',') + { + if (yych == '+') { - if (yych == '+') - { - goto basic_json_parser_51; - } - goto basic_json_parser_32; - } - else - { - if (yych <= '-') - { - goto basic_json_parser_51; - } - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_32; - } -basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_54; + goto basic_json_parser_51; } goto basic_json_parser_32; -basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') + } + else + { + if (yych <= '-') { - goto basic_json_parser_55; + goto basic_json_parser_51; } - goto basic_json_parser_32; -basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') - { - goto basic_json_parser_56; - } - goto basic_json_parser_32; -basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_57; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } -basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'D') - { - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_51: - yych = *++m_cursor; if (yych <= '/') { goto basic_json_parser_32; } - if (yych >= ':') - { - goto basic_json_parser_32; - } -basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '/') - { - goto basic_json_parser_14; - } if (yych <= '9') { goto basic_json_parser_52; } - goto basic_json_parser_14; -basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') - { - goto basic_json_parser_58; - } goto basic_json_parser_32; -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_59; - } - goto basic_json_parser_32; -basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_61; - } - goto basic_json_parser_32; -basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_63; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } -basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_64; - } - goto basic_json_parser_32; -basic_json_parser_59: - ++m_cursor; - { - last_token_type = token_type::literal_null; - break; - } -basic_json_parser_61: - ++m_cursor; - { - last_token_type = token_type::literal_true; - break; - } -basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_66; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } -basic_json_parser_64: - ++m_cursor; - { - last_token_type = token_type::literal_false; - break; - } -basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_30; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } } - - } - - return last_token_type; - } - - /*! - @brief append data from the stream to the line buffer - - This function is called by the scan() function when the end of the - buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be - incremented without leaving the limits of the line buffer. Note re2c - decides when to call this function. - - If the lexer reads from contiguous storage, there is no trailing null - byte. Therefore, this function must make sure to add these padding - null bytes. - - If the lexer reads from an input stream, this function reads the next - line of the input. - - @pre - p p p p p p u u u u u x . . . . . . - ^ ^ ^ ^ - m_content m_start | m_limit - m_cursor - - @post - u u u u u x x x x x x x . . . . . . - ^ ^ ^ - | m_cursor m_limit - m_start - m_content - */ - void fill_line_buffer(size_t n = 0) - { - // if line buffer is used, m_content points to its data - assert(m_line_buffer.empty() - or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); - - // if line buffer is used, m_limit is set past the end of its data - assert(m_line_buffer.empty() - or m_limit == m_content + m_line_buffer.size()); - - // pointer relationships - assert(m_content <= m_start); - assert(m_start <= m_cursor); - assert(m_cursor <= m_limit); - assert(m_marker == nullptr or m_marker <= m_limit); - - // number of processed characters (p) - const auto num_processed_chars = static_cast<size_t>(m_start - m_content); - // offset for m_marker wrt. to m_start - const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; - // number of unprocessed characters (u) - const auto offset_cursor = m_cursor - m_start; - - // no stream is used or end of file is reached - if (m_stream == nullptr or m_stream->eof()) - { - // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right - // thing. See http://stackoverflow.com/q/28142011/266378 - m_line_buffer.assign(m_start, m_limit); - - // append n characters to make sure that there is sufficient - // space between m_cursor and m_limit - m_line_buffer.append(1, '\x00'); - if (n > 0) +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') { - m_line_buffer.append(n - 1, '\x01'); + goto basic_json_parser_54; } - } - else - { - // delete processed characters from line buffer - m_line_buffer.erase(0, num_processed_chars); - // read next line from input stream - m_line_buffer_tmp.clear(); - std::getline(*m_stream, m_line_buffer_tmp, '\n'); - - // add line with newline symbol to the line buffer - m_line_buffer += m_line_buffer_tmp; - m_line_buffer.push_back('\n'); - } - - // set pointers - m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); - assert(m_content != nullptr); - m_start = m_content; - m_marker = m_start + offset_marker; - m_cursor = m_start + offset_cursor; - m_limit = m_start + m_line_buffer.size(); - } - - /// return string representation of last read token - string_t get_token_string() const - { - assert(m_start != nullptr); - return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), - static_cast<size_t>(m_cursor - m_start)); - } - - /*! - @brief return string value for string tokens - - The function iterates the characters between the opening and closing - quotes of the string value. The complete string is the range - [m_start,m_cursor). Consequently, we iterate from m_start+1 to - m_cursor-1. - - We differentiate two cases: - - 1. Escaped characters. In this case, a new character is constructed - according to the nature of the escape. Some escapes create new - characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied - as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape - `"\\uxxxx"` need special care. In this case, to_unicode takes care - of the construction of the values. - 2. Unescaped characters are copied as is. - - @pre `m_cursor - m_start >= 2`, meaning the length of the last token - is at least 2 bytes which is trivially true for any string (which - consists of at least two quotes). - - " c1 c2 c3 ... " - ^ ^ - m_start m_cursor - - @complexity Linear in the length of the string.\n - - Lemma: The loop body will always terminate.\n - - Proof (by contradiction): Assume the loop body does not terminate. As - the loop body does not contain another loop, one of the called - functions must never return. The called functions are `std::strtoul` - and to_unicode. Neither function can loop forever, so the loop body - will never loop forever which contradicts the assumption that the loop - body does not terminate, q.e.d.\n - - Lemma: The loop condition for the for loop is eventually false.\n - - Proof (by contradiction): Assume the loop does not terminate. Due to - the above lemma, this can only be due to a tautological loop - condition; that is, the loop condition i < m_cursor - 1 must always be - true. Let x be the change of i for any loop iteration. Then - m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This - can be rephrased to m_cursor - m_start - 2 > x. With the - precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value - of i is strictly increasing with each iteration, as it is incremented - by 1 in the iteration expression and never decremented inside the loop - body. Hence, the loop condition will eventually be false which - contradicts the assumption that the loop condition is a tautology, - q.e.d. - - @return string value of current token without opening and closing - quotes - @throw std::out_of_range if to_unicode fails - */ - string_t get_string() const - { - assert(m_cursor - m_start >= 2); - - string_t result; - result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); - - // iterate the result between the quotes - for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) - { - // find next escape character - auto e = std::find(i, m_cursor - 1, '\\'); - if (e != i) + goto basic_json_parser_32; +basic_json_parser_46: + yych = *++m_cursor; + if (yych == 'l') { - // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 - for (auto k = i; k < e; k++) + goto basic_json_parser_55; + } + goto basic_json_parser_32; +basic_json_parser_47: + yych = *++m_cursor; + if (yych == 'u') + { + goto basic_json_parser_56; + } + goto basic_json_parser_32; +basic_json_parser_48: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') { - result.push_back(static_cast<typename string_t::value_type>(*k)); + goto basic_json_parser_32; } - i = e - 1; // -1 because of ++i + if (yych <= '9') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; } else { - // processing escaped character - // read next character - ++i; - - switch (*i) + if (yych <= 'F') { - // the default escapes - case 't': - { - result += "\t"; - break; - } - case 'b': - { - result += "\b"; - break; - } - case 'f': - { - result += "\f"; - break; - } - case 'n': - { - result += "\n"; - break; - } - case 'r': - { - result += "\r"; - break; - } - case '\\': - { - result += "\\"; - break; - } - case '/': - { - result += "/"; - break; - } - case '"': - { - result += "\""; - break; - } - - // unicode - case 'u': - { - // get code xxxx from uxxxx - auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), - 4).c_str(), nullptr, 16); - - // check if codepoint is a high surrogate - if (codepoint >= 0xD800 and codepoint <= 0xDBFF) - { - // make sure there is a subsequent unicode - if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') - { - JSON_THROW(std::invalid_argument("missing low surrogate")); - } - - // get code yyyy from uxxxx\uyyyy - auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> - (i + 7), 4).c_str(), nullptr, 16); - result += to_unicode(codepoint, codepoint2); - // skip the next 10 characters (xxxx\uyyyy) - i += 10; - } - else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) - { - // we found a lone low surrogate - JSON_THROW(std::invalid_argument("missing high surrogate")); - } - else - { - // add unicode character(s) - result += to_unicode(codepoint); - // skip the next four characters (xxxx) - i += 4; - } - break; - } + goto basic_json_parser_57; } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; } - } - - return result; - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - long double str_to_float_t(long double* /* type */, char** endptr) const - { - return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const - { - return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief return number value for number tokens - - This function translates the last token into the most appropriate - number type (either integer, unsigned integer or floating point), - which is passed back to the caller via the result parameter. - - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. - - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. - */ - void get_number(basic_json& result) const - { - assert(m_start != nullptr); - - const lexer::lexer_char_t* curptr = m_start; - - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') - { - type = value_t::number_integer; - max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') +basic_json_parser_49: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) { - if (*curptr == '.') + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'D') + { + if (yych <= '/') { - // don't count '.' but change to float - type = value_t::number_float; - continue; + goto basic_json_parser_14; } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details - type = value_t::number_float; + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } +basic_json_parser_51: + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych >= ':') + { + goto basic_json_parser_32; + } +basic_json_parser_52: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_14; +basic_json_parser_54: + yych = *++m_cursor; + if (yych == 's') + { + goto basic_json_parser_58; + } + goto basic_json_parser_32; +basic_json_parser_55: + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_59; + } + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_61; + } + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_63; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } +basic_json_parser_58: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_64; + } + goto basic_json_parser_32; +basic_json_parser_59: + ++m_cursor; + { + last_token_type = token_type::literal_null; break; } - - // skip if definitely not an integer - if (type != value_t::number_float) +basic_json_parser_61: + ++m_cursor; { - auto digit = static_cast<number_unsigned_t>(*curptr - '0'); - - // overflow if value * 10 + digit > max, move terms around - // to avoid overflow in intermediate values - if (value > (max - digit) / 10) - { - // overflow - type = value_t::number_float; - } - else - { - // no overflow - value = value * 10 + digit; - } + last_token_type = token_type::literal_true; + break; } - } - - // save the value (if not a float) - if (type == value_t::number_unsigned) - { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - // invariant: if we parsed a '-', the absolute value is between - // 0 (we allow -0) and max == -INT64_MIN - assert(value >= 0); - assert(value <= max); - - if (value == max) +basic_json_parser_63: + ++m_cursor; + if (m_limit <= m_cursor) { - // we cannot simply negate value (== max == -INT64_MIN), - // see https://github.com/nlohmann/json/issues/389 - result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; } else { - // all other values can be negated safely - result.m_value.number_integer = -static_cast<number_integer_t>(value); + if (yych <= 'F') + { + goto basic_json_parser_66; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; } +basic_json_parser_64: + ++m_cursor; + { + last_token_type = token_type::literal_false; + break; + } +basic_json_parser_66: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_30; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } + + } + + return last_token_type; + } + + /*! + @brief append data from the stream to the line buffer + + This function is called by the scan() function when the end of the + buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be + incremented without leaving the limits of the line buffer. Note re2c + decides when to call this function. + + If the lexer reads from contiguous storage, there is no trailing null + byte. Therefore, this function must make sure to add these padding + null bytes. + + If the lexer reads from an input stream, this function reads the next + line of the input. + + @pre + p p p p p p u u u u u x . . . . . . + ^ ^ ^ ^ + m_content m_start | m_limit + m_cursor + + @post + u u u u u x x x x x x x . . . . . . + ^ ^ ^ + | m_cursor m_limit + m_start + m_content + */ + void fill_line_buffer(size_t n = 0) + { + // if line buffer is used, m_content points to its data + assert(m_line_buffer.empty() + or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); + + // if line buffer is used, m_limit is set past the end of its data + assert(m_line_buffer.empty() + or m_limit == m_content + m_line_buffer.size()); + + // pointer relationships + assert(m_content <= m_start); + assert(m_start <= m_cursor); + assert(m_cursor <= m_limit); + assert(m_marker == nullptr or m_marker <= m_limit); + + // number of processed characters (p) + const auto num_processed_chars = static_cast<size_t>(m_start - m_content); + // offset for m_marker wrt. to m_start + const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; + // number of unprocessed characters (u) + const auto offset_cursor = m_cursor - m_start; + + // no stream is used or end of file is reached + if (m_stream == nullptr or m_stream->eof()) + { + // m_start may or may not be pointing into m_line_buffer at + // this point. We trust the standand library to do the right + // thing. See http://stackoverflow.com/q/28142011/266378 + m_line_buffer.assign(m_start, m_limit); + + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + if (n > 0) + { + m_line_buffer.append(n - 1, '\x01'); + } + } + else + { + // delete processed characters from line buffer + m_line_buffer.erase(0, num_processed_chars); + // read next line from input stream + m_line_buffer_tmp.clear(); + std::getline(*m_stream, m_line_buffer_tmp, '\n'); + + // add line with newline symbol to the line buffer + m_line_buffer += m_line_buffer_tmp; + m_line_buffer.push_back('\n'); + } + + // set pointers + m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); + assert(m_content != nullptr); + m_start = m_content; + m_marker = m_start + offset_marker; + m_cursor = m_start + offset_cursor; + m_limit = m_start + m_line_buffer.size(); + } + + /// return string representation of last read token + string_t get_token_string() const + { + assert(m_start != nullptr); + return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), + static_cast<size_t>(m_cursor - m_start)); + } + + /*! + @brief return string value for string tokens + + The function iterates the characters between the opening and closing + quotes of the string value. The complete string is the range + [m_start,m_cursor). Consequently, we iterate from m_start+1 to + m_cursor-1. + + We differentiate two cases: + + 1. Escaped characters. In this case, a new character is constructed + according to the nature of the escape. Some escapes create new + characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied + as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape + `"\\uxxxx"` need special care. In this case, to_unicode takes care + of the construction of the values. + 2. Unescaped characters are copied as is. + + @pre `m_cursor - m_start >= 2`, meaning the length of the last token + is at least 2 bytes which is trivially true for any string (which + consists of at least two quotes). + + " c1 c2 c3 ... " + ^ ^ + m_start m_cursor + + @complexity Linear in the length of the string.\n + + Lemma: The loop body will always terminate.\n + + Proof (by contradiction): Assume the loop body does not terminate. As + the loop body does not contain another loop, one of the called + functions must never return. The called functions are `std::strtoul` + and to_unicode. Neither function can loop forever, so the loop body + will never loop forever which contradicts the assumption that the loop + body does not terminate, q.e.d.\n + + Lemma: The loop condition for the for loop is eventually false.\n + + Proof (by contradiction): Assume the loop does not terminate. Due to + the above lemma, this can only be due to a tautological loop + condition; that is, the loop condition i < m_cursor - 1 must always be + true. Let x be the change of i for any loop iteration. Then + m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This + can be rephrased to m_cursor - m_start - 2 > x. With the + precondition, we x <= 0, meaning that the loop condition holds + indefinitly if i is always decreased. However, observe that the value + of i is strictly increasing with each iteration, as it is incremented + by 1 in the iteration expression and never decremented inside the loop + body. Hence, the loop condition will eventually be false which + contradicts the assumption that the loop condition is a tautology, + q.e.d. + + @return string value of current token without opening and closing + quotes + @throw std::out_of_range if to_unicode fails + */ + string_t get_string() const + { + assert(m_cursor - m_start >= 2); + + string_t result; + result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); + + // iterate the result between the quotes + for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) + { + // find next escape character + auto e = std::find(i, m_cursor - 1, '\\'); + if (e != i) + { + // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 + for (auto k = i; k < e; k++) + { + result.push_back(static_cast<typename string_t::value_type>(*k)); + } + i = e - 1; // -1 because of ++i } else { - // parse with strtod - result.m_value.number_float = str_to_float_t(static_cast<number_float_t*>(nullptr), nullptr); + // processing escaped character + // read next character + ++i; - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) + switch (*i) { - type = value_t::null; - result.m_value = basic_json::json_value(); + // the default escapes + case 't': + { + result += "\t"; + break; + } + case 'b': + { + result += "\b"; + break; + } + case 'f': + { + result += "\f"; + break; + } + case 'n': + { + result += "\n"; + break; + } + case 'r': + { + result += "\r"; + break; + } + case '\\': + { + result += "\\"; + break; + } + case '/': + { + result += "/"; + break; + } + case '"': + { + result += "\""; + break; + } + + // unicode + case 'u': + { + // get code xxxx from uxxxx + auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), + 4).c_str(), nullptr, 16); + + // check if codepoint is a high surrogate + if (codepoint >= 0xD800 and codepoint <= 0xDBFF) + { + // make sure there is a subsequent unicode + if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') + { + JSON_THROW(std::invalid_argument("missing low surrogate")); + } + + // get code yyyy from uxxxx\uyyyy + auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> + (i + 7), 4).c_str(), nullptr, 16); + result += to_unicode(codepoint, codepoint2); + // skip the next 10 characters (xxxx\uyyyy) + i += 10; + } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + JSON_THROW(std::invalid_argument("missing high surrogate")); + } + else + { + // add unicode character(s) + result += to_unicode(codepoint); + // skip the next four characters (xxxx) + i += 4; + } + break; + } } } - - // save the type - result.m_type = type; } - private: - /// optional input stream - std::istream* m_stream = nullptr; - /// line buffer buffer for m_stream - string_t m_line_buffer {}; - /// used for filling m_line_buffer - string_t m_line_buffer_tmp {}; - /// the buffer pointer - const lexer_char_t* m_content = nullptr; - /// pointer to the beginning of the current symbol - const lexer_char_t* m_start = nullptr; - /// pointer for backtracking information - const lexer_char_t* m_marker = nullptr; - /// pointer to the current symbol - const lexer_char_t* m_cursor = nullptr; - /// pointer to the end of the buffer - const lexer_char_t* m_limit = nullptr; - /// the last token type - token_type last_token_type = token_type::end_of_input; - }; + return result; + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + long double str_to_float_t(long double* /* type */, char** endptr) const + { + return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + double str_to_float_t(double* /* type */, char** endptr) const + { + return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + float str_to_float_t(float* /* type */, char** endptr) const + { + return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief return number value for number tokens + + This function translates the last token into the most appropriate + number type (either integer, unsigned integer or floating point), + which is passed back to the caller via the result parameter. + + This function parses the integer component up to the radix point or + exponent while collecting information about the 'floating point + representation', which it stores in the result parameter. If there is + no radix point or exponent, and the number can fit into a @ref + number_integer_t or @ref number_unsigned_t then it sets the result + parameter accordingly. + + If the number is a floating point number the number is then parsed + using @a std:strtod (or @a std:strtof or @a std::strtold). + + @param[out] result @ref basic_json object to receive the number, or + NAN if the conversion read past the current token. The latter case + needs to be treated by the caller function. + */ + void get_number(basic_json& result) const + { + assert(m_start != nullptr); + + const lexer::lexer_char_t* curptr = m_start; + + // accumulate the integer conversion result (unsigned for now) + number_unsigned_t value = 0; + + // maximum absolute value of the relevant integer type + number_unsigned_t max; + + // temporarily store the type to avoid unecessary bitfield access + value_t type; + + // look for sign + if (*curptr == '-') + { + type = value_t::number_integer; + max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; + curptr++; + } + else + { + type = value_t::number_unsigned; + max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); + } + + // count the significant figures + for (; curptr < m_cursor; curptr++) + { + // quickly skip tests if a digit + if (*curptr < '0' || *curptr > '9') + { + if (*curptr == '.') + { + // don't count '.' but change to float + type = value_t::number_float; + continue; + } + // assume exponent (if not then will fail parse): change to + // float, stop counting and record exponent details + type = value_t::number_float; + break; + } + + // skip if definitely not an integer + if (type != value_t::number_float) + { + auto digit = static_cast<number_unsigned_t>(*curptr - '0'); + + // overflow if value * 10 + digit > max, move terms around + // to avoid overflow in intermediate values + if (value > (max - digit) / 10) + { + // overflow + type = value_t::number_float; + } + else + { + // no overflow + value = value * 10 + digit; + } + } + } + + // save the value (if not a float) + if (type == value_t::number_unsigned) + { + result.m_value.number_unsigned = value; + } + else if (type == value_t::number_integer) + { + // invariant: if we parsed a '-', the absolute value is between + // 0 (we allow -0) and max == -INT64_MIN + assert(value >= 0); + assert(value <= max); + + if (value == max) + { + // we cannot simply negate value (== max == -INT64_MIN), + // see https://github.com/nlohmann/json/issues/389 + result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + } + else + { + // all other values can be negated safely + result.m_value.number_integer = -static_cast<number_integer_t>(value); + } + } + else + { + // parse with strtod + result.m_value.number_float = str_to_float_t(static_cast<number_float_t*>(nullptr), nullptr); + + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); + } + } + + // save the type + result.m_type = type; + } + + private: + /// optional input stream + std::istream* m_stream = nullptr; + /// line buffer buffer for m_stream + string_t m_line_buffer {}; + /// used for filling m_line_buffer + string_t m_line_buffer_tmp {}; + /// the buffer pointer + const lexer_char_t* m_content = nullptr; + /// pointer to the beginning of the current symbol + const lexer_char_t* m_start = nullptr; + /// pointer for backtracking information + const lexer_char_t* m_marker = nullptr; + /// pointer to the current symbol + const lexer_char_t* m_cursor = nullptr; + /// pointer to the end of the buffer + const lexer_char_t* m_limit = nullptr; + /// the last token type + token_type last_token_type = token_type::end_of_input; + }; /*! @brief syntax analysis @@ -11130,282 +11141,282 @@ basic_json_parser_66: */ class parser { - public: + public: /// a parser reading from a string literal parser(const char* buff, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) - {} + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) + {} - /// a parser reading from an input stream - parser(std::istream& is, const parser_callback_t cb = nullptr) - : callback(cb), m_lexer(is) - {} + /// a parser reading from an input stream + parser(std::istream& is, const parser_callback_t cb = nullptr) + : callback(cb), m_lexer(is) + {} - /// a parser reading from an iterator range with contiguous storage - template<class IteratorType, typename std::enable_if< - std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value - , int>::type - = 0> - parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), - static_cast<size_t>(std::distance(first, last))) - {} + /// a parser reading from an iterator range with contiguous storage + template<class IteratorType, typename std::enable_if< + std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value + , int>::type + = 0> + parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), + static_cast<size_t>(std::distance(first, last))) + {} - /// public parser interface - basic_json parse() + /// public parser interface + basic_json parse() + { + // read first token + get_token(); + + basic_json result = parse_internal(true); + result.assert_invariant(); + + expect(lexer::token_type::end_of_input); + + // return parser result and replace it with null in case the + // top-level value was discarded by the callback function + return result.is_discarded() ? basic_json() : std::move(result); + } + + private: + /// the actual parser + basic_json parse_internal(bool keep) + { + auto result = basic_json(value_t::discarded); + + switch (last_token) { - // read first token - get_token(); - - basic_json result = parse_internal(true); - result.assert_invariant(); - - expect(lexer::token_type::end_of_input); - - // return parser result and replace it with null in case the - // top-level value was discarded by the callback function - return result.is_discarded() ? basic_json() : std::move(result); - } - - private: - /// the actual parser - basic_json parse_internal(bool keep) - { - auto result = basic_json(value_t::discarded); - - switch (last_token) + case lexer::token_type::begin_object: { - case lexer::token_type::begin_object: + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) - { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } - // read next token - get_token(); + // read next token + get_token(); - // closing } -> we are done - if (last_token == lexer::token_type::end_object) - { - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result = basic_json(value_t::discarded); - } - return result; - } - - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse key-value pairs - do - { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) - { - get_token(); - } - - // store key - expect(lexer::token_type::value_string); - const auto key = m_lexer.get_string(); - - bool keep_tag = false; - if (keep) - { - if (callback) - { - basic_json k(key); - keep_tag = callback(depth, parse_event_t::key, k); - } - else - { - keep_tag = true; - } - } - - // parse separator (:) - get_token(); - expect(lexer::token_type::name_separator); - - // parse and add value - get_token(); - auto value = parse_internal(keep); - if (keep and keep_tag and not value.is_discarded()) - { - result[key] = std::move(value); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing } - expect(lexer::token_type::end_object); + // closing } -> we are done + if (last_token == lexer::token_type::end_object) + { get_token(); if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) { result = basic_json(value_t::discarded); } - return result; } - case lexer::token_type::begin_array: + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse key-value pairs + do { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) - { - // explicitly set result to object to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == lexer::token_type::end_array) + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) { get_token(); - if (callback and not callback(--depth, parse_event_t::array_end, result)) - { - result = basic_json(value_t::discarded); - } - return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); + // store key + expect(lexer::token_type::value_string); + const auto key = m_lexer.get_string(); - // otherwise: parse values - do + bool keep_tag = false; + if (keep) { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) + if (callback) { - get_token(); + basic_json k(key); + keep_tag = callback(depth, parse_event_t::key, k); } - - // parse value - auto value = parse_internal(keep); - if (keep and not value.is_discarded()) + else { - result.push_back(std::move(value)); + keep_tag = true; } } - while (last_token == lexer::token_type::value_separator); - // closing ] - expect(lexer::token_type::end_array); + // parse separator (:) get_token(); - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + expect(lexer::token_type::name_separator); + + // parse and add value + get_token(); + auto value = parse_internal(keep); + if (keep and keep_tag and not value.is_discarded()) + { + result[key] = std::move(value); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing } + expect(lexer::token_type::end_object); + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result = basic_json(value_t::discarded); + } + + return result; + } + + case lexer::token_type::begin_array: + { + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) + { + // explicitly set result to object to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == lexer::token_type::end_array) + { + get_token(); + if (callback and not callback(--depth, parse_event_t::array_end, result)) { result = basic_json(value_t::discarded); } - return result; } - case lexer::token_type::literal_null: + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse values + do { - get_token(); - result.m_type = value_t::null; - break; + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) + { + get_token(); + } + + // parse value + auto value = parse_internal(keep); + if (keep and not value.is_discarded()) + { + result.push_back(std::move(value)); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing ] + expect(lexer::token_type::end_array); + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + { + result = basic_json(value_t::discarded); } - case lexer::token_type::value_string: - { - const auto s = m_lexer.get_string(); - get_token(); - result = basic_json(s); - break; - } - - case lexer::token_type::literal_true: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case lexer::token_type::literal_false: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case lexer::token_type::value_number: - { - m_lexer.get_number(result); - get_token(); - break; - } - - default: - { - // the last token was unexpected - unexpect(last_token); - } + return result; } - if (keep and callback and not callback(depth, parse_event_t::value, result)) + case lexer::token_type::literal_null: { - result = basic_json(value_t::discarded); + get_token(); + result.m_type = value_t::null; + break; } - return result; - } - /// get next token from lexer - typename lexer::token_type get_token() - { - last_token = m_lexer.scan(); - return last_token; - } - - void expect(typename lexer::token_type t) const - { - if (t != last_token) + case lexer::token_type::value_string: { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); - error_msg += "; expected " + lexer::token_type_name(t); + const auto s = m_lexer.get_string(); + get_token(); + result = basic_json(s); + break; + } + + case lexer::token_type::literal_true: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case lexer::token_type::literal_false: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case lexer::token_type::value_number: + { + m_lexer.get_number(result); + get_token(); + break; + } + + default: + { + // the last token was unexpected + unexpect(last_token); + } + } + + if (keep and callback and not callback(depth, parse_event_t::value, result)) + { + result = basic_json(value_t::discarded); + } + return result; + } + + /// get next token from lexer + typename lexer::token_type get_token() + { + last_token = m_lexer.scan(); + return last_token; + } + + void expect(typename lexer::token_type t) const + { + if (t != last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); + error_msg += "; expected " + lexer::token_type_name(t); JSON_THROW(std::invalid_argument(error_msg)); - } } + } - void unexpect(typename lexer::token_type t) const + void unexpect(typename lexer::token_type t) const + { + if (t == last_token) { - if (t == last_token) - { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); JSON_THROW(std::invalid_argument(error_msg)); - } } + } - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - typename lexer::token_type last_token = lexer::token_type::uninitialized; - /// the lexer - lexer m_lexer; - }; + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + typename lexer::token_type last_token = lexer::token_type::uninitialized; + /// the lexer + lexer m_lexer; + }; public: /*! @@ -11424,7 +11435,7 @@ basic_json_parser_66: /// allow basic_json to access private members friend class basic_json; - public: + public: /*! @brief create JSON pointer @@ -11448,562 +11459,562 @@ basic_json_parser_66: @since version 2.0.0 */ explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} + : reference_tokens(split(s)) + {} - /*! - @brief return a string representation of the JSON pointer + /*! + @brief return a string representation of the JSON pointer - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode - @return a string representation of the JSON pointer + @return a string representation of the JSON pointer - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} - @since version 2.0.0 - */ - std::string to_string() const noexcept + @since version 2.0.0 + */ + std::string to_string() const noexcept + { + return std::accumulate(reference_tokens.begin(), + reference_tokens.end(), std::string{}, + [](const std::string & a, const std::string & b) { - return std::accumulate(reference_tokens.begin(), - reference_tokens.end(), std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + escape(b); - }); - } + return a + "/" + escape(b); + }); + } - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } - private: - /// remove and return last reference pointer - std::string pop_back() + private: + /// remove and return last reference pointer + std::string pop_back() + { + if (is_root()) { - if (is_root()) - { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; } - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; + } - json_pointer top() const + /// return whether pointer points to the root document + bool is_root() const + { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (is_root()) { - if (is_root()) - { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; } - /*! - @brief create and return a reference to the pointed to value + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } - @complexity Linear in the number of reference tokens. - */ - reference get_and_create(reference j) const + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + */ + reference get_and_create(reference j) const + { + pointer result = &j; + + // in case no reference tokens exist, return a reference to the + // JSON value j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) { - pointer result = &j; - - // in case no reference tokens exist, return a reference to the - // JSON value j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) + switch (result->m_type) { - switch (result->m_type) + case value_t::null: { - case value_t::null: + if (reference_token == "0") { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; + // start a new array if reference token is 0 + result = &result->operator[](0); } - - case value_t::object: + else { - // create an entry in the object + // start a new object otherwise result = &result->operator[](reference_token); - break; - } - - case value_t::array: - { - // create an entry in the array - result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - /* - The following code is only reached if there exists a - reference token _and_ the current value is primitive. In - this case, we have an error situation, because primitive - values may only occur as single value; that is, with an - empty list of reference tokens. - */ - default: - { - JSON_THROW(std::domain_error("invalid value to unflatten")); - } - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries - to create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number - */ - reference get_unchecked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == value_t::null) - { - // check if reference token is a number - const bool nums = std::all_of(reference_token.begin(), - reference_token.end(), - [](const char x) - { - return std::isdigit(x); - }); - - // change value to array for numbers or "-" or to object - // otherwise - if (nums or reference_token == "-") - { - *ptr = value_t::array; - } - else - { - *ptr = value_t::object; - } - } - - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicityly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - } - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - reference get_checked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - */ - const_reference get_unchecked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" cannot be used for const access - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // use unchecked array access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - const_reference get_checked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /// split the string input to reference tokens - static std::vector<std::string> split(const std::string& reference_string) - { - std::vector<std::string> result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (reference_string[0] != '/') - { - JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1')) - { - JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - private: - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, - const std::string& f, - const std::string& t) - { - assert(not f.empty()); - - for ( - size_t pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t - pos = s.find(f, pos + t.size()) // find next occurrence of f - ); - } - - /// escape tilde and slash - static std::string escape(std::string s) - { - // escape "~"" to "~0" and "/" to "~1" - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape tilde and slash - static void unescape(std::string& s) - { - // first transform any occurrence of the sequence '~1' to '/' - replace_substring(s, "~1", "/"); - // then transform any occurrence of the sequence '~0' to '~' - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const basic_json& value, - basic_json& result) - { - switch (value.m_type) - { - case value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } } break; } case value_t::object: { - if (value.m_value.object->empty()) + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case value_t::array: + { + // create an entry in the array + result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + /* + The following code is only reached if there exists a + reference token _and_ the current value is primitive. In + this case, we have an error situation, because primitive + values may only occur as single value; that is, with an + empty list of reference tokens. + */ + default: + { + JSON_THROW(std::domain_error("invalid value to unflatten")); + } + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries + to create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw std::out_of_range if the JSON pointer can not be resolved + @throw std::domain_error if an array index begins with '0' + @throw std::invalid_argument if an array index was not a number + */ + reference get_unchecked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == value_t::null) + { + // check if reference token is a number + const bool nums = std::all_of(reference_token.begin(), + reference_token.end(), + [](const char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object + // otherwise + if (nums or reference_token == "-") + { + *ptr = value_t::array; + } + else + { + *ptr = value_t::object; + } + } + + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') { - // flatten empty object as null - result[reference_string] = nullptr; + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicityly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); } else { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), - element.second, result); - } + // convert array index to number; unchecked access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); } break; } default: { - // add primitive value with its reference string - result[reference_string] = value; - break; + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } - /*! - @param[in] value flattened JSON + return *ptr; + } - @return unflattened JSON - */ - static basic_json unflatten(const basic_json& value) + reference get_checked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) { - if (not value.is_object()) + switch (ptr->m_type) { - JSON_THROW(std::domain_error("only objects can be unflattened")); - } - - basic_json result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (not element.second.is_primitive()) + case value_t::object: { - JSON_THROW(std::domain_error("values in object must be primitive")); + // note: at performs range check + ptr = &ptr->at(reference_token); + break; } - // assign value to reference pointed to by JSON pointer; Note - // that if the JSON pointer is "" (i.e., points to the whole - // value), function get_and_create returns a reference to - // result itself. An assignment will then create a primitive - // value. - json_pointer(element.first).get_and_create(result) = element.second; - } + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + */ + const_reference get_unchecked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" cannot be used for const access + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // use unchecked array access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + const_reference get_checked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /// split the string input to reference tokens + static std::vector<std::string> split(const std::string& reference_string) + { + std::vector<std::string> result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { return result; } - private: - /// the reference tokens - std::vector<std::string> reference_tokens {}; - }; + // check if nonempty reference string begins with slash + if (reference_string[0] != '/') + { + JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1')) + { + JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + private: + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, + const std::string& f, + const std::string& t) + { + assert(not f.empty()); + + for ( + size_t pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t + pos = s.find(f, pos + t.size()) // find next occurrence of f + ); + } + + /// escape tilde and slash + static std::string escape(std::string s) + { + // escape "~"" to "~0" and "/" to "~1" + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape tilde and slash + static void unescape(std::string& s) + { + // first transform any occurrence of the sequence '~1' to '/' + replace_substring(s, "~1", "/"); + // then transform any occurrence of the sequence '~0' to '~' + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const basic_json& value, + basic_json& result) + { + switch (value.m_type) + { + case value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), + element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + */ + static basic_json unflatten(const basic_json& value) + { + if (not value.is_object()) + { + JSON_THROW(std::domain_error("only objects can be unflattened")); + } + + basic_json result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (not element.second.is_primitive()) + { + JSON_THROW(std::domain_error("values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note + // that if the JSON pointer is "" (i.e., points to the whole + // value), function get_and_create returns a reference to + // result itself. An assignment will then create a primitive + // value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + private: + /// the reference tokens + std::vector<std::string> reference_tokens {}; + }; ////////////////////////// // JSON Pointer support // @@ -12684,38 +12695,38 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std -{ -/*! -@brief exchanges the values of two JSON objects - -@since version 1.0.0 -*/ -template<> -inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible<nlohmann::json>::value and - is_nothrow_move_assignable<nlohmann::json>::value - ) -{ - j1.swap(j2); -} - -/// hash value for JSON objects -template<> -struct hash<nlohmann::json> { /*! - @brief return a hash value for a JSON object + @brief exchanges the values of two JSON objects @since version 1.0.0 */ - std::size_t operator()(const nlohmann::json& j) const + template<> + inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible<nlohmann::json>::value and + is_nothrow_move_assignable<nlohmann::json>::value + ) + { + j1.swap(j2); + } + + /// hash value for JSON objects + template<> + struct hash<nlohmann::json> + { + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation const auto& h = hash<nlohmann::json::string_t>(); return h(j.dump()); } -}; + }; } // namespace std /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index f552a390d..12fde56ea 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -106,38 +106,356 @@ SOFTWARE. */ namespace nlohmann { +// alias templates to reduce boilerplate +template <bool B, typename T = void> +using enable_if_t = typename std::enable_if<B, T>::type; +template <typename T> +using remove_cv_t = typename std::remove_cv<T>::type; +template <typename T> +using remove_reference_t = typename std::remove_reference<T>::type; + +template <typename T> +using uncvref_t = remove_cv_t<remove_reference_t<T>>; + +template <bool If, typename Then, typename Else> +using conditional_t = typename std::conditional<If, Then, Else>::type; + +// Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait +template <typename T> +using is_scoped_enum = + std::integral_constant<bool, not std::is_convertible<T, int>::value and + std::is_enum<T>::value>; + +template <typename T> +using is_unscoped_enum = + std::integral_constant<bool, std::is_convertible<T, int>::value and + std::is_enum<T>::value>; + +// TODO update this doc /*! @brief unnamed namespace with internal helper functions @since version 1.0.0 */ -namespace + +namespace detail { +// Very useful construct against boilerplate (more boilerplate needed than in C++17: http://en.cppreference.com/w/cpp/types/void_t) +template <typename...> struct make_void +{ + using type = void; +}; +template <typename... Ts> using void_t = typename make_void<Ts...>::type; + +// Implementation of 3 C++17 constructs: conjunction, disjunction, negation. +// This is needed to avoid evaluating all the traits in a condition +// +// For example: not std::is_same<void, T>::value and has_value_type<T>::value +// will not compile when T = void (on MSVC at least) +// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value +// will stop evaluating if negation<...>::value == false +// +// Please note that those constructs must be used with caution, since symbols can +// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) +// Only use it when you have too (see example ahead) +template <class...> struct conjunction : std::true_type {}; +template <class B1> struct conjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct conjunction<B1, Bn...> +: conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; + +template <class B> struct negation : std::integral_constant < bool, !B::value > {}; +template <class...> struct disjunction : std::false_type {}; +template <class B1> struct disjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct disjunction<B1, Bn...> +: conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; + /*! @brief Helper to determine whether there's a key_type for T. - Thus helper is used to tell associative containers apart from other containers such as sequence containers. For instance, `std::map` passes the test as it contains a `mapped_type`, whereas `std::vector` fails the test. - @sa http://stackoverflow.com/a/7728728/266378 @since version 1.0.0, overworked in version 2.0.6 */ -template<typename T> -struct has_mapped_type +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template <typename T> struct has_##type { \ + private: \ + template <typename U, typename = typename U::type> \ + static int detect(U &&); \ + \ + static void detect(...); \ + \ + public: \ + static constexpr bool value = \ + std::is_integral<decltype(detect(std::declval<T>()))>::value; \ + }; + +NLOHMANN_JSON_HAS_HELPER(mapped_type) +NLOHMANN_JSON_HAS_HELPER(key_type) +NLOHMANN_JSON_HAS_HELPER(value_type) +NLOHMANN_JSON_HAS_HELPER(iterator) + +#undef NLOHMANN_JSON_HAS_HELPER + +template <bool B, class RealType, class CompatibleObjectType> +struct is_compatible_object_type_impl : std::false_type {}; + +template <class RealType, class CompatibleObjectType> +struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> +{ + static constexpr auto value = + std::is_constructible<typename RealType::key_type, + typename CompatibleObjectType::key_type>::value and + std::is_constructible<typename RealType::mapped_type, + typename CompatibleObjectType::mapped_type>::value; +}; + +template<class RealType, class CompatibleObjectType> +struct is_compatible_object_type +{ + // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void + // hence the conjunction + static auto constexpr value = is_compatible_object_type_impl < + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + RealType, CompatibleObjectType >::value; +}; + +template <bool B, class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type_impl : std::false_type {}; + +template <class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> +{ + static constexpr auto value = + not std::is_same<CompatibleArrayType, + typename BasicJson::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::const_reverse_iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::iterator>::value and + not std::is_same<CompatibleArrayType, + typename BasicJson::array_t::const_iterator>::value; +}; + +template <class BasicJson, class CompatibleArrayType> +struct is_compatible_array_type +{ + // the check for CompatibleArrayType = void is done in is_compatible_object_type + // but we need the conjunction here as well + static auto constexpr value = is_compatible_array_type_impl < + conjunction<negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType >::value; +}; + +template <bool, typename, typename> +struct is_compatible_integer_type_impl : std::false_type {}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> +{ + using RealLimits = std::numeric_limits<RealIntegerType>; + using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; + + static constexpr auto value = + std::is_constructible<RealIntegerType, + CompatibleNumberIntegerType>::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type +{ + static constexpr auto value = is_compatible_integer_type_impl < + std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, + CompatibleNumberIntegerType >::value; +}; + +template <typename RealFloat, typename CompatibleFloat> +struct is_compatible_float_type +{ + static constexpr auto value = + std::is_constructible<RealFloat, CompatibleFloat>::value and + std::is_floating_point<CompatibleFloat>::value; +}; + +template <typename T, typename BasicJson> +struct is_compatible_basic_json_type +{ + static auto constexpr value = + is_unscoped_enum<T>::value or + std::is_same<T, BasicJson>::value or + std::is_constructible<typename BasicJson::string_t, T>::value or + std::is_same<typename BasicJson::boolean_t, T>::value or + is_compatible_array_type<BasicJson, T>::value or + is_compatible_object_type<typename BasicJson::object_t, T>::value or + is_compatible_float_type<typename BasicJson::number_float_t, T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, + T>::value or + is_compatible_integer_type<typename BasicJson::number_unsigned_t, + T>::value; +}; + +template <typename T, typename BasicJson, typename PrimitiveIterator> +struct is_basic_json_nested_class +{ + static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or + std::is_same<T, typename BasicJson::const_iterator>::value or + std::is_same<T, typename BasicJson::reverse_iterator>::value or + std::is_same<T, typename BasicJson::const_reverse_iterator>::value or + std::is_same<T, PrimitiveIterator>::value or + std::is_same<T, typename BasicJson::json_pointer>::value; +}; + +// This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_from_json { private: - template <typename U, typename = typename U::mapped_type> + // also check the return type of from_json + template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( + std::declval<Json>(), std::declval<T&>()))>::value>> static int detect(U&&); static void detect(...); + public: - static constexpr bool value = - std::is_integral<decltype(detect(std::declval<T>()))>::value; + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; }; -} // namespace +// This trait checks if JSONSerializer<T>::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_non_default_from_json +{ + private: + template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> + static int detect(U&&); + + static void detect(...); + + public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; +}; + +// This trait checks if JSONSerializer<T>::to_json exists +template <template <typename, typename> class JSONSerializer, typename Json, + typename T> +struct has_to_json +{ + private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json&>(), std::declval<T>()))> + static int detect(U&&); + + static void detect(...); + + public: + static constexpr bool value = std::is_integral<decltype( + detect(std::declval<JSONSerializer<T, void>>()))>::value; +}; + +// those declarations are needed to workaround a MSVC bug related to ADL +// (taken from MSVC-Ranges implementation) +void to_json(); +void from_json(); + +struct to_json_fn +{ + // is it really useful to mark those as constexpr? + template <typename Json, typename T> + constexpr auto operator()(Json&& j, T&& val) const + noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) + -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), + void()) + { + return to_json(std::forward<Json>(j), std::forward<T>(val)); + } +}; + +struct from_json_fn +{ + template <typename Json, typename T> + constexpr auto operator()(Json&& j, T& val) const + noexcept(noexcept(from_json(std::forward<Json>(j), val))) + -> decltype(from_json(std::forward<Json>(j), val), void()) + { + return from_json(std::forward<Json>(j), val); + } +}; + +/*! +@brief helper class to create locales with decimal point + +This struct is used a default locale during the JSON serialization. JSON +requires the decimal point to be `.`, so this function overloads the +`do_decimal_point()` function to return `.`. This function is called by +float-to-string conversions to retrieve the decimal separator between integer +and fractional parts. + +@sa https://github.com/nlohmann/json/issues/51#issuecomment-86869315 +@since version 2.0.0 +*/ +struct DecimalSeparator : std::numpunct<char> +{ + char do_decimal_point() const + { + return '.'; + } +}; + +} + +// taken from ranges-v3 +// TODO add doc +template <typename T> +struct static_const +{ + static constexpr T value{}; +}; + +template <typename T> +constexpr T static_const<T>::value; + +inline namespace +{ +constexpr auto const& to_json = static_const<detail::to_json_fn>::value; +constexpr auto const& from_json = static_const<detail::from_json_fn>::value; +} + +// default JSONSerializer template argument, doesn't care about template argument +// will use ADL for serialization +template <typename = void, typename = void> +struct adl_serializer +{ + template <typename Json, typename T> + static void from_json(Json&& j, T& val) + { + ::nlohmann::from_json(std::forward<Json>(j), val); + } + + template <typename Json, typename T> + static void to_json(Json& j, T&& val) + { + ::nlohmann::to_json(j, std::forward<T>(val)); + } +}; /*! @brief a class to store JSON values @@ -226,7 +544,8 @@ template < class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, - template<typename U> class AllocatorType = std::allocator + template<typename U> class AllocatorType = std::allocator, + template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer > class basic_json { @@ -234,7 +553,8 @@ class basic_json /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, - AllocatorType>; + AllocatorType, JSONSerializer>; + class primitive_iterator_t; public: // forward declarations @@ -1215,11 +1535,11 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleObjectType, typename std::enable_if< - std::is_constructible<typename object_t::key_type, typename CompatibleObjectType::key_type>::value and - std::is_constructible<basic_json, typename CompatibleObjectType::mapped_type>::value, int>::type = 0> - basic_json(const CompatibleObjectType& val) - : m_type(value_t::object) + template <class CompatibleObjectType, + enable_if_t<detail::is_compatible_object_type< + object_t, CompatibleObjectType>::value, + int> = 0> + basic_json(const CompatibleObjectType& val) : m_type(value_t::object) { using std::begin; using std::end; @@ -1278,16 +1598,11 @@ class basic_json @since version 1.0.0 */ - template<class CompatibleArrayType, typename std::enable_if< - not std::is_same<CompatibleArrayType, typename basic_json_t::iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::const_iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename basic_json_t::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, typename array_t::iterator>::value and - not std::is_same<CompatibleArrayType, typename array_t::const_iterator>::value and - std::is_constructible<basic_json, typename CompatibleArrayType::value_type>::value, int>::type = 0> - basic_json(const CompatibleArrayType& val) - : m_type(value_t::array) + template <class CompatibleArrayType, + enable_if_t<detail::is_compatible_array_type< + basic_json_t, CompatibleArrayType>::value, + int> = 0> + basic_json(const CompatibleArrayType& val) : m_type(value_t::array) { using std::begin; using std::end; @@ -1295,6 +1610,28 @@ class basic_json assert_invariant(); } + + // constructor chosen when: + // - JSONSerializer::to_json exists for type T + // - T is not a istream, nor convertible to basic_json (float, vectors, etc) + // is_compatible_basic_json_type == not is_user_defined_type + template < + typename T, + enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and + not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and + not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and + + detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_to_json<JSONSerializer, basic_json, + uncvref_t<T>>>::value, + int> = 0 > + basic_json(T && val) + { + JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + } + /*! @brief create a string (explicit) @@ -1456,7 +1793,10 @@ class basic_json @since version 1.0.0 */ - basic_json(const int val) noexcept + + // Constructor for unscoped enums (not enum classes) + template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> + basic_json(T val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) { @@ -1488,11 +1828,11 @@ class basic_json @since version 1.0.0 */ - template<typename CompatibleNumberIntegerType, typename std::enable_if< - std::is_constructible<number_integer_t, CompatibleNumberIntegerType>::value and - std::numeric_limits<CompatibleNumberIntegerType>::is_integer and - std::numeric_limits<CompatibleNumberIntegerType>::is_signed, - CompatibleNumberIntegerType>::type = 0> + template < + typename CompatibleNumberIntegerType, + enable_if_t<detail::is_compatible_integer_type< + number_integer_t, CompatibleNumberIntegerType>::value, + int> = 0 > basic_json(const CompatibleNumberIntegerType val) noexcept : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(val)) @@ -1546,11 +1886,11 @@ class basic_json @since version 2.0.0 */ - template<typename CompatibleNumberUnsignedType, typename std::enable_if < - std::is_constructible<number_unsigned_t, CompatibleNumberUnsignedType>::value and - std::numeric_limits<CompatibleNumberUnsignedType>::is_integer and - not std::numeric_limits<CompatibleNumberUnsignedType>::is_signed, - CompatibleNumberUnsignedType>::type = 0> + template < + typename CompatibleNumberUnsignedType, + enable_if_t<detail::is_compatible_integer_type< + number_unsigned_t, CompatibleNumberUnsignedType>::value, + int> = 0 > basic_json(const CompatibleNumberUnsignedType val) noexcept : m_type(value_t::number_unsigned), m_value(static_cast<number_unsigned_t>(val)) @@ -1626,9 +1966,10 @@ class basic_json @since version 1.0.0 */ - template<typename CompatibleNumberFloatType, typename = typename std::enable_if< - std::is_constructible<number_float_t, CompatibleNumberFloatType>::value and - std::is_floating_point<CompatibleNumberFloatType>::value>::type> + template <typename CompatibleNumberFloatType, + enable_if_t<detail::is_compatible_float_type< + number_float_t, CompatibleNumberFloatType>::value, + int> = 0> basic_json(const CompatibleNumberFloatType val) noexcept : basic_json(number_float_t(val)) { @@ -1788,7 +2129,7 @@ class basic_json @since version 1.0.0 */ static basic_json array(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::array); } @@ -1828,7 +2169,7 @@ class basic_json @since version 1.0.0 */ static basic_json object(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::object); } @@ -2169,7 +2510,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { // check that passed value is valid other.assert_invariant(); @@ -2182,6 +2523,18 @@ class basic_json return *this; } + // this overload is needed, since constructor for udt is explicit + template <typename T, enable_if_t<not detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>::value and + detail::has_to_json<JSONSerializer, basic_json_t, uncvref_t<T>>::value>> + reference& operator=(T&& val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and + std::is_nothrow_move_assignable<uncvref_t<T>>::value) + { + static_assert(sizeof(T) == 0 , ""); + // I'm not sure this a is good practice... + return *this = basic_json_t{std::forward<T>(val)}; + } + /*! @brief destructor @@ -2655,7 +3008,6 @@ class basic_json // value access // ////////////////// - /// get an object (explicit) template<class T, typename std::enable_if< std::is_convertible<typename object_t::key_type, typename T::key_type>::value and std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> @@ -2681,13 +3033,16 @@ class basic_json } /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_convertible<basic_json_t, typename T::value_type>::value and - not std::is_same<basic_json_t, typename T::value_type>::value and - not std::is_arithmetic<T>::value and - not std::is_convertible<std::string, T>::value and - not has_mapped_type<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const + template < + class T, + typename std::enable_if < + std::is_convertible<basic_json_t, typename T::value_type>::value and + not std::is_same<basic_json_t, + typename T::value_type>::value and + not std::is_arithmetic<T>::value and + not std::is_convertible<std::string, T>::value and + not detail::has_mapped_type<T>::value, + int >::type = 0 > { if (is_array()) { @@ -2727,7 +3082,7 @@ class basic_json /// get an array (explicit) template<class T, typename std::enable_if< std::is_same<basic_json, typename T::value_type>::value and - not has_mapped_type<T>::value, int>::type = 0> + not detail::has_mapped_type<T>::value, int>::type = 0> T get_impl(T* /*unused*/) const { if (is_array()) @@ -2956,13 +3311,46 @@ class basic_json @since version 1.0.0 */ - template<typename ValueType, typename std::enable_if< - not std::is_pointer<ValueType>::value, int>::type = 0> - ValueType get() const + template <typename ValueType, + enable_if_t<not std::is_pointer<ValueType>::value, int> = 0> + auto get() const + -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) { return get_impl(static_cast<ValueType*>(nullptr)); } + template < + typename T, + enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value, + int> = 0 > + auto get() const -> uncvref_t<T> + { + using type = uncvref_t<T>; + static_assert(std::is_default_constructible<type>::value&& + std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and " + "CopyConstructible when used with get"); + type ret; + JSONSerializer<type>::from_json(*this, ret); + return ret; + } + + // This overload is chosen for non-default constructible user-defined-types + template < + typename T, + enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_non_default_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value, + short> = 0 > + T get() const + { + return JSONSerializer<T>::from_json(*this); + } + /*! @brief get a pointer value (explicit) @@ -3042,8 +3430,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -3070,8 +3458,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -4124,14 +4512,14 @@ class basic_json case value_t::object: { result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); + last.m_it.object_iterator); break; } case value_t::array: { result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); + last.m_it.array_iterator); break; } @@ -5348,9 +5736,9 @@ class basic_json // insert to array and return iterator iterator result(this); result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); return result; } @@ -5420,7 +5808,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { std::swap(m_type, other.m_type); std::swap(m_value, other.m_value); @@ -8020,13 +8408,13 @@ class basic_json o << (pretty_print ? ",\n" : ","); } o << string_t(new_indent, ' ') << "\"" - << escape_string(i->first) << "\":" - << (pretty_print ? " " : ""); - i->second.dump(o, pretty_print, indent_step, new_indent); + << escape_string(i->first) << "\":" + << (pretty_print ? " " : ""); + i->second.dump(o, pretty_print, indent_step, new_indent); } - // decrease indentation - if (pretty_print) + // decrease indentation + if (pretty_print) { new_indent -= indent_step; o << "\n"; @@ -8071,16 +8459,16 @@ class basic_json } o << string_t(new_indent, ' ') << "]"; - return; + return; } - case value_t::string: + case value_t::string: { o << string_t("\"") << escape_string(*m_value.string) << "\""; - return; + return; } - case value_t::boolean: + case value_t::boolean: { o << (m_value.boolean ? "true" : "false"); return; @@ -8154,50 +8542,126 @@ class basic_json */ class primitive_iterator_t { - public: - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } + public: - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } + difference_type get_value() const noexcept + { + return m_it; + } + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return (m_it == begin_value); - } + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return (m_it == end_value); - } + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return (m_it == begin_value); + } - /// return reference to the value to change and compare - operator difference_type& () noexcept - { - return m_it; - } + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return (m_it == end_value); + } - /// return value to compare - constexpr operator difference_type () const noexcept - { - return m_it; - } + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; + friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return !(lhs == rhs); + } - /// iterator as signed integer type - difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); - }; + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it <= rhs.m_it; + } + + friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it > rhs.m_it; + } + + friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it >= rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t& operator++(int) + { + m_it++; + return *this; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t& operator--(int) + { + m_it--; + return *this; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); + }; /*! @brief an iterator value @@ -8217,104 +8681,104 @@ class basic_json /// create an uninitialized internal_iterator internal_iterator() noexcept - : object_iterator(), array_iterator(), primitive_iterator() - {} + : object_iterator(), array_iterator(), primitive_iterator() + {} }; /// proxy class for the iterator_wrapper functions template<typename IteratorType> class iteration_proxy { - private: + private: /// helper class for iteration class iteration_proxy_internal { - private: + private: /// the iterator IteratorType anchor; /// an index for arrays (used to create key names) size_t array_index = 0; - public: + public: explicit iteration_proxy_internal(IteratorType it) noexcept - : anchor(it) - {} + : anchor(it) + {} - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// inequality operator (needed for range-based for) + bool operator!= (const iteration_proxy_internal& o) const + { + return anchor != o.anchor; + } + + /// return key of the iterator + typename basic_json::string_t key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: { - return *this; + return std::to_string(array_index); } - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() + // use key from the object + case value_t::object: { - ++anchor; - ++array_index; - - return *this; + return anchor.key(); } - /// inequality operator (needed for range-based for) - bool operator!= (const iteration_proxy_internal& o) const + // use an empty key for all primitive types + default: { - return anchor != o.anchor; + return ""; } + } + } - /// return key of the iterator - typename basic_json::string_t key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - { - return std::to_string(array_index); - } - - // use key from the object - case value_t::object: - { - return anchor.key(); - } - - // use an empty key for all primitive types - default: - { - return ""; - } - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } }; - /// the container to iterate - typename IteratorType::reference container; + /// the container to iterate + typename IteratorType::reference container; - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) - {} + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) + {} - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } }; public: @@ -8338,7 +8802,7 @@ class basic_json @since version 1.0.0, simplified in version 2.0.9 */ template<typename U> - class iter_impl : public std::iterator<std::random_access_iterator_tag, U> + class iter_impl : public std::iterator<std::random_access_iterator_tag, U> { /// allow basic_json to access private members friend class basic_json; @@ -8348,19 +8812,19 @@ class basic_json or std::is_same<U, const basic_json>::value, "iter_impl only accepts (const) basic_json"); - public: + public: /// the type of the values when the iterator is dereferenced using value_type = typename basic_json::value_type; /// a type to represent differences between iterators using difference_type = typename basic_json::difference_type; /// defines a pointer to the type iterated over (value_type) using pointer = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_pointer, - typename basic_json::pointer>::type; + typename basic_json::const_pointer, + typename basic_json::pointer>::type; /// defines a reference to the type iterated over (value_type) using reference = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_reference, - typename basic_json::reference>::type; + typename basic_json::const_reference, + typename basic_json::reference>::type; /// the category of the iterator using iterator_category = std::bidirectional_iterator_tag; @@ -8374,566 +8838,566 @@ class basic_json @post The iterator is initialized; i.e. `m_object != nullptr`. */ explicit iter_impl(pointer object) noexcept - : m_object(object) + : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /* - Use operator `const_iterator` instead of `const_iterator(const iterator& - other) noexcept` to avoid two class definitions for @ref iterator and - @ref const_iterator. - - This function is only called if this class is an @ref iterator. If this - class is a @ref const_iterator this function is not called. - */ - operator const_iterator() const - { - const_iterator ret; - - if (m_object) - { - ret.m_object = m_object; - ret.m_it = m_it; + m_it.object_iterator = typename object_t::iterator(); + break; } - return ret; - } - - /*! - @brief copy constructor - @param[in] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief copy assignment - @param[in,out] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(iter_impl other) noexcept( - std::is_nothrow_move_constructible<pointer>::value and - std::is_nothrow_move_assignable<pointer>::value and - std::is_nothrow_move_constructible<internal_iterator>::value and - std::is_nothrow_move_assignable<internal_iterator>::value - ) - { - std::swap(m_object, other.m_object); - std::swap(m_it, other.m_it); - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } + m_it.array_iterator = typename array_t::iterator(); + break; + } - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case basic_json::value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; } } + } - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept + /* + Use operator `const_iterator` instead of `const_iterator(const iterator& + other) noexcept` to avoid two class definitions for @ref iterator and + @ref const_iterator. + + This function is only called if this class is an @ref iterator. If this + class is a @ref const_iterator this function is not called. + */ + operator const_iterator() const + { + const_iterator ret; + + if (m_object) { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } + ret.m_object = m_object; + ret.m_it = m_it; } - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const + return ret; + } + + /*! + @brief copy constructor + @param[in] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief copy assignment + @param[in,out] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(iter_impl other) noexcept( + std::is_nothrow_move_constructible<pointer>::value and + std::is_nothrow_move_assignable<pointer>::value and + std::is_nothrow_move_constructible<internal_iterator>::value and + std::is_nothrow_move_assignable<internal_iterator>::value + ) + { + std::swap(m_object, other.m_object); + std::swap(m_it, other.m_it); + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } - case basic_json::value_t::null: - { + case basic_json::value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } + } - default: + default: + { + if (m_it.primitive_iterator.is_begin()) { - if (m_it.primitive_iterator.is_begin()) - { - return *m_object; - } + return *m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } } } + } - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } - default: + default: + { + if (m_it.primitive_iterator.is_begin()) { - if (m_it.primitive_iterator.is_begin()) - { - return m_object; - } + return m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; } } - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator++(int) - { - auto result = *this; - ++(*this); - return result; - } + return *this; + } - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator--(int) + { + auto result = *this; + --(*this); + return result; + } - switch (m_object->m_type) + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; - } + std::advance(m_it.object_iterator, -1); + break; } - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - default: - { - --m_it.primitive_iterator; - break; - } + std::advance(m_it.array_iterator, -1); + break; } - return *this; + default: + { + --m_it.primitive_iterator; + break; + } } - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) - { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - return (m_it.object_iterator == other.m_it.object_iterator); - } - - case basic_json::value_t::array: - { - return (m_it.array_iterator == other.m_it.array_iterator); - } - - default: - { - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } } - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } + assert(m_object != nullptr); - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const + switch (m_object->m_type) { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + case basic_json::value_t::object: { + return (m_it.object_iterator == other.m_it.object_iterator); + } + + case basic_json::value_t::array: + { + return (m_it.array_iterator == other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } + } - assert(m_object != nullptr); + assert(m_object != nullptr); - switch (m_object->m_type) + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot compare order of object iterators")); - } + } - case basic_json::value_t::array: - { - return (m_it.array_iterator < other.m_it.array_iterator); - } + case basic_json::value_t::array: + { + return (m_it.array_iterator < other.m_it.array_iterator); + } - default: - { - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } + default: + { + return (m_it.primitive_iterator < other.m_it.primitive_iterator); } } + } - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } } - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } + } - case basic_json::value_t::array: - { - return m_it.array_iterator - other.m_it.array_iterator; - } + case basic_json::value_t::array: + { + return m_it.array_iterator - other.m_it.array_iterator; + } - default: - { - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } + default: + { + return m_it.primitive_iterator - other.m_it.primitive_iterator; } } + } - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) { - assert(m_object != nullptr); - - switch (m_object->m_type) + case basic_json::value_t::object: { - case basic_json::value_t::object: - { JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); - } + } - case basic_json::value_t::array: - { - return *std::next(m_it.array_iterator, n); - } + case basic_json::value_t::array: + { + return *std::next(m_it.array_iterator, n); + } - case basic_json::value_t::null: - { + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } + } - default: + default: + { + if (m_it.primitive_iterator.get_value() == -n) { - if (m_it.primitive_iterator == -n) - { - return *m_object; - } + return *m_object; + } JSON_THROW(std::out_of_range("cannot get value")); - } } } + } - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (m_object->is_object()) { - assert(m_object != nullptr); - - if (m_object->is_object()) - { - return m_it.object_iterator->first; - } + return m_it.object_iterator->first; + } JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); - } + } - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator m_it = internal_iterator(); - }; + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator m_it = internal_iterator(); + }; /*! @brief a template for a reverse iterator class @@ -8953,9 +9417,9 @@ class basic_json @since version 1.0.0 */ template<typename Base> - class json_reverse_iterator : public std::reverse_iterator<Base> + class json_reverse_iterator : public std::reverse_iterator<Base> { - public: + public: /// shortcut to the reverse iterator adaptor using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element @@ -8963,89 +9427,89 @@ class basic_json /// create reverse iterator from iterator json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) - {} + : base_iterator(it) + {} - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept - : base_iterator(it) - {} + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept + : base_iterator(it) + {} - /// post-increment (it++) - json_reverse_iterator operator++(int) - { - return base_iterator::operator++(1); - } + /// post-increment (it++) + json_reverse_iterator operator++(int) + { + return base_iterator::operator++(1); + } - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - base_iterator::operator++(); - return *this; - } + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + base_iterator::operator++(); + return *this; + } - /// post-decrement (it--) - json_reverse_iterator operator--(int) - { - return base_iterator::operator--(1); - } + /// post-decrement (it--) + json_reverse_iterator operator--(int) + { + return base_iterator::operator--(1); + } - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - base_iterator::operator--(); - return *this; - } + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + base_iterator::operator--(); + return *this; + } - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - base_iterator::operator+=(i); - return *this; - } + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + base_iterator::operator+=(i); + return *this; + } - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return this->base() - other.base(); - } + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return this->base() - other.base(); + } - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } - /// return the key of an object iterator - typename object_t::key_type key() const - { - auto it = --this->base(); - return it.key(); - } + /// return the key of an object iterator + typename object_t::key_type key() const + { + auto it = --this->base(); + return it.key(); + } - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } - }; + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } + }; private: @@ -9062,761 +9526,761 @@ class basic_json */ class lexer { - public: + public: /// token types for the parser enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input ///< indicating the end of the input buffer - }; + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_number, ///< a number -- use get_number() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input ///< indicating the end of the input buffer + }; - /// the char type to use in the lexer - using lexer_char_t = unsigned char; + /// the char type to use in the lexer + using lexer_char_t = unsigned char; - /// a lexer from a buffer with given length - lexer(const lexer_char_t* buff, const size_t len) noexcept - : m_content(buff) - { - assert(m_content != nullptr); - m_start = m_cursor = m_content; - m_limit = m_content + len; - } + /// a lexer from a buffer with given length + lexer(const lexer_char_t* buff, const size_t len) noexcept + : m_content(buff) + { + assert(m_content != nullptr); + m_start = m_cursor = m_content; + m_limit = m_content + len; + } - /// a lexer from an input stream - explicit lexer(std::istream& s) - : m_stream(&s), m_line_buffer() + /// a lexer from an input stream + explicit lexer(std::istream& s) + : m_stream(&s), m_line_buffer() + { + // immediately abort if stream is erroneous + if (s.fail()) { - // immediately abort if stream is erroneous - if (s.fail()) - { JSON_THROW(std::invalid_argument("stream error")); - } - - // fill buffer - fill_line_buffer(); - - // skip UTF-8 byte-order mark - if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") - { - m_line_buffer[0] = ' '; - m_line_buffer[1] = ' '; - m_line_buffer[2] = ' '; - } } - // switch off unwanted functions (due to pointer members) - lexer() = delete; - lexer(const lexer&) = delete; - lexer operator=(const lexer&) = delete; + // fill buffer + fill_line_buffer(); - /*! - @brief create a string from one or two Unicode code points - - There are two cases: (1) @a codepoint1 is in the Basic Multilingual - Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) - @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to - represent a code point above U+FFFF. - - @param[in] codepoint1 the code point (can be high surrogate) - @param[in] codepoint2 the code point (can be low surrogate or 0) - - @return string representation of the code point; the length of the - result string is between 1 and 4 characters. - - @throw std::out_of_range if code point is > 0x10ffff; example: `"code - points above 0x10FFFF are invalid"` - @throw std::invalid_argument if the low surrogate is invalid; example: - `""missing or wrong low surrogate""` - - @complexity Constant. - - @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> - */ - static string_t to_unicode(const std::size_t codepoint1, - const std::size_t codepoint2 = 0) + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") { - // calculate the code point from the given code points - std::size_t codepoint = codepoint1; + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; + } + } - // check if codepoint1 is a high surrogate - if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) + // switch off unwanted functions (due to pointer members) + lexer() = delete; + lexer(const lexer&) = delete; + lexer operator=(const lexer&) = delete; + + /*! + @brief create a string from one or two Unicode code points + + There are two cases: (1) @a codepoint1 is in the Basic Multilingual + Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) + @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to + represent a code point above U+FFFF. + + @param[in] codepoint1 the code point (can be high surrogate) + @param[in] codepoint2 the code point (can be low surrogate or 0) + + @return string representation of the code point; the length of the + result string is between 1 and 4 characters. + + @throw std::out_of_range if code point is > 0x10ffff; example: `"code + points above 0x10FFFF are invalid"` + @throw std::invalid_argument if the low surrogate is invalid; example: + `""missing or wrong low surrogate""` + + @complexity Constant. + + @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> + */ + static string_t to_unicode(const std::size_t codepoint1, + const std::size_t codepoint2 = 0) + { + // calculate the code point from the given code points + std::size_t codepoint = codepoint1; + + // check if codepoint1 is a high surrogate + if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) + { + // check if codepoint2 is a low surrogate + if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) + { + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else { - // check if codepoint2 is a low surrogate - if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) - { - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); - } } + } - string_t result; + string_t result; - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - result.append(1, static_cast<typename string_t::value_type>(codepoint)); - } - else if (codepoint <= 0x7ff) - { - // 2-byte characters: 110xxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0xffff) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0x10ffff) - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else - { + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + result.append(1, static_cast<typename string_t::value_type>(codepoint)); + } + else if (codepoint <= 0x7ff) + { + // 2-byte characters: 110xxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0xffff) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0x10ffff) + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else + { JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); - } - - return result; } - /// return name of values of type token_type (only used for errors) - static std::string token_type_name(const token_type t) + return result; + } + + /// return name of values of type token_type (only used for errors) + static std::string token_type_name(const token_type t) + { + switch (t) { - switch (t) + case token_type::uninitialized: + return "<uninitialized>"; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_number: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return "<parse error>"; + case token_type::end_of_input: + return "end of input"; + default: { - case token_type::uninitialized: - return "<uninitialized>"; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case token_type::value_number: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return "<parse error>"; - case token_type::end_of_input: - return "end of input"; - default: - { - // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } + // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE } } + } - /*! - This function implements a scanner for JSON. It is specified using - regular expressions that try to follow RFC 7159 as close as possible. - These regular expressions are then translated into a minimized - deterministic finite automaton (DFA) by the tool - [re2c](http://re2c.org). As a result, the translated code for this - function consists of a large block of code with `goto` jumps. + /*! + This function implements a scanner for JSON. It is specified using + regular expressions that try to follow RFC 7159 as close as possible. + These regular expressions are then translated into a minimized + deterministic finite automaton (DFA) by the tool + [re2c](http://re2c.org). As a result, the translated code for this + function consists of a large block of code with `goto` jumps. - @return the class of the next token read from the buffer + @return the class of the next token read from the buffer - @complexity Linear in the length of the input.\n + @complexity Linear in the length of the input.\n - Proposition: The loop below will always terminate for finite input.\n + Proposition: The loop below will always terminate for finite input.\n - Proof (by contradiction): Assume a finite input. To loop forever, the - loop must never hit code with a `break` statement. The only code - snippets without a `break` statement are the continue statements for - whitespace and byte-order-marks. To loop forever, the input must be an - infinite sequence of whitespace or byte-order-marks. This contradicts - the assumption of finite input, q.e.d. - */ - token_type scan() + Proof (by contradiction): Assume a finite input. To loop forever, the + loop must never hit code with a `break` statement. The only code + snippets without a `break` statement are the continue statements for + whitespace and byte-order-marks. To loop forever, the input must be an + infinite sequence of whitespace or byte-order-marks. This contradicts + the assumption of finite input, q.e.d. + */ + token_type scan() + { + while (true) { - while (true) - { - // pointer for backtracking information - m_marker = nullptr; + // pointer for backtracking information + m_marker = nullptr; - // remember the begin of the token - m_start = m_cursor; - assert(m_start != nullptr); + // remember the begin of the token + m_start = m_cursor; + assert(m_start != nullptr); - /*!re2c - re2c:define:YYCTYPE = lexer_char_t; - re2c:define:YYCURSOR = m_cursor; - re2c:define:YYLIMIT = m_limit; - re2c:define:YYMARKER = m_marker; - re2c:define:YYFILL = "fill_line_buffer(@@); // LCOV_EXCL_LINE"; - re2c:define:YYFILL:naked = 1; - re2c:yyfill:enable = 1; - re2c:indent:string = " "; - re2c:indent:top = 1; - re2c:labelprefix = "basic_json_parser_"; + /*!re2c + re2c:define:YYCTYPE = lexer_char_t; + re2c:define:YYCURSOR = m_cursor; + re2c:define:YYLIMIT = m_limit; + re2c:define:YYMARKER = m_marker; + re2c:define:YYFILL = "fill_line_buffer(@@); // LCOV_EXCL_LINE"; + re2c:define:YYFILL:naked = 1; + re2c:yyfill:enable = 1; + re2c:indent:string = " "; + re2c:indent:top = 1; + re2c:labelprefix = "basic_json_parser_"; - // ignore whitespace - ws = [ \t\n\r]+; - ws { continue; } + // ignore whitespace + ws = [ \t\n\r]+; + ws { continue; } - // structural characters - "[" { last_token_type = token_type::begin_array; break; } - "]" { last_token_type = token_type::end_array; break; } - "{" { last_token_type = token_type::begin_object; break; } - "}" { last_token_type = token_type::end_object; break; } - "," { last_token_type = token_type::value_separator; break; } - ":" { last_token_type = token_type::name_separator; break; } + // structural characters + "[" { last_token_type = token_type::begin_array; break; } + "]" { last_token_type = token_type::end_array; break; } + "{" { last_token_type = token_type::begin_object; break; } + "}" { last_token_type = token_type::end_object; break; } + "," { last_token_type = token_type::value_separator; break; } + ":" { last_token_type = token_type::name_separator; break; } - // literal names - "null" { last_token_type = token_type::literal_null; break; } - "true" { last_token_type = token_type::literal_true; break; } - "false" { last_token_type = token_type::literal_false; break; } + // literal names + "null" { last_token_type = token_type::literal_null; break; } + "true" { last_token_type = token_type::literal_true; break; } + "false" { last_token_type = token_type::literal_false; break; } - // number - decimal_point = "."; - digit = [0-9]; - digit_1_9 = [1-9]; - e = "e" | "E"; - minus = "-"; - plus = "+"; - zero = "0"; - exp = e (minus | plus)? digit+; - frac = decimal_point digit+; - int = (zero | digit_1_9 digit*); - number = minus? int frac? exp?; - number { last_token_type = token_type::value_number; break; } + // number + decimal_point = "."; + digit = [0-9]; + digit_1_9 = [1-9]; + e = "e" | "E"; + minus = "-"; + plus = "+"; + zero = "0"; + exp = e (minus | plus)? digit+; + frac = decimal_point digit+; + int = (zero | digit_1_9 digit*); + number = minus? int frac? exp?; + number { last_token_type = token_type::value_number; break; } - // string - quotation_mark = "\""; - escape = "\\"; - unescaped = [^"\\\x00-\x1f]; - single_escaped = "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t"; - unicode_escaped = "u" [0-9a-fA-F]{4}; - escaped = escape (single_escaped | unicode_escaped); - char = unescaped | escaped; - string = quotation_mark char* quotation_mark; - string { last_token_type = token_type::value_string; break; } + // string + quotation_mark = "\""; + escape = "\\"; + unescaped = [^"\\\x00-\x1f]; + single_escaped = "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t"; + unicode_escaped = "u" [0-9a-fA-F]{4}; + escaped = escape (single_escaped | unicode_escaped); + char = unescaped | escaped; + string = quotation_mark char* quotation_mark; + string { last_token_type = token_type::value_string; break; } - // end of file - "\x00" { last_token_type = token_type::end_of_input; break; } + // end of file + "\x00" { last_token_type = token_type::end_of_input; break; } - // anything else is an error - * { last_token_type = token_type::parse_error; break; } - */ - } - - return last_token_type; + // anything else is an error + * { last_token_type = token_type::parse_error; break; } + */ } - /*! - @brief append data from the stream to the line buffer + return last_token_type; + } - This function is called by the scan() function when the end of the - buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be - incremented without leaving the limits of the line buffer. Note re2c - decides when to call this function. + /*! + @brief append data from the stream to the line buffer - If the lexer reads from contiguous storage, there is no trailing null - byte. Therefore, this function must make sure to add these padding - null bytes. + This function is called by the scan() function when the end of the + buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be + incremented without leaving the limits of the line buffer. Note re2c + decides when to call this function. - If the lexer reads from an input stream, this function reads the next - line of the input. + If the lexer reads from contiguous storage, there is no trailing null + byte. Therefore, this function must make sure to add these padding + null bytes. - @pre - p p p p p p u u u u u x . . . . . . - ^ ^ ^ ^ - m_content m_start | m_limit - m_cursor + If the lexer reads from an input stream, this function reads the next + line of the input. - @post - u u u u u x x x x x x x . . . . . . - ^ ^ ^ - | m_cursor m_limit - m_start - m_content - */ - void fill_line_buffer(size_t n = 0) - { - // if line buffer is used, m_content points to its data - assert(m_line_buffer.empty() - or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); + @pre + p p p p p p u u u u u x . . . . . . + ^ ^ ^ ^ + m_content m_start | m_limit + m_cursor - // if line buffer is used, m_limit is set past the end of its data - assert(m_line_buffer.empty() - or m_limit == m_content + m_line_buffer.size()); + @post + u u u u u x x x x x x x . . . . . . + ^ ^ ^ + | m_cursor m_limit + m_start + m_content + */ + void fill_line_buffer(size_t n = 0) + { + // if line buffer is used, m_content points to its data + assert(m_line_buffer.empty() + or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); - // pointer relationships - assert(m_content <= m_start); - assert(m_start <= m_cursor); - assert(m_cursor <= m_limit); - assert(m_marker == nullptr or m_marker <= m_limit); + // if line buffer is used, m_limit is set past the end of its data + assert(m_line_buffer.empty() + or m_limit == m_content + m_line_buffer.size()); - // number of processed characters (p) + // pointer relationships + assert(m_content <= m_start); + assert(m_start <= m_cursor); + assert(m_cursor <= m_limit); + assert(m_marker == nullptr or m_marker <= m_limit); + + // number of processed characters (p) const auto num_processed_chars = static_cast<size_t>(m_start - m_content); - // offset for m_marker wrt. to m_start - const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; - // number of unprocessed characters (u) - const auto offset_cursor = m_cursor - m_start; + // offset for m_marker wrt. to m_start + const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; + // number of unprocessed characters (u) + const auto offset_cursor = m_cursor - m_start; - // no stream is used or end of file is reached - if (m_stream == nullptr or m_stream->eof()) + // no stream is used or end of file is reached + if (m_stream == nullptr or m_stream->eof()) + { + // m_start may or may not be pointing into m_line_buffer at + // this point. We trust the standand library to do the right + // thing. See http://stackoverflow.com/q/28142011/266378 + m_line_buffer.assign(m_start, m_limit); + + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + if (n > 0) { - // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right - // thing. See http://stackoverflow.com/q/28142011/266378 - m_line_buffer.assign(m_start, m_limit); + m_line_buffer.append(n - 1, '\x01'); + } + } + else + { + // delete processed characters from line buffer + m_line_buffer.erase(0, num_processed_chars); + // read next line from input stream + m_line_buffer_tmp.clear(); + std::getline(*m_stream, m_line_buffer_tmp, '\n'); - // append n characters to make sure that there is sufficient - // space between m_cursor and m_limit - m_line_buffer.append(1, '\x00'); - if (n > 0) + // add line with newline symbol to the line buffer + m_line_buffer += m_line_buffer_tmp; + m_line_buffer.push_back('\n'); + } + + // set pointers + m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); + assert(m_content != nullptr); + m_start = m_content; + m_marker = m_start + offset_marker; + m_cursor = m_start + offset_cursor; + m_limit = m_start + m_line_buffer.size(); + } + + /// return string representation of last read token + string_t get_token_string() const + { + assert(m_start != nullptr); + return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), + static_cast<size_t>(m_cursor - m_start)); + } + + /*! + @brief return string value for string tokens + + The function iterates the characters between the opening and closing + quotes of the string value. The complete string is the range + [m_start,m_cursor). Consequently, we iterate from m_start+1 to + m_cursor-1. + + We differentiate two cases: + + 1. Escaped characters. In this case, a new character is constructed + according to the nature of the escape. Some escapes create new + characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied + as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape + `"\\uxxxx"` need special care. In this case, to_unicode takes care + of the construction of the values. + 2. Unescaped characters are copied as is. + + @pre `m_cursor - m_start >= 2`, meaning the length of the last token + is at least 2 bytes which is trivially true for any string (which + consists of at least two quotes). + + " c1 c2 c3 ... " + ^ ^ + m_start m_cursor + + @complexity Linear in the length of the string.\n + + Lemma: The loop body will always terminate.\n + + Proof (by contradiction): Assume the loop body does not terminate. As + the loop body does not contain another loop, one of the called + functions must never return. The called functions are `std::strtoul` + and to_unicode. Neither function can loop forever, so the loop body + will never loop forever which contradicts the assumption that the loop + body does not terminate, q.e.d.\n + + Lemma: The loop condition for the for loop is eventually false.\n + + Proof (by contradiction): Assume the loop does not terminate. Due to + the above lemma, this can only be due to a tautological loop + condition; that is, the loop condition i < m_cursor - 1 must always be + true. Let x be the change of i for any loop iteration. Then + m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This + can be rephrased to m_cursor - m_start - 2 > x. With the + precondition, we x <= 0, meaning that the loop condition holds + indefinitly if i is always decreased. However, observe that the value + of i is strictly increasing with each iteration, as it is incremented + by 1 in the iteration expression and never decremented inside the loop + body. Hence, the loop condition will eventually be false which + contradicts the assumption that the loop condition is a tautology, + q.e.d. + + @return string value of current token without opening and closing + quotes + @throw std::out_of_range if to_unicode fails + */ + string_t get_string() const + { + assert(m_cursor - m_start >= 2); + + string_t result; + result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); + + // iterate the result between the quotes + for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) + { + // find next escape character + auto e = std::find(i, m_cursor - 1, '\\'); + if (e != i) + { + // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 + for (auto k = i; k < e; k++) { - m_line_buffer.append(n - 1, '\x01'); + result.push_back(static_cast<typename string_t::value_type>(*k)); } + i = e - 1; // -1 because of ++i } else { - // delete processed characters from line buffer - m_line_buffer.erase(0, num_processed_chars); - // read next line from input stream - m_line_buffer_tmp.clear(); - std::getline(*m_stream, m_line_buffer_tmp, '\n'); + // processing escaped character + // read next character + ++i; - // add line with newline symbol to the line buffer - m_line_buffer += m_line_buffer_tmp; - m_line_buffer.push_back('\n'); - } - - // set pointers - m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); - assert(m_content != nullptr); - m_start = m_content; - m_marker = m_start + offset_marker; - m_cursor = m_start + offset_cursor; - m_limit = m_start + m_line_buffer.size(); - } - - /// return string representation of last read token - string_t get_token_string() const - { - assert(m_start != nullptr); - return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), - static_cast<size_t>(m_cursor - m_start)); - } - - /*! - @brief return string value for string tokens - - The function iterates the characters between the opening and closing - quotes of the string value. The complete string is the range - [m_start,m_cursor). Consequently, we iterate from m_start+1 to - m_cursor-1. - - We differentiate two cases: - - 1. Escaped characters. In this case, a new character is constructed - according to the nature of the escape. Some escapes create new - characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied - as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape - `"\\uxxxx"` need special care. In this case, to_unicode takes care - of the construction of the values. - 2. Unescaped characters are copied as is. - - @pre `m_cursor - m_start >= 2`, meaning the length of the last token - is at least 2 bytes which is trivially true for any string (which - consists of at least two quotes). - - " c1 c2 c3 ... " - ^ ^ - m_start m_cursor - - @complexity Linear in the length of the string.\n - - Lemma: The loop body will always terminate.\n - - Proof (by contradiction): Assume the loop body does not terminate. As - the loop body does not contain another loop, one of the called - functions must never return. The called functions are `std::strtoul` - and to_unicode. Neither function can loop forever, so the loop body - will never loop forever which contradicts the assumption that the loop - body does not terminate, q.e.d.\n - - Lemma: The loop condition for the for loop is eventually false.\n - - Proof (by contradiction): Assume the loop does not terminate. Due to - the above lemma, this can only be due to a tautological loop - condition; that is, the loop condition i < m_cursor - 1 must always be - true. Let x be the change of i for any loop iteration. Then - m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This - can be rephrased to m_cursor - m_start - 2 > x. With the - precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value - of i is strictly increasing with each iteration, as it is incremented - by 1 in the iteration expression and never decremented inside the loop - body. Hence, the loop condition will eventually be false which - contradicts the assumption that the loop condition is a tautology, - q.e.d. - - @return string value of current token without opening and closing - quotes - @throw std::out_of_range if to_unicode fails - */ - string_t get_string() const - { - assert(m_cursor - m_start >= 2); - - string_t result; - result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); - - // iterate the result between the quotes - for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) - { - // find next escape character - auto e = std::find(i, m_cursor - 1, '\\'); - if (e != i) + switch (*i) { - // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 - for (auto k = i; k < e; k++) + // the default escapes + case 't': { - result.push_back(static_cast<typename string_t::value_type>(*k)); + result += "\t"; + break; } - i = e - 1; // -1 because of ++i - } - else - { - // processing escaped character - // read next character - ++i; - - switch (*i) + case 'b': { - // the default escapes - case 't': - { - result += "\t"; - break; - } - case 'b': - { - result += "\b"; - break; - } - case 'f': - { - result += "\f"; - break; - } - case 'n': - { - result += "\n"; - break; - } - case 'r': - { - result += "\r"; - break; - } - case '\\': - { - result += "\\"; - break; - } - case '/': - { - result += "/"; - break; - } - case '"': - { - result += "\""; - break; - } + result += "\b"; + break; + } + case 'f': + { + result += "\f"; + break; + } + case 'n': + { + result += "\n"; + break; + } + case 'r': + { + result += "\r"; + break; + } + case '\\': + { + result += "\\"; + break; + } + case '/': + { + result += "/"; + break; + } + case '"': + { + result += "\""; + break; + } - // unicode - case 'u': - { - // get code xxxx from uxxxx - auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), - 4).c_str(), nullptr, 16); + // unicode + case 'u': + { + // get code xxxx from uxxxx + auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), + 4).c_str(), nullptr, 16); - // check if codepoint is a high surrogate - if (codepoint >= 0xD800 and codepoint <= 0xDBFF) + // check if codepoint is a high surrogate + if (codepoint >= 0xD800 and codepoint <= 0xDBFF) + { + // make sure there is a subsequent unicode + if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') { - // make sure there is a subsequent unicode - if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') - { JSON_THROW(std::invalid_argument("missing low surrogate")); - } + } - // get code yyyy from uxxxx\uyyyy - auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> - (i + 7), 4).c_str(), nullptr, 16); - result += to_unicode(codepoint, codepoint2); - // skip the next 10 characters (xxxx\uyyyy) - i += 10; - } - else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) - { - // we found a lone low surrogate - JSON_THROW(std::invalid_argument("missing high surrogate")); - } - else - { - // add unicode character(s) - result += to_unicode(codepoint); - // skip the next four characters (xxxx) - i += 4; - } - break; + // get code yyyy from uxxxx\uyyyy + auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> + (i + 7), 4).c_str(), nullptr, 16); + result += to_unicode(codepoint, codepoint2); + // skip the next 10 characters (xxxx\uyyyy) + i += 10; } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + JSON_THROW(std::invalid_argument("missing high surrogate")); + } + else + { + // add unicode character(s) + result += to_unicode(codepoint); + // skip the next four characters (xxxx) + i += 4; + } + break; } } } - - return result; } - /*! - @brief parse floating point number + return result; + } - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). + /*! + @brief parse floating point number - @param[in,out] endptr recieves a pointer to the first character after - the number + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). - @return the floating point number - */ - long double str_to_float_t(long double* /* type */, char** endptr) const + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + long double str_to_float_t(long double* /* type */, char** endptr) const + { + return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + double str_to_float_t(double* /* type */, char** endptr) const + { + return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + float str_to_float_t(float* /* type */, char** endptr) const + { + return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief return number value for number tokens + + This function translates the last token into the most appropriate + number type (either integer, unsigned integer or floating point), + which is passed back to the caller via the result parameter. + + This function parses the integer component up to the radix point or + exponent while collecting information about the 'floating point + representation', which it stores in the result parameter. If there is + no radix point or exponent, and the number can fit into a @ref + number_integer_t or @ref number_unsigned_t then it sets the result + parameter accordingly. + + If the number is a floating point number the number is then parsed + using @a std:strtod (or @a std:strtof or @a std::strtold). + + @param[out] result @ref basic_json object to receive the number, or + NAN if the conversion read past the current token. The latter case + needs to be treated by the caller function. + */ + void get_number(basic_json& result) const + { + assert(m_start != nullptr); + + const lexer::lexer_char_t* curptr = m_start; + + // accumulate the integer conversion result (unsigned for now) + number_unsigned_t value = 0; + + // maximum absolute value of the relevant integer type + number_unsigned_t max; + + // temporarily store the type to avoid unecessary bitfield access + value_t type; + + // look for sign + if (*curptr == '-') { - return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + type = value_t::number_integer; + max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; + curptr++; + } + else + { + type = value_t::number_unsigned; + max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); } - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const + // count the significant figures + for (; curptr < m_cursor; curptr++) { - return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief return number value for number tokens - - This function translates the last token into the most appropriate - number type (either integer, unsigned integer or floating point), - which is passed back to the caller via the result parameter. - - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. - - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. - */ - void get_number(basic_json& result) const - { - assert(m_start != nullptr); - - const lexer::lexer_char_t* curptr = m_start; - - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') + // quickly skip tests if a digit + if (*curptr < '0' || *curptr > '9') { - type = value_t::number_integer; - max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') + if (*curptr == '.') { - if (*curptr == '.') - { - // don't count '.' but change to float - type = value_t::number_float; - continue; - } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details + // don't count '.' but change to float type = value_t::number_float; - break; - } - - // skip if definitely not an integer - if (type != value_t::number_float) - { - auto digit = static_cast<number_unsigned_t>(*curptr - '0'); - - // overflow if value * 10 + digit > max, move terms around - // to avoid overflow in intermediate values - if (value > (max - digit) / 10) - { - // overflow - type = value_t::number_float; - } - else - { - // no overflow - value = value * 10 + digit; - } + continue; } + // assume exponent (if not then will fail parse): change to + // float, stop counting and record exponent details + type = value_t::number_float; + break; } - // save the value (if not a float) - if (type == value_t::number_unsigned) + // skip if definitely not an integer + if (type != value_t::number_float) { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - // invariant: if we parsed a '-', the absolute value is between - // 0 (we allow -0) and max == -INT64_MIN - assert(value >= 0); - assert(value <= max); + auto digit = static_cast<number_unsigned_t>(*curptr - '0'); - if (value == max) + // overflow if value * 10 + digit > max, move terms around + // to avoid overflow in intermediate values + if (value > (max - digit) / 10) { - // we cannot simply negate value (== max == -INT64_MIN), - // see https://github.com/nlohmann/json/issues/389 - result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + // overflow + type = value_t::number_float; } else { - // all other values can be negated safely - result.m_value.number_integer = -static_cast<number_integer_t>(value); + // no overflow + value = value * 10 + digit; } } + } + + // save the value (if not a float) + if (type == value_t::number_unsigned) + { + result.m_value.number_unsigned = value; + } + else if (type == value_t::number_integer) + { + // invariant: if we parsed a '-', the absolute value is between + // 0 (we allow -0) and max == -INT64_MIN + assert(value >= 0); + assert(value <= max); + + if (value == max) + { + // we cannot simply negate value (== max == -INT64_MIN), + // see https://github.com/nlohmann/json/issues/389 + result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + } else { - // parse with strtod + // all other values can be negated safely + result.m_value.number_integer = -static_cast<number_integer_t>(value); + } + } + else + { + // parse with strtod result.m_value.number_float = str_to_float_t(static_cast<number_float_t*>(nullptr), nullptr); - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - type = value_t::null; - result.m_value = basic_json::json_value(); - } + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); } - - // save the type - result.m_type = type; } - private: - /// optional input stream - std::istream* m_stream = nullptr; - /// line buffer buffer for m_stream - string_t m_line_buffer {}; - /// used for filling m_line_buffer - string_t m_line_buffer_tmp {}; - /// the buffer pointer - const lexer_char_t* m_content = nullptr; - /// pointer to the beginning of the current symbol - const lexer_char_t* m_start = nullptr; - /// pointer for backtracking information - const lexer_char_t* m_marker = nullptr; - /// pointer to the current symbol - const lexer_char_t* m_cursor = nullptr; - /// pointer to the end of the buffer - const lexer_char_t* m_limit = nullptr; - /// the last token type - token_type last_token_type = token_type::end_of_input; - }; + // save the type + result.m_type = type; + } + + private: + /// optional input stream + std::istream* m_stream = nullptr; + /// line buffer buffer for m_stream + string_t m_line_buffer {}; + /// used for filling m_line_buffer + string_t m_line_buffer_tmp {}; + /// the buffer pointer + const lexer_char_t* m_content = nullptr; + /// pointer to the beginning of the current symbol + const lexer_char_t* m_start = nullptr; + /// pointer for backtracking information + const lexer_char_t* m_marker = nullptr; + /// pointer to the current symbol + const lexer_char_t* m_cursor = nullptr; + /// pointer to the end of the buffer + const lexer_char_t* m_limit = nullptr; + /// the last token type + token_type last_token_type = token_type::end_of_input; + }; /*! @brief syntax analysis @@ -9825,282 +10289,282 @@ class basic_json */ class parser { - public: + public: /// a parser reading from a string literal parser(const char* buff, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) - {} + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) + {} - /// a parser reading from an input stream - parser(std::istream& is, const parser_callback_t cb = nullptr) - : callback(cb), m_lexer(is) - {} + /// a parser reading from an input stream + parser(std::istream& is, const parser_callback_t cb = nullptr) + : callback(cb), m_lexer(is) + {} - /// a parser reading from an iterator range with contiguous storage - template<class IteratorType, typename std::enable_if< - std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value - , int>::type - = 0> - parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), - static_cast<size_t>(std::distance(first, last))) - {} + /// a parser reading from an iterator range with contiguous storage + template<class IteratorType, typename std::enable_if< + std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value + , int>::type + = 0> + parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), + static_cast<size_t>(std::distance(first, last))) + {} - /// public parser interface - basic_json parse() + /// public parser interface + basic_json parse() + { + // read first token + get_token(); + + basic_json result = parse_internal(true); + result.assert_invariant(); + + expect(lexer::token_type::end_of_input); + + // return parser result and replace it with null in case the + // top-level value was discarded by the callback function + return result.is_discarded() ? basic_json() : std::move(result); + } + + private: + /// the actual parser + basic_json parse_internal(bool keep) + { + auto result = basic_json(value_t::discarded); + + switch (last_token) { - // read first token - get_token(); - - basic_json result = parse_internal(true); - result.assert_invariant(); - - expect(lexer::token_type::end_of_input); - - // return parser result and replace it with null in case the - // top-level value was discarded by the callback function - return result.is_discarded() ? basic_json() : std::move(result); - } - - private: - /// the actual parser - basic_json parse_internal(bool keep) - { - auto result = basic_json(value_t::discarded); - - switch (last_token) + case lexer::token_type::begin_object: { - case lexer::token_type::begin_object: + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) - { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } - // read next token - get_token(); + // read next token + get_token(); - // closing } -> we are done - if (last_token == lexer::token_type::end_object) - { - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result = basic_json(value_t::discarded); - } - return result; - } - - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse key-value pairs - do - { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) - { - get_token(); - } - - // store key - expect(lexer::token_type::value_string); - const auto key = m_lexer.get_string(); - - bool keep_tag = false; - if (keep) - { - if (callback) - { - basic_json k(key); - keep_tag = callback(depth, parse_event_t::key, k); - } - else - { - keep_tag = true; - } - } - - // parse separator (:) - get_token(); - expect(lexer::token_type::name_separator); - - // parse and add value - get_token(); - auto value = parse_internal(keep); - if (keep and keep_tag and not value.is_discarded()) - { - result[key] = std::move(value); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing } - expect(lexer::token_type::end_object); + // closing } -> we are done + if (last_token == lexer::token_type::end_object) + { get_token(); if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) { result = basic_json(value_t::discarded); } - return result; } - case lexer::token_type::begin_array: + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse key-value pairs + do { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) - { - // explicitly set result to object to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == lexer::token_type::end_array) + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) { get_token(); - if (callback and not callback(--depth, parse_event_t::array_end, result)) - { - result = basic_json(value_t::discarded); - } - return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); + // store key + expect(lexer::token_type::value_string); + const auto key = m_lexer.get_string(); - // otherwise: parse values - do + bool keep_tag = false; + if (keep) { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) + if (callback) { - get_token(); + basic_json k(key); + keep_tag = callback(depth, parse_event_t::key, k); } - - // parse value - auto value = parse_internal(keep); - if (keep and not value.is_discarded()) + else { - result.push_back(std::move(value)); + keep_tag = true; } } - while (last_token == lexer::token_type::value_separator); - // closing ] - expect(lexer::token_type::end_array); + // parse separator (:) get_token(); - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + expect(lexer::token_type::name_separator); + + // parse and add value + get_token(); + auto value = parse_internal(keep); + if (keep and keep_tag and not value.is_discarded()) + { + result[key] = std::move(value); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing } + expect(lexer::token_type::end_object); + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result = basic_json(value_t::discarded); + } + + return result; + } + + case lexer::token_type::begin_array: + { + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) + { + // explicitly set result to object to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == lexer::token_type::end_array) + { + get_token(); + if (callback and not callback(--depth, parse_event_t::array_end, result)) { result = basic_json(value_t::discarded); } - return result; } - case lexer::token_type::literal_null: + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse values + do { - get_token(); - result.m_type = value_t::null; - break; + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) + { + get_token(); + } + + // parse value + auto value = parse_internal(keep); + if (keep and not value.is_discarded()) + { + result.push_back(std::move(value)); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing ] + expect(lexer::token_type::end_array); + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + { + result = basic_json(value_t::discarded); } - case lexer::token_type::value_string: - { - const auto s = m_lexer.get_string(); - get_token(); - result = basic_json(s); - break; - } - - case lexer::token_type::literal_true: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case lexer::token_type::literal_false: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case lexer::token_type::value_number: - { - m_lexer.get_number(result); - get_token(); - break; - } - - default: - { - // the last token was unexpected - unexpect(last_token); - } + return result; } - if (keep and callback and not callback(depth, parse_event_t::value, result)) + case lexer::token_type::literal_null: { - result = basic_json(value_t::discarded); + get_token(); + result.m_type = value_t::null; + break; } - return result; - } - /// get next token from lexer - typename lexer::token_type get_token() - { - last_token = m_lexer.scan(); - return last_token; - } - - void expect(typename lexer::token_type t) const - { - if (t != last_token) + case lexer::token_type::value_string: { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); - error_msg += "; expected " + lexer::token_type_name(t); + const auto s = m_lexer.get_string(); + get_token(); + result = basic_json(s); + break; + } + + case lexer::token_type::literal_true: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case lexer::token_type::literal_false: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case lexer::token_type::value_number: + { + m_lexer.get_number(result); + get_token(); + break; + } + + default: + { + // the last token was unexpected + unexpect(last_token); + } + } + + if (keep and callback and not callback(depth, parse_event_t::value, result)) + { + result = basic_json(value_t::discarded); + } + return result; + } + + /// get next token from lexer + typename lexer::token_type get_token() + { + last_token = m_lexer.scan(); + return last_token; + } + + void expect(typename lexer::token_type t) const + { + if (t != last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); + error_msg += "; expected " + lexer::token_type_name(t); JSON_THROW(std::invalid_argument(error_msg)); - } } + } - void unexpect(typename lexer::token_type t) const + void unexpect(typename lexer::token_type t) const + { + if (t == last_token) { - if (t == last_token) - { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); JSON_THROW(std::invalid_argument(error_msg)); - } } + } - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - typename lexer::token_type last_token = lexer::token_type::uninitialized; - /// the lexer - lexer m_lexer; - }; + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + typename lexer::token_type last_token = lexer::token_type::uninitialized; + /// the lexer + lexer m_lexer; + }; public: /*! @@ -10119,7 +10583,7 @@ class basic_json /// allow basic_json to access private members friend class basic_json; - public: + public: /*! @brief create JSON pointer @@ -10143,562 +10607,562 @@ class basic_json @since version 2.0.0 */ explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} + : reference_tokens(split(s)) + {} - /*! - @brief return a string representation of the JSON pointer + /*! + @brief return a string representation of the JSON pointer - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode - @return a string representation of the JSON pointer + @return a string representation of the JSON pointer - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} - @since version 2.0.0 - */ - std::string to_string() const noexcept + @since version 2.0.0 + */ + std::string to_string() const noexcept + { + return std::accumulate(reference_tokens.begin(), + reference_tokens.end(), std::string{}, + [](const std::string & a, const std::string & b) { - return std::accumulate(reference_tokens.begin(), - reference_tokens.end(), std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + escape(b); - }); - } + return a + "/" + escape(b); + }); + } - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } - private: - /// remove and return last reference pointer - std::string pop_back() + private: + /// remove and return last reference pointer + std::string pop_back() + { + if (is_root()) { - if (is_root()) - { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; } - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; + } - json_pointer top() const + /// return whether pointer points to the root document + bool is_root() const + { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (is_root()) { - if (is_root()) - { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; } - /*! - @brief create and return a reference to the pointed to value + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } - @complexity Linear in the number of reference tokens. - */ - reference get_and_create(reference j) const + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + */ + reference get_and_create(reference j) const + { + pointer result = &j; + + // in case no reference tokens exist, return a reference to the + // JSON value j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) { - pointer result = &j; - - // in case no reference tokens exist, return a reference to the - // JSON value j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) + switch (result->m_type) { - switch (result->m_type) + case value_t::null: { - case value_t::null: + if (reference_token == "0") { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; + // start a new array if reference token is 0 + result = &result->operator[](0); } - - case value_t::object: + else { - // create an entry in the object + // start a new object otherwise result = &result->operator[](reference_token); - break; - } - - case value_t::array: - { - // create an entry in the array - result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - /* - The following code is only reached if there exists a - reference token _and_ the current value is primitive. In - this case, we have an error situation, because primitive - values may only occur as single value; that is, with an - empty list of reference tokens. - */ - default: - { - JSON_THROW(std::domain_error("invalid value to unflatten")); - } - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries - to create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number - */ - reference get_unchecked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == value_t::null) - { - // check if reference token is a number - const bool nums = std::all_of(reference_token.begin(), - reference_token.end(), - [](const char x) - { - return std::isdigit(x); - }); - - // change value to array for numbers or "-" or to object - // otherwise - if (nums or reference_token == "-") - { - *ptr = value_t::array; - } - else - { - *ptr = value_t::object; - } - } - - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicityly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - } - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - reference get_checked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - */ - const_reference get_unchecked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" cannot be used for const access - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // use unchecked array access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - const_reference get_checked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /// split the string input to reference tokens - static std::vector<std::string> split(const std::string& reference_string) - { - std::vector<std::string> result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (reference_string[0] != '/') - { - JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1')) - { - JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - private: - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, - const std::string& f, - const std::string& t) - { - assert(not f.empty()); - - for ( - size_t pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t - pos = s.find(f, pos + t.size()) // find next occurrence of f - ); - } - - /// escape tilde and slash - static std::string escape(std::string s) - { - // escape "~"" to "~0" and "/" to "~1" - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape tilde and slash - static void unescape(std::string& s) - { - // first transform any occurrence of the sequence '~1' to '/' - replace_substring(s, "~1", "/"); - // then transform any occurrence of the sequence '~0' to '~' - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const basic_json& value, - basic_json& result) - { - switch (value.m_type) - { - case value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } } break; } case value_t::object: { - if (value.m_value.object->empty()) + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case value_t::array: + { + // create an entry in the array + result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + /* + The following code is only reached if there exists a + reference token _and_ the current value is primitive. In + this case, we have an error situation, because primitive + values may only occur as single value; that is, with an + empty list of reference tokens. + */ + default: + { + JSON_THROW(std::domain_error("invalid value to unflatten")); + } + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries + to create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw std::out_of_range if the JSON pointer can not be resolved + @throw std::domain_error if an array index begins with '0' + @throw std::invalid_argument if an array index was not a number + */ + reference get_unchecked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == value_t::null) + { + // check if reference token is a number + const bool nums = std::all_of(reference_token.begin(), + reference_token.end(), + [](const char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object + // otherwise + if (nums or reference_token == "-") + { + *ptr = value_t::array; + } + else + { + *ptr = value_t::object; + } + } + + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') { - // flatten empty object as null - result[reference_string] = nullptr; + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicityly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); } else { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), - element.second, result); - } + // convert array index to number; unchecked access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); } break; } default: { - // add primitive value with its reference string - result[reference_string] = value; - break; + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); } } } - /*! - @param[in] value flattened JSON + return *ptr; + } - @return unflattened JSON - */ - static basic_json unflatten(const basic_json& value) + reference get_checked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) { - if (not value.is_object()) + switch (ptr->m_type) { - JSON_THROW(std::domain_error("only objects can be unflattened")); - } - - basic_json result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (not element.second.is_primitive()) + case value_t::object: { - JSON_THROW(std::domain_error("values in object must be primitive")); + // note: at performs range check + ptr = &ptr->at(reference_token); + break; } - // assign value to reference pointed to by JSON pointer; Note - // that if the JSON pointer is "" (i.e., points to the whole - // value), function get_and_create returns a reference to - // result itself. An assignment will then create a primitive - // value. - json_pointer(element.first).get_and_create(result) = element.second; - } + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + */ + const_reference get_unchecked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" cannot be used for const access + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // use unchecked array access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + const_reference get_checked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /// split the string input to reference tokens + static std::vector<std::string> split(const std::string& reference_string) + { + std::vector<std::string> result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { return result; } - private: - /// the reference tokens - std::vector<std::string> reference_tokens {}; - }; + // check if nonempty reference string begins with slash + if (reference_string[0] != '/') + { + JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1')) + { + JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + private: + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, + const std::string& f, + const std::string& t) + { + assert(not f.empty()); + + for ( + size_t pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t + pos = s.find(f, pos + t.size()) // find next occurrence of f + ); + } + + /// escape tilde and slash + static std::string escape(std::string s) + { + // escape "~"" to "~0" and "/" to "~1" + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape tilde and slash + static void unescape(std::string& s) + { + // first transform any occurrence of the sequence '~1' to '/' + replace_substring(s, "~1", "/"); + // then transform any occurrence of the sequence '~0' to '~' + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const basic_json& value, + basic_json& result) + { + switch (value.m_type) + { + case value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), + element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + */ + static basic_json unflatten(const basic_json& value) + { + if (not value.is_object()) + { + JSON_THROW(std::domain_error("only objects can be unflattened")); + } + + basic_json result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (not element.second.is_primitive()) + { + JSON_THROW(std::domain_error("values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note + // that if the JSON pointer is "" (i.e., points to the whole + // value), function get_and_create returns a reference to + // result itself. An assignment will then create a primitive + // value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + private: + /// the reference tokens + std::vector<std::string> reference_tokens {}; + }; ////////////////////////// // JSON Pointer support // @@ -11379,38 +11843,38 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std -{ -/*! -@brief exchanges the values of two JSON objects - -@since version 1.0.0 -*/ -template<> -inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible<nlohmann::json>::value and - is_nothrow_move_assignable<nlohmann::json>::value - ) -{ - j1.swap(j2); -} - -/// hash value for JSON objects -template<> -struct hash<nlohmann::json> { /*! - @brief return a hash value for a JSON object + @brief exchanges the values of two JSON objects @since version 1.0.0 */ - std::size_t operator()(const nlohmann::json& j) const + template<> + inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible<nlohmann::json>::value and + is_nothrow_move_assignable<nlohmann::json>::value + ) + { + j1.swap(j2); + } + + /// hash value for JSON objects + template<> + struct hash<nlohmann::json> + { + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation const auto& h = hash<nlohmann::json::string_t>(); return h(j.dump()); } -}; + }; } // namespace std /*! diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 40867b19d..71e75df43 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -39,66 +39,66 @@ TEST_CASE("lexer class") SECTION("structural characters") { CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("["), - 1).scan() == json::lexer::token_type::begin_array)); + 1).scan() == json::lexer::token_type::begin_array)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("]"), - 1).scan() == json::lexer::token_type::end_array)); + 1).scan() == json::lexer::token_type::end_array)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("{"), - 1).scan() == json::lexer::token_type::begin_object)); + 1).scan() == json::lexer::token_type::begin_object)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("}"), - 1).scan() == json::lexer::token_type::end_object)); + 1).scan() == json::lexer::token_type::end_object)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(","), - 1).scan() == json::lexer::token_type::value_separator)); + 1).scan() == json::lexer::token_type::value_separator)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(":"), - 1).scan() == json::lexer::token_type::name_separator)); + 1).scan() == json::lexer::token_type::name_separator)); } SECTION("literal names") { CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("null"), - 4).scan() == json::lexer::token_type::literal_null)); + 4).scan() == json::lexer::token_type::literal_null)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("true"), - 4).scan() == json::lexer::token_type::literal_true)); + 4).scan() == json::lexer::token_type::literal_true)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("false"), - 5).scan() == json::lexer::token_type::literal_false)); + 5).scan() == json::lexer::token_type::literal_false)); } SECTION("numbers") { CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("0"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("2"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("3"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("4"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("5"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("6"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("7"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("8"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("9"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_number)); } SECTION("whitespace") { // result is end_of_input, because not token is following CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" "), - 1).scan() == json::lexer::token_type::end_of_input)); + 1).scan() == json::lexer::token_type::end_of_input)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\t"), - 1).scan() == json::lexer::token_type::end_of_input)); + 1).scan() == json::lexer::token_type::end_of_input)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\n"), - 1).scan() == json::lexer::token_type::end_of_input)); + 1).scan() == json::lexer::token_type::end_of_input)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("\r"), - 1).scan() == json::lexer::token_type::end_of_input)); + 1).scan() == json::lexer::token_type::end_of_input)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>(" \t\n\r\n\t "), - 7).scan() == json::lexer::token_type::end_of_input)); + 7).scan() == json::lexer::token_type::end_of_input)); } } diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 364c5ae7b..0cd834d6c 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -38,252 +38,257 @@ using nlohmann::json; namespace udt { - enum class country - { +enum class country +{ china, france, russia - }; +}; - struct age - { +struct age +{ int m_val; - }; +}; - struct name - { +struct name +{ std::string m_val; - }; +}; - struct address - { +struct address +{ std::string m_val; - }; +}; - struct person - { +struct person +{ age m_age; name m_name; country m_country; - }; +}; - struct contact - { +struct contact +{ person m_person; address m_address; - }; +}; - struct contact_book - { +struct contact_book +{ name m_book_name; std::vector<contact> m_contacts; - }; +}; } // to_json methods namespace udt { - // templates because of the custom_json tests (see below) - template <typename Json> - void to_json(Json& j, age a) - { +// templates because of the custom_json tests (see below) +template <typename Json> +void to_json(Json& j, age a) +{ j = a.m_val; - } +} - template <typename Json> - void to_json(Json& j, name const& n) - { +template <typename Json> +void to_json(Json& j, name const& n) +{ j = n.m_val; - } +} - template <typename Json> - void to_json(Json& j, country c) - { +template <typename Json> +void to_json(Json& j, country c) +{ switch (c) { - case country::china: - j = u8"中华人民共和国"; - return; - case country::france: - j = "France"; - return; - case country::russia: - j = u8"Российская Федерация"; - return; + case country::china: + j = u8"中华人民共和国"; + return; + case country::france: + j = "France"; + return; + case country::russia: + j = u8"Российская Федерация"; + return; } - } +} - template <typename Json> - void to_json(Json& j, person const& p) - { +template <typename Json> +void to_json(Json& j, person const& p) +{ j = Json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; - } +} - void to_json(nlohmann::json& j, address const& a) - { +void to_json(nlohmann::json& j, address const& a) +{ j = a.m_val; - } +} - void to_json(nlohmann::json& j, contact const& c) - { +void to_json(nlohmann::json& j, contact const& c) +{ j = json{{"person", c.m_person}, {"address", c.m_address}}; - } +} - void to_json(nlohmann::json& j, contact_book const& cb) - { +void to_json(nlohmann::json& j, contact_book const& cb) +{ j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; - } +} - // operators - bool operator==(age lhs, age rhs) - { +// operators +bool operator==(age lhs, age rhs) +{ return lhs.m_val == rhs.m_val; - } +} - bool operator==(address const &lhs, address const &rhs) - { +bool operator==(address const& lhs, address const& rhs) +{ return lhs.m_val == rhs.m_val; - } +} - bool operator==(name const &lhs, name const &rhs) - { +bool operator==(name const& lhs, name const& rhs) +{ return lhs.m_val == rhs.m_val; - } +} - bool operator==(person const &lhs, person const &rhs) - { +bool operator==(person const& lhs, person const& rhs) +{ return std::tie(lhs.m_name, lhs.m_age) == std::tie(rhs.m_name, rhs.m_age); - } +} - bool operator==(contact const &lhs, contact const &rhs) - { +bool operator==(contact const& lhs, contact const& rhs) +{ return std::tie(lhs.m_person, lhs.m_address) == std::tie(rhs.m_person, rhs.m_address); - } +} - bool operator==(contact_book const &lhs, contact_book const &rhs) - { +bool operator==(contact_book const& lhs, contact_book const& rhs) +{ return std::tie(lhs.m_book_name, lhs.m_contacts) == std::tie(rhs.m_book_name, rhs.m_contacts); - } +} } // from_json methods namespace udt { - template <typename Json> - void from_json(Json const& j, age &a) - { +template <typename Json> +void from_json(Json const& j, age& a) +{ a.m_val = j.template get<int>(); - } +} - template <typename Json> - void from_json(Json const& j, name &n) - { +template <typename Json> +void from_json(Json const& j, name& n) +{ n.m_val = j.template get<std::string>(); - } +} - template <typename Json> - void from_json(Json const &j, country &c) - { +template <typename Json> +void from_json(Json const& j, country& c) +{ const auto str = j.template get<std::string>(); - static const std::map<std::string, country> m = { + static const std::map<std::string, country> m = + { {u8"中华人民共和国", country::china}, {"France", country::france}, - {"Российская Федерация", country::russia}}; + {"Российская Федерация", country::russia} + }; const auto it = m.find(str); // TODO test exceptions c = it->second; - } +} - template <typename Json> - void from_json(Json const& j, person &p) - { +template <typename Json> +void from_json(Json const& j, person& p) +{ p.m_age = j["age"].template get<age>(); p.m_name = j["name"].template get<name>(); p.m_country = j["country"].template get<country>(); - } +} - void from_json(nlohmann::json const &j, address &a) - { +void from_json(nlohmann::json const& j, address& a) +{ a.m_val = j.get<std::string>(); - } +} - void from_json(nlohmann::json const& j, contact &c) - { +void from_json(nlohmann::json const& j, contact& c) +{ c.m_person = j["person"].get<person>(); c.m_address = j["address"].get<address>(); - } +} - void from_json(nlohmann::json const&j, contact_book &cb) - { +void from_json(nlohmann::json const& j, contact_book& cb) +{ cb.m_book_name = j["name"].get<name>(); cb.m_contacts = j["contacts"].get<std::vector<contact>>(); - } +} } TEST_CASE("basic usage", "[udt]") { - // a bit narcissic maybe :) ? - const udt::age a{23}; - const udt::name n{"theo"}; - const udt::country c{udt::country::france}; - const udt::person sfinae_addict{a, n, c}; - const udt::person senior_programmer{{42}, {u8"王芳"}, udt::country::china}; - const udt::address addr{"Paris"}; - const udt::contact cpp_programmer{sfinae_addict, addr}; - const udt::contact_book book{{"C++"}, {cpp_programmer, {senior_programmer, addr}}}; + // a bit narcissic maybe :) ? + const udt::age a + { + 23 + }; + const udt::name n{"theo"}; + const udt::country c{udt::country::france}; + const udt::person sfinae_addict{a, n, c}; + const udt::person senior_programmer{{42}, {u8"王芳"}, udt::country::china}; + const udt::address addr{"Paris"}; + const udt::contact cpp_programmer{sfinae_addict, addr}; + const udt::contact_book book{{"C++"}, {cpp_programmer, {senior_programmer, addr}}}; - SECTION("conversion to json via free-functions") - { - CHECK(json(a) == json(23)); - CHECK(json(n) == json("theo")); - CHECK(json(c) == json("France")); - CHECK(json(sfinae_addict) == R"({"name":"theo", "age":23, "country":"France"})"_json); - CHECK(json("Paris") == json(addr)); - CHECK(json(cpp_programmer) == - R"({"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"})"_json); + SECTION("conversion to json via free-functions") + { + CHECK(json(a) == json(23)); + CHECK(json(n) == json("theo")); + CHECK(json(c) == json("France")); + CHECK(json(sfinae_addict) == R"({"name":"theo", "age":23, "country":"France"})"_json); + CHECK(json("Paris") == json(addr)); + CHECK(json(cpp_programmer) == + R"({"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"})"_json); - CHECK( - json(book) == - u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json); + CHECK( + json(book) == + u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json); - } + } - SECTION("conversion from json via free-functions") - { - const auto big_json = - u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; - const auto parsed_book = big_json.get<udt::contact_book>(); - const auto book_name = big_json["name"].get<udt::name>(); - const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); - const auto contact_json = big_json["contacts"].at(0); - const auto contact = contact_json.get<udt::contact>(); - const auto person = contact_json["person"].get<udt::person>(); - const auto address = contact_json["address"].get<udt::address>(); - const auto age = contact_json["person"]["age"].get<udt::age>(); - const auto country = contact_json["person"]["country"].get<udt::country>(); - const auto name = contact_json["person"]["name"].get<udt::name>(); + SECTION("conversion from json via free-functions") + { + const auto big_json = + u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; + const auto parsed_book = big_json.get<udt::contact_book>(); + const auto book_name = big_json["name"].get<udt::name>(); + const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); + const auto contact_json = big_json["contacts"].at(0); + const auto contact = contact_json.get<udt::contact>(); + const auto person = contact_json["person"].get<udt::person>(); + const auto address = contact_json["address"].get<udt::address>(); + const auto age = contact_json["person"]["age"].get<udt::age>(); + const auto country = contact_json["person"]["country"].get<udt::country>(); + const auto name = contact_json["person"]["name"].get<udt::name>(); - CHECK(age == a); - CHECK(name == n); - CHECK(country == c); - CHECK(address == addr); - CHECK(person == sfinae_addict); - CHECK(contact == cpp_programmer); - CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); - CHECK(book == parsed_book); - } + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } } namespace udt { struct legacy_type { - std::string number; + std::string number; }; } @@ -292,88 +297,96 @@ namespace nlohmann template <typename T> struct adl_serializer<std::shared_ptr<T>> { - static void to_json(json& j, std::shared_ptr<T> const& opt) - { - if (opt) - j = *opt; - else - j = nullptr; - } + static void to_json(json& j, std::shared_ptr<T> const& opt) + { + if (opt) + { + j = *opt; + } + else + { + j = nullptr; + } + } - static void from_json(json const &j, std::shared_ptr<T> &opt) - { - if (j.is_null()) - opt = nullptr; - else - opt.reset(new T(j.get<T>())); - } + static void from_json(json const& j, std::shared_ptr<T>& opt) + { + if (j.is_null()) + { + opt = nullptr; + } + else + { + opt.reset(new T(j.get<T>())); + } + } }; template <> struct adl_serializer<udt::legacy_type> { - static void to_json(json& j, udt::legacy_type const& l) - { - j = std::stoi(l.number); - } + static void to_json(json& j, udt::legacy_type const& l) + { + j = std::stoi(l.number); + } - static void from_json(json const& j, udt::legacy_type& l) - { - l.number = std::to_string(j.get<int>()); - } + static void from_json(json const& j, udt::legacy_type& l) + { + l.number = std::to_string(j.get<int>()); + } }; } TEST_CASE("adl_serializer specialization", "[udt]") { - SECTION("partial specialization") - { - SECTION("to_json") + SECTION("partial specialization") { - std::shared_ptr<udt::person> optPerson; + SECTION("to_json") + { + std::shared_ptr<udt::person> optPerson; - json j = optPerson; - CHECK(j.is_null()); + json j = optPerson; + CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}}); - j = optPerson; - CHECK_FALSE(j.is_null()); + optPerson.reset(new udt::person{{42}, {"John Doe"}}); + j = optPerson; + CHECK_FALSE(j.is_null()); - CHECK(j.get<udt::person>() == *optPerson); + CHECK(j.get<udt::person>() == *optPerson); + } + + SECTION("from_json") + { + auto person = udt::person{{42}, {"John Doe"}}; + json j = person; + + auto optPerson = j.get<std::shared_ptr<udt::person>>(); + REQUIRE(optPerson); + CHECK(*optPerson == person); + + j = nullptr; + optPerson = j.get<std::shared_ptr<udt::person>>(); + CHECK(!optPerson); + } } - SECTION("from_json") + SECTION("total specialization") { - auto person = udt::person{{42}, {"John Doe"}}; - json j = person; + SECTION("to_json") + { + udt::legacy_type lt{"4242"}; - auto optPerson = j.get<std::shared_ptr<udt::person>>(); - REQUIRE(optPerson); - CHECK(*optPerson == person); + json j = lt; + CHECK(j.get<int>() == 4242); + } - j = nullptr; - optPerson = j.get<std::shared_ptr<udt::person>>(); - CHECK(!optPerson); + SECTION("from_json") + { + json j = 4242; + auto lt = j.get<udt::legacy_type>(); + CHECK(lt.number == "4242"); + } } - } - - SECTION("total specialization") - { - SECTION("to_json") - { - udt::legacy_type lt{"4242"}; - - json j = lt; - CHECK(j.get<int>() == 4242); - } - - SECTION("from_json") - { - json j = 4242; - auto lt = j.get<udt::legacy_type>(); - CHECK(lt.number == "4242"); - } - } } namespace nlohmann @@ -383,22 +396,22 @@ namespace nlohmann template <typename T> struct adl_serializer<std::vector<T>> { - static void to_json(json& j, std::vector<T> const& opt) - { - } + static void to_json(json& j, std::vector<T> const& opt) + { + } - static void from_json(json const &j, std::vector<T> &opt) - { - } + static void from_json(json const& j, std::vector<T>& opt) + { + } }; } TEST_CASE("current supported types are preferred over specializations", "[udt]") { - json j = std::vector<int>{1, 2, 3}; - auto f = j.get<std::vector<int>>(); - CHECK((f == std::vector<int>{1, 2, 3})); + json j = std::vector<int> {1, 2, 3}; + auto f = j.get<std::vector<int>>(); + CHECK((f == std::vector<int> {1, 2, 3})); } namespace nlohmann @@ -406,55 +419,63 @@ namespace nlohmann template <typename T> struct adl_serializer<std::unique_ptr<T>> { - static void to_json(json& j, std::unique_ptr<T> const& opt) - { - if (opt) - j = *opt; - else - j = nullptr; - } + static void to_json(json& j, std::unique_ptr<T> const& opt) + { + if (opt) + { + j = *opt; + } + else + { + j = nullptr; + } + } - // this is the overload needed for non-copyable types, - // should we add a priority tag in the implementation to prefer this overload if it exists? - static std::unique_ptr<T> from_json(json const &j) - { - if (j.is_null()) - return nullptr; - else - return std::unique_ptr<T>(new T(j.get<T>())); - } + // this is the overload needed for non-copyable types, + // should we add a priority tag in the implementation to prefer this overload if it exists? + static std::unique_ptr<T> from_json(json const& j) + { + if (j.is_null()) + { + return nullptr; + } + else + { + return std::unique_ptr<T>(new T(j.get<T>())); + } + } }; } TEST_CASE("Non-copyable types", "[udt]") { - SECTION("to_json") - { - std::unique_ptr<udt::person> optPerson; + SECTION("to_json") + { + std::unique_ptr<udt::person> optPerson; - json j = optPerson; - CHECK(j.is_null()); + json j = optPerson; + CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}}); - j = optPerson; - CHECK_FALSE(j.is_null()); + optPerson.reset(new udt::person{{42}, {"John Doe"}}); + j = optPerson; + CHECK_FALSE(j.is_null()); - CHECK(j.get<udt::person>() == *optPerson); - } + CHECK(j.get<udt::person>() == *optPerson); + } - SECTION("from_json") - { - auto person = udt::person{{42}, {"John Doe"}}; - json j = person; + SECTION("from_json") + { + auto person = udt::person{{42}, {"John Doe"}}; + json j = person; - auto optPerson = j.get<std::unique_ptr<udt::person>>(); - REQUIRE(optPerson); - CHECK(*optPerson == person); + auto optPerson = j.get<std::unique_ptr<udt::person>>(); + REQUIRE(optPerson); + CHECK(*optPerson == person); - j = nullptr; - optPerson = j.get<std::unique_ptr<udt::person>>(); - CHECK(!optPerson); - } + j = nullptr; + optPerson = j.get<std::unique_ptr<udt::person>>(); + CHECK(!optPerson); + } } // custom serializer @@ -462,87 +483,89 @@ TEST_CASE("Non-copyable types", "[udt]") template <typename T, typename = typename std::enable_if<std::is_pod<T>::value>::type> struct pod_serializer { - // I could forward-declare this struct, and add a basic_json alias - template <typename Json> - static void from_json(Json const& j , T& t) - { - auto value = j.template get<std::uint64_t>(); - auto bytes = static_cast<char*>(static_cast<void*>(&value)); - std::memcpy(&t, bytes, sizeof(value)); - } + // I could forward-declare this struct, and add a basic_json alias + template <typename Json> + static void from_json(Json const& j , T& t) + { + auto value = j.template get<std::uint64_t>(); + auto bytes = static_cast<char*>(static_cast<void*>(&value)); + std::memcpy(&t, bytes, sizeof(value)); + } - template <typename Json> - static void to_json(Json& j, T const& t) - { - auto bytes = static_cast<char const*>(static_cast<void const*>(&t)); - std::uint64_t value = bytes[0]; - for (auto i = 1; i < 8; ++i) - value |= bytes[i] << 8 * i; + template <typename Json> + static void to_json(Json& j, T const& t) + { + auto bytes = static_cast<char const*>(static_cast<void const*>(&t)); + std::uint64_t value = bytes[0]; + for (auto i = 1; i < 8; ++i) + { + value |= bytes[i] << 8 * i; + } - j = value; - } + j = value; + } }; namespace udt { struct small_pod { - int begin; - char middle; - short end; + int begin; + char middle; + short end; }; bool operator==(small_pod lhs, small_pod rhs) { - return std::tie(lhs.begin, lhs.middle, lhs.end) == - std::tie(lhs.begin, lhs.middle, lhs.end); + return std::tie(lhs.begin, lhs.middle, lhs.end) == + std::tie(lhs.begin, lhs.middle, lhs.end); } } TEST_CASE("custom serializer for pods", "[udt]") { - using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, pod_serializer>; + using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, pod_serializer>; - auto p = udt::small_pod{42, '/', 42}; - custom_json j = p; + auto p = udt::small_pod{42, '/', 42}; + custom_json j = p; - auto p2 = j.get<udt::small_pod>(); + auto p2 = j.get<udt::small_pod>(); - CHECK(p == p2); + CHECK(p == p2); } template <typename T, typename> struct another_adl_serializer; - using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, another_adl_serializer>; +using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, another_adl_serializer>; template <typename T, typename> struct another_adl_serializer { - static void from_json(custom_json const& j , T& t) - { - using nlohmann::from_json; - from_json(j, t); - } + static void from_json(custom_json const& j , T& t) + { + using nlohmann::from_json; + from_json(j, t); + } - static void to_json(custom_json& j , T const& t) - { - using nlohmann::to_json; - to_json(j, t); - } + static void to_json(custom_json& j , T const& t) + { + using nlohmann::to_json; + to_json(j, t); + } }; TEST_CASE("custom serializer that does adl by default", "[udt]") { - using json = nlohmann::json; + using json = nlohmann::json; - auto me = udt::person{23, "theo", udt::country::france}; + auto me = udt::person{23, "theo", udt::country::france}; - json j = me; - custom_json cj = me; + json j = me; + custom_json cj = me; - CHECK(j.dump() == cj.dump()); + CHECK(j.dump() == cj.dump()); - CHECK(me == j.get<udt::person>()); - CHECK(me == cj.get<udt::person>()); + CHECK(me == j.get<udt::person>()); + CHECK(me == cj.get<udt::person>()); } From 034d5ed97e6d7c1ef051be27256aded65871ee81 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sun, 18 Dec 2016 21:02:09 +0100 Subject: [PATCH 074/174] :lipstick: some cleanup --- src/json.hpp | 56 +++++++++++++++++++++-------------------------- src/json.hpp.re2c | 56 +++++++++++++++++++++-------------------------- 2 files changed, 50 insertions(+), 62 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 7325e7c89..7a1a9392c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -141,7 +141,8 @@ using is_unscoped_enum = namespace detail { -// Very useful construct against boilerplate (more boilerplate needed than in C++17: http://en.cppreference.com/w/cpp/types/void_t) +// very useful construct against boilerplate (more boilerplate needed than in +// C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void { using type = void; @@ -174,29 +175,29 @@ struct disjunction<B1, Bn...> /*! @brief Helper to determine whether there's a key_type for T. -Thus helper is used to tell associative containers apart from other containers + +This helper is used to tell associative containers apart from other containers such as sequence containers. For instance, `std::map` passes the test as it contains a `mapped_type`, whereas `std::vector` fails the test. + @sa http://stackoverflow.com/a/7728728/266378 @since version 1.0.0, overworked in version 2.0.6 */ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template <typename T> struct has_##type { \ - private: \ - template <typename U, typename = typename U::type> \ - static int detect(U &&); \ - \ - static void detect(...); \ - \ - public: \ - static constexpr bool value = \ - std::is_integral<decltype(detect(std::declval<T>()))>::value; \ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template <typename T> struct has_##type { \ + private: \ + template <typename U, typename = typename U::type> \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral<decltype(detect(std::declval<T>()))>::value; \ }; -NLOHMANN_JSON_HAS_HELPER(mapped_type) -NLOHMANN_JSON_HAS_HELPER(key_type) -NLOHMANN_JSON_HAS_HELPER(value_type) -NLOHMANN_JSON_HAS_HELPER(iterator) +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER @@ -216,8 +217,8 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { - // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void - // hence the conjunction + // As noted ahead, we need to stop evaluating traits if + // `CompatibleObjectType = void`, hence the conjunction static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, @@ -249,8 +250,8 @@ struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // the check for CompatibleArrayType = void is done in is_compatible_object_type - // but we need the conjunction here as well + // the check for CompatibleArrayType = void is done in + // `is_compatible_object_type`, but we need the conjunction here as well static auto constexpr value = is_compatible_array_type_impl < conjunction<negation<is_compatible_object_type< typename BasicJson::object_t, CompatibleArrayType>>, @@ -302,8 +303,7 @@ struct is_compatible_basic_json_type is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, - T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or is_compatible_integer_type<typename BasicJson::number_unsigned_t, T>::value; }; @@ -320,8 +320,7 @@ struct is_basic_json_nested_class }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json { private: @@ -329,7 +328,6 @@ struct has_from_json template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( std::declval<Json>(), std::declval<T&>()))>::value>> static int detect(U&&); - static void detect(...); public: @@ -346,7 +344,6 @@ struct has_non_default_from_json private: template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> static int detect(U&&); - static void detect(...); public: @@ -363,7 +360,6 @@ struct has_to_json template <typename U, typename = decltype(uncvref_t<U>::to_json( std::declval<Json&>(), std::declval<T>()))> static int detect(U&&); - static void detect(...); public: @@ -1598,8 +1594,7 @@ class basic_json @since version 1.0.0 */ template <class CompatibleArrayType, - enable_if_t<detail::is_compatible_array_type< - basic_json_t, CompatibleArrayType>::value, + enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, int> = 0> basic_json(const CompatibleArrayType& val) : m_type(value_t::array) { @@ -1620,7 +1615,6 @@ class basic_json not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>>, detail::has_to_json<JSONSerializer, basic_json, diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 12fde56ea..66b425b1d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -141,7 +141,8 @@ using is_unscoped_enum = namespace detail { -// Very useful construct against boilerplate (more boilerplate needed than in C++17: http://en.cppreference.com/w/cpp/types/void_t) +// very useful construct against boilerplate (more boilerplate needed than in +// C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void { using type = void; @@ -174,29 +175,29 @@ struct disjunction<B1, Bn...> /*! @brief Helper to determine whether there's a key_type for T. -Thus helper is used to tell associative containers apart from other containers + +This helper is used to tell associative containers apart from other containers such as sequence containers. For instance, `std::map` passes the test as it contains a `mapped_type`, whereas `std::vector` fails the test. + @sa http://stackoverflow.com/a/7728728/266378 @since version 1.0.0, overworked in version 2.0.6 */ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template <typename T> struct has_##type { \ - private: \ - template <typename U, typename = typename U::type> \ - static int detect(U &&); \ - \ - static void detect(...); \ - \ - public: \ - static constexpr bool value = \ - std::is_integral<decltype(detect(std::declval<T>()))>::value; \ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template <typename T> struct has_##type { \ + private: \ + template <typename U, typename = typename U::type> \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral<decltype(detect(std::declval<T>()))>::value; \ }; -NLOHMANN_JSON_HAS_HELPER(mapped_type) -NLOHMANN_JSON_HAS_HELPER(key_type) -NLOHMANN_JSON_HAS_HELPER(value_type) -NLOHMANN_JSON_HAS_HELPER(iterator) +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER @@ -216,8 +217,8 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class RealType, class CompatibleObjectType> struct is_compatible_object_type { - // As noted ahead, we need to stop evaluating traits if CompatibleObjectType = void - // hence the conjunction + // As noted ahead, we need to stop evaluating traits if + // `CompatibleObjectType = void`, hence the conjunction static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, @@ -249,8 +250,8 @@ struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // the check for CompatibleArrayType = void is done in is_compatible_object_type - // but we need the conjunction here as well + // the check for CompatibleArrayType = void is done in + // `is_compatible_object_type`, but we need the conjunction here as well static auto constexpr value = is_compatible_array_type_impl < conjunction<negation<is_compatible_object_type< typename BasicJson::object_t, CompatibleArrayType>>, @@ -302,8 +303,7 @@ struct is_compatible_basic_json_type is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, - T>::value or + is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or is_compatible_integer_type<typename BasicJson::number_unsigned_t, T>::value; }; @@ -320,8 +320,7 @@ struct is_basic_json_nested_class }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json { private: @@ -329,7 +328,6 @@ struct has_from_json template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( std::declval<Json>(), std::declval<T&>()))>::value>> static int detect(U&&); - static void detect(...); public: @@ -346,7 +344,6 @@ struct has_non_default_from_json private: template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> static int detect(U&&); - static void detect(...); public: @@ -363,7 +360,6 @@ struct has_to_json template <typename U, typename = decltype(uncvref_t<U>::to_json( std::declval<Json&>(), std::declval<T>()))> static int detect(U&&); - static void detect(...); public: @@ -1599,8 +1595,7 @@ class basic_json @since version 1.0.0 */ template <class CompatibleArrayType, - enable_if_t<detail::is_compatible_array_type< - basic_json_t, CompatibleArrayType>::value, + enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, int> = 0> basic_json(const CompatibleArrayType& val) : m_type(value_t::array) { @@ -1621,7 +1616,6 @@ class basic_json not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< uncvref_t<T>, basic_json_t>>, detail::has_to_json<JSONSerializer, basic_json, From d359684f2b11f879000e9567135874691a692172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 7 Jan 2017 15:26:50 +0100 Subject: [PATCH 075/174] move enum class value_t outside of basic_json --- src/json.hpp | 1438 +++++++++++++++------------------------------ src/json.hpp.re2c | 160 +++-- 2 files changed, 556 insertions(+), 1042 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 7a1a9392c..cc397e399 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -106,6 +106,46 @@ SOFTWARE. */ namespace nlohmann { + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used +to distinguish the stored values, and the functions @ref is_null(), @ref +is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref +is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and +@ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and +@ref is_structured() rely on it. + +@note There are three enumeration entries (number_integer, +number_unsigned, and number_float), because the library distinguishes +these three types for numbers: @ref number_unsigned_t is used for unsigned +integers, @ref number_integer_t is used for signed integers, and @ref +number_float_t is used for floating-point numbers or to approximate +integers which do not fit in the limits of their respective type. + +@sa @ref basic_json(const value_t value_type) -- create a JSON value with +the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + // alias templates to reduce boilerplate template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; @@ -552,6 +592,7 @@ class basic_json class primitive_iterator_t; public: + using value_t = ::nlohmann::value_t; // forward declarations template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; @@ -1102,47 +1143,6 @@ class basic_json /// @} - - /////////////////////////// - // JSON type enumeration // - /////////////////////////// - - /*! - @brief the JSON type enumeration - - This enumeration collects the different JSON types. It is internally used - to distinguish the stored values, and the functions @ref is_null(), @ref - is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref - is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and - @ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and - @ref is_structured() rely on it. - - @note There are three enumeration entries (number_integer, - number_unsigned, and number_float), because the library distinguishes - these three types for numbers: @ref number_unsigned_t is used for unsigned - integers, @ref number_integer_t is used for signed integers, and @ref - number_float_t is used for floating-point numbers or to approximate - integers which do not fit in the limits of their respective type. - - @sa @ref basic_json(const value_t value_type) -- create a JSON value with - the default value for a given type - - @since version 1.0.0 - */ - enum class value_t : uint8_t - { - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function - }; - - private: /// helper for exception-safe object creation @@ -5912,47 +5912,6 @@ class basic_json /// @} - - ////////////////////////////////////////// - // lexicographical comparison operators // - ////////////////////////////////////////// - - /// @name lexicographical comparison operators - /// @{ - - private: - /*! - @brief comparison operator for JSON types - - Returns an ordering that is similar to Python: - - order: null < boolean < number < object < array < string - - furthermore, each type is not smaller than itself - - @since version 1.0.0 - */ - friend bool operator<(const value_t lhs, const value_t rhs) noexcept - { - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - } - }; - - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } - - return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)]; - } - public: /*! @brief comparison: equal @@ -9741,915 +9700,437 @@ class basic_json m_start = m_cursor; assert(m_start != nullptr); - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) - { - fill_line_buffer(5); // LCOV_EXCL_LINE + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + if (yych <= '[') { + if (yych <= '-') { + if (yych <= '"') { + if (yych <= 0x00) goto basic_json_parser_2; + if (yych <= '!') goto basic_json_parser_4; + goto basic_json_parser_9; + } else { + if (yych <= '+') goto basic_json_parser_4; + if (yych <= ',') goto basic_json_parser_10; + goto basic_json_parser_12; } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; + } else { + if (yych <= '9') { + if (yych <= '/') goto basic_json_parser_4; + if (yych <= '0') goto basic_json_parser_13; + goto basic_json_parser_15; + } else { + if (yych <= ':') goto basic_json_parser_17; + if (yych <= 'Z') goto basic_json_parser_4; + goto basic_json_parser_19; } - if (yych <= '[') - { - if (yych <= '-') - { - if (yych <= '"') - { - if (yych <= 0x00) - { - goto basic_json_parser_2; - } - if (yych <= '!') - { - goto basic_json_parser_4; - } - goto basic_json_parser_9; - } - else - { - if (yych <= '+') - { - goto basic_json_parser_4; - } - if (yych <= ',') - { - goto basic_json_parser_10; - } - goto basic_json_parser_12; - } - } - else - { - if (yych <= '9') - { - if (yych <= '/') - { - goto basic_json_parser_4; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - goto basic_json_parser_15; - } - else - { - if (yych <= ':') - { - goto basic_json_parser_17; - } - if (yych <= 'Z') - { - goto basic_json_parser_4; - } - goto basic_json_parser_19; - } - } + } + } else { + if (yych <= 'n') { + if (yych <= 'e') { + if (yych == ']') goto basic_json_parser_21; + goto basic_json_parser_4; + } else { + if (yych <= 'f') goto basic_json_parser_23; + if (yych <= 'm') goto basic_json_parser_4; + goto basic_json_parser_24; } - else - { - if (yych <= 'n') - { - if (yych <= 'e') - { - if (yych == ']') - { - goto basic_json_parser_21; - } - goto basic_json_parser_4; - } - else - { - if (yych <= 'f') - { - goto basic_json_parser_23; - } - if (yych <= 'm') - { - goto basic_json_parser_4; - } - goto basic_json_parser_24; - } - } - else - { - if (yych <= 'z') - { - if (yych == 't') - { - goto basic_json_parser_25; - } - goto basic_json_parser_4; - } - else - { - if (yych <= '{') - { - goto basic_json_parser_26; - } - if (yych == '}') - { - goto basic_json_parser_28; - } - goto basic_json_parser_4; - } - } + } else { + if (yych <= 'z') { + if (yych == 't') goto basic_json_parser_25; + goto basic_json_parser_4; + } else { + if (yych <= '{') goto basic_json_parser_26; + if (yych == '}') goto basic_json_parser_28; + goto basic_json_parser_4; } + } + } basic_json_parser_2: - ++m_cursor; - { - last_token_type = token_type::end_of_input; - break; - } + ++m_cursor; + { last_token_type = token_type::end_of_input; break; } basic_json_parser_4: - ++m_cursor; + ++m_cursor; basic_json_parser_5: - { - last_token_type = token_type::parse_error; - break; - } + { last_token_type = token_type::parse_error; break; } basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - { - continue; - } + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + { continue; } basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) - { - goto basic_json_parser_5; - } - if (yych <= 0x7F) - { - goto basic_json_parser_31; - } - if (yych <= 0xC1) - { - goto basic_json_parser_5; - } - if (yych <= 0xF4) - { - goto basic_json_parser_31; - } - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) goto basic_json_parser_5; + if (yych <= 0x7F) goto basic_json_parser_31; + if (yych <= 0xC1) goto basic_json_parser_5; + if (yych <= 0xF4) goto basic_json_parser_31; + goto basic_json_parser_5; basic_json_parser_10: - ++m_cursor; - { - last_token_type = token_type::value_separator; - break; - } + ++m_cursor; + { last_token_type = token_type::value_separator; break; } basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_5; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - if (yych <= '9') - { - goto basic_json_parser_15; - } - goto basic_json_parser_5; + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_5; + if (yych <= '0') goto basic_json_parser_13; + if (yych <= '9') goto basic_json_parser_15; + goto basic_json_parser_5; basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - } + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + } basic_json_parser_14: - { - last_token_type = token_type::value_number; - break; - } + { last_token_type = token_type::value_number; break; } basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 64) - { - goto basic_json_parser_15; - } - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 64) { + goto basic_json_parser_15; + } + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } basic_json_parser_17: - ++m_cursor; - { - last_token_type = token_type::name_separator; - break; - } + ++m_cursor; + { last_token_type = token_type::name_separator; break; } basic_json_parser_19: - ++m_cursor; - { - last_token_type = token_type::begin_array; - break; - } + ++m_cursor; + { last_token_type = token_type::begin_array; break; } basic_json_parser_21: - ++m_cursor; - { - last_token_type = token_type::end_array; - break; - } + ++m_cursor; + { last_token_type = token_type::end_array; break; } basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') - { - goto basic_json_parser_45; - } - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') goto basic_json_parser_45; + goto basic_json_parser_5; basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') - { - goto basic_json_parser_46; - } - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') goto basic_json_parser_46; + goto basic_json_parser_5; basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') - { - goto basic_json_parser_47; - } - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') goto basic_json_parser_47; + goto basic_json_parser_5; basic_json_parser_26: - ++m_cursor; - { - last_token_type = token_type::begin_object; - break; - } + ++m_cursor; + { last_token_type = token_type::begin_object; break; } basic_json_parser_28: - ++m_cursor; - { - last_token_type = token_type::end_object; - break; - } + ++m_cursor; + { last_token_type = token_type::end_object; break; } basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; basic_json_parser_31: - if (yybm[0 + yych] & 128) - { - goto basic_json_parser_30; - } - if (yych <= 0xE0) - { - if (yych <= '\\') - { - if (yych <= 0x1F) - { - goto basic_json_parser_32; - } - if (yych <= '"') - { - goto basic_json_parser_33; - } - goto basic_json_parser_35; - } - else - { - if (yych <= 0xC1) - { - goto basic_json_parser_32; - } - if (yych <= 0xDF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_37; - } - } - else - { - if (yych <= 0xEF) - { - if (yych == 0xED) - { - goto basic_json_parser_39; - } - goto basic_json_parser_38; - } - else - { - if (yych <= 0xF0) - { - goto basic_json_parser_40; - } - if (yych <= 0xF3) - { - goto basic_json_parser_41; - } - if (yych <= 0xF4) - { - goto basic_json_parser_42; - } - } - } + if (yybm[0+yych] & 128) { + goto basic_json_parser_30; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x1F) goto basic_json_parser_32; + if (yych <= '"') goto basic_json_parser_33; + goto basic_json_parser_35; + } else { + if (yych <= 0xC1) goto basic_json_parser_32; + if (yych <= 0xDF) goto basic_json_parser_36; + goto basic_json_parser_37; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) goto basic_json_parser_39; + goto basic_json_parser_38; + } else { + if (yych <= 0xF0) goto basic_json_parser_40; + if (yych <= 0xF3) goto basic_json_parser_41; + if (yych <= 0xF4) goto basic_json_parser_42; + } + } basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) - { - goto basic_json_parser_5; - } - else - { - goto basic_json_parser_14; - } + m_cursor = m_marker; + if (yyaccept == 0) { + goto basic_json_parser_5; + } else { + goto basic_json_parser_14; + } basic_json_parser_33: - ++m_cursor; - { - last_token_type = token_type::value_string; - break; - } + ++m_cursor; + { last_token_type = token_type::value_string; break; } basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'e') - { - if (yych <= '/') - { - if (yych == '"') - { - goto basic_json_parser_30; - } - if (yych <= '.') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych <= '\\') - { - if (yych <= '[') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych == 'b') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - } - } - else - { - if (yych <= 'q') - { - if (yych <= 'f') - { - goto basic_json_parser_30; - } - if (yych == 'n') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 's') - { - if (yych <= 'r') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 't') - { - goto basic_json_parser_30; - } - if (yych <= 'u') - { - goto basic_json_parser_48; - } - goto basic_json_parser_32; - } - } - } -basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'e') { + if (yych <= '/') { + if (yych == '"') goto basic_json_parser_30; + if (yych <= '.') goto basic_json_parser_32; + goto basic_json_parser_30; + } else { + if (yych <= '\\') { + if (yych <= '[') goto basic_json_parser_32; goto basic_json_parser_30; - } - goto basic_json_parser_32; -basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x9F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x9F) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x8F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x8F) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_32; -basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') - { - if (yych == '+') - { - goto basic_json_parser_51; - } - goto basic_json_parser_32; - } - else - { - if (yych <= '-') - { - goto basic_json_parser_51; - } - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_32; - } -basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_54; - } - goto basic_json_parser_32; -basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_55; - } - goto basic_json_parser_32; -basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') - { - goto basic_json_parser_56; - } - goto basic_json_parser_32; -basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_57; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } -basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'D') - { - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych >= ':') - { - goto basic_json_parser_32; - } -basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_14; -basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') - { - goto basic_json_parser_58; - } - goto basic_json_parser_32; -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_59; - } - goto basic_json_parser_32; -basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_61; - } - goto basic_json_parser_32; -basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_63; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } -basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_64; - } - goto basic_json_parser_32; -basic_json_parser_59: - ++m_cursor; - { - last_token_type = token_type::literal_null; - break; - } -basic_json_parser_61: - ++m_cursor; - { - last_token_type = token_type::literal_true; - break; - } -basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_66; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } -basic_json_parser_64: - ++m_cursor; - { - last_token_type = token_type::literal_false; - break; - } -basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_30; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_30; - } + } else { + if (yych == 'b') goto basic_json_parser_30; goto basic_json_parser_32; } } + } else { + if (yych <= 'q') { + if (yych <= 'f') goto basic_json_parser_30; + if (yych == 'n') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 's') { + if (yych <= 'r') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 't') goto basic_json_parser_30; + if (yych <= 'u') goto basic_json_parser_48; + goto basic_json_parser_32; + } + } + } +basic_json_parser_36: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_30; + goto basic_json_parser_32; +basic_json_parser_37: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x9F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_39: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x9F) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_40: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x8F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_42: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x8F) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_43: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_32; +basic_json_parser_44: + yych = *++m_cursor; + if (yych <= ',') { + if (yych == '+') goto basic_json_parser_51; + goto basic_json_parser_32; + } else { + if (yych <= '-') goto basic_json_parser_51; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_32; + } +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_54; + goto basic_json_parser_32; +basic_json_parser_46: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_55; + goto basic_json_parser_32; +basic_json_parser_47: + yych = *++m_cursor; + if (yych == 'u') goto basic_json_parser_56; + goto basic_json_parser_32; +basic_json_parser_48: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_57; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_57; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_57; + goto basic_json_parser_32; + } +basic_json_parser_49: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'D') { + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } +basic_json_parser_51: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych >= ':') goto basic_json_parser_32; +basic_json_parser_52: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_14; +basic_json_parser_54: + yych = *++m_cursor; + if (yych == 's') goto basic_json_parser_58; + goto basic_json_parser_32; +basic_json_parser_55: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_59; + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_61; + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_63; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_63; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_63; + goto basic_json_parser_32; + } +basic_json_parser_58: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_64; + goto basic_json_parser_32; +basic_json_parser_59: + ++m_cursor; + { last_token_type = token_type::literal_null; break; } +basic_json_parser_61: + ++m_cursor; + { last_token_type = token_type::literal_true; break; } +basic_json_parser_63: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_66; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_66; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_66; + goto basic_json_parser_32; + } +basic_json_parser_64: + ++m_cursor; + { last_token_type = token_type::literal_false; break; } +basic_json_parser_66: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_30; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_30; + goto basic_json_parser_32; + } + } } @@ -12666,6 +12147,43 @@ basic_json_parser_66: /// @} }; +////////////////////////////////////////// +// lexicographical comparison operators // +////////////////////////////////////////// + +/// @name lexicographical comparison operators +/// @{ +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + }}; + + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } + + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; +} ///////////// // presets // diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 66b425b1d..157146690 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -106,6 +106,46 @@ SOFTWARE. */ namespace nlohmann { + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used +to distinguish the stored values, and the functions @ref is_null(), @ref +is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref +is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and +@ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and +@ref is_structured() rely on it. + +@note There are three enumeration entries (number_integer, +number_unsigned, and number_float), because the library distinguishes +these three types for numbers: @ref number_unsigned_t is used for unsigned +integers, @ref number_integer_t is used for signed integers, and @ref +number_float_t is used for floating-point numbers or to approximate +integers which do not fit in the limits of their respective type. + +@sa @ref basic_json(const value_t value_type) -- create a JSON value with +the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + // alias templates to reduce boilerplate template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; @@ -553,6 +593,7 @@ class basic_json class primitive_iterator_t; public: + using value_t = ::nlohmann::value_t; // forward declarations template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; @@ -1103,47 +1144,6 @@ class basic_json /// @} - - /////////////////////////// - // JSON type enumeration // - /////////////////////////// - - /*! - @brief the JSON type enumeration - - This enumeration collects the different JSON types. It is internally used - to distinguish the stored values, and the functions @ref is_null(), @ref - is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref - is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and - @ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and - @ref is_structured() rely on it. - - @note There are three enumeration entries (number_integer, - number_unsigned, and number_float), because the library distinguishes - these three types for numbers: @ref number_unsigned_t is used for unsigned - integers, @ref number_integer_t is used for signed integers, and @ref - number_float_t is used for floating-point numbers or to approximate - integers which do not fit in the limits of their respective type. - - @sa @ref basic_json(const value_t value_type) -- create a JSON value with - the default value for a given type - - @since version 1.0.0 - */ - enum class value_t : uint8_t - { - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function - }; - - private: /// helper for exception-safe object creation @@ -5910,47 +5910,6 @@ class basic_json /// @} - - ////////////////////////////////////////// - // lexicographical comparison operators // - ////////////////////////////////////////// - - /// @name lexicographical comparison operators - /// @{ - - private: - /*! - @brief comparison operator for JSON types - - Returns an ordering that is similar to Python: - - order: null < boolean < number < object < array < string - - furthermore, each type is not smaller than itself - - @since version 1.0.0 - */ - friend bool operator<(const value_t lhs, const value_t rhs) noexcept - { - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - } - }; - - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } - - return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)]; - } - public: /*! @brief comparison: equal @@ -11814,6 +11773,43 @@ class basic_json /// @} }; +////////////////////////////////////////// +// lexicographical comparison operators // +////////////////////////////////////////// + +/// @name lexicographical comparison operators +/// @{ +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + }}; + + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } + + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; +} ///////////// // presets // From c833b22b7b94e7cd4d5a24e8280ec9d8c0890097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 7 Jan 2017 16:57:52 +0100 Subject: [PATCH 076/174] move type_name outside of basic_json, make it a friend --- src/json.hpp | 43 +++++++++++++++++++++++-------------------- src/json.hpp.re2c | 43 +++++++++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index cc397e399..3b00d80e2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -181,6 +181,27 @@ using is_unscoped_enum = namespace detail { +template <typename Json> std::string type_name(Json const &j) +{ + switch (j.m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } +} + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -585,6 +606,7 @@ template < class basic_json { private: + template <typename Json> friend std::string detail::type_name(Json const &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -8129,26 +8151,7 @@ class basic_json @since version 1.0.0 */ - std::string type_name() const - { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } - } + std::string type_name() const { return detail::type_name(*this); } private: /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 157146690..ed9075acb 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -181,6 +181,27 @@ using is_unscoped_enum = namespace detail { +template <typename Json> std::string type_name(Json const &j) +{ + switch (j.m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } +} + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -586,6 +607,7 @@ template < class basic_json { private: + template <typename Json> friend std::string detail::type_name(Json const &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -8127,26 +8149,7 @@ class basic_json @since version 1.0.0 */ - std::string type_name() const - { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } - } + std::string type_name() const { return detail::type_name(*this); } private: /*! From 6b89785fba1fb2387ce640121ed17866ceae79ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 7 Jan 2017 17:01:17 +0100 Subject: [PATCH 077/174] replace constructor by from/to_json: boolean_t --- src/json.hpp | 71 ++++++++++++++++++++++++++++------------------- src/json.hpp.re2c | 71 ++++++++++++++++++++++++++++------------------- 2 files changed, 86 insertions(+), 56 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 3b00d80e2..005566049 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -202,6 +202,21 @@ template <typename Json> std::string type_name(Json const &j) } } +// This is an experiment. I need this to move constructors out of basic_json. +// I'm sure there is a better way, but this might need a big basic_json refactoring +template <value_t> struct external_constructor; + +template <> +struct external_constructor<value_t::boolean> +{ + template <typename Json> + static void construct(Json &j, typename Json::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -340,9 +355,11 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto value = is_compatible_integer_type_impl < - std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, - CompatibleNumberIntegerType >::value; + static constexpr auto + value = is_compatible_integer_type_impl < + std::is_arithmetic<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; template <typename RealFloat, typename CompatibleFloat> @@ -360,7 +377,6 @@ struct is_compatible_basic_json_type is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or std::is_constructible<typename BasicJson::string_t, T>::value or - std::is_same<typename BasicJson::boolean_t, T>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or @@ -433,6 +449,22 @@ struct has_to_json void to_json(); void from_json(); +// overloads for basic_json template parameters + +template <typename Json> +void to_json(Json &j, typename Json::boolean_t b) noexcept +{ + external_constructor<value_t::boolean>::construct(j, b); +} + +template <typename Json> +void from_json(Json const& j, typename Json::boolean_t& b) +{ + if (!j.is_boolean()) + throw std::domain_error("type must be boolean, but is " + type_name(j)); + b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -606,6 +638,7 @@ template < class basic_json { private: + template <::nlohmann::value_t> friend struct detail::external_constructor; template <typename Json> friend std::string detail::type_name(Json const &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, @@ -1731,26 +1764,6 @@ class basic_json assert_invariant(); } - /*! - @brief create a boolean (explicit) - - Creates a JSON boolean type from a given value. - - @param[in] val a boolean value to store - - @complexity Constant. - - @liveexample{The example below demonstrates boolean - values.,basic_json__boolean_t} - - @since version 1.0.0 - */ - basic_json(boolean_t val) noexcept - : m_type(value_t::boolean), m_value(val) - { - assert_invariant(); - } - /*! @brief create an integer number (explicit) @@ -3330,11 +3343,13 @@ class basic_json @since version 1.0.0 */ template <typename ValueType, - enable_if_t<not std::is_pointer<ValueType>::value, int> = 0> + enable_if_t<not std::is_pointer<ValueType>::value and + detail::is_compatible_basic_json_type< + uncvref_t<ValueType>, basic_json_t>::value, + int> = 0> auto get() const - -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) - { - return get_impl(static_cast<ValueType*>(nullptr)); + -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { + return get_impl(static_cast<ValueType *>(nullptr)); } template < diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index ed9075acb..067ad1a6b 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -202,6 +202,21 @@ template <typename Json> std::string type_name(Json const &j) } } +// This is an experiment. I need this to move constructors out of basic_json. +// I'm sure there is a better way, but this might need a big basic_json refactoring +template <value_t> struct external_constructor; + +template <> +struct external_constructor<value_t::boolean> +{ + template <typename Json> + static void construct(Json &j, typename Json::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -340,9 +355,11 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto value = is_compatible_integer_type_impl < - std::is_arithmetic<CompatibleNumberIntegerType>::value, RealIntegerType, - CompatibleNumberIntegerType >::value; + static constexpr auto + value = is_compatible_integer_type_impl < + std::is_arithmetic<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; template <typename RealFloat, typename CompatibleFloat> @@ -360,7 +377,6 @@ struct is_compatible_basic_json_type is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or std::is_constructible<typename BasicJson::string_t, T>::value or - std::is_same<typename BasicJson::boolean_t, T>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or @@ -433,6 +449,22 @@ struct has_to_json void to_json(); void from_json(); +// overloads for basic_json template parameters + +template <typename Json> +void to_json(Json &j, typename Json::boolean_t b) noexcept +{ + external_constructor<value_t::boolean>::construct(j, b); +} + +template <typename Json> +void from_json(Json const& j, typename Json::boolean_t& b) +{ + if (!j.is_boolean()) + throw std::domain_error("type must be boolean, but is " + type_name(j)); + b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -607,6 +639,7 @@ template < class basic_json { private: + template <::nlohmann::value_t> friend struct detail::external_constructor; template <typename Json> friend std::string detail::type_name(Json const &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, @@ -1732,26 +1765,6 @@ class basic_json assert_invariant(); } - /*! - @brief create a boolean (explicit) - - Creates a JSON boolean type from a given value. - - @param[in] val a boolean value to store - - @complexity Constant. - - @liveexample{The example below demonstrates boolean - values.,basic_json__boolean_t} - - @since version 1.0.0 - */ - basic_json(boolean_t val) noexcept - : m_type(value_t::boolean), m_value(val) - { - assert_invariant(); - } - /*! @brief create an integer number (explicit) @@ -3328,11 +3341,13 @@ class basic_json @since version 1.0.0 */ template <typename ValueType, - enable_if_t<not std::is_pointer<ValueType>::value, int> = 0> + enable_if_t<not std::is_pointer<ValueType>::value and + detail::is_compatible_basic_json_type< + uncvref_t<ValueType>, basic_json_t>::value, + int> = 0> auto get() const - -> decltype(this->get_impl(static_cast<ValueType*>(nullptr))) - { - return get_impl(static_cast<ValueType*>(nullptr)); + -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { + return get_impl(static_cast<ValueType *>(nullptr)); } template < From bbe40641a3339a6590781e41ff7a327abecf67a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 7 Jan 2017 18:09:42 +0100 Subject: [PATCH 078/174] replace constructor by from/to_json: string_t --- src/json.hpp | 142 ++++++++++++++++------------------------------ src/json.hpp.re2c | 142 ++++++++++++++++------------------------------ 2 files changed, 100 insertions(+), 184 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 005566049..becbcbd20 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -217,6 +217,18 @@ struct external_constructor<value_t::boolean> j.assert_invariant(); } }; + +template <> +struct external_constructor<value_t::string> +{ + template <typename Json> + static void construct(Json &j, const typename Json::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } +}; // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -328,12 +340,14 @@ struct is_compatible_array_type { // the check for CompatibleArrayType = void is done in // `is_compatible_object_type`, but we need the conjunction here as well - static auto constexpr value = is_compatible_array_type_impl < - conjunction<negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType >::value; + static auto constexpr value = is_compatible_array_type_impl< + conjunction<negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJson::string_t, + CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType>::value; }; template <bool, typename, typename> @@ -376,7 +390,6 @@ struct is_compatible_basic_json_type static auto constexpr value = is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or - std::is_constructible<typename BasicJson::string_t, T>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or @@ -457,6 +470,15 @@ void to_json(Json &j, typename Json::boolean_t b) noexcept external_constructor<value_t::boolean>::construct(j, b); } +template <typename Json, typename CompatibleString, + enable_if_t<std::is_constructible<typename Json::string_t, + CompatibleString>::value, + int> = 0> +void to_json(Json &j, const CompatibleString &s) +{ + external_constructor<value_t::string>::construct(j, s); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -465,6 +487,14 @@ void from_json(Json const& j, typename Json::boolean_t& b) b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); } +template <typename Json> +void from_json(Json const& j, typename Json::string_t& s) +{ + if (!j.is_string()) + throw std::domain_error("type must be string, but is " + type_name(j)); + s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -1680,90 +1710,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - /*! - @brief create a string (explicit) - - Create an string JSON value with a given content. - - @param[in] val a value for the string - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the constructor with an @ref - string_t parameter.,basic_json__string_t} - - @sa @ref basic_json(const typename string_t::value_type*) -- create a - string value from a character pointer - @sa @ref basic_json(const CompatibleStringType&) -- create a string value - from a compatible string container - - @since version 1.0.0 - */ - basic_json(const string_t& val) - : m_type(value_t::string), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create a string (explicit) - - Create a string JSON value with a given content. - - @param[in] val a literal value for the string - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the constructor with string literal - parameter.,basic_json__string_t_value_type} - - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const CompatibleStringType&) -- create a string value - from a compatible string container - - @since version 1.0.0 - */ - basic_json(const typename string_t::value_type* val) - : basic_json(string_t(val)) - { - assert_invariant(); - } - - /*! - @brief create a string (implicit) - - Create a string JSON value with a given content. - - @param[in] val a value for the string - - @tparam CompatibleStringType an string type which is compatible to @ref - string_t, for instance `std::string`. - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the construction of a string value - from a compatible type.,basic_json__CompatibleStringType} - - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const typename string_t::value_type*) -- create a - string value from a character pointer - - @since version 1.0.0 - */ - template<class CompatibleStringType, typename std::enable_if< - std::is_constructible<string_t, CompatibleStringType>::value, int>::type = 0> - basic_json(const CompatibleStringType& val) - : basic_json(string_t(val)) - { - assert_invariant(); - } - /*! @brief create an integer number (explicit) @@ -11505,9 +11451,21 @@ basic_json_parser_66: } private: + friend bool operator==(json_pointer const &lhs, + json_pointer const &rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } + + friend bool operator!=(json_pointer const &lhs, + json_pointer const &rhs) noexcept + { + return !(lhs == rhs); + } + /// the reference tokens std::vector<std::string> reference_tokens {}; - }; + }; ////////////////////////// // JSON Pointer support // diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 067ad1a6b..0122e8b50 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -217,6 +217,18 @@ struct external_constructor<value_t::boolean> j.assert_invariant(); } }; + +template <> +struct external_constructor<value_t::string> +{ + template <typename Json> + static void construct(Json &j, const typename Json::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } +}; // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -328,12 +340,14 @@ struct is_compatible_array_type { // the check for CompatibleArrayType = void is done in // `is_compatible_object_type`, but we need the conjunction here as well - static auto constexpr value = is_compatible_array_type_impl < - conjunction<negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType >::value; + static auto constexpr value = is_compatible_array_type_impl< + conjunction<negation<is_compatible_object_type< + typename BasicJson::object_t, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJson::string_t, + CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value, + BasicJson, CompatibleArrayType>::value; }; template <bool, typename, typename> @@ -376,7 +390,6 @@ struct is_compatible_basic_json_type static auto constexpr value = is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or - std::is_constructible<typename BasicJson::string_t, T>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or is_compatible_float_type<typename BasicJson::number_float_t, T>::value or @@ -457,6 +470,15 @@ void to_json(Json &j, typename Json::boolean_t b) noexcept external_constructor<value_t::boolean>::construct(j, b); } +template <typename Json, typename CompatibleString, + enable_if_t<std::is_constructible<typename Json::string_t, + CompatibleString>::value, + int> = 0> +void to_json(Json &j, const CompatibleString &s) +{ + external_constructor<value_t::string>::construct(j, s); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -465,6 +487,14 @@ void from_json(Json const& j, typename Json::boolean_t& b) b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); } +template <typename Json> +void from_json(Json const& j, typename Json::string_t& s) +{ + if (!j.is_string()) + throw std::domain_error("type must be string, but is " + type_name(j)); + s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -1681,90 +1711,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - /*! - @brief create a string (explicit) - - Create an string JSON value with a given content. - - @param[in] val a value for the string - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the constructor with an @ref - string_t parameter.,basic_json__string_t} - - @sa @ref basic_json(const typename string_t::value_type*) -- create a - string value from a character pointer - @sa @ref basic_json(const CompatibleStringType&) -- create a string value - from a compatible string container - - @since version 1.0.0 - */ - basic_json(const string_t& val) - : m_type(value_t::string), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create a string (explicit) - - Create a string JSON value with a given content. - - @param[in] val a literal value for the string - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the constructor with string literal - parameter.,basic_json__string_t_value_type} - - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const CompatibleStringType&) -- create a string value - from a compatible string container - - @since version 1.0.0 - */ - basic_json(const typename string_t::value_type* val) - : basic_json(string_t(val)) - { - assert_invariant(); - } - - /*! - @brief create a string (implicit) - - Create a string JSON value with a given content. - - @param[in] val a value for the string - - @tparam CompatibleStringType an string type which is compatible to @ref - string_t, for instance `std::string`. - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for string value fails - - @liveexample{The following code shows the construction of a string value - from a compatible type.,basic_json__CompatibleStringType} - - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const typename string_t::value_type*) -- create a - string value from a character pointer - - @since version 1.0.0 - */ - template<class CompatibleStringType, typename std::enable_if< - std::is_constructible<string_t, CompatibleStringType>::value, int>::type = 0> - basic_json(const CompatibleStringType& val) - : basic_json(string_t(val)) - { - assert_invariant(); - } - /*! @brief create an integer number (explicit) @@ -11131,9 +11077,21 @@ class basic_json } private: + friend bool operator==(json_pointer const &lhs, + json_pointer const &rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } + + friend bool operator!=(json_pointer const &lhs, + json_pointer const &rhs) noexcept + { + return !(lhs == rhs); + } + /// the reference tokens std::vector<std::string> reference_tokens {}; - }; + }; ////////////////////////// // JSON Pointer support // From d257149f36ecdaa07e3708bafc9a7cc6d3c77b4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 7 Jan 2017 19:21:47 +0100 Subject: [PATCH 079/174] replace constructor by from/to_json: number_float_t --- src/json.hpp | 163 ++++++++++++++++++++++++---------------------- src/json.hpp.re2c | 163 ++++++++++++++++++++++++---------------------- 2 files changed, 168 insertions(+), 158 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index becbcbd20..1e7f1c5a5 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -229,6 +229,25 @@ struct external_constructor<value_t::string> j.assert_invariant(); } }; + +template <> +struct external_constructor<value_t::number_float> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_float_t val) noexcept + { + // replace infinity and NAN by null + if (not std::isfinite(val)) + j = Json{}; + else + { + j.m_type = value_t::number_float; + j.m_value = val; + } + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -392,7 +411,6 @@ struct is_compatible_basic_json_type std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or is_compatible_integer_type<typename BasicJson::number_unsigned_t, T>::value; @@ -457,6 +475,8 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; +template <typename Json, typename > + // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) void to_json(); @@ -464,6 +484,23 @@ void from_json(); // overloads for basic_json template parameters +template <typename Json, typename ArithmeticType, + enable_if_t<std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename Json::boolean_t>::value, + int> = 0> +void get_arithmetic_value(Json const &j, ArithmeticType &val) +{ + if (j.is_number_integer()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + else if (j.is_number_unsigned()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + else if (j.is_number_float()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + else + throw std::domain_error("type must be number, but is " + type_name(j)); +} + template <typename Json> void to_json(Json &j, typename Json::boolean_t b) noexcept { @@ -479,6 +516,16 @@ void to_json(Json &j, const CompatibleString &s) external_constructor<value_t::string>::construct(j, s); } +template < + typename Json, typename CompatibleNumberFloatType, + enable_if_t<is_compatible_float_type<typename Json::number_float_t, + CompatibleNumberFloatType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberFloatType val) noexcept +{ + external_constructor<value_t::number_float>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -495,6 +542,42 @@ void from_json(Json const& j, typename Json::string_t& s) s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); } +template <typename Json> +void from_json(Json const& j, typename Json::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +// overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) +// +// note: Is it really necessary to provide explicit overloads for boolean_t etc.. +// in case of a custom BooleanType which is not an arithmetic type? +template < + typename Json, typename ArithmeticType, + enable_if_t< + std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + int> = 0> +void from_json(Json const &j, ArithmeticType &val) +{ + if (j.is_number_integer()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + else if (j.is_number_unsigned()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + else if (j.is_number_float()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + else if (j.is_boolean()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + else + throw std::domain_error("type must be number, but is " + type_name(j)); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -1872,84 +1955,6 @@ class basic_json assert_invariant(); } - /*! - @brief create a floating-point number (explicit) - - Create a floating-point number JSON value with a given content. - - @param[in] val a floating-point value to create a JSON number from - - @note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6 - disallows NaN values: - > Numeric values that cannot be represented in the grammar below (such as - > Infinity and NaN) are not permitted. - In case the parameter @a val is not a number, a JSON null value is created - instead. - - @complexity Constant. - - @liveexample{The following example creates several floating-point - values.,basic_json__number_float_t} - - @sa @ref basic_json(const CompatibleNumberFloatType) -- create a number - value (floating-point) from a compatible number type - - @since version 1.0.0 - */ - basic_json(const number_float_t val) noexcept - : m_type(value_t::number_float), m_value(val) - { - // replace infinity and NAN by null - if (not std::isfinite(val)) - { - m_type = value_t::null; - m_value = json_value(); - } - - assert_invariant(); - } - - /*! - @brief create an floating-point number (implicit) - - Create an floating-point number JSON value with a given content. This - constructor allows any type @a CompatibleNumberFloatType that can be used - to construct values of type @ref number_float_t. - - @tparam CompatibleNumberFloatType A floating-point type which is - compatible to @ref number_float_t. Examples may include the types `float` - or `double`. - - @param[in] val a floating-point to create a JSON number from - - @note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6 - disallows NaN values: - > Numeric values that cannot be represented in the grammar below (such as - > Infinity and NaN) are not permitted. - In case the parameter @a val is not a number, a JSON null value is - created instead. - - @complexity Constant. - - @liveexample{The example below shows the construction of several - floating-point number values from compatible - types.,basic_json__CompatibleNumberFloatType} - - @sa @ref basic_json(const number_float_t) -- create a number value - (floating-point) - - @since version 1.0.0 - */ - template <typename CompatibleNumberFloatType, - enable_if_t<detail::is_compatible_float_type< - number_float_t, CompatibleNumberFloatType>::value, - int> = 0> - basic_json(const CompatibleNumberFloatType val) noexcept - : basic_json(number_float_t(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 0122e8b50..74697ab26 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -229,6 +229,25 @@ struct external_constructor<value_t::string> j.assert_invariant(); } }; + +template <> +struct external_constructor<value_t::number_float> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_float_t val) noexcept + { + // replace infinity and NAN by null + if (not std::isfinite(val)) + j = Json{}; + else + { + j.m_type = value_t::number_float; + j.m_value = val; + } + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -392,7 +411,6 @@ struct is_compatible_basic_json_type std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_float_type<typename BasicJson::number_float_t, T>::value or is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or is_compatible_integer_type<typename BasicJson::number_unsigned_t, T>::value; @@ -457,6 +475,8 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; +template <typename Json, typename > + // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) void to_json(); @@ -464,6 +484,23 @@ void from_json(); // overloads for basic_json template parameters +template <typename Json, typename ArithmeticType, + enable_if_t<std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename Json::boolean_t>::value, + int> = 0> +void get_arithmetic_value(Json const &j, ArithmeticType &val) +{ + if (j.is_number_integer()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + else if (j.is_number_unsigned()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + else if (j.is_number_float()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + else + throw std::domain_error("type must be number, but is " + type_name(j)); +} + template <typename Json> void to_json(Json &j, typename Json::boolean_t b) noexcept { @@ -479,6 +516,16 @@ void to_json(Json &j, const CompatibleString &s) external_constructor<value_t::string>::construct(j, s); } +template < + typename Json, typename CompatibleNumberFloatType, + enable_if_t<is_compatible_float_type<typename Json::number_float_t, + CompatibleNumberFloatType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberFloatType val) noexcept +{ + external_constructor<value_t::number_float>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -495,6 +542,42 @@ void from_json(Json const& j, typename Json::string_t& s) s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); } +template <typename Json> +void from_json(Json const& j, typename Json::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +// overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) +// +// note: Is it really necessary to provide explicit overloads for boolean_t etc.. +// in case of a custom BooleanType which is not an arithmetic type? +template < + typename Json, typename ArithmeticType, + enable_if_t< + std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + int> = 0> +void from_json(Json const &j, ArithmeticType &val) +{ + if (j.is_number_integer()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + else if (j.is_number_unsigned()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + else if (j.is_number_float()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + else if (j.is_boolean()) + val = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + else + throw std::domain_error("type must be number, but is " + type_name(j)); +} + struct to_json_fn { // is it really useful to mark those as constexpr? @@ -1873,84 +1956,6 @@ class basic_json assert_invariant(); } - /*! - @brief create a floating-point number (explicit) - - Create a floating-point number JSON value with a given content. - - @param[in] val a floating-point value to create a JSON number from - - @note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6 - disallows NaN values: - > Numeric values that cannot be represented in the grammar below (such as - > Infinity and NaN) are not permitted. - In case the parameter @a val is not a number, a JSON null value is created - instead. - - @complexity Constant. - - @liveexample{The following example creates several floating-point - values.,basic_json__number_float_t} - - @sa @ref basic_json(const CompatibleNumberFloatType) -- create a number - value (floating-point) from a compatible number type - - @since version 1.0.0 - */ - basic_json(const number_float_t val) noexcept - : m_type(value_t::number_float), m_value(val) - { - // replace infinity and NAN by null - if (not std::isfinite(val)) - { - m_type = value_t::null; - m_value = json_value(); - } - - assert_invariant(); - } - - /*! - @brief create an floating-point number (implicit) - - Create an floating-point number JSON value with a given content. This - constructor allows any type @a CompatibleNumberFloatType that can be used - to construct values of type @ref number_float_t. - - @tparam CompatibleNumberFloatType A floating-point type which is - compatible to @ref number_float_t. Examples may include the types `float` - or `double`. - - @param[in] val a floating-point to create a JSON number from - - @note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6 - disallows NaN values: - > Numeric values that cannot be represented in the grammar below (such as - > Infinity and NaN) are not permitted. - In case the parameter @a val is not a number, a JSON null value is - created instead. - - @complexity Constant. - - @liveexample{The example below shows the construction of several - floating-point number values from compatible - types.,basic_json__CompatibleNumberFloatType} - - @sa @ref basic_json(const number_float_t) -- create a number value - (floating-point) - - @since version 1.0.0 - */ - template <typename CompatibleNumberFloatType, - enable_if_t<detail::is_compatible_float_type< - number_float_t, CompatibleNumberFloatType>::value, - int> = 0> - basic_json(const CompatibleNumberFloatType val) noexcept - : basic_json(number_float_t(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list From a32de3b528e9b196ec503a3afecfcc0159f5f413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 12:44:23 +0100 Subject: [PATCH 080/174] replace constructor by from/to_json: number_unsigned_t This commit forces a design change in custom JSONSerializer, which might be temporary --- src/json.hpp | 91 ++++++++++++++----------------------------- src/json.hpp.re2c | 91 ++++++++++++++----------------------------- test/src/unit-udt.cpp | 19 ++++++--- 3 files changed, 73 insertions(+), 128 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 1e7f1c5a5..f34648940 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -248,6 +248,18 @@ struct external_constructor<value_t::number_float> } }; +template <> +struct external_constructor<value_t::number_unsigned> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -411,9 +423,7 @@ struct is_compatible_basic_json_type std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_unsigned_t, - T>::value; + is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -526,6 +536,17 @@ void to_json(Json &j, CompatibleNumberFloatType val) noexcept external_constructor<value_t::number_float>::construct(j, val); } + +template < + typename Json, typename CompatibleNumberUnsignedType, + enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + CompatibleNumberUnsignedType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor<value_t::number_unsigned>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -548,6 +569,12 @@ void from_json(Json const& j, typename Json::number_float_t& val) get_arithmetic_value(j, val); } +template <typename Json> +void from_json(Json const& j, typename Json::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1897,64 +1924,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an unsigned integer number (explicit) - - Create an unsigned integer number JSON value with a given content. - - @tparam T helper type to compare number_unsigned_t and unsigned int (not - visible in) the interface. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @sa @ref basic_json(const CompatibleNumberUnsignedType) -- create a number - value (unsigned integer) from a compatible number type - - @since version 2.0.0 - */ - template<typename T, typename std::enable_if< - not (std::is_same<T, int>::value) and - std::is_same<T, number_unsigned_t>::value, int>::type = 0> - basic_json(const number_unsigned_t val) noexcept - : m_type(value_t::number_unsigned), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an unsigned number (implicit) - - Create an unsigned number JSON value with a given content. This - constructor allows any type @a CompatibleNumberUnsignedType that can be - used to construct values of type @ref number_unsigned_t. - - @tparam CompatibleNumberUnsignedType An integer type which is compatible - to @ref number_unsigned_t. Examples may include the types `unsigned int`, - `uint32_t`, or `unsigned short`. - - @param[in] val an unsigned integer to create a JSON number from - - @complexity Constant. - - @sa @ref basic_json(const number_unsigned_t) -- create a number value - (unsigned) - - @since version 2.0.0 - */ - template < - typename CompatibleNumberUnsignedType, - enable_if_t<detail::is_compatible_integer_type< - number_unsigned_t, CompatibleNumberUnsignedType>::value, - int> = 0 > - basic_json(const CompatibleNumberUnsignedType val) noexcept - : m_type(value_t::number_unsigned), - m_value(static_cast<number_unsigned_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 74697ab26..a7841f6f0 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -248,6 +248,18 @@ struct external_constructor<value_t::number_float> } }; +template <> +struct external_constructor<value_t::number_unsigned> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -411,9 +423,7 @@ struct is_compatible_basic_json_type std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_unsigned_t, - T>::value; + is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -526,6 +536,17 @@ void to_json(Json &j, CompatibleNumberFloatType val) noexcept external_constructor<value_t::number_float>::construct(j, val); } + +template < + typename Json, typename CompatibleNumberUnsignedType, + enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + CompatibleNumberUnsignedType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor<value_t::number_unsigned>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -548,6 +569,12 @@ void from_json(Json const& j, typename Json::number_float_t& val) get_arithmetic_value(j, val); } +template <typename Json> +void from_json(Json const& j, typename Json::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1898,64 +1925,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an unsigned integer number (explicit) - - Create an unsigned integer number JSON value with a given content. - - @tparam T helper type to compare number_unsigned_t and unsigned int (not - visible in) the interface. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @sa @ref basic_json(const CompatibleNumberUnsignedType) -- create a number - value (unsigned integer) from a compatible number type - - @since version 2.0.0 - */ - template<typename T, typename std::enable_if< - not (std::is_same<T, int>::value) and - std::is_same<T, number_unsigned_t>::value, int>::type = 0> - basic_json(const number_unsigned_t val) noexcept - : m_type(value_t::number_unsigned), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an unsigned number (implicit) - - Create an unsigned number JSON value with a given content. This - constructor allows any type @a CompatibleNumberUnsignedType that can be - used to construct values of type @ref number_unsigned_t. - - @tparam CompatibleNumberUnsignedType An integer type which is compatible - to @ref number_unsigned_t. Examples may include the types `unsigned int`, - `uint32_t`, or `unsigned short`. - - @param[in] val an unsigned integer to create a JSON number from - - @complexity Constant. - - @sa @ref basic_json(const number_unsigned_t) -- create a number value - (unsigned) - - @since version 2.0.0 - */ - template < - typename CompatibleNumberUnsignedType, - enable_if_t<detail::is_compatible_integer_type< - number_unsigned_t, CompatibleNumberUnsignedType>::value, - int> = 0 > - basic_json(const CompatibleNumberUnsignedType val) noexcept - : m_type(value_t::number_unsigned), - m_value(static_cast<number_unsigned_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 0cd834d6c..382b0ed54 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -483,13 +483,20 @@ TEST_CASE("Non-copyable types", "[udt]") template <typename T, typename = typename std::enable_if<std::is_pod<T>::value>::type> struct pod_serializer { - // I could forward-declare this struct, and add a basic_json alias template <typename Json> static void from_json(Json const& j , T& t) { - auto value = j.template get<std::uint64_t>(); - auto bytes = static_cast<char*>(static_cast<void*>(&value)); - std::memcpy(&t, bytes, sizeof(value)); + std::uint64_t value; + // Why cannot we simply use: j.get<std::uint64_t>() ? + // Well, with the current experiment, the get method looks for a from_json function, which we are currently defining! + // This would end up in a stack overflow. Calling nlohmann::from_json is a workaround. + // I shall find a good way to avoid this once all constructors are converted to free methods + // + // In short, constructing a json by constructor calls to_json + // calling get calls from_json, for now, we cannot do this in custom serializers + nlohmann::from_json(j, value); + auto bytes = static_cast<char *>(static_cast<void *>(&value)); + std::memcpy(&t, bytes, sizeof(value)); } template <typename Json> @@ -501,8 +508,8 @@ struct pod_serializer { value |= bytes[i] << 8 * i; } - - j = value; + // same thing here + nlohmann::to_json(j, value); } }; From f00898331e548e864b6d37f70c5470a841fe6cca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 14:06:25 +0100 Subject: [PATCH 081/174] replace constructor by from/to_json: number_integer_t --- src/json.hpp | 129 +++++++++++----------------------------------- src/json.hpp.re2c | 129 +++++++++++----------------------------------- 2 files changed, 62 insertions(+), 196 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f34648940..9f8f3145c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -260,6 +260,18 @@ struct external_constructor<value_t::number_unsigned> } }; +template <> +struct external_constructor<value_t::number_integer> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -387,6 +399,7 @@ struct is_compatible_integer_type_impl : std::false_type {}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { + // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits<RealIntegerType>; using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; @@ -402,7 +415,7 @@ struct is_compatible_integer_type { static constexpr auto value = is_compatible_integer_type_impl < - std::is_arithmetic<CompatibleNumberIntegerType>::value and + std::is_integral<CompatibleNumberIntegerType>::value and not std::is_same<bool, CompatibleNumberIntegerType>::value, RealIntegerType, CompatibleNumberIntegerType > ::value; }; @@ -422,8 +435,7 @@ struct is_compatible_basic_json_type is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or - is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value; + is_compatible_object_type<typename BasicJson::object_t, T>::value; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -547,6 +559,16 @@ void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept external_constructor<value_t::number_unsigned>::construct(j, val); } +template < + typename Json, typename CompatibleNumberIntegerType, + enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + CompatibleNumberIntegerType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor<value_t::number_integer>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -575,6 +597,12 @@ void from_json(Json const& j, typename Json::number_unsigned_t& val) get_arithmetic_value(j, val); } +template <typename Json> +void from_json(Json const& j, typename Json::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1820,64 +1848,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - /*! - @brief create an integer number (explicit) - - Create an integer number JSON value with a given content. - - @tparam T A helper type to remove this function via SFINAE in case @ref - number_integer_t is the same as `int`. In this case, this constructor - would have the same signature as @ref basic_json(const int value). Note - the helper type @a T is not visible in this constructor's interface. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @liveexample{The example below shows the construction of an integer - number value.,basic_json__number_integer_t} - - @sa @ref basic_json(const int) -- create a number value (integer) - @sa @ref basic_json(const CompatibleNumberIntegerType) -- create a number - value (integer) from a compatible number type - - @since version 1.0.0 - */ - template<typename T, typename std::enable_if< - not (std::is_same<T, int>::value) and - std::is_same<T, number_integer_t>::value, int>::type = 0> - basic_json(const number_integer_t val) noexcept - : m_type(value_t::number_integer), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an integer number from an enum type (explicit) - - Create an integer number JSON value with a given content. - - @param[in] val an integer to create a JSON number from - - @note This constructor allows to pass enums directly to a constructor. As - C++ has no way of specifying the type of an anonymous enum explicitly, we - can only rely on the fact that such values implicitly convert to int. As - int may already be the same type of number_integer_t, we may need to - switch off the constructor @ref basic_json(const number_integer_t). - - @complexity Constant. - - @liveexample{The example below shows the construction of an integer - number value from an anonymous enum.,basic_json__const_int} - - @sa @ref basic_json(const number_integer_t) -- create a number value - (integer) - @sa @ref basic_json(const CompatibleNumberIntegerType) -- create a number - value (integer) from a compatible number type - - @since version 1.0.0 - */ - // Constructor for unscoped enums (not enum classes) template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> basic_json(T val) noexcept @@ -1887,43 +1857,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an integer number (implicit) - - Create an integer number JSON value with a given content. This constructor - allows any type @a CompatibleNumberIntegerType that can be used to - construct values of type @ref number_integer_t. - - @tparam CompatibleNumberIntegerType An integer type which is compatible to - @ref number_integer_t. Examples include the types `int`, `int32_t`, - `long`, and `short`. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @liveexample{The example below shows the construction of several integer - number values from compatible - types.,basic_json__CompatibleIntegerNumberType} - - @sa @ref basic_json(const number_integer_t) -- create a number value - (integer) - @sa @ref basic_json(const int) -- create a number value (integer) - - @since version 1.0.0 - */ - template < - typename CompatibleNumberIntegerType, - enable_if_t<detail::is_compatible_integer_type< - number_integer_t, CompatibleNumberIntegerType>::value, - int> = 0 > - basic_json(const CompatibleNumberIntegerType val) noexcept - : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index a7841f6f0..909ce90dc 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -260,6 +260,18 @@ struct external_constructor<value_t::number_unsigned> } }; +template <> +struct external_constructor<value_t::number_integer> +{ + template <typename Json> + static void construct(Json &j, typename Json::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -387,6 +399,7 @@ struct is_compatible_integer_type_impl : std::false_type {}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { + // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits<RealIntegerType>; using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; @@ -402,7 +415,7 @@ struct is_compatible_integer_type { static constexpr auto value = is_compatible_integer_type_impl < - std::is_arithmetic<CompatibleNumberIntegerType>::value and + std::is_integral<CompatibleNumberIntegerType>::value and not std::is_same<bool, CompatibleNumberIntegerType>::value, RealIntegerType, CompatibleNumberIntegerType > ::value; }; @@ -422,8 +435,7 @@ struct is_compatible_basic_json_type is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or - is_compatible_object_type<typename BasicJson::object_t, T>::value or - is_compatible_integer_type<typename BasicJson::number_integer_t, T>::value; + is_compatible_object_type<typename BasicJson::object_t, T>::value; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -547,6 +559,16 @@ void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept external_constructor<value_t::number_unsigned>::construct(j, val); } +template < + typename Json, typename CompatibleNumberIntegerType, + enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + CompatibleNumberIntegerType>::value, + int> = 0> +void to_json(Json &j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor<value_t::number_integer>::construct(j, val); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -575,6 +597,12 @@ void from_json(Json const& j, typename Json::number_unsigned_t& val) get_arithmetic_value(j, val); } +template <typename Json> +void from_json(Json const& j, typename Json::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1821,64 +1849,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - /*! - @brief create an integer number (explicit) - - Create an integer number JSON value with a given content. - - @tparam T A helper type to remove this function via SFINAE in case @ref - number_integer_t is the same as `int`. In this case, this constructor - would have the same signature as @ref basic_json(const int value). Note - the helper type @a T is not visible in this constructor's interface. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @liveexample{The example below shows the construction of an integer - number value.,basic_json__number_integer_t} - - @sa @ref basic_json(const int) -- create a number value (integer) - @sa @ref basic_json(const CompatibleNumberIntegerType) -- create a number - value (integer) from a compatible number type - - @since version 1.0.0 - */ - template<typename T, typename std::enable_if< - not (std::is_same<T, int>::value) and - std::is_same<T, number_integer_t>::value, int>::type = 0> - basic_json(const number_integer_t val) noexcept - : m_type(value_t::number_integer), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an integer number from an enum type (explicit) - - Create an integer number JSON value with a given content. - - @param[in] val an integer to create a JSON number from - - @note This constructor allows to pass enums directly to a constructor. As - C++ has no way of specifying the type of an anonymous enum explicitly, we - can only rely on the fact that such values implicitly convert to int. As - int may already be the same type of number_integer_t, we may need to - switch off the constructor @ref basic_json(const number_integer_t). - - @complexity Constant. - - @liveexample{The example below shows the construction of an integer - number value from an anonymous enum.,basic_json__const_int} - - @sa @ref basic_json(const number_integer_t) -- create a number value - (integer) - @sa @ref basic_json(const CompatibleNumberIntegerType) -- create a number - value (integer) from a compatible number type - - @since version 1.0.0 - */ - // Constructor for unscoped enums (not enum classes) template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> basic_json(T val) noexcept @@ -1888,43 +1858,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an integer number (implicit) - - Create an integer number JSON value with a given content. This constructor - allows any type @a CompatibleNumberIntegerType that can be used to - construct values of type @ref number_integer_t. - - @tparam CompatibleNumberIntegerType An integer type which is compatible to - @ref number_integer_t. Examples include the types `int`, `int32_t`, - `long`, and `short`. - - @param[in] val an integer to create a JSON number from - - @complexity Constant. - - @liveexample{The example below shows the construction of several integer - number values from compatible - types.,basic_json__CompatibleIntegerNumberType} - - @sa @ref basic_json(const number_integer_t) -- create a number value - (integer) - @sa @ref basic_json(const int) -- create a number value (integer) - - @since version 1.0.0 - */ - template < - typename CompatibleNumberIntegerType, - enable_if_t<detail::is_compatible_integer_type< - number_integer_t, CompatibleNumberIntegerType>::value, - int> = 0 > - basic_json(const CompatibleNumberIntegerType val) noexcept - : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list From 6d427acdde352db6b48630fddd6d5e3d4bd542dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 14:07:10 +0100 Subject: [PATCH 082/174] replace constructor by from/to_json: unscoped enum types this also means that one can do: j.get<unscoped_enum>(); --- src/json.hpp | 26 ++++++++++++++++---------- src/json.hpp.re2c | 26 ++++++++++++++++---------- test/src/unit-regression.cpp | 10 +++++++++- 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9f8f3145c..74e6338fa 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -432,7 +432,6 @@ template <typename T, typename BasicJson> struct is_compatible_basic_json_type { static auto constexpr value = - is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value; @@ -569,6 +568,13 @@ void to_json(Json &j, CompatibleNumberIntegerType val) noexcept external_constructor<value_t::number_integer>::construct(j, val); } +template <typename Json, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void to_json(Json &j, UnscopedEnumType e) +{ + external_constructor<value_t::number_integer>::construct(j, e); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -603,6 +609,15 @@ void from_json(Json const& j, typename Json::number_integer_t& val) get_arithmetic_value(j, val); } +template <typename Json, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void from_json(Json const &j, UnscopedEnumType& e) +{ + typename std::underlying_type<UnscopedEnumType>::type val = e; + get_arithmetic_value(j, val); + e = static_cast<UnscopedEnumType>(val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1848,15 +1863,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - // Constructor for unscoped enums (not enum classes) - template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> - basic_json(T val) noexcept - : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 909ce90dc..c4182652a 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -432,7 +432,6 @@ template <typename T, typename BasicJson> struct is_compatible_basic_json_type { static auto constexpr value = - is_unscoped_enum<T>::value or std::is_same<T, BasicJson>::value or is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value; @@ -569,6 +568,13 @@ void to_json(Json &j, CompatibleNumberIntegerType val) noexcept external_constructor<value_t::number_integer>::construct(j, val); } +template <typename Json, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void to_json(Json &j, UnscopedEnumType e) +{ + external_constructor<value_t::number_integer>::construct(j, e); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -603,6 +609,15 @@ void from_json(Json const& j, typename Json::number_integer_t& val) get_arithmetic_value(j, val); } +template <typename Json, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void from_json(Json const &j, UnscopedEnumType& e) +{ + typename std::underlying_type<UnscopedEnumType>::type val = e; + get_arithmetic_value(j, val); + e = static_cast<UnscopedEnumType>(val); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1849,15 +1864,6 @@ class basic_json JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } - // Constructor for unscoped enums (not enum classes) - template <typename T, enable_if_t<is_unscoped_enum<T>::value, int> = 0> - basic_json(T val) noexcept - : m_type(value_t::number_integer), - m_value(static_cast<number_integer_t>(val)) - { - assert_invariant(); - } - /*! @brief create a container (array or object) from an initializer list diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 7cb9169f2..07055bc17 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -63,10 +63,18 @@ TEST_CASE("regression tests") SECTION("pull request #71 - handle enum type") { - enum { t = 0 }; + enum { t = 0 , u = 1}; json j = json::array(); j.push_back(t); + // maybe this is not the place to test this? + json j2 = u; + + auto anon_enum_value = j2.get<decltype(u)>(); + CHECK(u == anon_enum_value); + + static_assert(std::is_same<decltype(anon_enum_value), decltype(u)>::value, ""); + j.push_back(json::object( { {"game_type", t} From c847e0eea2667d78936bc032884657911b028003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 16:17:47 +0100 Subject: [PATCH 083/174] replace constructor by from/to_json: array_t - tweaked a bit how `get<container<json>>` is handled - added a from_json overload for forward list --- src/json.hpp | 196 ++++++++++++++++++++-------------- src/json.hpp.re2c | 196 ++++++++++++++++++++-------------- test/src/unit-conversions.cpp | 2 + test/src/unit-udt.cpp | 26 ++--- 4 files changed, 249 insertions(+), 171 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 74e6338fa..a7be5c819 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -39,6 +39,7 @@ SOFTWARE. #include <cstdint> // int64_t, uint64_t #include <cstdlib> // strtod, strtof, strtold, strtoul #include <cstring> // strlen +#include <forward_list> // forward_list #include <functional> // function, hash, less #include <initializer_list> // initializer_list #include <iomanip> // setw @@ -272,6 +273,32 @@ struct external_constructor<value_t::number_integer> } }; +template <> +struct external_constructor<value_t::array> +{ + template <typename Json> + static void construct(Json &j, const typename Json::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template <typename Json, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename Json::array_t>::value, + int> = 0> + static void construct(Json &j, const CompatibleArrayType &arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = + j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -432,8 +459,6 @@ template <typename T, typename BasicJson> struct is_compatible_basic_json_type { static auto constexpr value = - std::is_same<T, BasicJson>::value or - is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value; }; @@ -575,6 +600,17 @@ void to_json(Json &j, UnscopedEnumType e) external_constructor<value_t::number_integer>::construct(j, e); } +template < + typename Json, typename CompatibleArrayType, + enable_if_t< + is_compatible_array_type<Json, CompatibleArrayType>::value or + std::is_same<typename Json::array_t, CompatibleArrayType>::value, + int> = 0> +void to_json(Json &j, CompatibleArrayType const &arr) +{ + external_constructor<value_t::array>::construct(j, arr); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -618,6 +654,59 @@ void from_json(Json const &j, UnscopedEnumType& e) e = static_cast<UnscopedEnumType>(val); } +template <typename Json> +void from_json(Json const &j, typename Json::array_t &arr) +{ + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + arr = *const_cast<Json&>(j).template get_ptr<typename Json::array_t*>(); +} + +// forward_list doesn't have an insert method, TODO find a way to avoid including forward_list +template <typename Json, typename T, typename Allocator> +void from_json(Json const&j, std::forward_list<T, Allocator>& l) +{ + // do not perform the check when user wants to retrieve jsons + // (except when it's null.. ?) + if (j.is_null()) + throw std::domain_error("type must be array, but is " + type_name(j)); + if (not std::is_same<T, Json>::value) + { + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + } + for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) + l.push_front(it->template get<T>()); +} + +template < + typename Json, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and + not std::is_same<typename Json::array_t, + CompatibleArrayType>::value, + int> = 0> +void from_json(Json const &j, CompatibleArrayType &arr) +{ + if (j.is_null()) + throw std::domain_error("type must be array, but is " + type_name(j)); + // when T == Json, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + { + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + } + + using std::begin; + using std::end; + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1780,69 +1869,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an array (explicit) - - Create an array JSON value with a given content. - - @param[in] val a value for the array - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for array value fails - - @liveexample{The following code shows the constructor with an @ref array_t - parameter.,basic_json__array_t} - - @sa @ref basic_json(const CompatibleArrayType&) -- create an array value - from a compatible STL containers - - @since version 1.0.0 - */ - basic_json(const array_t& val) - : m_type(value_t::array), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an array (implicit) - - Create an array JSON value with a given content. This constructor allows - any type @a CompatibleArrayType that can be used to construct values of - type @ref array_t. - - @tparam CompatibleArrayType An object type whose `value_type` is - compatible to @ref array_t. Examples include `std::vector`, `std::deque`, - `std::list`, `std::forward_list`, `std::array`, `std::set`, - `std::unordered_set`, `std::multiset`, and `unordered_multiset` with a - `value_type` from which a @ref basic_json value can be constructed. - - @param[in] val a value for the array - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for array value fails - - @liveexample{The following code shows the constructor with several - compatible array type parameters.,basic_json__CompatibleArrayType} - - @sa @ref basic_json(const array_t&) -- create an array value - - @since version 1.0.0 - */ - template <class CompatibleArrayType, - enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, - int> = 0> - basic_json(const CompatibleArrayType& val) : m_type(value_t::array) - { - using std::begin; - using std::end; - m_value.array = create<array_t>(begin(val), end(val)); - assert_invariant(); - } - - // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) @@ -1851,6 +1877,7 @@ class basic_json typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_same<uncvref_t<T>, basic_json_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< @@ -3211,23 +3238,34 @@ class basic_json return get_impl(static_cast<ValueType *>(nullptr)); } + // if T is basic_json, simply returns *this + template <typename T, + enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + basic_json get() const + { + return *this; + } + template < typename T, - enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - int> = 0 > - auto get() const -> uncvref_t<T> + enable_if_t<detail::conjunction< + detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value and + not std::is_same<basic_json_t, uncvref_t<T>>::value, + int> = 0> + // do we really want the uncvref ? if a user call get<int &>, shouldn't we static assert ? + auto get() const -> uncvref_t<T> { - using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value&& - std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and " - "CopyConstructible when used with get"); - type ret; - JSONSerializer<type>::from_json(*this, ret); - return ret; + using type = uncvref_t<T>; + static_assert(std::is_default_constructible<type>::value && + std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and " + "CopyConstructible when used with get"); + type ret; + JSONSerializer<type>::from_json(*this, ret); + return ret; } // This overload is chosen for non-default constructible user-defined-types diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c4182652a..a56742384 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -39,6 +39,7 @@ SOFTWARE. #include <cstdint> // int64_t, uint64_t #include <cstdlib> // strtod, strtof, strtold, strtoul #include <cstring> // strlen +#include <forward_list> // forward_list #include <functional> // function, hash, less #include <initializer_list> // initializer_list #include <iomanip> // setw @@ -272,6 +273,32 @@ struct external_constructor<value_t::number_integer> } }; +template <> +struct external_constructor<value_t::array> +{ + template <typename Json> + static void construct(Json &j, const typename Json::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template <typename Json, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename Json::array_t>::value, + int> = 0> + static void construct(Json &j, const CompatibleArrayType &arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = + j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -432,8 +459,6 @@ template <typename T, typename BasicJson> struct is_compatible_basic_json_type { static auto constexpr value = - std::is_same<T, BasicJson>::value or - is_compatible_array_type<BasicJson, T>::value or is_compatible_object_type<typename BasicJson::object_t, T>::value; }; @@ -575,6 +600,17 @@ void to_json(Json &j, UnscopedEnumType e) external_constructor<value_t::number_integer>::construct(j, e); } +template < + typename Json, typename CompatibleArrayType, + enable_if_t< + is_compatible_array_type<Json, CompatibleArrayType>::value or + std::is_same<typename Json::array_t, CompatibleArrayType>::value, + int> = 0> +void to_json(Json &j, CompatibleArrayType const &arr) +{ + external_constructor<value_t::array>::construct(j, arr); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -618,6 +654,59 @@ void from_json(Json const &j, UnscopedEnumType& e) e = static_cast<UnscopedEnumType>(val); } +template <typename Json> +void from_json(Json const &j, typename Json::array_t &arr) +{ + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + arr = *const_cast<Json&>(j).template get_ptr<typename Json::array_t*>(); +} + +// forward_list doesn't have an insert method, TODO find a way to avoid including forward_list +template <typename Json, typename T, typename Allocator> +void from_json(Json const&j, std::forward_list<T, Allocator>& l) +{ + // do not perform the check when user wants to retrieve jsons + // (except when it's null.. ?) + if (j.is_null()) + throw std::domain_error("type must be array, but is " + type_name(j)); + if (not std::is_same<T, Json>::value) + { + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + } + for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) + l.push_front(it->template get<T>()); +} + +template < + typename Json, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and + not std::is_same<typename Json::array_t, + CompatibleArrayType>::value, + int> = 0> +void from_json(Json const &j, CompatibleArrayType &arr) +{ + if (j.is_null()) + throw std::domain_error("type must be array, but is " + type_name(j)); + // when T == Json, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + { + if (!j.is_array()) + throw std::domain_error("type must be array, but is " + type_name(j)); + } + + using std::begin; + using std::end; + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1781,69 +1870,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an array (explicit) - - Create an array JSON value with a given content. - - @param[in] val a value for the array - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for array value fails - - @liveexample{The following code shows the constructor with an @ref array_t - parameter.,basic_json__array_t} - - @sa @ref basic_json(const CompatibleArrayType&) -- create an array value - from a compatible STL containers - - @since version 1.0.0 - */ - basic_json(const array_t& val) - : m_type(value_t::array), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an array (implicit) - - Create an array JSON value with a given content. This constructor allows - any type @a CompatibleArrayType that can be used to construct values of - type @ref array_t. - - @tparam CompatibleArrayType An object type whose `value_type` is - compatible to @ref array_t. Examples include `std::vector`, `std::deque`, - `std::list`, `std::forward_list`, `std::array`, `std::set`, - `std::unordered_set`, `std::multiset`, and `unordered_multiset` with a - `value_type` from which a @ref basic_json value can be constructed. - - @param[in] val a value for the array - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for array value fails - - @liveexample{The following code shows the constructor with several - compatible array type parameters.,basic_json__CompatibleArrayType} - - @sa @ref basic_json(const array_t&) -- create an array value - - @since version 1.0.0 - */ - template <class CompatibleArrayType, - enable_if_t<detail::is_compatible_array_type<basic_json_t, CompatibleArrayType>::value, - int> = 0> - basic_json(const CompatibleArrayType& val) : m_type(value_t::array) - { - using std::begin; - using std::end; - m_value.array = create<array_t>(begin(val), end(val)); - assert_invariant(); - } - - // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) @@ -1852,6 +1878,7 @@ class basic_json typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and + not std::is_same<uncvref_t<T>, basic_json_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< @@ -3209,23 +3236,34 @@ class basic_json return get_impl(static_cast<ValueType *>(nullptr)); } + // if T is basic_json, simply returns *this + template <typename T, + enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + basic_json get() const + { + return *this; + } + template < typename T, - enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - int> = 0 > - auto get() const -> uncvref_t<T> + enable_if_t<detail::conjunction< + detail::negation<detail::is_compatible_basic_json_type< + uncvref_t<T>, basic_json_t>>, + detail::has_from_json<JSONSerializer, basic_json_t, + uncvref_t<T>>>::value and + not std::is_same<basic_json_t, uncvref_t<T>>::value, + int> = 0> + // do we really want the uncvref ? if a user call get<int &>, shouldn't we static assert ? + auto get() const -> uncvref_t<T> { - using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value&& - std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and " - "CopyConstructible when used with get"); - type ret; - JSONSerializer<type>::from_json(*this, ret); - return ret; + using type = uncvref_t<T>; + static_assert(std::is_default_constructible<type>::value && + std::is_copy_constructible<type>::value, + "user-defined types must be DefaultConstructible and " + "CopyConstructible when used with get"); + type ret; + JSONSerializer<type>::from_json(*this, ret); + return ret; } // This overload is chosen for non-default constructible user-defined-types diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index b82127bbd..2b570533c 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1004,6 +1004,8 @@ TEST_CASE("value conversion") CHECK_THROWS_AS((json().get<std::vector<json>>()), std::logic_error); CHECK_THROWS_AS((json().get<std::list<json>>()), std::logic_error); + // does type really must be an array? or it rather must not be null? + // that's what I thought when other test like this one broke CHECK_THROWS_WITH((json().get<std::list<int>>()), "type must be array, but is null"); CHECK_THROWS_WITH((json().get<std::vector<int>>()), "type must be array, but is null"); CHECK_THROWS_WITH((json().get<std::vector<json>>()), "type must be array, but is null"); diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 382b0ed54..bb150e76e 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -391,19 +391,19 @@ TEST_CASE("adl_serializer specialization", "[udt]") namespace nlohmann { -// this might work in the future, not in the scope of this PR though -// we have to make this very clear in the doc -template <typename T> -struct adl_serializer<std::vector<T>> -{ - static void to_json(json& j, std::vector<T> const& opt) - { - } - - static void from_json(json const& j, std::vector<T>& opt) - { - } -}; + // TODO provide a real example, since this works now :) +// template <typename T> +// struct adl_serializer<std::vector<T>> +// { +// static void to_json(json& j, std::vector<T> const& opt) +// { +// +// } +// +// static void from_json(json const& j, std::vector<T>& opt) +// { +// } +// }; } TEST_CASE("current supported types are preferred over specializations", "[udt]") From 7e6a6f978ecc6e28af719417fdb9e73c6f73c567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 16:55:34 +0100 Subject: [PATCH 084/174] replace constructor by from/to_json: array_t --- src/json.hpp | 120 +++++++++++++++++++++------------------------- src/json.hpp.re2c | 120 +++++++++++++++++++++------------------------- 2 files changed, 110 insertions(+), 130 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index a7be5c819..a07f10eb4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -299,6 +299,33 @@ struct external_constructor<value_t::array> } }; +template <> +struct external_constructor<value_t::object> +{ + template <typename Json> + static void construct(Json &j, const typename Json::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template <typename Json, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename Json::object_t>::value, + int> = 0> + static void construct(Json &j, const CompatibleObjectType &obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = + j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -458,8 +485,7 @@ struct is_compatible_float_type template <typename T, typename BasicJson> struct is_compatible_basic_json_type { - static auto constexpr value = - is_compatible_object_type<typename BasicJson::object_t, T>::value; + static auto constexpr value = false; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -611,6 +637,15 @@ void to_json(Json &j, CompatibleArrayType const &arr) external_constructor<value_t::array>::construct(j, arr); } +template < + typename Json, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + int> = 0> +void to_json(Json &j, CompatibleObjectType const &arr) +{ + external_constructor<value_t::object>::construct(j, arr); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -707,6 +742,24 @@ void from_json(Json const &j, CompatibleArrayType &arr) }); } + +template < + typename Json, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + int> = 0> +void from_json(Json const &j, CompatibleObjectType &obj) +{ + if (!j.is_object()) + throw std::domain_error("type must be object, but is " + type_name(j)); + + auto inner_object = const_cast<Json&>(j).template get_ptr<typename Json::object_t*>(); + using std::begin; + using std::end; + // we could avoid the assignment, but this might require a for loop, which + // might be less efficient than the container constructor for some containers (would it?) + obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1806,69 +1859,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an object (explicit) - - Create an object JSON value with a given content. - - @param[in] val a value for the object - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for object value fails - - @liveexample{The following code shows the constructor with an @ref - object_t parameter.,basic_json__object_t} - - @sa @ref basic_json(const CompatibleObjectType&) -- create an object value - from a compatible STL container - - @since version 1.0.0 - */ - basic_json(const object_t& val) - : m_type(value_t::object), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an object (implicit) - - Create an object JSON value with a given content. This constructor allows - any type @a CompatibleObjectType that can be used to construct values of - type @ref object_t. - - @tparam CompatibleObjectType An object type whose `key_type` and - `value_type` is compatible to @ref object_t. Examples include `std::map`, - `std::unordered_map`, `std::multimap`, and `std::unordered_multimap` with - a `key_type` of `std::string`, and a `value_type` from which a @ref - basic_json value can be constructed. - - @param[in] val a value for the object - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for object value fails - - @liveexample{The following code shows the constructor with several - compatible object type parameters.,basic_json__CompatibleObjectType} - - @sa @ref basic_json(const object_t&) -- create an object value - - @since version 1.0.0 - */ - template <class CompatibleObjectType, - enable_if_t<detail::is_compatible_object_type< - object_t, CompatibleObjectType>::value, - int> = 0> - basic_json(const CompatibleObjectType& val) : m_type(value_t::object) - { - using std::begin; - using std::end; - m_value.object = create<object_t>(begin(val), end(val)); - assert_invariant(); - } - // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index a56742384..32a6282ec 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -299,6 +299,33 @@ struct external_constructor<value_t::array> } }; +template <> +struct external_constructor<value_t::object> +{ + template <typename Json> + static void construct(Json &j, const typename Json::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template <typename Json, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename Json::object_t>::value, + int> = 0> + static void construct(Json &j, const CompatibleObjectType &obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = + j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + // very useful construct against boilerplate (more boilerplate needed than in // C++17: http://en.cppreference.com/w/cpp/types/void_t) template <typename...> struct make_void @@ -458,8 +485,7 @@ struct is_compatible_float_type template <typename T, typename BasicJson> struct is_compatible_basic_json_type { - static auto constexpr value = - is_compatible_object_type<typename BasicJson::object_t, T>::value; + static auto constexpr value = false; }; template <typename T, typename BasicJson, typename PrimitiveIterator> @@ -611,6 +637,15 @@ void to_json(Json &j, CompatibleArrayType const &arr) external_constructor<value_t::array>::construct(j, arr); } +template < + typename Json, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + int> = 0> +void to_json(Json &j, CompatibleObjectType const &arr) +{ + external_constructor<value_t::object>::construct(j, arr); +} + template <typename Json> void from_json(Json const& j, typename Json::boolean_t& b) { @@ -707,6 +742,24 @@ void from_json(Json const &j, CompatibleArrayType &arr) }); } + +template < + typename Json, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + int> = 0> +void from_json(Json const &j, CompatibleObjectType &obj) +{ + if (!j.is_object()) + throw std::domain_error("type must be object, but is " + type_name(j)); + + auto inner_object = const_cast<Json&>(j).template get_ptr<typename Json::object_t*>(); + using std::begin; + using std::end; + // we could avoid the assignment, but this might require a for loop, which + // might be less efficient than the container constructor for some containers (would it?) + obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); +} + // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. @@ -1807,69 +1860,6 @@ class basic_json assert_invariant(); } - /*! - @brief create an object (explicit) - - Create an object JSON value with a given content. - - @param[in] val a value for the object - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for object value fails - - @liveexample{The following code shows the constructor with an @ref - object_t parameter.,basic_json__object_t} - - @sa @ref basic_json(const CompatibleObjectType&) -- create an object value - from a compatible STL container - - @since version 1.0.0 - */ - basic_json(const object_t& val) - : m_type(value_t::object), m_value(val) - { - assert_invariant(); - } - - /*! - @brief create an object (implicit) - - Create an object JSON value with a given content. This constructor allows - any type @a CompatibleObjectType that can be used to construct values of - type @ref object_t. - - @tparam CompatibleObjectType An object type whose `key_type` and - `value_type` is compatible to @ref object_t. Examples include `std::map`, - `std::unordered_map`, `std::multimap`, and `std::unordered_multimap` with - a `key_type` of `std::string`, and a `value_type` from which a @ref - basic_json value can be constructed. - - @param[in] val a value for the object - - @complexity Linear in the size of the passed @a val. - - @throw std::bad_alloc if allocation for object value fails - - @liveexample{The following code shows the constructor with several - compatible object type parameters.,basic_json__CompatibleObjectType} - - @sa @ref basic_json(const object_t&) -- create an object value - - @since version 1.0.0 - */ - template <class CompatibleObjectType, - enable_if_t<detail::is_compatible_object_type< - object_t, CompatibleObjectType>::value, - int> = 0> - basic_json(const CompatibleObjectType& val) : m_type(value_t::object) - { - using std::begin; - using std::end; - m_value.object = create<object_t>(begin(val), end(val)); - assert_invariant(); - } - // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) From 4e8089b9de2094037103b45d791fec4a8816a430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 17:20:50 +0100 Subject: [PATCH 085/174] remove old get/get_impl overloads (doc removal is of course temporary) --- src/json.hpp | 231 +++++----------------------------------------- src/json.hpp.re2c | 227 +++++---------------------------------------- 2 files changed, 47 insertions(+), 411 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index a07f10eb4..c50212c1f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -834,6 +834,7 @@ struct DecimalSeparator : std::numpunct<char> } }; +} // taken from ranges-v3 // TODO add doc @@ -2908,151 +2909,6 @@ class basic_json /// @} private: - ////////////////// - // value access // - ////////////////// - - template<class T, typename std::enable_if< - std::is_convertible<typename object_t::key_type, typename T::key_type>::value and - std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> - T get_impl(T*) const - { - if (is_object()) - { - return T(m_value.object->begin(), m_value.object->end()); - } - else - { - - JSON_THROW(std::domain_error("type must be object, but is " + type_name())); - } - - /// get an object (explicit) - object_t get_impl(object_t* /*unused*/) const - { - if (is_object()) - { - return *(m_value.object); - } - - JSON_THROW(std::domain_error("type must be object, but is " + type_name())); - } - - /// get an array (explicit) - template < - class T, - typename std::enable_if < - std::is_convertible<basic_json_t, typename T::value_type>::value and - not std::is_same<basic_json_t, - typename T::value_type>::value and - not std::is_arithmetic<T>::value and - not std::is_convertible<std::string, T>::value and - not detail::has_mapped_type<T>::value, - int >::type = 0 > - T get_impl(T*) const - { - if (is_array()) - { - T to_vector; - std::transform(m_value.array->begin(), m_value.array->end(), - std::inserter(to_vector, to_vector.end()), [](basic_json i) - { - return i.get<typename T::value_type>(); - }); - return to_vector; - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_convertible<basic_json_t, T>::value and - not std::is_same<basic_json_t, T>::value, int>::type = 0> - std::vector<T> get_impl(std::vector<T>* /*unused*/) const - { - if (is_array()) - { - std::vector<T> to_vector; - to_vector.reserve(m_value.array->size()); - std::transform(m_value.array->begin(), m_value.array->end(), - std::inserter(to_vector, to_vector.end()), [](basic_json i) - { - return i.get<T>(); - }); - return to_vector; - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_same<basic_json, typename T::value_type>::value and - not detail::has_mapped_type<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_array()) - { - return T(m_value.array->begin(), m_value.array->end()); - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - array_t get_impl(array_t* /*unused*/) const - { - if (is_array()) - { - return *(m_value.array); - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get a string (explicit) - template<typename T, typename std::enable_if< - std::is_convertible<string_t, T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_string()) - { - return *m_value.string; - } - - JSON_THROW(std::domain_error("type must be string, but is " + type_name())); - } - - /// get a number (explicit) - template<typename T, typename std::enable_if< - std::is_arithmetic<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - switch (m_type) - { - case value_t::number_integer: - { - return static_cast<T>(m_value.number_integer); - } - - case value_t::number_unsigned: - { - return static_cast<T>(m_value.number_unsigned); - } - - case value_t::number_float: - { - return static_cast<T>(m_value.number_float); - } - - default: - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name())); - } - } - } - /// get a boolean (explicit) boolean_t get_impl(boolean_t* /*unused*/) const { @@ -3180,54 +3036,6 @@ class basic_json } public: - - /// @name value access - /// Direct access to the stored value of a JSON value. - /// @{ - - /*! - @brief get a value (explicit) - - Explicit type conversion between the JSON value and a compatible value. - - @tparam ValueType non-pointer type compatible to the JSON value, for - instance `int` for JSON integer numbers, `bool` for JSON booleans, or - `std::vector` types for JSON arrays - - @return copy of the JSON value, converted to type @a ValueType - - @throw std::domain_error in case passed type @a ValueType is incompatible - to JSON; example: `"type must be object, but is null"` - - @complexity Linear in the size of the JSON value. - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector<short>`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map<std::string\, - json>`.,get__ValueType_const} - - @internal - The idea of using a casted null pointer to choose the correct - implementation is from <http://stackoverflow.com/a/8315197/266378>. - @endinternal - - @sa @ref operator ValueType() const for implicit conversion - @sa @ref get() for pointer-member access - - @since version 1.0.0 - */ - template <typename ValueType, - enable_if_t<not std::is_pointer<ValueType>::value and - detail::is_compatible_basic_json_type< - uncvref_t<ValueType>, basic_json_t>::value, - int> = 0> - auto get() const - -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { - return get_impl(static_cast<ValueType *>(nullptr)); - } - // if T is basic_json, simply returns *this template <typename T, enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> @@ -3236,16 +3044,22 @@ class basic_json return *this; } + // This overload is chosen when: + // - T is not basic_json_t + // - JSONSerializer<T>::from_json(basic_json const&, T&) exists + // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + // + // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, - enable_if_t<detail::conjunction< - detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, + enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value and - not std::is_same<basic_json_t, uncvref_t<T>>::value, + uncvref_t<T>>::value and + not detail::has_non_default_from_json< + JSONSerializer, basic_json_t, uncvref_t<T>>::value, int> = 0> - // do we really want the uncvref ? if a user call get<int &>, shouldn't we static assert ? + // do we really want the uncvref ? if a user call get<int &>, shouldn't we + // static assert ? auto get() const -> uncvref_t<T> { using type = uncvref_t<T>; @@ -3258,19 +3072,22 @@ class basic_json return ret; } - // This overload is chosen for non-default constructible user-defined-types + // This overload is chosen when: + // - T is not basic_json_t + // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + // TODO add constexpr, noexcept(...) template < typename T, - enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_non_default_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - short> = 0 > - T get() const + enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and + detail::has_non_default_from_json< + JSONSerializer, basic_json_t, uncvref_t<T>>::value, + int> = 0> + uncvref_t<T> get() const { - return JSONSerializer<T>::from_json(*this); + return JSONSerializer<T>::from_json(*this); } + // TODO what to do with those... /*! @brief get a pointer value (explicit) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 32a6282ec..f83ca76b9 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -2909,148 +2909,6 @@ class basic_json /// @} private: - ////////////////// - // value access // - ////////////////// - - template<class T, typename std::enable_if< - std::is_convertible<typename object_t::key_type, typename T::key_type>::value and - std::is_convertible<basic_json_t, typename T::mapped_type>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_object()) - { - return T(m_value.object->begin(), m_value.object->end()); - } - - JSON_THROW(std::domain_error("type must be object, but is " + type_name())); - } - - /// get an object (explicit) - object_t get_impl(object_t* /*unused*/) const - { - if (is_object()) - { - return *(m_value.object); - } - - JSON_THROW(std::domain_error("type must be object, but is " + type_name())); - } - - /// get an array (explicit) - template < - class T, - typename std::enable_if < - std::is_convertible<basic_json_t, typename T::value_type>::value and - not std::is_same<basic_json_t, - typename T::value_type>::value and - not std::is_arithmetic<T>::value and - not std::is_convertible<std::string, T>::value and - not detail::has_mapped_type<T>::value, - int >::type = 0 > - { - if (is_array()) - { - T to_vector; - std::transform(m_value.array->begin(), m_value.array->end(), - std::inserter(to_vector, to_vector.end()), [](basic_json i) - { - return i.get<typename T::value_type>(); - }); - return to_vector; - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_convertible<basic_json_t, T>::value and - not std::is_same<basic_json_t, T>::value, int>::type = 0> - std::vector<T> get_impl(std::vector<T>* /*unused*/) const - { - if (is_array()) - { - std::vector<T> to_vector; - to_vector.reserve(m_value.array->size()); - std::transform(m_value.array->begin(), m_value.array->end(), - std::inserter(to_vector, to_vector.end()), [](basic_json i) - { - return i.get<T>(); - }); - return to_vector; - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - template<class T, typename std::enable_if< - std::is_same<basic_json, typename T::value_type>::value and - not detail::has_mapped_type<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_array()) - { - return T(m_value.array->begin(), m_value.array->end()); - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get an array (explicit) - array_t get_impl(array_t* /*unused*/) const - { - if (is_array()) - { - return *(m_value.array); - } - - JSON_THROW(std::domain_error("type must be array, but is " + type_name())); - } - - /// get a string (explicit) - template<typename T, typename std::enable_if< - std::is_convertible<string_t, T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - if (is_string()) - { - return *m_value.string; - } - - JSON_THROW(std::domain_error("type must be string, but is " + type_name())); - } - - /// get a number (explicit) - template<typename T, typename std::enable_if< - std::is_arithmetic<T>::value, int>::type = 0> - T get_impl(T* /*unused*/) const - { - switch (m_type) - { - case value_t::number_integer: - { - return static_cast<T>(m_value.number_integer); - } - - case value_t::number_unsigned: - { - return static_cast<T>(m_value.number_unsigned); - } - - case value_t::number_float: - { - return static_cast<T>(m_value.number_float); - } - - default: - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name())); - } - } - } - /// get a boolean (explicit) boolean_t get_impl(boolean_t* /*unused*/) const { @@ -3178,54 +3036,6 @@ class basic_json } public: - - /// @name value access - /// Direct access to the stored value of a JSON value. - /// @{ - - /*! - @brief get a value (explicit) - - Explicit type conversion between the JSON value and a compatible value. - - @tparam ValueType non-pointer type compatible to the JSON value, for - instance `int` for JSON integer numbers, `bool` for JSON booleans, or - `std::vector` types for JSON arrays - - @return copy of the JSON value, converted to type @a ValueType - - @throw std::domain_error in case passed type @a ValueType is incompatible - to JSON; example: `"type must be object, but is null"` - - @complexity Linear in the size of the JSON value. - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector<short>`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map<std::string\, - json>`.,get__ValueType_const} - - @internal - The idea of using a casted null pointer to choose the correct - implementation is from <http://stackoverflow.com/a/8315197/266378>. - @endinternal - - @sa @ref operator ValueType() const for implicit conversion - @sa @ref get() for pointer-member access - - @since version 1.0.0 - */ - template <typename ValueType, - enable_if_t<not std::is_pointer<ValueType>::value and - detail::is_compatible_basic_json_type< - uncvref_t<ValueType>, basic_json_t>::value, - int> = 0> - auto get() const - -> decltype(this->get_impl(static_cast<ValueType *>(nullptr))) { - return get_impl(static_cast<ValueType *>(nullptr)); - } - // if T is basic_json, simply returns *this template <typename T, enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> @@ -3234,16 +3044,22 @@ class basic_json return *this; } + // This overload is chosen when: + // - T is not basic_json_t + // - JSONSerializer<T>::from_json(basic_json const&, T&) exists + // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + // + // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, - enable_if_t<detail::conjunction< - detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, + enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value and - not std::is_same<basic_json_t, uncvref_t<T>>::value, + uncvref_t<T>>::value and + not detail::has_non_default_from_json< + JSONSerializer, basic_json_t, uncvref_t<T>>::value, int> = 0> - // do we really want the uncvref ? if a user call get<int &>, shouldn't we static assert ? + // do we really want the uncvref ? if a user call get<int &>, shouldn't we + // static assert ? auto get() const -> uncvref_t<T> { using type = uncvref_t<T>; @@ -3256,19 +3072,22 @@ class basic_json return ret; } - // This overload is chosen for non-default constructible user-defined-types + // This overload is chosen when: + // - T is not basic_json_t + // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + // TODO add constexpr, noexcept(...) template < typename T, - enable_if_t<detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, - detail::has_non_default_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>>::value, - short> = 0 > - T get() const + enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and + detail::has_non_default_from_json< + JSONSerializer, basic_json_t, uncvref_t<T>>::value, + int> = 0> + uncvref_t<T> get() const { - return JSONSerializer<T>::from_json(*this); + return JSONSerializer<T>::from_json(*this); } + // TODO what to do with those... /*! @brief get a pointer value (explicit) From 317883b21b086213a2f53727aca55d8c5a9b4d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 17:30:01 +0100 Subject: [PATCH 086/174] cleanup, details in body removes: - is_basic_json_compatible_type traits - a useless operator= - void_t - disjunction changes: - is_compatible_object_type's first argument is BasicJson --- src/json.hpp | 56 ++++++++++------------------------------------- src/json.hpp.re2c | 56 ++++++++++------------------------------------- 2 files changed, 22 insertions(+), 90 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index c50212c1f..721a6c48b 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -326,15 +326,7 @@ struct external_constructor<value_t::object> } }; -// very useful construct against boilerplate (more boilerplate needed than in -// C++17: http://en.cppreference.com/w/cpp/types/void_t) -template <typename...> struct make_void -{ - using type = void; -}; -template <typename... Ts> using void_t = typename make_void<Ts...>::type; - -// Implementation of 3 C++17 constructs: conjunction, disjunction, negation. +// Implementation of 2 C++17 constructs: conjunction, negation. // This is needed to avoid evaluating all the traits in a condition // // For example: not std::is_same<void, T>::value and has_value_type<T>::value @@ -352,11 +344,6 @@ struct conjunction<B1, Bn...> : conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <class...> struct disjunction : std::false_type {}; -template <class B1> struct disjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct disjunction<B1, Bn...> -: conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; /*! @brief Helper to determine whether there's a key_type for T. @@ -399,16 +386,16 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class RealType, class CompatibleObjectType> +template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { // As noted ahead, we need to stop evaluating traits if // `CompatibleObjectType = void`, hence the conjunction - static auto constexpr value = is_compatible_object_type_impl < - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - RealType, CompatibleObjectType >::value; + static auto constexpr value = is_compatible_object_type_impl< + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + typename BasicJson::object_t, CompatibleObjectType>::value; }; template <bool B, class BasicJson, class CompatibleArrayType> @@ -439,7 +426,7 @@ struct is_compatible_array_type // `is_compatible_object_type`, but we need the conjunction here as well static auto constexpr value = is_compatible_array_type_impl< conjunction<negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, + BasicJson, CompatibleArrayType>>, negation<std::is_constructible<typename BasicJson::string_t, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, @@ -482,12 +469,6 @@ struct is_compatible_float_type std::is_floating_point<CompatibleFloat>::value; }; -template <typename T, typename BasicJson> -struct is_compatible_basic_json_type -{ - static auto constexpr value = false; -}; - template <typename T, typename BasicJson, typename PrimitiveIterator> struct is_basic_json_nested_class { @@ -639,7 +620,7 @@ void to_json(Json &j, CompatibleArrayType const &arr) template < typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> void to_json(Json &j, CompatibleObjectType const &arr) { @@ -745,7 +726,7 @@ void from_json(Json const &j, CompatibleArrayType &arr) template < typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> void from_json(Json const &j, CompatibleObjectType &obj) { @@ -1863,7 +1844,6 @@ class basic_json // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) - // is_compatible_basic_json_type == not is_user_defined_type template < typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and @@ -1871,10 +1851,8 @@ class basic_json not std::is_same<uncvref_t<T>, basic_json_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>>::value, + uncvref_t<T>>::value, int> = 0 > basic_json(T && val) { @@ -2428,18 +2406,6 @@ class basic_json return *this; } - // this overload is needed, since constructor for udt is explicit - template <typename T, enable_if_t<not detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>::value and - detail::has_to_json<JSONSerializer, basic_json_t, uncvref_t<T>>::value>> - reference& operator=(T&& val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and - std::is_nothrow_move_assignable<uncvref_t<T>>::value) - { - static_assert(sizeof(T) == 0 , ""); - // I'm not sure this a is good practice... - return *this = basic_json_t{std::forward<T>(val)}; - } - /*! @brief destructor diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index f83ca76b9..cc89accf1 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -326,15 +326,7 @@ struct external_constructor<value_t::object> } }; -// very useful construct against boilerplate (more boilerplate needed than in -// C++17: http://en.cppreference.com/w/cpp/types/void_t) -template <typename...> struct make_void -{ - using type = void; -}; -template <typename... Ts> using void_t = typename make_void<Ts...>::type; - -// Implementation of 3 C++17 constructs: conjunction, disjunction, negation. +// Implementation of 2 C++17 constructs: conjunction, negation. // This is needed to avoid evaluating all the traits in a condition // // For example: not std::is_same<void, T>::value and has_value_type<T>::value @@ -352,11 +344,6 @@ struct conjunction<B1, Bn...> : conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <class...> struct disjunction : std::false_type {}; -template <class B1> struct disjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct disjunction<B1, Bn...> -: conditional_t<bool(B1::value), B1, disjunction<Bn...>> {}; /*! @brief Helper to determine whether there's a key_type for T. @@ -399,16 +386,16 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class RealType, class CompatibleObjectType> +template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { // As noted ahead, we need to stop evaluating traits if // `CompatibleObjectType = void`, hence the conjunction - static auto constexpr value = is_compatible_object_type_impl < - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - RealType, CompatibleObjectType >::value; + static auto constexpr value = is_compatible_object_type_impl< + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + typename BasicJson::object_t, CompatibleObjectType>::value; }; template <bool B, class BasicJson, class CompatibleArrayType> @@ -439,7 +426,7 @@ struct is_compatible_array_type // `is_compatible_object_type`, but we need the conjunction here as well static auto constexpr value = is_compatible_array_type_impl< conjunction<negation<is_compatible_object_type< - typename BasicJson::object_t, CompatibleArrayType>>, + BasicJson, CompatibleArrayType>>, negation<std::is_constructible<typename BasicJson::string_t, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, @@ -482,12 +469,6 @@ struct is_compatible_float_type std::is_floating_point<CompatibleFloat>::value; }; -template <typename T, typename BasicJson> -struct is_compatible_basic_json_type -{ - static auto constexpr value = false; -}; - template <typename T, typename BasicJson, typename PrimitiveIterator> struct is_basic_json_nested_class { @@ -639,7 +620,7 @@ void to_json(Json &j, CompatibleArrayType const &arr) template < typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> void to_json(Json &j, CompatibleObjectType const &arr) { @@ -745,7 +726,7 @@ void from_json(Json const &j, CompatibleArrayType &arr) template < typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<typename Json::object_t, CompatibleObjectType>::value, + enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> void from_json(Json const &j, CompatibleObjectType &obj) { @@ -1863,7 +1844,6 @@ class basic_json // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) - // is_compatible_basic_json_type == not is_user_defined_type template < typename T, enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and @@ -1871,10 +1851,8 @@ class basic_json not std::is_same<uncvref_t<T>, basic_json_t>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::conjunction<detail::negation<detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>>, detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>>::value, + uncvref_t<T>>::value, int> = 0 > basic_json(T && val) { @@ -2428,18 +2406,6 @@ class basic_json return *this; } - // this overload is needed, since constructor for udt is explicit - template <typename T, enable_if_t<not detail::is_compatible_basic_json_type< - uncvref_t<T>, basic_json_t>::value and - detail::has_to_json<JSONSerializer, basic_json_t, uncvref_t<T>>::value>> - reference& operator=(T&& val) noexcept(std::is_nothrow_constructible<basic_json_t, uncvref_t<T>>::value and - std::is_nothrow_move_assignable<uncvref_t<T>>::value) - { - static_assert(sizeof(T) == 0 , ""); - // I'm not sure this a is good practice... - return *this = basic_json_t{std::forward<T>(val)}; - } - /*! @brief destructor From be6b417c8765ee9587770d57fb6992ad5f4f2f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 18:17:33 +0100 Subject: [PATCH 087/174] tweak SFINAE checks for internal types (see commit body) only check for public types (iterators, json_pointer) for private ones (m_array.iterator, primitive_iterator) simply double parentheses on relevant Catch checks --- src/json.hpp | 26 +++--- src/json.hpp.re2c | 26 +++--- test/src/unit-class_const_iterator.cpp | 124 ++++++++++++------------- test/src/unit-class_iterator.cpp | 124 ++++++++++++------------- 4 files changed, 146 insertions(+), 154 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 721a6c48b..93e996f67 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -469,14 +469,13 @@ struct is_compatible_float_type std::is_floating_point<CompatibleFloat>::value; }; -template <typename T, typename BasicJson, typename PrimitiveIterator> -struct is_basic_json_nested_class +template <typename BasicJson, typename T> +struct is_basic_json_nested_type { static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or std::is_same<T, typename BasicJson::const_iterator>::value or std::is_same<T, typename BasicJson::reverse_iterator>::value or std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, PrimitiveIterator>::value or std::is_same<T, typename BasicJson::json_pointer>::value; }; @@ -1844,19 +1843,16 @@ class basic_json // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) - template < - typename T, - enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and - not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and - not std::is_same<uncvref_t<T>, basic_json_t>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>::value, - int> = 0 > - basic_json(T && val) + template <typename T, typename U = uncvref_t<T>, + enable_if_t< + not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type<basic_json_t,U>::value and + detail::has_to_json<JSONSerializer, basic_json, U>::value, + int> = 0> + basic_json(T &&val) { - JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cc89accf1..e69211329 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -469,14 +469,13 @@ struct is_compatible_float_type std::is_floating_point<CompatibleFloat>::value; }; -template <typename T, typename BasicJson, typename PrimitiveIterator> -struct is_basic_json_nested_class +template <typename BasicJson, typename T> +struct is_basic_json_nested_type { static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or std::is_same<T, typename BasicJson::const_iterator>::value or std::is_same<T, typename BasicJson::reverse_iterator>::value or std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, PrimitiveIterator>::value or std::is_same<T, typename BasicJson::json_pointer>::value; }; @@ -1844,19 +1843,16 @@ class basic_json // constructor chosen when: // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) - template < - typename T, - enable_if_t<not std::is_base_of<std::istream, uncvref_t<T>>::value and - not detail::is_basic_json_nested_class<uncvref_t<T>, basic_json_t, primitive_iterator_t>::value and - not std::is_same<uncvref_t<T>, basic_json_t>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::array_t::iterator>::value and - not std::is_same<uncvref_t<T>, typename basic_json_t::object_t::iterator>::value and - detail::has_to_json<JSONSerializer, basic_json, - uncvref_t<T>>::value, - int> = 0 > - basic_json(T && val) + template <typename T, typename U = uncvref_t<T>, + enable_if_t< + not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type<basic_json_t,U>::value and + detail::has_to_json<JSONSerializer, basic_json, U>::value, + int> = 0> + basic_json(T &&val) { - JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); } /*! diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index a1f6b827a..dba96e1f3 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -91,7 +91,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::null); json::const_iterator it(&j); it.set_begin(); - CHECK(it == j.cbegin()); + CHECK((it == j.cbegin())); } SECTION("object") @@ -99,7 +99,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::object); json::const_iterator it(&j); it.set_begin(); - CHECK(it == j.cbegin()); + CHECK((it == j.cbegin())); } SECTION("array") @@ -107,7 +107,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::array); json::const_iterator it(&j); it.set_begin(); - CHECK(it == j.cbegin()); + CHECK((it == j.cbegin())); } } @@ -118,7 +118,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::null); json::const_iterator it(&j); it.set_end(); - CHECK(it == j.cend()); + CHECK((it == j.cend())); } SECTION("object") @@ -126,7 +126,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::object); json::const_iterator it(&j); it.set_end(); - CHECK(it == j.cend()); + CHECK((it == j.cend())); } SECTION("array") @@ -134,7 +134,7 @@ TEST_CASE("const_iterator class") json j(json::value_t::array); json::const_iterator it(&j); it.set_end(); - CHECK(it == j.cend()); + CHECK((it == j.cend())); } } } @@ -220,7 +220,7 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it++; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -229,9 +229,9 @@ TEST_CASE("const_iterator class") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); it++; - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it++; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -240,28 +240,28 @@ TEST_CASE("const_iterator class") { json j({{"foo", "bar"}}); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); it++; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); } SECTION("array") { json j({1, 2, 3, 4}); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); } } @@ -271,7 +271,7 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); ++it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -280,9 +280,9 @@ TEST_CASE("const_iterator class") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); ++it; - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); ++it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -291,28 +291,28 @@ TEST_CASE("const_iterator class") { json j({{"foo", "bar"}}); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); ++it; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); } SECTION("array") { json j({1, 2, 3, 4}); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); } } @@ -322,16 +322,16 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it--; - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); it--; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -340,28 +340,28 @@ TEST_CASE("const_iterator class") { json j({{"foo", "bar"}}); json::const_iterator it = j.cend(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); it--; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); } SECTION("array") { json j({1, 2, 3, 4}); json::const_iterator it = j.cend(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); } } @@ -371,16 +371,16 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); --it; - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); --it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -389,28 +389,28 @@ TEST_CASE("const_iterator class") { json j({{"foo", "bar"}}); json::const_iterator it = j.cend(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); --it; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); } SECTION("array") { json j({1, 2, 3, 4}); json::const_iterator it = j.cend(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); } } } diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 1e8a3cec4..16833cd9d 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -75,7 +75,7 @@ TEST_CASE("iterator class") json j(json::value_t::null); json::iterator it(&j); it.set_begin(); - CHECK(it == j.begin()); + CHECK((it == j.begin())); } SECTION("object") @@ -83,7 +83,7 @@ TEST_CASE("iterator class") json j(json::value_t::object); json::iterator it(&j); it.set_begin(); - CHECK(it == j.begin()); + CHECK((it == j.begin())); } SECTION("array") @@ -91,7 +91,7 @@ TEST_CASE("iterator class") json j(json::value_t::array); json::iterator it(&j); it.set_begin(); - CHECK(it == j.begin()); + CHECK((it == j.begin())); } } @@ -102,7 +102,7 @@ TEST_CASE("iterator class") json j(json::value_t::null); json::iterator it(&j); it.set_end(); - CHECK(it == j.end()); + CHECK((it == j.end())); } SECTION("object") @@ -110,7 +110,7 @@ TEST_CASE("iterator class") json j(json::value_t::object); json::iterator it(&j); it.set_end(); - CHECK(it == j.end()); + CHECK((it == j.end())); } SECTION("array") @@ -118,7 +118,7 @@ TEST_CASE("iterator class") json j(json::value_t::array); json::iterator it(&j); it.set_end(); - CHECK(it == j.end()); + CHECK((it == j.end())); } } } @@ -204,7 +204,7 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it++; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -213,9 +213,9 @@ TEST_CASE("iterator class") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); it++; - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it++; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -224,28 +224,28 @@ TEST_CASE("iterator class") { json j({{"foo", "bar"}}); json::iterator it = j.begin(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); it++; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); } SECTION("array") { json j({1, 2, 3, 4}); json::iterator it = j.begin(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it++; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); } } @@ -255,7 +255,7 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); ++it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -264,9 +264,9 @@ TEST_CASE("iterator class") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); ++it; - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); ++it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -275,28 +275,28 @@ TEST_CASE("iterator class") { json j({{"foo", "bar"}}); json::iterator it = j.begin(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); ++it; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); } SECTION("array") { json j({1, 2, 3, 4}); json::iterator it = j.begin(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); ++it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); } } @@ -306,16 +306,16 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); it--; - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); it--; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -324,28 +324,28 @@ TEST_CASE("iterator class") { json j({{"foo", "bar"}}); json::iterator it = j.end(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); it--; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); } SECTION("array") { json j({1, 2, 3, 4}); json::iterator it = j.end(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); it--; - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); } } @@ -355,16 +355,16 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.primitive_iterator.m_it == 1); + CHECK((it.m_it.primitive_iterator.m_it == 1)); --it; - CHECK(it.m_it.primitive_iterator.m_it == 0); + CHECK((it.m_it.primitive_iterator.m_it == 0)); --it; CHECK((it.m_it.primitive_iterator.m_it != 0 and it.m_it.primitive_iterator.m_it != 1)); } @@ -373,28 +373,28 @@ TEST_CASE("iterator class") { json j({{"foo", "bar"}}); json::iterator it = j.end(); - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->end()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->end())); --it; - CHECK(it.m_it.object_iterator == it.m_object->m_value.object->begin()); + CHECK((it.m_it.object_iterator == it.m_object->m_value.object->begin())); } SECTION("array") { json j({1, 2, 3, 4}); json::iterator it = j.end(); - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); --it; - CHECK(it.m_it.array_iterator == it.m_object->m_value.array->begin()); - CHECK(it.m_it.array_iterator != it.m_object->m_value.array->end()); + CHECK((it.m_it.array_iterator == it.m_object->m_value.array->begin())); + CHECK((it.m_it.array_iterator != it.m_object->m_value.array->end())); } } } From b2543e06d8ea1121f1423c435d5e30c81cafe472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 18:59:51 +0100 Subject: [PATCH 088/174] removed is_compatible_float_type trait --- src/json.hpp | 17 +++-------------- src/json.hpp.re2c | 17 +++-------------- 2 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 93e996f67..fd27d83fe 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -461,14 +461,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; -template <typename RealFloat, typename CompatibleFloat> -struct is_compatible_float_type -{ - static constexpr auto value = - std::is_constructible<RealFloat, CompatibleFloat>::value and - std::is_floating_point<CompatibleFloat>::value; -}; - template <typename BasicJson, typename T> struct is_basic_json_nested_type { @@ -568,12 +560,9 @@ void to_json(Json &j, const CompatibleString &s) external_constructor<value_t::string>::construct(j, s); } -template < - typename Json, typename CompatibleNumberFloatType, - enable_if_t<is_compatible_float_type<typename Json::number_float_t, - CompatibleNumberFloatType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberFloatType val) noexcept +template <typename Json, typename FloatType, + enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> +void to_json(Json &j, FloatType val) noexcept { external_constructor<value_t::number_float>::construct(j, val); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index e69211329..702f3fd3b 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -461,14 +461,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; -template <typename RealFloat, typename CompatibleFloat> -struct is_compatible_float_type -{ - static constexpr auto value = - std::is_constructible<RealFloat, CompatibleFloat>::value and - std::is_floating_point<CompatibleFloat>::value; -}; - template <typename BasicJson, typename T> struct is_basic_json_nested_type { @@ -568,12 +560,9 @@ void to_json(Json &j, const CompatibleString &s) external_constructor<value_t::string>::construct(j, s); } -template < - typename Json, typename CompatibleNumberFloatType, - enable_if_t<is_compatible_float_type<typename Json::number_float_t, - CompatibleNumberFloatType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberFloatType val) noexcept +template <typename Json, typename FloatType, + enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> +void to_json(Json &j, FloatType val) noexcept { external_constructor<value_t::number_float>::construct(j, val); } From b4cea6825d477428acc0da7070a02c999ec872b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 19:06:00 +0100 Subject: [PATCH 089/174] remove is_compatible_array_type_impl trait --- src/json.hpp | 59 ++++++++------------------ src/json.hpp.re2c | 59 ++++++++------------------ src/json.hpp.re2c.rej | 98 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+), 84 deletions(-) create mode 100644 src/json.hpp.re2c.rej diff --git a/src/json.hpp b/src/json.hpp index fd27d83fe..4435102eb 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -398,40 +398,30 @@ struct is_compatible_object_type typename BasicJson::object_t, CompatibleObjectType>::value; }; -template <bool B, class BasicJson, class CompatibleArrayType> -struct is_compatible_array_type_impl : std::false_type {}; - -template <class BasicJson, class CompatibleArrayType> -struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> +template <typename BasicJson, typename T> +struct is_basic_json_nested_type { - static constexpr auto value = - not std::is_same<CompatibleArrayType, - typename BasicJson::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::const_iterator>::value; + static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or + std::is_same<T, typename BasicJson::const_iterator>::value or + std::is_same<T, typename BasicJson::reverse_iterator>::value or + std::is_same<T, typename BasicJson::const_reverse_iterator>::value or + std::is_same<T, typename BasicJson::json_pointer>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // the check for CompatibleArrayType = void is done in - // `is_compatible_object_type`, but we need the conjunction here as well - static auto constexpr value = is_compatible_array_type_impl< - conjunction<negation<is_compatible_object_type< + // TODO concept Container? + // this might not make VS happy + static auto constexpr value = + conjunction<negation<std::is_same<void, CompatibleArrayType>>, + negation<is_compatible_object_type< BasicJson, CompatibleArrayType>>, negation<std::is_constructible<typename BasicJson::string_t, CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType>::value; + has_iterator<CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -461,16 +451,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; -template <typename BasicJson, typename T> -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or - std::is_same<T, typename BasicJson::const_iterator>::value or - std::is_same<T, typename BasicJson::reverse_iterator>::value or - std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, typename BasicJson::json_pointer>::value; -}; - // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json @@ -519,8 +499,6 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; -template <typename Json, typename > - // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) void to_json(); @@ -737,12 +715,9 @@ template < typename Json, typename ArithmeticType, enable_if_t< std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, - typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, - typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> void from_json(Json const &j, ArithmeticType &val) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 702f3fd3b..412a9b49c 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -398,40 +398,30 @@ struct is_compatible_object_type typename BasicJson::object_t, CompatibleObjectType>::value; }; -template <bool B, class BasicJson, class CompatibleArrayType> -struct is_compatible_array_type_impl : std::false_type {}; - -template <class BasicJson, class CompatibleArrayType> -struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> +template <typename BasicJson, typename T> +struct is_basic_json_nested_type { - static constexpr auto value = - not std::is_same<CompatibleArrayType, - typename BasicJson::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::const_reverse_iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::iterator>::value and - not std::is_same<CompatibleArrayType, - typename BasicJson::array_t::const_iterator>::value; + static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or + std::is_same<T, typename BasicJson::const_iterator>::value or + std::is_same<T, typename BasicJson::reverse_iterator>::value or + std::is_same<T, typename BasicJson::const_reverse_iterator>::value or + std::is_same<T, typename BasicJson::json_pointer>::value; }; template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // the check for CompatibleArrayType = void is done in - // `is_compatible_object_type`, but we need the conjunction here as well - static auto constexpr value = is_compatible_array_type_impl< - conjunction<negation<is_compatible_object_type< + // TODO concept Container? + // this might not make VS happy + static auto constexpr value = + conjunction<negation<std::is_same<void, CompatibleArrayType>>, + negation<is_compatible_object_type< BasicJson, CompatibleArrayType>>, negation<std::is_constructible<typename BasicJson::string_t, CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value, - BasicJson, CompatibleArrayType>::value; + has_iterator<CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -461,16 +451,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; -template <typename BasicJson, typename T> -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or - std::is_same<T, typename BasicJson::const_iterator>::value or - std::is_same<T, typename BasicJson::reverse_iterator>::value or - std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, typename BasicJson::json_pointer>::value; -}; - // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists template <template <typename, typename> class JSONSerializer, typename Json, typename T> struct has_from_json @@ -519,8 +499,6 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; -template <typename Json, typename > - // those declarations are needed to workaround a MSVC bug related to ADL // (taken from MSVC-Ranges implementation) void to_json(); @@ -737,12 +715,9 @@ template < typename Json, typename ArithmeticType, enable_if_t< std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, - typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, - typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> void from_json(Json const &j, ArithmeticType &val) diff --git a/src/json.hpp.re2c.rej b/src/json.hpp.re2c.rej new file mode 100644 index 000000000..ab8fa89d3 --- /dev/null +++ b/src/json.hpp.re2c.rej @@ -0,0 +1,98 @@ +diff a/src/json.hpp.re2c b/src/json.hpp.re2c (rejected hunks) +@@ -389,40 +389,30 @@ struct is_compatible_object_type + typename BasicJson::object_t, CompatibleObjectType>::value; + }; + +-template <bool B, class BasicJson, class CompatibleArrayType> +-struct is_compatible_array_type_impl : std::false_type {}; +- +-template <class BasicJson, class CompatibleArrayType> +-struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> ++template <typename BasicJson, typename T> ++struct is_basic_json_nested_type + { +- static constexpr auto value = +- not std::is_same<CompatibleArrayType, +- typename BasicJson::iterator>::value and +- not std::is_same<CompatibleArrayType, +- typename BasicJson::const_iterator>::value and +- not std::is_same<CompatibleArrayType, +- typename BasicJson::reverse_iterator>::value and +- not std::is_same<CompatibleArrayType, +- typename BasicJson::const_reverse_iterator>::value and +- not std::is_same<CompatibleArrayType, +- typename BasicJson::array_t::iterator>::value and +- not std::is_same<CompatibleArrayType, +- typename BasicJson::array_t::const_iterator>::value; ++ static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or ++ std::is_same<T, typename BasicJson::const_iterator>::value or ++ std::is_same<T, typename BasicJson::reverse_iterator>::value or ++ std::is_same<T, typename BasicJson::const_reverse_iterator>::value or ++ std::is_same<T, typename BasicJson::json_pointer>::value; + }; + + template <class BasicJson, class CompatibleArrayType> + struct is_compatible_array_type + { +- // the check for CompatibleArrayType = void is done in +- // `is_compatible_object_type`, but we need the conjunction here as well +- static auto constexpr value = is_compatible_array_type_impl< +- conjunction<negation<is_compatible_object_type< ++ // TODO concept Container? ++ // this might not make VS happy ++ static auto constexpr value = ++ conjunction<negation<std::is_same<void, CompatibleArrayType>>, ++ negation<is_compatible_object_type< + BasicJson, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJson::string_t, + CompatibleArrayType>>, ++ negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, +- has_iterator<CompatibleArrayType>>::value, +- BasicJson, CompatibleArrayType>::value; ++ has_iterator<CompatibleArrayType>>::value; + }; + + template <bool, typename, typename> +@@ -452,16 +442,6 @@ struct is_compatible_integer_type + RealIntegerType, CompatibleNumberIntegerType > ::value; + }; + +-template <typename BasicJson, typename T> +-struct is_basic_json_nested_type +-{ +- static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or +- std::is_same<T, typename BasicJson::const_iterator>::value or +- std::is_same<T, typename BasicJson::reverse_iterator>::value or +- std::is_same<T, typename BasicJson::const_reverse_iterator>::value or +- std::is_same<T, typename BasicJson::json_pointer>::value; +-}; +- + // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists + template <template <typename, typename> class JSONSerializer, typename Json, typename T> + struct has_from_json +@@ -510,8 +490,6 @@ struct has_to_json + detect(std::declval<JSONSerializer<T, void>>()))>::value; + }; + +-template <typename Json, typename > +- + // those declarations are needed to workaround a MSVC bug related to ADL + // (taken from MSVC-Ranges implementation) + void to_json(); +@@ -728,12 +706,9 @@ template < + typename Json, typename ArithmeticType, + enable_if_t< + std::is_arithmetic<ArithmeticType>::value and +- not std::is_same<ArithmeticType, +- typename Json::number_unsigned_t>::value and +- not std::is_same<ArithmeticType, +- typename Json::number_integer_t>::value and +- not std::is_same<ArithmeticType, +- typename Json::number_float_t>::value and ++ not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and ++ not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and ++ not std::is_same<ArithmeticType, typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + int> = 0> + void from_json(Json const &j, ArithmeticType &val) From 5839795725ef0adb278bad0f2449ecb88d0381d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 22:49:02 +0100 Subject: [PATCH 090/174] remove useless helpers --- src/json.hpp | 28 +++------------------------- src/json.hpp.re2c | 28 +++------------------------- 2 files changed, 6 insertions(+), 50 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 4435102eb..8b94a3f38 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -152,23 +152,9 @@ template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; template <typename T> -using remove_cv_t = typename std::remove_cv<T>::type; - -template <typename T> -using remove_reference_t = typename std::remove_reference<T>::type; - -template <typename T> -using uncvref_t = remove_cv_t<remove_reference_t<T>>; - -template <bool If, typename Then, typename Else> -using conditional_t = typename std::conditional<If, Then, Else>::type; +using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; // Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait -template <typename T> -using is_scoped_enum = - std::integral_constant<bool, not std::is_convertible<T, int>::value and - std::is_enum<T>::value>; - template <typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and @@ -341,7 +327,7 @@ template <class...> struct conjunction : std::true_type {}; template <class B1> struct conjunction<B1> : B1 {}; template <class B1, class... Bn> struct conjunction<B1, Bn...> -: conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; +: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; template <class B> struct negation : std::integral_constant < bool, !B::value > {}; @@ -389,8 +375,6 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { - // As noted ahead, we need to stop evaluating traits if - // `CompatibleObjectType = void`, hence the conjunction static auto constexpr value = is_compatible_object_type_impl< conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, @@ -499,11 +483,6 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; -// those declarations are needed to workaround a MSVC bug related to ADL -// (taken from MSVC-Ranges implementation) -void to_json(); -void from_json(); - // overloads for basic_json template parameters template <typename Json, typename ArithmeticType, @@ -568,7 +547,7 @@ void to_json(Json &j, CompatibleNumberIntegerType val) noexcept template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json &j, UnscopedEnumType e) +void to_json(Json &j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); } @@ -736,7 +715,6 @@ void from_json(Json const &j, ArithmeticType &val) struct to_json_fn { - // is it really useful to mark those as constexpr? template <typename Json, typename T> constexpr auto operator()(Json&& j, T&& val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 412a9b49c..79d30e9d1 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -152,23 +152,9 @@ template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; template <typename T> -using remove_cv_t = typename std::remove_cv<T>::type; - -template <typename T> -using remove_reference_t = typename std::remove_reference<T>::type; - -template <typename T> -using uncvref_t = remove_cv_t<remove_reference_t<T>>; - -template <bool If, typename Then, typename Else> -using conditional_t = typename std::conditional<If, Then, Else>::type; +using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; // Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait -template <typename T> -using is_scoped_enum = - std::integral_constant<bool, not std::is_convertible<T, int>::value and - std::is_enum<T>::value>; - template <typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and @@ -341,7 +327,7 @@ template <class...> struct conjunction : std::true_type {}; template <class B1> struct conjunction<B1> : B1 {}; template <class B1, class... Bn> struct conjunction<B1, Bn...> -: conditional_t<bool(B1::value), conjunction<Bn...>, B1> {}; +: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; template <class B> struct negation : std::integral_constant < bool, !B::value > {}; @@ -389,8 +375,6 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { - // As noted ahead, we need to stop evaluating traits if - // `CompatibleObjectType = void`, hence the conjunction static auto constexpr value = is_compatible_object_type_impl< conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, @@ -499,11 +483,6 @@ struct has_to_json detect(std::declval<JSONSerializer<T, void>>()))>::value; }; -// those declarations are needed to workaround a MSVC bug related to ADL -// (taken from MSVC-Ranges implementation) -void to_json(); -void from_json(); - // overloads for basic_json template parameters template <typename Json, typename ArithmeticType, @@ -568,7 +547,7 @@ void to_json(Json &j, CompatibleNumberIntegerType val) noexcept template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json &j, UnscopedEnumType e) +void to_json(Json &j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); } @@ -736,7 +715,6 @@ void from_json(Json const &j, ArithmeticType &val) struct to_json_fn { - // is it really useful to mark those as constexpr? template <typename Json, typename T> constexpr auto operator()(Json&& j, T&& val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) From 29f9fe6ae9e28197b6623bb06b70152945109684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 8 Jan 2017 23:10:16 +0100 Subject: [PATCH 091/174] remove one has_to/from_json template parameter --- src/json.hpp | 58 ++++++++++++++++++++++++----------------------- src/json.hpp.re2c | 58 ++++++++++++++++++++++++----------------------- 2 files changed, 60 insertions(+), 56 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 8b94a3f38..c7ca74d79 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -436,7 +436,7 @@ struct is_compatible_integer_type }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <template <typename, typename> class JSONSerializer, typename Json, typename T> +template <typename Json, typename T> struct has_from_json { private: @@ -448,39 +448,40 @@ struct has_from_json public: static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; + detect(std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +template <typename Json, typename T> struct has_non_default_from_json { - private: - template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> - static int detect(U&&); - static void detect(...); +private: + template < + typename U, + typename = enable_if_t<std::is_same< + T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> + static int detect(U &&); + static void detect(...); - public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; +public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; -// This trait checks if JSONSerializer<T>::to_json exists -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +// This trait checks if Json::json_serializer<T>::to_json exists +template <typename Json, typename T> struct has_to_json { - private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json&>(), std::declval<T>()))> - static int detect(U&&); - static void detect(...); +private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json &>(), std::declval<T>()))> + static int detect(U &&); + static void detect(...); - public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; +public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters @@ -900,6 +901,8 @@ class basic_json template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; class json_pointer; + template <typename T, typename SFINAE> + using json_serializer = JSONSerializer<T, SFINAE>; ///////////////////// // container types // @@ -1790,7 +1793,7 @@ class basic_json not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and not detail::is_basic_json_nested_type<basic_json_t,U>::value and - detail::has_to_json<JSONSerializer, basic_json, U>::value, + detail::has_to_json<basic_json, U>::value, int> = 0> basic_json(T &&val) { @@ -2957,10 +2960,9 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>::value and + detail::has_from_json<basic_json_t, uncvref_t<T>>::value and not detail::has_non_default_from_json< - JSONSerializer, basic_json_t, uncvref_t<T>>::value, + basic_json_t, uncvref_t<T>>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? @@ -2983,8 +2985,8 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json< - JSONSerializer, basic_json_t, uncvref_t<T>>::value, + detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, int> = 0> uncvref_t<T> get() const { diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 79d30e9d1..b3b512e53 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -436,7 +436,7 @@ struct is_compatible_integer_type }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <template <typename, typename> class JSONSerializer, typename Json, typename T> +template <typename Json, typename T> struct has_from_json { private: @@ -448,39 +448,40 @@ struct has_from_json public: static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; + detect(std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +template <typename Json, typename T> struct has_non_default_from_json { - private: - template <typename U, typename = enable_if_t<std::is_same<T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> - static int detect(U&&); - static void detect(...); +private: + template < + typename U, + typename = enable_if_t<std::is_same< + T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> + static int detect(U &&); + static void detect(...); - public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; +public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; -// This trait checks if JSONSerializer<T>::to_json exists -template <template <typename, typename> class JSONSerializer, typename Json, - typename T> +// This trait checks if Json::json_serializer<T>::to_json exists +template <typename Json, typename T> struct has_to_json { - private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json&>(), std::declval<T>()))> - static int detect(U&&); - static void detect(...); +private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json &>(), std::declval<T>()))> + static int detect(U &&); + static void detect(...); - public: - static constexpr bool value = std::is_integral<decltype( - detect(std::declval<JSONSerializer<T, void>>()))>::value; +public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters @@ -900,6 +901,8 @@ class basic_json template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; class json_pointer; + template <typename T, typename SFINAE> + using json_serializer = JSONSerializer<T, SFINAE>; ///////////////////// // container types // @@ -1790,7 +1793,7 @@ class basic_json not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and not detail::is_basic_json_nested_type<basic_json_t,U>::value and - detail::has_to_json<JSONSerializer, basic_json, U>::value, + detail::has_to_json<basic_json, U>::value, int> = 0> basic_json(T &&val) { @@ -2957,10 +2960,9 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<JSONSerializer, basic_json_t, - uncvref_t<T>>::value and + detail::has_from_json<basic_json_t, uncvref_t<T>>::value and not detail::has_non_default_from_json< - JSONSerializer, basic_json_t, uncvref_t<T>>::value, + basic_json_t, uncvref_t<T>>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? @@ -2983,8 +2985,8 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json< - JSONSerializer, basic_json_t, uncvref_t<T>>::value, + detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, int> = 0> uncvref_t<T> get() const { From 1f25ec5d360f9d7cd22a99b500d9039a77e82acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 9 Jan 2017 00:06:25 +0100 Subject: [PATCH 092/174] add some constexpr + noexcept --- src/json.hpp | 36 ++++++++++++++++++++---------------- src/json.hpp.re2c | 36 ++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index c7ca74d79..177c15321 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1789,15 +1789,16 @@ class basic_json // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) template <typename T, typename U = uncvref_t<T>, - enable_if_t< - not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type<basic_json_t,U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> - basic_json(T &&val) + enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> + basic_json(T &&val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t &>(), std::forward<T>(val)))) { - JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<T>(val)); } /*! @@ -2959,14 +2960,18 @@ class basic_json // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, - enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<basic_json_t, uncvref_t<T>>::value and - not detail::has_non_default_from_json< - basic_json_t, uncvref_t<T>>::value, - int> = 0> + enable_if_t< + not std::is_same<basic_json_t, uncvref_t<T>>::value and + detail::has_from_json<basic_json_t, uncvref_t<T>>::value and + not detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, + int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we + // i know there is a special behaviour for boolean_t* and such // static assert ? - auto get() const -> uncvref_t<T> + auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( + std::declval<basic_json_t const &>(), std::declval<uncvref_t<T> &>()))) + -> uncvref_t<T> { using type = uncvref_t<T>; static_assert(std::is_default_constructible<type>::value && @@ -2981,14 +2986,13 @@ class basic_json // This overload is chosen when: // - T is not basic_json_t // - and JSONSerializer<T>::from_json(basic_json const&) does not exist - // TODO add constexpr, noexcept(...) template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and detail::has_non_default_from_json<basic_json_t, uncvref_t<T>>::value, int> = 0> - uncvref_t<T> get() const + constexpr uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) { return JSONSerializer<T>::from_json(*this); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b3b512e53..5dc2e0277 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1789,15 +1789,16 @@ class basic_json // - JSONSerializer::to_json exists for type T // - T is not a istream, nor convertible to basic_json (float, vectors, etc) template <typename T, typename U = uncvref_t<T>, - enable_if_t< - not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type<basic_json_t,U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> - basic_json(T &&val) + enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> + basic_json(T &&val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t &>(), std::forward<T>(val)))) { - JSONSerializer<uncvref_t<T>>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<T>(val)); } /*! @@ -2959,14 +2960,18 @@ class basic_json // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, - enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<basic_json_t, uncvref_t<T>>::value and - not detail::has_non_default_from_json< - basic_json_t, uncvref_t<T>>::value, - int> = 0> + enable_if_t< + not std::is_same<basic_json_t, uncvref_t<T>>::value and + detail::has_from_json<basic_json_t, uncvref_t<T>>::value and + not detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, + int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we + // i know there is a special behaviour for boolean_t* and such // static assert ? - auto get() const -> uncvref_t<T> + auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( + std::declval<basic_json_t const &>(), std::declval<uncvref_t<T> &>()))) + -> uncvref_t<T> { using type = uncvref_t<T>; static_assert(std::is_default_constructible<type>::value && @@ -2981,14 +2986,13 @@ class basic_json // This overload is chosen when: // - T is not basic_json_t // - and JSONSerializer<T>::from_json(basic_json const&) does not exist - // TODO add constexpr, noexcept(...) template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and detail::has_non_default_from_json<basic_json_t, uncvref_t<T>>::value, int> = 0> - uncvref_t<T> get() const + constexpr uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) { return JSONSerializer<T>::from_json(*this); } From 3494014ba0ab3ff402df17b40cc138334fd8a529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 9 Jan 2017 00:29:00 +0100 Subject: [PATCH 093/174] new unit-udt.cpp tests --- test/src/unit-udt.cpp | 181 ++++++++++++++++++++++++++++-------------- 1 file changed, 123 insertions(+), 58 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index bb150e76e..60b839577 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -391,27 +391,27 @@ TEST_CASE("adl_serializer specialization", "[udt]") namespace nlohmann { - // TODO provide a real example, since this works now :) -// template <typename T> -// struct adl_serializer<std::vector<T>> -// { -// static void to_json(json& j, std::vector<T> const& opt) -// { -// -// } -// -// static void from_json(json const& j, std::vector<T>& opt) -// { -// } -// }; +template <> +struct adl_serializer<std::vector<float>> +{ + static void to_json(json& j, std::vector<float> const&) + { + j = "hijacked!"; + } + + static void from_json(json const&, std::vector<float>& opt) + { + opt = {42.0, 42.0, 42.0}; + } +}; } -TEST_CASE("current supported types are preferred over specializations", "[udt]") +TEST_CASE("even supported types can be specialized", "[udt]") { - - json j = std::vector<int> {1, 2, 3}; - auto f = j.get<std::vector<int>>(); - CHECK((f == std::vector<int> {1, 2, 3})); + json j = std::vector<float> {1.0, 2.0, 3.0}; + CHECK(j.dump() == R"("hijacked!")"); + auto f = j.get<std::vector<float>>(); + CHECK((f == std::vector<float>{42.0, 42.0, 42.0})); } namespace nlohmann @@ -432,7 +432,6 @@ struct adl_serializer<std::unique_ptr<T>> } // this is the overload needed for non-copyable types, - // should we add a priority tag in the implementation to prefer this overload if it exists? static std::unique_ptr<T> from_json(json const& j) { if (j.is_null()) @@ -456,7 +455,7 @@ TEST_CASE("Non-copyable types", "[udt]") json j = optPerson; CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}}); + optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); j = optPerson; CHECK_FALSE(j.is_null()); @@ -465,7 +464,7 @@ TEST_CASE("Non-copyable types", "[udt]") SECTION("from_json") { - auto person = udt::person{{42}, {"John Doe"}}; + auto person = udt::person{{42}, {"John Doe"}, udt::country::russia}; json j = person; auto optPerson = j.get<std::unique_ptr<udt::person>>(); @@ -478,39 +477,70 @@ TEST_CASE("Non-copyable types", "[udt]") } } -// custom serializer -// advanced usage (I did not have a real use case in mind) -template <typename T, typename = typename std::enable_if<std::is_pod<T>::value>::type> +// custom serializer - advanced usage +// pack structs that are pod-types (but not scalar types) +// relies on adl for any other type +template <typename T, typename = void> struct pod_serializer { - template <typename Json> - static void from_json(Json const& j , T& t) - { - std::uint64_t value; - // Why cannot we simply use: j.get<std::uint64_t>() ? - // Well, with the current experiment, the get method looks for a from_json function, which we are currently defining! - // This would end up in a stack overflow. Calling nlohmann::from_json is a workaround. - // I shall find a good way to avoid this once all constructors are converted to free methods - // - // In short, constructing a json by constructor calls to_json - // calling get calls from_json, for now, we cannot do this in custom serializers - nlohmann::from_json(j, value); - auto bytes = static_cast<char *>(static_cast<void *>(&value)); - std::memcpy(&t, bytes, sizeof(value)); - } + // use adl for non-pods, or scalar types + template < + typename Json, typename U = T, + typename std::enable_if< + not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> + static void from_json(Json const &j, U &t) + { + using nlohmann::from_json; + from_json(j, t); + } - template <typename Json> - static void to_json(Json& j, T const& t) - { - auto bytes = static_cast<char const*>(static_cast<void const*>(&t)); - std::uint64_t value = bytes[0]; - for (auto i = 1; i < 8; ++i) - { - value |= bytes[i] << 8 * i; - } - // same thing here - nlohmann::to_json(j, value); - } + // special behaviour for pods + template <typename Json, typename U = T, + typename std::enable_if< + std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> + static void from_json(Json const &j, U &t) + { + std::uint64_t value; + // TODO The following block is no longer relevant in this serializer, make another one that shows the issue + // the problem arises only when one from_json method is defined without any constraint + // + // Why cannot we simply use: j.get<std::uint64_t>() ? + // Well, with the current experiment, the get method looks for a from_json + // function, which we are currently defining! + // This would end up in a stack overflow. Calling nlohmann::from_json is a + // workaround (is it?). + // I shall find a good way to avoid this once all constructors are converted + // to free methods + // + // In short, constructing a json by constructor calls to_json + // calling get calls from_json, for now, we cannot do this in custom + // serializers + nlohmann::from_json(j, value); + auto bytes = static_cast<char *>(static_cast<void *>(&value)); + std::memcpy(&t, bytes, sizeof(value)); + } + + template < + typename Json, typename U = T, + typename std::enable_if< + not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> + static void to_json(Json &j, T const &t) + { + using nlohmann::to_json; + to_json(j, t); + } + + template <typename Json, typename U = T, + typename std::enable_if< + std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> + static void to_json(Json &j, T const &t) noexcept + { + auto bytes = static_cast<unsigned char const *>(static_cast<void const *>(&t)); + std::uint64_t value = bytes[0]; + for (auto i = 1; i < 8; ++i) + value |= std::uint64_t{bytes[i]} << 8 * i; + nlohmann::to_json(j, value); + } }; namespace udt @@ -522,23 +552,58 @@ struct small_pod short end; }; -bool operator==(small_pod lhs, small_pod rhs) +struct non_pod +{ + std::string s; +}; + +template <typename Json> +void to_json(Json& j, non_pod const& np) +{ + j = np.s; +} + +template <typename Json> +void from_json(Json const& j, non_pod& np) +{ + np.s = j.template get<std::string>(); +} + +bool operator==(small_pod lhs, small_pod rhs) noexcept { return std::tie(lhs.begin, lhs.middle, lhs.end) == - std::tie(lhs.begin, lhs.middle, lhs.end); + std::tie(rhs.begin, rhs.middle, rhs.end); +} + +bool operator==(non_pod const &lhs, non_pod const &rhs) noexcept +{ + return lhs.s == rhs.s; +} + +std::ostream& operator<<(std::ostream& os, small_pod l) +{ + return os << "begin: " << l.begin << ", middle: " << l.middle << ", end: " << l.end; } } TEST_CASE("custom serializer for pods", "[udt]") { - using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, pod_serializer>; + using custom_json = + nlohmann::basic_json<std::map, std::vector, std::string, bool, + std::int64_t, std::uint64_t, double, std::allocator, + pod_serializer>; - auto p = udt::small_pod{42, '/', 42}; - custom_json j = p; + auto p = udt::small_pod{42, '/', 42}; + custom_json j = p; - auto p2 = j.get<udt::small_pod>(); + auto p2 = j.get<udt::small_pod>(); - CHECK(p == p2); + CHECK(p == p2); + + auto np = udt::non_pod{{"non-pod"}}; + custom_json j2 = np; + auto np2 = j2.get<udt::non_pod>(); + CHECK(np == np2); } template <typename T, typename> From cb3d455bd227071cde6a87f7b23112254ca7c010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 9 Jan 2017 10:22:22 +0100 Subject: [PATCH 094/174] do not const_cast when calling get_ptr --- src/json.hpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 177c15321..feb1aa3cb 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -494,11 +494,11 @@ template <typename Json, typename ArithmeticType, void get_arithmetic_value(Json const &j, ArithmeticType &val) { if (j.is_number_integer()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + val = *j.template get_ptr<const typename Json::number_integer_t*>(); else if (j.is_number_unsigned()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); else if (j.is_number_float()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + val = *j.template get_ptr<const typename Json::number_float_t*>(); else throw std::domain_error("type must be number, but is " + type_name(j)); } @@ -578,7 +578,7 @@ void from_json(Json const& j, typename Json::boolean_t& b) { if (!j.is_boolean()) throw std::domain_error("type must be boolean, but is " + type_name(j)); - b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + b = *j.template get_ptr<const typename Json::boolean_t*>(); } template <typename Json> @@ -586,7 +586,7 @@ void from_json(Json const& j, typename Json::string_t& s) { if (!j.is_string()) throw std::domain_error("type must be string, but is " + type_name(j)); - s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); + s = *j.template get_ptr<const typename Json::string_t*>(); } template <typename Json> @@ -621,7 +621,7 @@ void from_json(Json const &j, typename Json::array_t &arr) { if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); - arr = *const_cast<Json&>(j).template get_ptr<typename Json::array_t*>(); + arr = *j.template get_ptr<const typename Json::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list @@ -679,7 +679,7 @@ void from_json(Json const &j, CompatibleObjectType &obj) if (!j.is_object()) throw std::domain_error("type must be object, but is " + type_name(j)); - auto inner_object = const_cast<Json&>(j).template get_ptr<typename Json::object_t*>(); + auto inner_object = j.template get_ptr<const typename Json::object_t*>(); using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which @@ -703,13 +703,13 @@ template < void from_json(Json const &j, ArithmeticType &val) { if (j.is_number_integer()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); + val = *j.template get_ptr<const typename Json::number_integer_t*>(); else if (j.is_number_unsigned()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); else if (j.is_number_float()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + val = *j.template get_ptr<const typename Json::number_float_t*>(); else if (j.is_boolean()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + val = *j.template get_ptr<const typename Json::boolean_t*>(); else throw std::domain_error("type must be number, but is " + type_name(j)); } From e678c075dda8fbff4218ceca0a2e0ffbffc10343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 9 Jan 2017 10:41:00 +0100 Subject: [PATCH 095/174] check for is_number_unsigned before is_number_integer --- src/json.hpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index feb1aa3cb..4c6d8671a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -493,10 +493,11 @@ template <typename Json, typename ArithmeticType, int> = 0> void get_arithmetic_value(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr<const typename Json::number_integer_t*>(); - else if (j.is_number_unsigned()) + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); + else if (j.is_number_integer()) + val = *j.template get_ptr<const typename Json::number_integer_t*>(); else if (j.is_number_float()) val = *j.template get_ptr<const typename Json::number_float_t*>(); else @@ -702,10 +703,10 @@ template < int> = 0> void from_json(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr<const typename Json::number_integer_t*>(); - else if (j.is_number_unsigned()) + if (j.is_number_unsigned()) val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); + else if (j.is_number_integer()) + val = *j.template get_ptr<const typename Json::number_integer_t*>(); else if (j.is_number_float()) val = *j.template get_ptr<const typename Json::number_float_t*>(); else if (j.is_boolean()) From d0d8070422eed0bd5826a655de5c0be321d285a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Thu, 12 Jan 2017 22:52:00 +0100 Subject: [PATCH 096/174] add static_asserts remove some useless trailing return types and && to help MSVC --- src/json.hpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 4c6d8671a..1188ead45 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -715,27 +715,81 @@ void from_json(Json const &j, ArithmeticType &val) throw std::domain_error("type must be number, but is " + type_name(j)); } +template <typename Json, typename T> +constexpr auto has_adl_from_json(int) -> decltype(from_json(std::declval<Json const&>(), std::declval<T&>()), true) +{ + return true; +} + +template <typename, typename> +constexpr bool has_adl_from_json(long) +{ + return false; +} + +template <typename Json, typename T> +constexpr auto has_adl_to_json(int) -> decltype(to_json(std::declval<Json&>(), std::declval<T const&>()), true) +{ + return true; +} + +template <typename, typename> +constexpr bool has_adl_to_json(long) +{ + return false; +} + struct to_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json&& j, T&& val) const + private: + template <typename Json, typename T, enable_if_t<has_adl_to_json<Json, T>(0), int> = 0> + auto operator()(Json&& j, T&& val) const noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), void()) { return to_json(std::forward<Json>(j), std::forward<T>(val)); } + + template <typename Json, typename T, enable_if_t<not has_adl_to_json<Json, T>(0), int> = 0> + void operator()(Json&&, T&&) const noexcept + { + static_assert(has_adl_to_json<Json, T>(0), "to_json method in T's namespace can not be called"); + } + +public: + template <typename Json, typename T> + void operator()(Json &j, T &&val) const + noexcept(noexcept(std::declval<to_json_fn>().call(0, j, std::forward<T>(val)))) + { + return call(0, j, std::forward<T>(val)); + } }; struct from_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json&& j, T& val) const + private: + template <typename Json, typename T, enable_if_t<has_adl_from_json<Json, T>(0), int> = 0> + auto operator()(Json&& j, T& val) const noexcept(noexcept(from_json(std::forward<Json>(j), val))) -> decltype(from_json(std::forward<Json>(j), val), void()) { return from_json(std::forward<Json>(j), val); } + + template <typename Json, typename T, enable_if_t<not has_adl_from_json<Json, T>(0), int> = 0> + void operator()(Json&&, T&) const noexcept + { + static_assert(has_adl_from_json<Json, T>(0), "from_json method in T's namespace can not be called"); + } + +public: + template <typename Json, typename T> + void operator()(Json const &j, T &val) const + noexcept(noexcept(std::declval<from_json_fn>().call(0, j, val))) + { + return call(0, j, val); + } }; /*! @@ -757,7 +811,6 @@ struct DecimalSeparator : std::numpunct<char> return '.'; } }; - } // taken from ranges-v3 From e247e01a6e98aef1e9ed821617e295bbea031b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <delrieutheo@gmail.com> Date: Thu, 12 Jan 2017 23:45:20 +0100 Subject: [PATCH 097/174] use static_casts to silence MSVC warnings Those warnings are not "fixed", but that's intentional. Truncations are expected when ArithmeticType is not the same type than number_unsigned_t (or another basic_json template argument) --- src/json.hpp | 89 +++++++++++++++++++--------------------------------- 1 file changed, 32 insertions(+), 57 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 1188ead45..98f782623 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -495,11 +495,11 @@ void get_arithmetic_value(Json const &j, ArithmeticType &val) { // unsigned must be checked first, since is_number_integer() == true for unsigned if (j.is_number_unsigned()) - val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); else if (j.is_number_integer()) - val = *j.template get_ptr<const typename Json::number_integer_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); else if (j.is_number_float()) - val = *j.template get_ptr<const typename Json::number_float_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); else throw std::domain_error("type must be number, but is " + type_name(j)); } @@ -523,7 +523,7 @@ template <typename Json, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> void to_json(Json &j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, val); + external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); } @@ -534,7 +534,7 @@ template < int> = 0> void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, val); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); } template < @@ -544,7 +544,7 @@ template < int> = 0> void to_json(Json &j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, val); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); } template <typename Json, typename UnscopedEnumType, @@ -704,57 +704,32 @@ template < void from_json(Json const &j, ArithmeticType &val) { if (j.is_number_unsigned()) - val = *j.template get_ptr<const typename Json::number_unsigned_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); else if (j.is_number_integer()) - val = *j.template get_ptr<const typename Json::number_integer_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); else if (j.is_number_float()) - val = *j.template get_ptr<const typename Json::number_float_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); else if (j.is_boolean()) - val = *j.template get_ptr<const typename Json::boolean_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); else throw std::domain_error("type must be number, but is " + type_name(j)); } -template <typename Json, typename T> -constexpr auto has_adl_from_json(int) -> decltype(from_json(std::declval<Json const&>(), std::declval<T&>()), true) -{ - return true; -} - -template <typename, typename> -constexpr bool has_adl_from_json(long) -{ - return false; -} - -template <typename Json, typename T> -constexpr auto has_adl_to_json(int) -> decltype(to_json(std::declval<Json&>(), std::declval<T const&>()), true) -{ - return true; -} - -template <typename, typename> -constexpr bool has_adl_to_json(long) -{ - return false; -} - struct to_json_fn { - private: - template <typename Json, typename T, enable_if_t<has_adl_to_json<Json, T>(0), int> = 0> - auto operator()(Json&& j, T&& val) const - noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) - -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), + template <typename Json, typename T> + auto call(int, Json& j, T&& val) const + noexcept(noexcept(to_json(j, std::forward<T>(val)))) + -> decltype(to_json(j, std::forward<T>(val)), void()) { - return to_json(std::forward<Json>(j), std::forward<T>(val)); + return to_json(j, std::forward<T>(val)); } - template <typename Json, typename T, enable_if_t<not has_adl_to_json<Json, T>(0), int> = 0> - void operator()(Json&&, T&&) const noexcept + template <typename Json, typename T> + void call(long, Json&, T&&) const noexcept { - static_assert(has_adl_to_json<Json, T>(0), "to_json method in T's namespace can not be called"); + static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); } public: @@ -768,20 +743,20 @@ public: struct from_json_fn { - private: - template <typename Json, typename T, enable_if_t<has_adl_from_json<Json, T>(0), int> = 0> - auto operator()(Json&& j, T& val) const - noexcept(noexcept(from_json(std::forward<Json>(j), val))) - -> decltype(from_json(std::forward<Json>(j), val), void()) - { - return from_json(std::forward<Json>(j), val); - } - - template <typename Json, typename T, enable_if_t<not has_adl_from_json<Json, T>(0), int> = 0> - void operator()(Json&&, T&) const noexcept - { - static_assert(has_adl_from_json<Json, T>(0), "from_json method in T's namespace can not be called"); - } +private: + template <typename Json, typename T> + auto call(int, Json const &j, T &val) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } + + template <typename Json, typename T> + void call(long, Json const&, T&) const noexcept + { + static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + } public: template <typename Json, typename T> From a9d5ae4fad1d40932e138781611c9b3680b26330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 01:09:14 +0100 Subject: [PATCH 098/174] put back a specialization for containers with a reserve method --- src/json.hpp | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 98f782623..96221664a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -642,6 +642,41 @@ void from_json(Json const&j, std::forward_list<T, Allocator>& l) l.push_front(it->template get<T>()); } + +template <typename Json, typename CompatibleArrayType> +void from_json_array_impl(Json const &j, CompatibleArrayType &arr, long) +{ + using std::begin; + using std::end; + + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + +template <typename Json, typename CompatibleArrayType> +auto from_json_array_impl(Json const &j, CompatibleArrayType &arr, int) + -> decltype( + arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), + void()) +{ + using std::begin; + using std::end; + + arr.reserve(j.size()); + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + template < typename Json, typename CompatibleArrayType, enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and @@ -658,16 +693,7 @@ void from_json(Json const &j, CompatibleArrayType &arr) if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); } - - using std::begin; - using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) - { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json - return i.template get<typename CompatibleArrayType::value_type>(); - }); + from_json_array_impl(j, arr, 0); } From 1554baa01d58499e3d06806d59955d38b35c224d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 01:26:06 +0100 Subject: [PATCH 099/174] attempting to fix coverage. testing that reserve is called --- test/src/unit-conversions.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 2b570533c..73b686d84 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -160,12 +160,28 @@ TEST_CASE("value conversion") { std::forward_list<json> a = j.get<std::forward_list<json>>(); CHECK(json(a) == j); + + CHECK_THROWS_AS(json(json::value_t::null).get<std::forward_list<json>>(), std::logic_error); + CHECK_THROWS_WITH(json(json::value_t::null).get<std::forward_list<json>>(), + "type must be array, but is null"); } SECTION("std::vector<json>") { std::vector<json> a = j.get<std::vector<json>>(); CHECK(json(a) == j); + + CHECK_THROWS_AS(json(json::value_t::null).get<std::vector<json>>(), std::logic_error); + CHECK_THROWS_WITH(json(json::value_t::null).get<std::vector<json>>(), + "type must be array, but is null"); + + SECTION("reserve is called on containers that supports it") + { + // making the call to from_json throw in order to check capacity + std::vector<float> v; + CHECK_THROWS_AS(nlohmann::from_json(j, v), std::logic_error); + CHECK(v.capacity() == j.size()); + } } SECTION("std::deque<json>") @@ -184,6 +200,8 @@ TEST_CASE("value conversion") CHECK_THROWS_AS(json(json::value_t::number_unsigned).get<json::array_t>(), std::logic_error); CHECK_THROWS_AS(json(json::value_t::number_float).get<json::array_t>(), std::logic_error); + CHECK_THROWS_WITH(json(json::value_t::object).get<std::vector<int>>(), + "type must be array, but is object"); CHECK_THROWS_WITH(json(json::value_t::null).get<json::array_t>(), "type must be array, but is null"); CHECK_THROWS_WITH(json(json::value_t::object).get<json::array_t>(), From b8012876a5988ba6066aa1c46e33b2ecf5f14f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 02:20:53 +0100 Subject: [PATCH 100/174] add noexcept checks, and some missing noexcepts --- src/json.hpp | 5 +++-- test/CMakeLists.txt | 1 + test/src/unit-noexcept.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 test/src/unit-noexcept.cpp diff --git a/src/json.hpp b/src/json.hpp index 96221664a..4b8f9e5ab 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -843,9 +843,10 @@ struct adl_serializer } template <typename Json, typename T> - static void to_json(Json& j, T&& val) + static void to_json(Json &j, T &&val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<T>(val)); } }; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a988f47be..0ceb6bf61 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -29,6 +29,7 @@ add_executable(${JSON_UNITTEST_TARGET_NAME} "src/unit-meta.cpp" "src/unit-modifiers.cpp" "src/unit-msgpack.cpp" + "src/unit-noexcept.cpp" "src/unit-pointer_access.cpp" "src/unit-readme.cpp" "src/unit-reference_access.cpp" diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp new file mode 100644 index 000000000..212abdf71 --- /dev/null +++ b/test/src/unit-noexcept.cpp @@ -0,0 +1,27 @@ +#include "catch.hpp" + +#include "json.hpp" + +using nlohmann::json; + +enum test +{ +}; + +struct pod {}; +struct pod_bis {}; + +void to_json(json &, pod) noexcept; +void to_json(json &, pod_bis); +static json j; + +static_assert(noexcept(json{}), ""); +static_assert(noexcept(nlohmann::to_json(j, 2)), ""); +static_assert(noexcept(nlohmann::to_json(j, 2.5)), ""); +static_assert(noexcept(nlohmann::to_json(j, true)), ""); +static_assert(noexcept(nlohmann::to_json(j, test{})), ""); +static_assert(noexcept(nlohmann::to_json(j, pod{})), ""); +static_assert(not noexcept(nlohmann::to_json(j, pod_bis{})), ""); +static_assert(noexcept(json(2)), ""); +static_assert(noexcept(json(test{})), ""); +static_assert(noexcept(json(pod{})), ""); From 63e4249e9fc127cac2a793ac085f8650ba1be666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 02:33:03 +0100 Subject: [PATCH 101/174] use a priority_tag instead of int and longs with sfinae-dispatch --- src/json.hpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 4b8f9e5ab..f10f178b4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -189,6 +189,11 @@ template <typename Json> std::string type_name(Json const &j) } } +// dispatch utility (taken from ranges-v3) +template <unsigned N> struct priority_tag : priority_tag<N - 1> {}; + +template <> struct priority_tag<0> {}; + // This is an experiment. I need this to move constructors out of basic_json. // I'm sure there is a better way, but this might need a big basic_json refactoring template <value_t> struct external_constructor; @@ -642,9 +647,8 @@ void from_json(Json const&j, std::forward_list<T, Allocator>& l) l.push_front(it->template get<T>()); } - template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(Json const &j, CompatibleArrayType &arr, long) +void from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag<0>) { using std::begin; using std::end; @@ -659,7 +663,7 @@ void from_json_array_impl(Json const &j, CompatibleArrayType &arr, long) } template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(Json const &j, CompatibleArrayType &arr, int) +auto from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -693,7 +697,7 @@ void from_json(Json const &j, CompatibleArrayType &arr) if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); } - from_json_array_impl(j, arr, 0); + from_json_array_impl(j, arr, priority_tag<1>{}); } @@ -744,7 +748,7 @@ void from_json(Json const &j, ArithmeticType &val) struct to_json_fn { template <typename Json, typename T> - auto call(int, Json& j, T&& val) const + auto call(Json& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) -> decltype(to_json(j, std::forward<T>(val)), void()) @@ -753,7 +757,7 @@ struct to_json_fn } template <typename Json, typename T> - void call(long, Json&, T&&) const noexcept + void call(Json&, T&&, priority_tag<0>) const noexcept { static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); } @@ -761,9 +765,9 @@ struct to_json_fn public: template <typename Json, typename T> void operator()(Json &j, T &&val) const - noexcept(noexcept(std::declval<to_json_fn>().call(0, j, std::forward<T>(val)))) + noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1>{}))) { - return call(0, j, std::forward<T>(val)); + return call(j, std::forward<T>(val), priority_tag<1>{}); } }; @@ -771,7 +775,7 @@ struct from_json_fn { private: template <typename Json, typename T> - auto call(int, Json const &j, T &val) const + auto call(Json const &j, T &val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { @@ -779,7 +783,7 @@ private: } template <typename Json, typename T> - void call(long, Json const&, T&) const noexcept + void call(Json const&, T&, priority_tag<0>) const noexcept { static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); } @@ -787,9 +791,9 @@ private: public: template <typename Json, typename T> void operator()(Json const &j, T &val) const - noexcept(noexcept(std::declval<from_json_fn>().call(0, j, val))) + noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1>{}))) { - return call(0, j, val); + return call(j, val, priority_tag<1>{}); } }; From f2c71fafda559beec41cdf8eb7449a1c9a31d9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 02:47:02 +0100 Subject: [PATCH 102/174] minor message/comments tweak --- src/json.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f10f178b4..75fece938 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3027,16 +3027,16 @@ class basic_json uncvref_t<T>>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we - // i know there is a special behaviour for boolean_t* and such // static assert ? + // i know there is a special behaviour for boolean_t* and such auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( std::declval<basic_json_t const &>(), std::declval<uncvref_t<T> &>()))) -> uncvref_t<T> { using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value && + static_assert(std::is_default_constructible<type>::value and std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and " + "Types must be DefaultConstructible and " "CopyConstructible when used with get"); type ret; JSONSerializer<type>::from_json(*this, ret); @@ -3052,12 +3052,11 @@ class basic_json detail::has_non_default_from_json<basic_json_t, uncvref_t<T>>::value, int> = 0> - constexpr uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) + uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) { return JSONSerializer<T>::from_json(*this); } - // TODO what to do with those... /*! @brief get a pointer value (explicit) From f1482d1f01c12f634b1b0adee047e96d701c5528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 14 Jan 2017 02:47:29 +0100 Subject: [PATCH 103/174] more tests in unit-udt --- test/src/unit-udt.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 60b839577..10e8b71a3 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -394,15 +394,22 @@ namespace nlohmann template <> struct adl_serializer<std::vector<float>> { - static void to_json(json& j, std::vector<float> const&) + using type = std::vector<float>; + static void to_json(json& j, type const&) { j = "hijacked!"; } - static void from_json(json const&, std::vector<float>& opt) + static void from_json(json const&, type& opt) { opt = {42.0, 42.0, 42.0}; } + + // preferred version + static type from_json(json const&) + { + return {4.0, 5.0, 6.0}; + } }; } @@ -411,7 +418,8 @@ TEST_CASE("even supported types can be specialized", "[udt]") json j = std::vector<float> {1.0, 2.0, 3.0}; CHECK(j.dump() == R"("hijacked!")"); auto f = j.get<std::vector<float>>(); - CHECK((f == std::vector<float>{42.0, 42.0, 42.0})); + // the single argument from_json method is preferred + CHECK((f == std::vector<float>{4.0, 5.0, 6.0})); } namespace nlohmann From 07bc82d3a7aac7092bcc7d3465779c32b4606364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 20:19:54 +0100 Subject: [PATCH 104/174] put const to the left --- src/json.hpp | 54 ++++++++++++++++---------------- test/src/unit-udt.cpp | 72 +++++++++++++++++++++---------------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 75fece938..2457f5d70 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -168,7 +168,7 @@ using is_unscoped_enum = namespace detail { -template <typename Json> std::string type_name(Json const &j) +template <typename Json> std::string type_name(const Json &j) { switch (j.m_type) { @@ -496,7 +496,7 @@ template <typename Json, typename ArithmeticType, not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> -void get_arithmetic_value(Json const &j, ArithmeticType &val) +void get_arithmetic_value(const Json &j, ArithmeticType &val) { // unsigned must be checked first, since is_number_integer() == true for unsigned if (j.is_number_unsigned()) @@ -565,7 +565,7 @@ template < is_compatible_array_type<Json, CompatibleArrayType>::value or std::is_same<typename Json::array_t, CompatibleArrayType>::value, int> = 0> -void to_json(Json &j, CompatibleArrayType const &arr) +void to_json(Json &j, const CompatibleArrayType &arr) { external_constructor<value_t::array>::construct(j, arr); } @@ -574,13 +574,13 @@ template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> -void to_json(Json &j, CompatibleObjectType const &arr) +void to_json(Json &j, const CompatibleObjectType &arr) { external_constructor<value_t::object>::construct(j, arr); } template <typename Json> -void from_json(Json const& j, typename Json::boolean_t& b) +void from_json(const Json & j, typename Json::boolean_t& b) { if (!j.is_boolean()) throw std::domain_error("type must be boolean, but is " + type_name(j)); @@ -588,7 +588,7 @@ void from_json(Json const& j, typename Json::boolean_t& b) } template <typename Json> -void from_json(Json const& j, typename Json::string_t& s) +void from_json(const Json & j, typename Json::string_t& s) { if (!j.is_string()) throw std::domain_error("type must be string, but is " + type_name(j)); @@ -596,26 +596,26 @@ void from_json(Json const& j, typename Json::string_t& s) } template <typename Json> -void from_json(Json const& j, typename Json::number_float_t& val) +void from_json(const Json & j, typename Json::number_float_t& val) { get_arithmetic_value(j, val); } template <typename Json> -void from_json(Json const& j, typename Json::number_unsigned_t& val) +void from_json(const Json & j, typename Json::number_unsigned_t& val) { get_arithmetic_value(j, val); } template <typename Json> -void from_json(Json const& j, typename Json::number_integer_t& val) +void from_json(const Json & j, typename Json::number_integer_t& val) { get_arithmetic_value(j, val); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(Json const &j, UnscopedEnumType& e) +void from_json(const Json &j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); @@ -623,7 +623,7 @@ void from_json(Json const &j, UnscopedEnumType& e) } template <typename Json> -void from_json(Json const &j, typename Json::array_t &arr) +void from_json(const Json &j, typename Json::array_t &arr) { if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); @@ -632,7 +632,7 @@ void from_json(Json const &j, typename Json::array_t &arr) // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list template <typename Json, typename T, typename Allocator> -void from_json(Json const&j, std::forward_list<T, Allocator>& l) +void from_json(const Json &j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons // (except when it's null.. ?) @@ -648,13 +648,13 @@ void from_json(Json const&j, std::forward_list<T, Allocator>& l) } template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag<0>) +void from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<0>) { using std::begin; using std::end; std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json @@ -663,7 +663,7 @@ void from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag< } template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag<1>) +auto from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -673,7 +673,7 @@ auto from_json_array_impl(Json const &j, CompatibleArrayType &arr, priority_tag< arr.reserve(j.size()); std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json @@ -687,7 +687,7 @@ template < not std::is_same<typename Json::array_t, CompatibleArrayType>::value, int> = 0> -void from_json(Json const &j, CompatibleArrayType &arr) +void from_json(const Json &j, CompatibleArrayType &arr) { if (j.is_null()) throw std::domain_error("type must be array, but is " + type_name(j)); @@ -705,7 +705,7 @@ template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> -void from_json(Json const &j, CompatibleObjectType &obj) +void from_json(const Json &j, CompatibleObjectType &obj) { if (!j.is_object()) throw std::domain_error("type must be object, but is " + type_name(j)); @@ -731,7 +731,7 @@ template < not std::is_same<ArithmeticType, typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> -void from_json(Json const &j, ArithmeticType &val) +void from_json(const Json &j, ArithmeticType &val) { if (j.is_number_unsigned()) val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); @@ -775,7 +775,7 @@ struct from_json_fn { private: template <typename Json, typename T> - auto call(Json const &j, T &val, priority_tag<1>) const + auto call(const Json &j, T &val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { @@ -783,14 +783,14 @@ private: } template <typename Json, typename T> - void call(Json const&, T&, priority_tag<0>) const noexcept + void call(const Json &, T&, priority_tag<0>) const noexcept { static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); } public: template <typename Json, typename T> - void operator()(Json const &j, T &val) const + void operator()(const Json &j, T &val) const noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1>{}))) { return call(j, val, priority_tag<1>{}); @@ -831,8 +831,8 @@ constexpr T static_const<T>::value; inline namespace { -constexpr auto const& to_json = static_const<detail::to_json_fn>::value; -constexpr auto const& from_json = static_const<detail::from_json_fn>::value; +constexpr const auto & to_json = static_const<detail::to_json_fn>::value; +constexpr const auto & from_json = static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -948,7 +948,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(Json const &); + template <typename Json> friend std::string detail::type_name(const Json &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -3030,7 +3030,7 @@ class basic_json // static assert ? // i know there is a special behaviour for boolean_t* and such auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( - std::declval<basic_json_t const &>(), std::declval<uncvref_t<T> &>()))) + std::declval<const basic_json_t &>(), std::declval<uncvref_t<T> &>()))) -> uncvref_t<T> { using type = uncvref_t<T>; @@ -3052,7 +3052,7 @@ class basic_json detail::has_non_default_from_json<basic_json_t, uncvref_t<T>>::value, int> = 0> - uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) + uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t &>()))) { return JSONSerializer<T>::from_json(*this); } diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 10e8b71a3..0590a8e52 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -91,7 +91,7 @@ void to_json(Json& j, age a) } template <typename Json> -void to_json(Json& j, name const& n) +void to_json(Json& j, const name& n) { j = n.m_val; } @@ -114,22 +114,22 @@ void to_json(Json& j, country c) } template <typename Json> -void to_json(Json& j, person const& p) +void to_json(Json& j, const person & p) { j = Json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; } -void to_json(nlohmann::json& j, address const& a) +void to_json(nlohmann::json& j, const address & a) { j = a.m_val; } -void to_json(nlohmann::json& j, contact const& c) +void to_json(nlohmann::json& j, const contact & c) { j = json{{"person", c.m_person}, {"address", c.m_address}}; } -void to_json(nlohmann::json& j, contact_book const& cb) +void to_json(nlohmann::json& j, const contact_book & cb) { j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; } @@ -140,28 +140,28 @@ bool operator==(age lhs, age rhs) return lhs.m_val == rhs.m_val; } -bool operator==(address const& lhs, address const& rhs) +bool operator==(const address & lhs, const address & rhs) { return lhs.m_val == rhs.m_val; } -bool operator==(name const& lhs, name const& rhs) +bool operator==(const name & lhs, const name & rhs) { return lhs.m_val == rhs.m_val; } -bool operator==(person const& lhs, person const& rhs) +bool operator==(const person & lhs, const person & rhs) { return std::tie(lhs.m_name, lhs.m_age) == std::tie(rhs.m_name, rhs.m_age); } -bool operator==(contact const& lhs, contact const& rhs) +bool operator==(const contact & lhs, const contact & rhs) { return std::tie(lhs.m_person, lhs.m_address) == std::tie(rhs.m_person, rhs.m_address); } -bool operator==(contact_book const& lhs, contact_book const& rhs) +bool operator==(const contact_book & lhs, const contact_book & rhs) { return std::tie(lhs.m_book_name, lhs.m_contacts) == std::tie(rhs.m_book_name, rhs.m_contacts); @@ -172,19 +172,19 @@ bool operator==(contact_book const& lhs, contact_book const& rhs) namespace udt { template <typename Json> -void from_json(Json const& j, age& a) +void from_json(const Json & j, age& a) { a.m_val = j.template get<int>(); } template <typename Json> -void from_json(Json const& j, name& n) +void from_json(const Json & j, name& n) { n.m_val = j.template get<std::string>(); } template <typename Json> -void from_json(Json const& j, country& c) +void from_json(const Json & j, country& c) { const auto str = j.template get<std::string>(); static const std::map<std::string, country> m = @@ -200,25 +200,25 @@ void from_json(Json const& j, country& c) } template <typename Json> -void from_json(Json const& j, person& p) +void from_json(const Json & j, person& p) { p.m_age = j["age"].template get<age>(); p.m_name = j["name"].template get<name>(); p.m_country = j["country"].template get<country>(); } -void from_json(nlohmann::json const& j, address& a) +void from_json(const nlohmann::json & j, address& a) { a.m_val = j.get<std::string>(); } -void from_json(nlohmann::json const& j, contact& c) +void from_json(const nlohmann::json & j, contact& c) { c.m_person = j["person"].get<person>(); c.m_address = j["address"].get<address>(); } -void from_json(nlohmann::json const& j, contact_book& cb) +void from_json(const nlohmann::json & j, contact_book& cb) { cb.m_book_name = j["name"].get<name>(); cb.m_contacts = j["contacts"].get<std::vector<contact>>(); @@ -297,7 +297,7 @@ namespace nlohmann template <typename T> struct adl_serializer<std::shared_ptr<T>> { - static void to_json(json& j, std::shared_ptr<T> const& opt) + static void to_json(json& j, const std::shared_ptr<T> & opt) { if (opt) { @@ -309,7 +309,7 @@ struct adl_serializer<std::shared_ptr<T>> } } - static void from_json(json const& j, std::shared_ptr<T>& opt) + static void from_json(const json & j, std::shared_ptr<T>& opt) { if (j.is_null()) { @@ -325,12 +325,12 @@ struct adl_serializer<std::shared_ptr<T>> template <> struct adl_serializer<udt::legacy_type> { - static void to_json(json& j, udt::legacy_type const& l) + static void to_json(json& j, const udt::legacy_type & l) { j = std::stoi(l.number); } - static void from_json(json const& j, udt::legacy_type& l) + static void from_json(const json & j, udt::legacy_type& l) { l.number = std::to_string(j.get<int>()); } @@ -395,18 +395,18 @@ template <> struct adl_serializer<std::vector<float>> { using type = std::vector<float>; - static void to_json(json& j, type const&) + static void to_json(json& j, const type &) { j = "hijacked!"; } - static void from_json(json const&, type& opt) + static void from_json(const json &, type& opt) { opt = {42.0, 42.0, 42.0}; } // preferred version - static type from_json(json const&) + static type from_json(const json &) { return {4.0, 5.0, 6.0}; } @@ -427,7 +427,7 @@ namespace nlohmann template <typename T> struct adl_serializer<std::unique_ptr<T>> { - static void to_json(json& j, std::unique_ptr<T> const& opt) + static void to_json(json& j, const std::unique_ptr<T> & opt) { if (opt) { @@ -440,7 +440,7 @@ struct adl_serializer<std::unique_ptr<T>> } // this is the overload needed for non-copyable types, - static std::unique_ptr<T> from_json(json const& j) + static std::unique_ptr<T> from_json(const json & j) { if (j.is_null()) { @@ -496,7 +496,7 @@ struct pod_serializer typename Json, typename U = T, typename std::enable_if< not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> - static void from_json(Json const &j, U &t) + static void from_json(const Json &j, U &t) { using nlohmann::from_json; from_json(j, t); @@ -506,7 +506,7 @@ struct pod_serializer template <typename Json, typename U = T, typename std::enable_if< std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void from_json(Json const &j, U &t) + static void from_json(const Json &j, U &t) { std::uint64_t value; // TODO The following block is no longer relevant in this serializer, make another one that shows the issue @@ -532,7 +532,7 @@ struct pod_serializer typename Json, typename U = T, typename std::enable_if< not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> - static void to_json(Json &j, T const &t) + static void to_json(Json &j, const T &t) { using nlohmann::to_json; to_json(j, t); @@ -541,9 +541,9 @@ struct pod_serializer template <typename Json, typename U = T, typename std::enable_if< std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void to_json(Json &j, T const &t) noexcept + static void to_json(Json &j, const T &t) noexcept { - auto bytes = static_cast<unsigned char const *>(static_cast<void const *>(&t)); + auto bytes = static_cast< const unsigned char*>(static_cast<const void *>(&t)); std::uint64_t value = bytes[0]; for (auto i = 1; i < 8; ++i) value |= std::uint64_t{bytes[i]} << 8 * i; @@ -566,13 +566,13 @@ struct non_pod }; template <typename Json> -void to_json(Json& j, non_pod const& np) +void to_json(Json& j, const non_pod & np) { j = np.s; } template <typename Json> -void from_json(Json const& j, non_pod& np) +void from_json(const Json & j, non_pod& np) { np.s = j.template get<std::string>(); } @@ -583,7 +583,7 @@ bool operator==(small_pod lhs, small_pod rhs) noexcept std::tie(rhs.begin, rhs.middle, rhs.end); } -bool operator==(non_pod const &lhs, non_pod const &rhs) noexcept +bool operator==(const non_pod &lhs, const non_pod &rhs) noexcept { return lhs.s == rhs.s; } @@ -622,13 +622,13 @@ using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, boo template <typename T, typename> struct another_adl_serializer { - static void from_json(custom_json const& j , T& t) + static void from_json(const custom_json & j , T& t) { using nlohmann::from_json; from_json(j, t); } - static void to_json(custom_json& j , T const& t) + static void to_json(custom_json& j , const T & t) { using nlohmann::to_json; to_json(j, t); From 68081cd1129d5807132b6c1f1aceb074da310a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 20:52:24 +0100 Subject: [PATCH 105/174] remove useless file --- src/json.hpp.re2c.rej | 98 ------------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 src/json.hpp.re2c.rej diff --git a/src/json.hpp.re2c.rej b/src/json.hpp.re2c.rej deleted file mode 100644 index ab8fa89d3..000000000 --- a/src/json.hpp.re2c.rej +++ /dev/null @@ -1,98 +0,0 @@ -diff a/src/json.hpp.re2c b/src/json.hpp.re2c (rejected hunks) -@@ -389,40 +389,30 @@ struct is_compatible_object_type - typename BasicJson::object_t, CompatibleObjectType>::value; - }; - --template <bool B, class BasicJson, class CompatibleArrayType> --struct is_compatible_array_type_impl : std::false_type {}; -- --template <class BasicJson, class CompatibleArrayType> --struct is_compatible_array_type_impl<true, BasicJson, CompatibleArrayType> -+template <typename BasicJson, typename T> -+struct is_basic_json_nested_type - { -- static constexpr auto value = -- not std::is_same<CompatibleArrayType, -- typename BasicJson::iterator>::value and -- not std::is_same<CompatibleArrayType, -- typename BasicJson::const_iterator>::value and -- not std::is_same<CompatibleArrayType, -- typename BasicJson::reverse_iterator>::value and -- not std::is_same<CompatibleArrayType, -- typename BasicJson::const_reverse_iterator>::value and -- not std::is_same<CompatibleArrayType, -- typename BasicJson::array_t::iterator>::value and -- not std::is_same<CompatibleArrayType, -- typename BasicJson::array_t::const_iterator>::value; -+ static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or -+ std::is_same<T, typename BasicJson::const_iterator>::value or -+ std::is_same<T, typename BasicJson::reverse_iterator>::value or -+ std::is_same<T, typename BasicJson::const_reverse_iterator>::value or -+ std::is_same<T, typename BasicJson::json_pointer>::value; - }; - - template <class BasicJson, class CompatibleArrayType> - struct is_compatible_array_type - { -- // the check for CompatibleArrayType = void is done in -- // `is_compatible_object_type`, but we need the conjunction here as well -- static auto constexpr value = is_compatible_array_type_impl< -- conjunction<negation<is_compatible_object_type< -+ // TODO concept Container? -+ // this might not make VS happy -+ static auto constexpr value = -+ conjunction<negation<std::is_same<void, CompatibleArrayType>>, -+ negation<is_compatible_object_type< - BasicJson, CompatibleArrayType>>, - negation<std::is_constructible<typename BasicJson::string_t, - CompatibleArrayType>>, -+ negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, -- has_iterator<CompatibleArrayType>>::value, -- BasicJson, CompatibleArrayType>::value; -+ has_iterator<CompatibleArrayType>>::value; - }; - - template <bool, typename, typename> -@@ -452,16 +442,6 @@ struct is_compatible_integer_type - RealIntegerType, CompatibleNumberIntegerType > ::value; - }; - --template <typename BasicJson, typename T> --struct is_basic_json_nested_type --{ -- static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or -- std::is_same<T, typename BasicJson::const_iterator>::value or -- std::is_same<T, typename BasicJson::reverse_iterator>::value or -- std::is_same<T, typename BasicJson::const_reverse_iterator>::value or -- std::is_same<T, typename BasicJson::json_pointer>::value; --}; -- - // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists - template <template <typename, typename> class JSONSerializer, typename Json, typename T> - struct has_from_json -@@ -510,8 +490,6 @@ struct has_to_json - detect(std::declval<JSONSerializer<T, void>>()))>::value; - }; - --template <typename Json, typename > -- - // those declarations are needed to workaround a MSVC bug related to ADL - // (taken from MSVC-Ranges implementation) - void to_json(); -@@ -728,12 +706,9 @@ template < - typename Json, typename ArithmeticType, - enable_if_t< - std::is_arithmetic<ArithmeticType>::value and -- not std::is_same<ArithmeticType, -- typename Json::number_unsigned_t>::value and -- not std::is_same<ArithmeticType, -- typename Json::number_integer_t>::value and -- not std::is_same<ArithmeticType, -- typename Json::number_float_t>::value and -+ not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and -+ not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and -+ not std::is_same<ArithmeticType, typename Json::number_float_t>::value and - not std::is_same<ArithmeticType, typename Json::boolean_t>::value, - int> = 0> - void from_json(Json const &j, ArithmeticType &val) From 794dae8911d2a4ea42a28066a536d3b5f42227d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 21:01:29 +0100 Subject: [PATCH 106/174] apply changes to json.hpp.re2c --- src/json.hpp.re2c | 191 ++++++++++++++++++++++++++++++---------------- 1 file changed, 125 insertions(+), 66 deletions(-) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 5dc2e0277..4dbeda8a8 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -168,7 +168,7 @@ using is_unscoped_enum = namespace detail { -template <typename Json> std::string type_name(Json const &j) +template <typename Json> std::string type_name(const Json &j) { switch (j.m_type) { @@ -189,6 +189,11 @@ template <typename Json> std::string type_name(Json const &j) } } +// dispatch utility (taken from ranges-v3) +template <unsigned N> struct priority_tag : priority_tag<N - 1> {}; + +template <> struct priority_tag<0> {}; + // This is an experiment. I need this to move constructors out of basic_json. // I'm sure there is a better way, but this might need a big basic_json refactoring template <value_t> struct external_constructor; @@ -491,14 +496,15 @@ template <typename Json, typename ArithmeticType, not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> -void get_arithmetic_value(Json const &j, ArithmeticType &val) +void get_arithmetic_value(const Json &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); - else if (j.is_number_unsigned()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + else if (j.is_number_integer()) + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); else if (j.is_number_float()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); else throw std::domain_error("type must be number, but is " + type_name(j)); } @@ -522,7 +528,7 @@ template <typename Json, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> void to_json(Json &j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, val); + external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); } @@ -533,7 +539,7 @@ template < int> = 0> void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, val); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); } template < @@ -543,7 +549,7 @@ template < int> = 0> void to_json(Json &j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, val); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); } template <typename Json, typename UnscopedEnumType, @@ -559,7 +565,7 @@ template < is_compatible_array_type<Json, CompatibleArrayType>::value or std::is_same<typename Json::array_t, CompatibleArrayType>::value, int> = 0> -void to_json(Json &j, CompatibleArrayType const &arr) +void to_json(Json &j, const CompatibleArrayType &arr) { external_constructor<value_t::array>::construct(j, arr); } @@ -568,48 +574,48 @@ template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> -void to_json(Json &j, CompatibleObjectType const &arr) +void to_json(Json &j, const CompatibleObjectType &arr) { external_constructor<value_t::object>::construct(j, arr); } template <typename Json> -void from_json(Json const& j, typename Json::boolean_t& b) +void from_json(const Json & j, typename Json::boolean_t& b) { if (!j.is_boolean()) throw std::domain_error("type must be boolean, but is " + type_name(j)); - b = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + b = *j.template get_ptr<const typename Json::boolean_t*>(); } template <typename Json> -void from_json(Json const& j, typename Json::string_t& s) +void from_json(const Json & j, typename Json::string_t& s) { if (!j.is_string()) throw std::domain_error("type must be string, but is " + type_name(j)); - s = *const_cast<Json&>(j).template get_ptr<typename Json::string_t*>(); + s = *j.template get_ptr<const typename Json::string_t*>(); } template <typename Json> -void from_json(Json const& j, typename Json::number_float_t& val) +void from_json(const Json & j, typename Json::number_float_t& val) { get_arithmetic_value(j, val); } template <typename Json> -void from_json(Json const& j, typename Json::number_unsigned_t& val) +void from_json(const Json & j, typename Json::number_unsigned_t& val) { get_arithmetic_value(j, val); } template <typename Json> -void from_json(Json const& j, typename Json::number_integer_t& val) +void from_json(const Json & j, typename Json::number_integer_t& val) { get_arithmetic_value(j, val); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(Json const &j, UnscopedEnumType& e) +void from_json(const Json &j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); @@ -617,16 +623,16 @@ void from_json(Json const &j, UnscopedEnumType& e) } template <typename Json> -void from_json(Json const &j, typename Json::array_t &arr) +void from_json(const Json &j, typename Json::array_t &arr) { if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); - arr = *const_cast<Json&>(j).template get_ptr<typename Json::array_t*>(); + arr = *j.template get_ptr<const typename Json::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list template <typename Json, typename T, typename Allocator> -void from_json(Json const&j, std::forward_list<T, Allocator>& l) +void from_json(const Json &j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons // (except when it's null.. ?) @@ -641,13 +647,47 @@ void from_json(Json const&j, std::forward_list<T, Allocator>& l) l.push_front(it->template get<T>()); } +template <typename Json, typename CompatibleArrayType> +void from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<0>) +{ + using std::begin; + using std::end; + + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + +template <typename Json, typename CompatibleArrayType> +auto from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<1>) + -> decltype( + arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), + void()) +{ + using std::begin; + using std::end; + + arr.reserve(j.size()); + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) + { + // get<Json>() returns *this, this won't call a from_json method when + // value_type is Json + return i.template get<typename CompatibleArrayType::value_type>(); + }); +} + template < typename Json, typename CompatibleArrayType, enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and not std::is_same<typename Json::array_t, CompatibleArrayType>::value, int> = 0> -void from_json(Json const &j, CompatibleArrayType &arr) +void from_json(const Json &j, CompatibleArrayType &arr) { if (j.is_null()) throw std::domain_error("type must be array, but is " + type_name(j)); @@ -657,16 +697,7 @@ void from_json(Json const &j, CompatibleArrayType &arr) if (!j.is_array()) throw std::domain_error("type must be array, but is " + type_name(j)); } - - using std::begin; - using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](Json const &i) - { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json - return i.template get<typename CompatibleArrayType::value_type>(); - }); + from_json_array_impl(j, arr, priority_tag<1>{}); } @@ -674,12 +705,12 @@ template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, int> = 0> -void from_json(Json const &j, CompatibleObjectType &obj) +void from_json(const Json &j, CompatibleObjectType &obj) { if (!j.is_object()) throw std::domain_error("type must be object, but is " + type_name(j)); - auto inner_object = const_cast<Json&>(j).template get_ptr<typename Json::object_t*>(); + auto inner_object = j.template get_ptr<const typename Json::object_t*>(); using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which @@ -700,16 +731,16 @@ template < not std::is_same<ArithmeticType, typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int> = 0> -void from_json(Json const &j, ArithmeticType &val) +void from_json(const Json &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_integer_t*>(); - else if (j.is_number_unsigned()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_unsigned_t*>(); + if (j.is_number_unsigned()) + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + else if (j.is_number_integer()) + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); else if (j.is_number_float()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::number_float_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); else if (j.is_boolean()) - val = *const_cast<Json&>(j).template get_ptr<typename Json::boolean_t*>(); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); else throw std::domain_error("type must be number, but is " + type_name(j)); } @@ -717,24 +748,53 @@ void from_json(Json const &j, ArithmeticType &val) struct to_json_fn { template <typename Json, typename T> - constexpr auto operator()(Json&& j, T&& val) const - noexcept(noexcept(to_json(std::forward<Json>(j), std::forward<T>(val)))) - -> decltype(to_json(std::forward<Json>(j), std::forward<T>(val)), + auto call(Json& j, T&& val, priority_tag<1>) const + noexcept(noexcept(to_json(j, std::forward<T>(val)))) + -> decltype(to_json(j, std::forward<T>(val)), void()) { - return to_json(std::forward<Json>(j), std::forward<T>(val)); + return to_json(j, std::forward<T>(val)); } + + template <typename Json, typename T> + void call(Json&, T&&, priority_tag<0>) const noexcept + { + static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); + } + +public: + template <typename Json, typename T> + void operator()(Json &j, T &&val) const + noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1>{}))) + { + return call(j, std::forward<T>(val), priority_tag<1>{}); + } }; struct from_json_fn { - template <typename Json, typename T> - constexpr auto operator()(Json&& j, T& val) const - noexcept(noexcept(from_json(std::forward<Json>(j), val))) - -> decltype(from_json(std::forward<Json>(j), val), void()) - { - return from_json(std::forward<Json>(j), val); - } +private: + template <typename Json, typename T> + auto call(const Json &j, T &val, priority_tag<1>) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } + + template <typename Json, typename T> + void call(const Json &, T&, priority_tag<0>) const noexcept + { + static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + } + +public: + template <typename Json, typename T> + void operator()(const Json &j, T &val) const + noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1>{}))) + { + return call(j, val, priority_tag<1>{}); + } }; /*! @@ -756,7 +816,6 @@ struct DecimalSeparator : std::numpunct<char> return '.'; } }; - } // taken from ranges-v3 @@ -772,8 +831,8 @@ constexpr T static_const<T>::value; inline namespace { -constexpr auto const& to_json = static_const<detail::to_json_fn>::value; -constexpr auto const& from_json = static_const<detail::from_json_fn>::value; +constexpr const auto & to_json = static_const<detail::to_json_fn>::value; +constexpr const auto & from_json = static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -788,9 +847,10 @@ struct adl_serializer } template <typename Json, typename T> - static void to_json(Json& j, T&& val) + static void to_json(Json &j, T &&val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<T>(val)); } }; @@ -888,7 +948,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(Json const &); + template <typename Json> friend std::string detail::type_name(const Json &); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -2967,16 +3027,16 @@ class basic_json uncvref_t<T>>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we - // i know there is a special behaviour for boolean_t* and such // static assert ? + // i know there is a special behaviour for boolean_t* and such auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( - std::declval<basic_json_t const &>(), std::declval<uncvref_t<T> &>()))) + std::declval<const basic_json_t &>(), std::declval<uncvref_t<T> &>()))) -> uncvref_t<T> { using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value && + static_assert(std::is_default_constructible<type>::value and std::is_copy_constructible<type>::value, - "user-defined types must be DefaultConstructible and " + "Types must be DefaultConstructible and " "CopyConstructible when used with get"); type ret; JSONSerializer<type>::from_json(*this, ret); @@ -2992,12 +3052,11 @@ class basic_json detail::has_non_default_from_json<basic_json_t, uncvref_t<T>>::value, int> = 0> - constexpr uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<basic_json_t const&>()))) + uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t &>()))) { return JSONSerializer<T>::from_json(*this); } - // TODO what to do with those... /*! @brief get a pointer value (explicit) From e60e458a7e7d9fe6a18fabfc3930711483afb74f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 21:18:58 +0100 Subject: [PATCH 107/174] move static_const to the detail namespace --- src/json.hpp | 25 ++++++++++++------------- src/json.hpp.re2c | 25 ++++++++++++------------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2457f5d70..8e14b5cdf 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -797,6 +797,16 @@ public: } }; +// taken from ranges-v3 +template <typename T> +struct static_const +{ + static constexpr T value{}; +}; + +template <typename T> +constexpr T static_const<T>::value; + /*! @brief helper class to create locales with decimal point @@ -818,21 +828,10 @@ struct DecimalSeparator : std::numpunct<char> }; } -// taken from ranges-v3 -// TODO add doc -template <typename T> -struct static_const -{ - static constexpr T value{}; -}; - -template <typename T> -constexpr T static_const<T>::value; - inline namespace { -constexpr const auto & to_json = static_const<detail::to_json_fn>::value; -constexpr const auto & from_json = static_const<detail::from_json_fn>::value; +constexpr const auto & to_json = detail::static_const<detail::to_json_fn>::value; +constexpr const auto & from_json = detail::static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 4dbeda8a8..f4d0cf8de 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -797,6 +797,16 @@ public: } }; +// taken from ranges-v3 +template <typename T> +struct static_const +{ + static constexpr T value{}; +}; + +template <typename T> +constexpr T static_const<T>::value; + /*! @brief helper class to create locales with decimal point @@ -818,21 +828,10 @@ struct DecimalSeparator : std::numpunct<char> }; } -// taken from ranges-v3 -// TODO add doc -template <typename T> -struct static_const -{ - static constexpr T value{}; -}; - -template <typename T> -constexpr T static_const<T>::value; - inline namespace { -constexpr const auto & to_json = static_const<detail::to_json_fn>::value; -constexpr const auto & from_json = static_const<detail::from_json_fn>::value; +constexpr const auto & to_json = detail::static_const<detail::to_json_fn>::value; +constexpr const auto & from_json = detail::static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument From 1d87097741520289ae5ab4cc49c8db546ccd9209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 22:08:33 +0100 Subject: [PATCH 108/174] remove some boilerplate --- src/json.hpp | 22 +++++++++++----------- src/json.hpp.re2c | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 8e14b5cdf..9d4a548a2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3019,26 +3019,26 @@ class basic_json // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, + typename U = uncvref_t<T>, enable_if_t< - not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<basic_json_t, uncvref_t<T>>::value and + not std::is_same<basic_json_t, U>::value and + detail::has_from_json<basic_json_t, U>::value and not detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, + U>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such - auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( - std::declval<const basic_json_t &>(), std::declval<uncvref_t<T> &>()))) - -> uncvref_t<T> + auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( + std::declval<const basic_json_t &>(), std::declval<U &>()))) + -> U { - using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value and - std::is_copy_constructible<type>::value, + static_assert(std::is_default_constructible<U>::value and + std::is_copy_constructible<U>::value, "Types must be DefaultConstructible and " "CopyConstructible when used with get"); - type ret; - JSONSerializer<type>::from_json(*this, ret); + U ret; + JSONSerializer<U>::from_json(*this, ret); return ret; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index f4d0cf8de..4b28a0323 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3019,26 +3019,26 @@ class basic_json // the latter is preferred if both are present (since it does not require a default construction of T) template < typename T, + typename U = uncvref_t<T>, enable_if_t< - not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_from_json<basic_json_t, uncvref_t<T>>::value and + not std::is_same<basic_json_t, U>::value and + detail::has_from_json<basic_json_t, U>::value and not detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, + U>::value, int> = 0> // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such - auto get() const noexcept(noexcept(JSONSerializer<uncvref_t<T>>::from_json( - std::declval<const basic_json_t &>(), std::declval<uncvref_t<T> &>()))) - -> uncvref_t<T> + auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( + std::declval<const basic_json_t &>(), std::declval<U &>()))) + -> U { - using type = uncvref_t<T>; - static_assert(std::is_default_constructible<type>::value and - std::is_copy_constructible<type>::value, + static_assert(std::is_default_constructible<U>::value and + std::is_copy_constructible<U>::value, "Types must be DefaultConstructible and " "CopyConstructible when used with get"); - type ret; - JSONSerializer<type>::from_json(*this, ret); + U ret; + JSONSerializer<U>::from_json(*this, ret); return ret; } From af94e712c771cabe446b1f3512dc901d40b97e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 15 Jan 2017 22:08:49 +0100 Subject: [PATCH 109/174] add basic doxygen documentations --- doc/Doxyfile | 2 +- src/json.hpp | 101 ++++++++++++++++++++++++++++++---------------- src/json.hpp.re2c | 101 ++++++++++++++++++++++++++++++---------------- 3 files changed, 135 insertions(+), 69 deletions(-) diff --git a/doc/Doxyfile b/doc/Doxyfile index 5064a0a0c..4d511af31 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -109,7 +109,7 @@ RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = -EXCLUDE_SYMBOLS = nlohmann::anonymous_namespace +EXCLUDE_SYMBOLS = nlohmann::detail EXAMPLE_PATH = examples EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO diff --git a/src/json.hpp b/src/json.hpp index 9d4a548a2..838d2d071 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -116,20 +116,20 @@ namespace nlohmann @brief the JSON type enumeration This enumeration collects the different JSON types. It is internally used -to distinguish the stored values, and the functions @ref is_null(), @ref -is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref -is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and -@ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and -@ref is_structured() rely on it. +to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref +basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref +basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and +@ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. @note There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes -these three types for numbers: @ref number_unsigned_t is used for unsigned -integers, @ref number_integer_t is used for signed integers, and @ref -number_float_t is used for floating-point numbers or to approximate +these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned +integers, @ref basic_json::number_integer_t is used for signed integers, and @ref +basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type. -@sa @ref basic_json(const value_t value_type) -- create a JSON value with +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with the default value for a given type @since version 1.0.0 @@ -1800,18 +1800,6 @@ class basic_json @liveexample{The following code shows the constructor for different @ref value_t values,basic_json__value_t} - @sa @ref basic_json(std::nullptr_t) -- create a `null` value - @sa @ref basic_json(boolean_t value) -- create a boolean value - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const object_t&) -- create a object value - @sa @ref basic_json(const array_t&) -- create a array value - @sa @ref basic_json(const number_float_t) -- create a number - (floating-point) value - @sa @ref basic_json(const number_integer_t) -- create a number (integer) - value - @sa @ref basic_json(const number_unsigned_t) -- create a number (unsigned) - value - @since version 1.0.0 */ basic_json(const value_t value_type) @@ -1844,9 +1832,21 @@ class basic_json assert_invariant(); } - // constructor chosen when: - // - JSONSerializer::to_json exists for type T - // - T is not a istream, nor convertible to basic_json (float, vectors, etc) + /*! + @brief forwards the parameter to json_serializer<U>::to_json method (U = uncvref_t<T>) + + this constructor is chosen if: + - T is not derived from std::istream + - T is not @ref basic_json (to avoid hijacking copy/move constructors) + - T is not a @ref basic_json nested type (@ref json_pointer, @ref iterator, etc ...) + - @ref json_serializer<U> has a to_json(basic_json_t&, T&&) method + + @param[in] val the value to be forwarded + + @throw what json_serializer<U>::to_json throws + + @since version 2.1.0 + */ template <typename T, typename U = uncvref_t<T>, enable_if_t<not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and @@ -3003,7 +3003,19 @@ class basic_json } public: - // if T is basic_json, simply returns *this + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the identity method + + @tparam T type; T == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ template <typename T, enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const @@ -3011,12 +3023,21 @@ class basic_json return *this; } - // This overload is chosen when: - // - T is not basic_json_t - // - JSONSerializer<T>::from_json(basic_json const&, T&) exists - // - and JSONSerializer<T>::from_json(basic_json const&) does not exist - // - // the latter is preferred if both are present (since it does not require a default construction of T) + /*! + @brief get overload for CopyConstructible and DefaultConstructible types + construct a default U value, and call @ref json_serializer<U> from_json method with it + + This overloads is chosen if: + - U is not @ref basic_json + - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) + - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); + + @return a value of type U + + @throw what json_serializer<U> from_json method throws + + @since version 2.1.0 + */ template < typename T, typename U = uncvref_t<T>, @@ -3042,9 +3063,21 @@ class basic_json return ret; } - // This overload is chosen when: - // - T is not basic_json_t - // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + /*! + @brief get overload for types than cannot be default constructed or copy constructed + + If @ref json_serializer<U> has both overloads of from_json, this one is chosen + + This overloads is chosen if: + - U is not @ref basic_json + - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); + + @return a value of type U + + @throw what json_serializer<U> from_json method throws + + @since version 2.1.0 + */ template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 4b28a0323..a35391800 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -116,20 +116,20 @@ namespace nlohmann @brief the JSON type enumeration This enumeration collects the different JSON types. It is internally used -to distinguish the stored values, and the functions @ref is_null(), @ref -is_object(), @ref is_array(), @ref is_string(), @ref is_boolean(), @ref -is_number() (with @ref is_number_integer(), @ref is_number_unsigned(), and -@ref is_number_float()), @ref is_discarded(), @ref is_primitive(), and -@ref is_structured() rely on it. +to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref +basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref +basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and +@ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. @note There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes -these three types for numbers: @ref number_unsigned_t is used for unsigned -integers, @ref number_integer_t is used for signed integers, and @ref -number_float_t is used for floating-point numbers or to approximate +these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned +integers, @ref basic_json::number_integer_t is used for signed integers, and @ref +basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type. -@sa @ref basic_json(const value_t value_type) -- create a JSON value with +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with the default value for a given type @since version 1.0.0 @@ -1800,18 +1800,6 @@ class basic_json @liveexample{The following code shows the constructor for different @ref value_t values,basic_json__value_t} - @sa @ref basic_json(std::nullptr_t) -- create a `null` value - @sa @ref basic_json(boolean_t value) -- create a boolean value - @sa @ref basic_json(const string_t&) -- create a string value - @sa @ref basic_json(const object_t&) -- create a object value - @sa @ref basic_json(const array_t&) -- create a array value - @sa @ref basic_json(const number_float_t) -- create a number - (floating-point) value - @sa @ref basic_json(const number_integer_t) -- create a number (integer) - value - @sa @ref basic_json(const number_unsigned_t) -- create a number (unsigned) - value - @since version 1.0.0 */ basic_json(const value_t value_type) @@ -1844,9 +1832,21 @@ class basic_json assert_invariant(); } - // constructor chosen when: - // - JSONSerializer::to_json exists for type T - // - T is not a istream, nor convertible to basic_json (float, vectors, etc) + /*! + @brief forwards the parameter to json_serializer<U>::to_json method (U = uncvref_t<T>) + + this constructor is chosen if: + - T is not derived from std::istream + - T is not @ref basic_json (to avoid hijacking copy/move constructors) + - T is not a @ref basic_json nested type (@ref json_pointer, @ref iterator, etc ...) + - @ref json_serializer<U> has a to_json(basic_json_t&, T&&) method + + @param[in] val the value to be forwarded + + @throw what json_serializer<U>::to_json throws + + @since version 2.1.0 + */ template <typename T, typename U = uncvref_t<T>, enable_if_t<not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and @@ -3003,7 +3003,19 @@ class basic_json } public: - // if T is basic_json, simply returns *this + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the identity method + + @tparam T type; T == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ template <typename T, enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const @@ -3011,12 +3023,21 @@ class basic_json return *this; } - // This overload is chosen when: - // - T is not basic_json_t - // - JSONSerializer<T>::from_json(basic_json const&, T&) exists - // - and JSONSerializer<T>::from_json(basic_json const&) does not exist - // - // the latter is preferred if both are present (since it does not require a default construction of T) + /*! + @brief get overload for CopyConstructible and DefaultConstructible types + construct a default U value, and call @ref json_serializer<U> from_json method with it + + This overloads is chosen if: + - U is not @ref basic_json + - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) + - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); + + @return a value of type U + + @throw what json_serializer<U> from_json method throws + + @since version 2.1.0 + */ template < typename T, typename U = uncvref_t<T>, @@ -3042,9 +3063,21 @@ class basic_json return ret; } - // This overload is chosen when: - // - T is not basic_json_t - // - and JSONSerializer<T>::from_json(basic_json const&) does not exist + /*! + @brief get overload for types than cannot be default constructed or copy constructed + + If @ref json_serializer<U> has both overloads of from_json, this one is chosen + + This overloads is chosen if: + - U is not @ref basic_json + - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); + + @return a value of type U + + @throw what json_serializer<U> from_json method throws + + @since version 2.1.0 + */ template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and From b56117b148b346b78a9928764b03326bce96d3df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 16 Jan 2017 21:59:47 +0100 Subject: [PATCH 110/174] add noexcept tests --- src/json.hpp | 2 +- src/json.hpp.re2c | 2 +- test/src/unit-noexcept.cpp | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 838d2d071..9c0a8168b 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -840,7 +840,7 @@ template <typename = void, typename = void> struct adl_serializer { template <typename Json, typename T> - static void from_json(Json&& j, T& val) + static void from_json(Json&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<Json>(j), val))) { ::nlohmann::from_json(std::forward<Json>(j), val); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index a35391800..8fbff2ad5 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -840,7 +840,7 @@ template <typename = void, typename = void> struct adl_serializer { template <typename Json, typename T> - static void from_json(Json&& j, T& val) + static void from_json(Json&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<Json>(j), val))) { ::nlohmann::from_json(std::forward<Json>(j), val); } diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp index 212abdf71..de13e0578 100644 --- a/test/src/unit-noexcept.cpp +++ b/test/src/unit-noexcept.cpp @@ -13,6 +13,8 @@ struct pod_bis {}; void to_json(json &, pod) noexcept; void to_json(json &, pod_bis); +void from_json(const json&, pod) noexcept; +void from_json(const json&, pod_bis); static json j; static_assert(noexcept(json{}), ""); @@ -25,3 +27,6 @@ static_assert(not noexcept(nlohmann::to_json(j, pod_bis{})), ""); static_assert(noexcept(json(2)), ""); static_assert(noexcept(json(test{})), ""); static_assert(noexcept(json(pod{})), ""); +static_assert(noexcept(j.get<pod>()), ""); +static_assert(not noexcept(j.get<pod_bis>()), ""); +static_assert(noexcept(json(pod{})), ""); From fbac056c381b48499498ca355a811d082998d349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Mon, 16 Jan 2017 23:23:06 +0100 Subject: [PATCH 111/174] add readme --- README.md | 213 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/README.md b/README.md index 69676370a..b64c14171 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ - [Conversion from STL containers](#conversion-from-stl-containers) - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) - [Implicit conversions](#implicit-conversions) + - [Conversions to arbitrary types](#arbitrary-types-conversions) - [Binary formats (CBOR and MessagePack)](#binary-formats-cbor-and-messagepack) - [Supported compilers](#supported-compilers) - [License](#license) @@ -441,6 +442,218 @@ int vi = jn.get<int>(); // etc. ``` +### Arbitrary types conversions + +Every type can be serialized in JSON, not just STL-containers and scalar types. +Usually, you would do something along those lines: + +```cpp +namespace ns { +struct person { std::string name; std::string address; int age; }; +} +// convert to JSON +json j; +ns::person p = createSomeone(); +j["name"] = p.name; +j["address"] = p.address; +j["age"] = p.age; + +// ... + +// convert from JSON +ns::person p {j["name"].get<std::string>(), j["address"].get<std::string>(), j["age"].get<int>()}; +``` + +It works, but that's quite a lot of boilerplate.. Hopefully, there's a better way: + +```cpp +ns::person p = createPerson(); +json j = p; + +auto p2 = j.get<ns::person>(); +assert(p == p2); +``` + +#### Basic usage + +To make this work with one of your types, you only need to provide two methods: + +```cpp +using nlohmann::json; + +namespace ns { +void to_json(json& j, person const& p) +{ + j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; +} + +void from_json(json const& j, person& p) +{ + p.name = j["name"].get<std::string>(); + p.address = j["address"].get<std::string>(); + p.age = j["age"].get<int>(); +} +} // namespace ns +``` + +That's all. When calling the json constructor with your type, your custom `to_json` method will be automatically called. +Likewise, when calling `get<your_type>()`, the `from_json` method will be called. + +Some important things: + +* Those methods **MUST** be in your type's namespace, or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). +* When using `get<your_type>()`, `your_type` **MUST** be DefaultConstructible and CopyConstructible (There is a way to bypass those requirements described later) + +#### How do I convert third-party types? + +This requires a bit more advanced technique. +But first, let's see how this conversion mechanism works: + +The library uses **JSON Serializers** to convert types to json. +The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](http://en.cppreference.com/w/cpp/language/adl)) + +It is implemented like this (simplified): + +```cpp +template <typename T> +struct adl_serializer +{ + static void to_json(json& j, const T& value) + { + // calls the "to_json" method in T's namespace + } + + static void from_json(const json& j, T& value) + { + // same thing, but with the "from_json" method + } +}; +``` + +This serializer works fine when you have control over the type's namespace. +However, what about `boost::optional`, or `std::filesystem::path` (C++17)? + +Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... + +To solve this, you need to add a specialization of `adl_serializer` to the `nlohmann` namespace, here's an example: + +```cpp +// partial specialization (full specialization works too) +namespace nlohmann { +template <typename T> +struct adl_serializer<boost::optional<T>> +{ + static void to_json(json& j, const boost::optional<T>& opt) + { + if (opt == boost::none) + j = nullptr; + else + j = *opt; // this will call adl_serializer<T>::to_json, which will find the free function to_json in T's namespace! + } + + static void from_json(const json& j, boost::optional<T>& opt) + { + if (!j.is_null()) + opt = j.get<T>(); // same as above, but with adl_serializer<T>::from_json + } +}; +} +``` + +#### How can I use `get()` for non-default constructible/non-copyable types? + +There is a way, if your type is **MoveConstructible**. +You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: + +```cpp +struct move_only_type { + move_only_type() = delete; + move_only_type(int ii): i(ii) {} + move_only_type(const move_only_type&) = delete; + move_only_type(move_only_type&&) = default; + : + int i; +}; + +namespace nlohmann { +template <> +struct adl_serializer<move_only_type> +{ + // note: the return type is no longer 'void', and the method only takes one argument + static move_only_type from_json(const json& j) + { + return {j.get<int>()}; + } + + // Here's the catch! You must provide a to_json method! + // Otherwise you will not be able to convert move_only_type to json, + // since you fully specialized adl_serializer on that type + static void to_json(json& j, move_only_type t) + { + j = t.i; + } +}; +} +``` + +#### Can I write my own serializer? (Advanced use) + +Yes. You might want to take a look at `unit-udt.cpp` in the test suite, to see a few examples. + +If you write your own serializer, you'll need to do a few things: + +* use a different `basic_json` alias than nlohmann::json (the last template parameter of basic_json is the JSONSerializer) +* use your `basic_json` alias (or a template parameter) in all your `to_json`/`from_json` methods +* use `nlohmann::to_json` and `nlohmann::from_json` when you need ADL + +Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL. + +```cpp +// You should use void as a second template argument if you don't need compile-time checks on T +template <typename T, typename SFINAE = typename std::enable_if<sizeof(T) <= 32>::type> +struct less_than_32_serializer // if someone tries to use a type bigger than 32, the compiler will complain +{ + template <typename Json> + static void to_json(Json& j, T value) + { + // we want to use ADL, and call the correct to_json overload + using nlohmann::to_json; // this method is called by adl_serializer, this is where the magic happens + to_json(j, value); + } + + template <typename Json> + static void from_json(const Json& j, T& value) + { + // same thing here + using nlohmann::from_json; + from_json(j, value); + } +}; +``` + +Be **very** careful when reimplementing your serializer, you can stack overflow if you don't pay attention: + +```cpp +template <typename T, void> +struct bad_serializer +{ + template <typename Json> + static void to_json(Json& j, const T& value) + { + // this calls Json::json_serializer<T>::to_json(j, value); + // if Json::json_serializer == bad_serializer ... oops! + j = value; + } + + template <typename Json> + static void to_json(const Json& j, T& value) + { + // this calls Json::json_serializer<T>::from_json(j, value); + // if Json::json_serializer == bad_serializer ... oops! + value = j.template get<T>(); // oops! + } +}; +``` ### Binary formats (CBOR and MessagePack) From 3e15b551e01679bca7e27d08d39aaca6774465cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 17 Jan 2017 10:32:35 +0100 Subject: [PATCH 112/174] run make pretty --- src/json.hpp | 6492 ++++++++++++++++++--------------- src/json.hpp.re2c | 5270 +++++++++++++------------- test/src/unit-conversions.cpp | 8 +- test/src/unit-noexcept.cpp | 4 +- test/src/unit-regression.cpp | 2 +- test/src/unit-udt.cpp | 214 +- 6 files changed, 6274 insertions(+), 5716 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9c0a8168b..fc7b60f20 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -136,15 +136,15 @@ the default value for a given type */ enum class value_t : uint8_t { - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function }; // alias templates to reduce boilerplate @@ -168,29 +168,29 @@ using is_unscoped_enum = namespace detail { -template <typename Json> std::string type_name(const Json &j) +template <typename Json> std::string type_name(const Json& j) { - switch (j.m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } + switch (j.m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } } // dispatch utility (taken from ranges-v3) -template <unsigned N> struct priority_tag : priority_tag<N - 1> {}; +template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; template <> struct priority_tag<0> {}; @@ -201,120 +201,120 @@ template <value_t> struct external_constructor; template <> struct external_constructor<value_t::boolean> { - template <typename Json> - static void construct(Json &j, typename Json::boolean_t b) noexcept - { - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::string> { - template <typename Json> - static void construct(Json &j, const typename Json::string_t& s) - { - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::number_float> { - template <typename Json> - static void construct(Json &j, typename Json::number_float_t val) noexcept - { - // replace infinity and NAN by null - if (not std::isfinite(val)) - j = Json{}; - else + template <typename Json> + static void construct(Json& j, typename Json::number_float_t val) noexcept { - j.m_type = value_t::number_float; - j.m_value = val; + // replace infinity and NAN by null + if (not std::isfinite(val)) + j = Json{}; + else + { + j.m_type = value_t::number_float; + j.m_value = val; + } + j.assert_invariant(); } - j.assert_invariant(); - } }; template <> struct external_constructor<value_t::number_unsigned> { - template <typename Json> - static void construct(Json &j, typename Json::number_unsigned_t val) noexcept - { - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::number_integer> { - template <typename Json> - static void construct(Json &j, typename Json::number_integer_t val) noexcept - { - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::array> { - template <typename Json> - static void construct(Json &j, const typename Json::array_t& arr) - { - j.m_type = value_t::array; - j.m_value = arr; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } - template <typename Json, typename CompatibleArrayType, - enable_if_t<not std::is_same<CompatibleArrayType, - typename Json::array_t>::value, - int> = 0> - static void construct(Json &j, const CompatibleArrayType &arr) - { - using std::begin; - using std::end; - j.m_type = value_t::array; - j.m_value.array = - j.template create<typename Json::array_t>(begin(arr), end(arr)); - j.assert_invariant(); - } + template <typename Json, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename Json::array_t>::value, + int> = 0> + static void construct(Json& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = + j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::object> { - template <typename Json> - static void construct(Json &j, const typename Json::object_t& obj) - { - j.m_type = value_t::object; - j.m_value = obj; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } - template <typename Json, typename CompatibleObjectType, - enable_if_t<not std::is_same<CompatibleObjectType, - typename Json::object_t>::value, - int> = 0> - static void construct(Json &j, const CompatibleObjectType &obj) - { - using std::begin; - using std::end; + template <typename Json, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename Json::object_t>::value, + int> = 0> + static void construct(Json& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; - j.m_type = value_t::object; - j.m_value.object = - j.template create<typename Json::object_t>(begin(obj), end(obj)); - j.assert_invariant(); - } + j.m_type = value_t::object; + j.m_value.object = + j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.assert_invariant(); + } }; // Implementation of 2 C++17 constructs: conjunction, negation. @@ -380,11 +380,11 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { - static auto constexpr value = is_compatible_object_type_impl< - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - typename BasicJson::object_t, CompatibleObjectType>::value; + static auto constexpr value = is_compatible_object_type_impl < + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + typename BasicJson::object_t, CompatibleObjectType >::value; }; template <typename BasicJson, typename T> @@ -400,17 +400,17 @@ struct is_basic_json_nested_type template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // TODO concept Container? - // this might not make VS happy - static auto constexpr value = + // TODO concept Container? + // this might not make VS happy + static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, - negation<is_compatible_object_type< - BasicJson, CompatibleArrayType>>, - negation<std::is_constructible<typename BasicJson::string_t, - CompatibleArrayType>>, - negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value; + negation<is_compatible_object_type< + BasicJson, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJson::string_t, + CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -419,7 +419,7 @@ struct is_compatible_integer_type_impl : std::false_type {}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { - // is there an assert somewhere on overflows? + // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits<RealIntegerType>; using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; @@ -433,11 +433,11 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto - value = is_compatible_integer_type_impl < - std::is_integral<CompatibleNumberIntegerType>::value and - not std::is_same<bool, CompatibleNumberIntegerType>::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; + static constexpr auto + value = is_compatible_integer_type_impl < + std::is_integral<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists @@ -461,261 +461,287 @@ struct has_from_json template <typename Json, typename T> struct has_non_default_from_json { -private: - template < - typename U, - typename = enable_if_t<std::is_same< - T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> - static int detect(U &&); - static void detect(...); + private: + template < + typename U, + typename = enable_if_t<std::is_same< + T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value >> + static int detect(U&&); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // This trait checks if Json::json_serializer<T>::to_json exists template <typename Json, typename T> struct has_to_json { -private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json &>(), std::declval<T>()))> - static int detect(U &&); - static void detect(...); + private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json&>(), std::declval<T>()))> + static int detect(U&&); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters template <typename Json, typename ArithmeticType, enable_if_t<std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename Json::boolean_t>::value, + not std::is_same<ArithmeticType, + typename Json::boolean_t>::value, int> = 0> -void get_arithmetic_value(const Json &j, ArithmeticType &val) +void get_arithmetic_value(const Json& j, ArithmeticType& val) { - // unsigned must be checked first, since is_number_integer() == true for unsigned - if (j.is_number_unsigned()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - else if (j.is_number_integer()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - else if (j.is_number_float()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - else - throw std::domain_error("type must be number, but is " + type_name(j)); + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + } + else if (j.is_number_integer()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); + } + else if (j.is_number_float()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); + } + else + { + throw std::domain_error("type must be number, but is " + type_name(j)); + } } template <typename Json> -void to_json(Json &j, typename Json::boolean_t b) noexcept +void to_json(Json& j, typename Json::boolean_t b) noexcept { - external_constructor<value_t::boolean>::construct(j, b); + external_constructor<value_t::boolean>::construct(j, b); } template <typename Json, typename CompatibleString, enable_if_t<std::is_constructible<typename Json::string_t, - CompatibleString>::value, + CompatibleString>::value, int> = 0> -void to_json(Json &j, const CompatibleString &s) +void to_json(Json& j, const CompatibleString& s) { - external_constructor<value_t::string>::construct(j, s); + external_constructor<value_t::string>::construct(j, s); } template <typename Json, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> -void to_json(Json &j, FloatType val) noexcept +void to_json(Json& j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); + external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); } template < typename Json, typename CompatibleNumberUnsignedType, - enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, - CompatibleNumberUnsignedType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept + enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + CompatibleNumberUnsignedType>::value, + int> = 0 > +void to_json(Json& j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); } template < typename Json, typename CompatibleNumberIntegerType, - enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, - CompatibleNumberIntegerType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberIntegerType val) noexcept + enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + CompatibleNumberIntegerType>::value, + int> = 0 > +void to_json(Json& j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json &j, UnscopedEnumType e) noexcept +void to_json(Json& j, UnscopedEnumType e) noexcept { - external_constructor<value_t::number_integer>::construct(j, e); + external_constructor<value_t::number_integer>::construct(j, e); } template < typename Json, typename CompatibleArrayType, - enable_if_t< + enable_if_t < is_compatible_array_type<Json, CompatibleArrayType>::value or - std::is_same<typename Json::array_t, CompatibleArrayType>::value, - int> = 0> -void to_json(Json &j, const CompatibleArrayType &arr) + std::is_same<typename Json::array_t, CompatibleArrayType>::value, + int > = 0 > +void to_json(Json& j, const CompatibleArrayType& arr) { - external_constructor<value_t::array>::construct(j, arr); + external_constructor<value_t::array>::construct(j, arr); } template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, - int> = 0> -void to_json(Json &j, const CompatibleObjectType &arr) + int> = 0 > +void to_json(Json& j, const CompatibleObjectType& arr) { - external_constructor<value_t::object>::construct(j, arr); + external_constructor<value_t::object>::construct(j, arr); } template <typename Json> -void from_json(const Json & j, typename Json::boolean_t& b) +void from_json(const Json& j, typename Json::boolean_t& b) { - if (!j.is_boolean()) - throw std::domain_error("type must be boolean, but is " + type_name(j)); - b = *j.template get_ptr<const typename Json::boolean_t*>(); + if (!j.is_boolean()) + { + throw std::domain_error("type must be boolean, but is " + type_name(j)); + } + b = *j.template get_ptr<const typename Json::boolean_t*>(); } template <typename Json> -void from_json(const Json & j, typename Json::string_t& s) +void from_json(const Json& j, typename Json::string_t& s) { - if (!j.is_string()) - throw std::domain_error("type must be string, but is " + type_name(j)); - s = *j.template get_ptr<const typename Json::string_t*>(); + if (!j.is_string()) + { + throw std::domain_error("type must be string, but is " + type_name(j)); + } + s = *j.template get_ptr<const typename Json::string_t*>(); } template <typename Json> -void from_json(const Json & j, typename Json::number_float_t& val) +void from_json(const Json& j, typename Json::number_float_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json> -void from_json(const Json & j, typename Json::number_unsigned_t& val) +void from_json(const Json& j, typename Json::number_unsigned_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json> -void from_json(const Json & j, typename Json::number_integer_t& val) +void from_json(const Json& j, typename Json::number_integer_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const Json &j, UnscopedEnumType& e) +void from_json(const Json& j, UnscopedEnumType& e) { - typename std::underlying_type<UnscopedEnumType>::type val = e; - get_arithmetic_value(j, val); - e = static_cast<UnscopedEnumType>(val); + typename std::underlying_type<UnscopedEnumType>::type val = e; + get_arithmetic_value(j, val); + e = static_cast<UnscopedEnumType>(val); } template <typename Json> -void from_json(const Json &j, typename Json::array_t &arr) +void from_json(const Json& j, typename Json::array_t& arr) { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - arr = *j.template get_ptr<const typename Json::array_t*>(); + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + arr = *j.template get_ptr<const typename Json::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list template <typename Json, typename T, typename Allocator> -void from_json(const Json &j, std::forward_list<T, Allocator>& l) +void from_json(const Json& j, std::forward_list<T, Allocator>& l) { - // do not perform the check when user wants to retrieve jsons - // (except when it's null.. ?) - if (j.is_null()) - throw std::domain_error("type must be array, but is " + type_name(j)); - if (not std::is_same<T, Json>::value) - { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - } - for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) - l.push_front(it->template get<T>()); + // do not perform the check when user wants to retrieve jsons + // (except when it's null.. ?) + if (j.is_null()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + if (not std::is_same<T, Json>::value) + { + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + } + for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) + { + l.push_front(it->template get<T>()); + } } template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<0>) +void from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<0>) { - using std::begin; - using std::end; + using std::begin; + using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) - { + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json return i.template get<typename CompatibleArrayType::value_type>(); - }); + }); } template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<1>) - -> decltype( - arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), - void()) +auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<1>) +-> decltype( + arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), + void()) { - using std::begin; - using std::end; + using std::begin; + using std::end; - arr.reserve(j.size()); - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) - { + arr.reserve(j.size()); + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json return i.template get<typename CompatibleArrayType::value_type>(); - }); + }); } template < typename Json, typename CompatibleArrayType, enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and - not std::is_same<typename Json::array_t, - CompatibleArrayType>::value, - int> = 0> -void from_json(const Json &j, CompatibleArrayType &arr) + not std::is_same<typename Json::array_t, + CompatibleArrayType>::value, + int> = 0 > +void from_json(const Json& j, CompatibleArrayType& arr) { - if (j.is_null()) - throw std::domain_error("type must be array, but is " + type_name(j)); - // when T == Json, do not check if value_t is correct - if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) - { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - } - from_json_array_impl(j, arr, priority_tag<1>{}); + if (j.is_null()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + // when T == Json, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + { + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + } + from_json_array_impl(j, arr, priority_tag<1> {}); } template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, - int> = 0> -void from_json(const Json &j, CompatibleObjectType &obj) + int> = 0 > +void from_json(const Json& j, CompatibleObjectType& obj) { - if (!j.is_object()) - throw std::domain_error("type must be object, but is " + type_name(j)); + if (!j.is_object()) + { + throw std::domain_error("type must be object, but is " + type_name(j)); + } - auto inner_object = j.template get_ptr<const typename Json::object_t*>(); - using std::begin; - using std::end; - // we could avoid the assignment, but this might require a for loop, which - // might be less efficient than the container constructor for some containers (would it?) - obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); + auto inner_object = j.template get_ptr<const typename Json::object_t*>(); + using std::begin; + using std::end; + // we could avoid the assignment, but this might require a for loop, which + // might be less efficient than the container constructor for some containers (would it?) + obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); } // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) @@ -724,25 +750,35 @@ void from_json(const Json &j, CompatibleObjectType &obj) // in case of a custom BooleanType which is not an arithmetic type? template < typename Json, typename ArithmeticType, - enable_if_t< + enable_if_t < std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, typename Json::number_float_t>::value and - not std::is_same<ArithmeticType, typename Json::boolean_t>::value, - int> = 0> -void from_json(const Json &j, ArithmeticType &val) + not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + int > = 0 > +void from_json(const Json& j, ArithmeticType& val) { - if (j.is_number_unsigned()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - else if (j.is_number_integer()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - else if (j.is_number_float()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - else if (j.is_boolean()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); - else - throw std::domain_error("type must be number, but is " + type_name(j)); + if (j.is_number_unsigned()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + } + else if (j.is_number_integer()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); + } + else if (j.is_number_float()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); + } + else if (j.is_boolean()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); + } + else + { + throw std::domain_error("type must be number, but is " + type_name(j)); + } } struct to_json_fn @@ -762,39 +798,39 @@ struct to_json_fn static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); } -public: - template <typename Json, typename T> - void operator()(Json &j, T &&val) const - noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1>{}))) - { - return call(j, std::forward<T>(val), priority_tag<1>{}); - } + public: + template <typename Json, typename T> + void operator()(Json& j, T&& val) const + noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) + { + return call(j, std::forward<T>(val), priority_tag<1> {}); + } }; struct from_json_fn { -private: - template <typename Json, typename T> - auto call(const Json &j, T &val, priority_tag<1>) const - noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val), void()) - { - return from_json(j, val); - } + private: + template <typename Json, typename T> + auto call(const Json& j, T& val, priority_tag<1>) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } - template <typename Json, typename T> - void call(const Json &, T&, priority_tag<0>) const noexcept - { - static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); - } + template <typename Json, typename T> + void call(const Json&, T&, priority_tag<0>) const noexcept + { + static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + } -public: - template <typename Json, typename T> - void operator()(const Json &j, T &val) const - noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1>{}))) - { - return call(j, val, priority_tag<1>{}); - } + public: + template <typename Json, typename T> + void operator()(const Json& j, T& val) const + noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) + { + return call(j, val, priority_tag<1> {}); + } }; // taken from ranges-v3 @@ -830,8 +866,8 @@ struct DecimalSeparator : std::numpunct<char> inline namespace { -constexpr const auto & to_json = detail::static_const<detail::to_json_fn>::value; -constexpr const auto & from_json = detail::static_const<detail::from_json_fn>::value; +constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; +constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -846,10 +882,10 @@ struct adl_serializer } template <typename Json, typename T> - static void to_json(Json &j, T &&val) noexcept( + static void to_json(Json& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<T>(val)); } }; @@ -947,7 +983,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(const Json &); + template <typename Json> friend std::string detail::type_name(const Json&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -1849,15 +1885,15 @@ class basic_json */ template <typename T, typename U = uncvref_t<T>, enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, int> = 0> - basic_json(T &&val) noexcept(noexcept(JSONSerializer<U>::to_json( - std::declval<basic_json_t &>(), std::forward<T>(val)))) + basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t&>(), std::forward<T>(val)))) { - JSONSerializer<U>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<T>(val)); } /*! @@ -2013,7 +2049,7 @@ class basic_json @since version 1.0.0 */ static basic_json array(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::array); } @@ -2053,7 +2089,7 @@ class basic_json @since version 1.0.0 */ static basic_json object(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::object); } @@ -2394,7 +2430,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { // check that passed value is valid other.assert_invariant(); @@ -3020,7 +3056,7 @@ class basic_json enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const { - return *this; + return *this; } /*! @@ -3032,7 +3068,7 @@ class basic_json - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); - @return a value of type U + @return a value of type U @throw what json_serializer<U> from_json method throws @@ -3040,27 +3076,27 @@ class basic_json */ template < typename T, - typename U = uncvref_t<T>, - enable_if_t< + typename U = uncvref_t<T>, + enable_if_t < not std::is_same<basic_json_t, U>::value and - detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, - U>::value, - int> = 0> + detail::has_from_json<basic_json_t, U>::value and + not detail::has_non_default_from_json<basic_json_t, + U>::value, + int > = 0 > // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t &>(), std::declval<U &>()))) - -> U + std::declval<const basic_json_t&>(), std::declval<U&>()))) + -> U { - static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); - U ret; - JSONSerializer<U>::from_json(*this, ret); - return ret; + static_assert(std::is_default_constructible<U>::value and + std::is_copy_constructible<U>::value, + "Types must be DefaultConstructible and " + "CopyConstructible when used with get"); + U ret; + JSONSerializer<U>::from_json(*this, ret); + return ret; } /*! @@ -3072,7 +3108,7 @@ class basic_json - U is not @ref basic_json - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); - @return a value of type U + @return a value of type U @throw what json_serializer<U> from_json method throws @@ -3081,12 +3117,12 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, - int> = 0> - uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t &>()))) + detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, + int> = 0 > + uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { - return JSONSerializer<T>::from_json(*this); + return JSONSerializer<T>::from_json(*this); } /*! @@ -3168,8 +3204,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -3196,8 +3232,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -4250,14 +4286,14 @@ class basic_json case value_t::object: { result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); + last.m_it.object_iterator); break; } case value_t::array: { result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); + last.m_it.array_iterator); break; } @@ -5474,9 +5510,9 @@ class basic_json // insert to array and return iterator iterator result(this); result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); return result; } @@ -5546,7 +5582,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { std::swap(m_type, other.m_type); std::swap(m_value, other.m_value); @@ -7871,7 +7907,10 @@ class basic_json @since version 1.0.0 */ - std::string type_name() const { return detail::type_name(*this); } + std::string type_name() const + { + return detail::type_name(*this); + } private: /*! @@ -8086,13 +8125,13 @@ class basic_json o << (pretty_print ? ",\n" : ","); } o << string_t(new_indent, ' ') << "\"" - << escape_string(i->first) << "\":" - << (pretty_print ? " " : ""); - i->second.dump(o, pretty_print, indent_step, new_indent); + << escape_string(i->first) << "\":" + << (pretty_print ? " " : ""); + i->second.dump(o, pretty_print, indent_step, new_indent); } - // decrease indentation - if (pretty_print) + // decrease indentation + if (pretty_print) { new_indent -= indent_step; o << "\n"; @@ -8137,16 +8176,16 @@ class basic_json } o << string_t(new_indent, ' ') << "]"; - return; + return; } - case value_t::string: + case value_t::string: { o << string_t("\"") << escape_string(*m_value.string) << "\""; - return; + return; } - case value_t::boolean: + case value_t::boolean: { o << (m_value.boolean ? "true" : "false"); return; @@ -8220,126 +8259,126 @@ class basic_json */ class primitive_iterator_t { - public: + public: difference_type get_value() const noexcept - { - return m_it; - } - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } + { + return m_it; + } + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return (m_it == begin_value); - } + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return (m_it == begin_value); + } - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return (m_it == end_value); - } + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return (m_it == end_value); + } - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } - friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return !(lhs == rhs); - } + friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return !(lhs == rhs); + } - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } - friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it <= rhs.m_it; - } + friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it <= rhs.m_it; + } - friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it > rhs.m_it; - } + friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it > rhs.m_it; + } - friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it >= rhs.m_it; - } + friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it >= rhs.m_it; + } - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } - primitive_iterator_t& operator++(int) - { - m_it++; - return *this; - } + primitive_iterator_t& operator++(int) + { + m_it++; + return *this; + } - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } - primitive_iterator_t& operator--(int) - { - m_it--; - return *this; - } + primitive_iterator_t& operator--(int) + { + m_it--; + return *this; + } - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; - /// iterator as signed integer type - difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); - }; + /// iterator as signed integer type + difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); + }; /*! @brief an iterator value @@ -8359,104 +8398,104 @@ class basic_json /// create an uninitialized internal_iterator internal_iterator() noexcept - : object_iterator(), array_iterator(), primitive_iterator() - {} + : object_iterator(), array_iterator(), primitive_iterator() + {} }; /// proxy class for the iterator_wrapper functions template<typename IteratorType> class iteration_proxy { - private: + private: /// helper class for iteration class iteration_proxy_internal { - private: + private: /// the iterator IteratorType anchor; /// an index for arrays (used to create key names) size_t array_index = 0; - public: + public: explicit iteration_proxy_internal(IteratorType it) noexcept - : anchor(it) - {} + : anchor(it) + {} - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// inequality operator (needed for range-based for) - bool operator!= (const iteration_proxy_internal& o) const - { - return anchor != o.anchor; - } - - /// return key of the iterator - typename basic_json::string_t key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() { - return std::to_string(array_index); + return *this; } - // use key from the object - case value_t::object: + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() { - return anchor.key(); + ++anchor; + ++array_index; + + return *this; } - // use an empty key for all primitive types - default: + /// inequality operator (needed for range-based for) + bool operator!= (const iteration_proxy_internal& o) const { - return ""; + return anchor != o.anchor; } - } - } - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } + /// return key of the iterator + typename basic_json::string_t key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + { + return std::to_string(array_index); + } + + // use key from the object + case value_t::object: + { + return anchor.key(); + } + + // use an empty key for all primitive types + default: + { + return ""; + } + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } }; - /// the container to iterate - typename IteratorType::reference container; + /// the container to iterate + typename IteratorType::reference container; - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) - {} + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) + {} - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } }; public: @@ -8480,7 +8519,7 @@ class basic_json @since version 1.0.0, simplified in version 2.0.9 */ template<typename U> - class iter_impl : public std::iterator<std::random_access_iterator_tag, U> + class iter_impl : public std::iterator<std::random_access_iterator_tag, U> { /// allow basic_json to access private members friend class basic_json; @@ -8490,19 +8529,19 @@ class basic_json or std::is_same<U, const basic_json>::value, "iter_impl only accepts (const) basic_json"); - public: + public: /// the type of the values when the iterator is dereferenced using value_type = typename basic_json::value_type; /// a type to represent differences between iterators using difference_type = typename basic_json::difference_type; /// defines a pointer to the type iterated over (value_type) using pointer = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_pointer, - typename basic_json::pointer>::type; + typename basic_json::const_pointer, + typename basic_json::pointer>::type; /// defines a reference to the type iterated over (value_type) using reference = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_reference, - typename basic_json::reference>::type; + typename basic_json::const_reference, + typename basic_json::reference>::type; /// the category of the iterator using iterator_category = std::bidirectional_iterator_tag; @@ -8516,566 +8555,566 @@ class basic_json @post The iterator is initialized; i.e. `m_object != nullptr`. */ explicit iter_impl(pointer object) noexcept - : m_object(object) - { - assert(m_object != nullptr); - - switch (m_object->m_type) + : m_object(object) { - case basic_json::value_t::object: + assert(m_object != nullptr); + + switch (m_object->m_type) { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /* - Use operator `const_iterator` instead of `const_iterator(const iterator& - other) noexcept` to avoid two class definitions for @ref iterator and - @ref const_iterator. - - This function is only called if this class is an @ref iterator. If this - class is a @ref const_iterator this function is not called. - */ - operator const_iterator() const - { - const_iterator ret; - - if (m_object) - { - ret.m_object = m_object; - ret.m_it = m_it; - } - - return ret; - } - - /*! - @brief copy constructor - @param[in] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief copy assignment - @param[in,out] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(iter_impl other) noexcept( - std::is_nothrow_move_constructible<pointer>::value and - std::is_nothrow_move_assignable<pointer>::value and - std::is_nothrow_move_constructible<internal_iterator>::value and - std::is_nothrow_move_assignable<internal_iterator>::value - ) - { - std::swap(m_object, other.m_object); - std::swap(m_it, other.m_it); - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case basic_json::value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case basic_json::value_t::null: - { - JSON_THROW(std::out_of_range("cannot get value")); - } - - default: - { - if (m_it.primitive_iterator.is_begin()) + case basic_json::value_t::object: { - return *m_object; + m_it.object_iterator = typename object_t::iterator(); + break; } - JSON_THROW(std::out_of_range("cannot get value")); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - default: - { - if (m_it.primitive_iterator.is_begin()) + case basic_json::value_t::array: { - return m_object; + m_it.array_iterator = typename array_t::iterator(); + break; } + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /* + Use operator `const_iterator` instead of `const_iterator(const iterator& + other) noexcept` to avoid two class definitions for @ref iterator and + @ref const_iterator. + + This function is only called if this class is an @ref iterator. If this + class is a @ref const_iterator this function is not called. + */ + operator const_iterator() const + { + const_iterator ret; + + if (m_object) + { + ret.m_object = m_object; + ret.m_it = m_it; + } + + return ret; + } + + /*! + @brief copy constructor + @param[in] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief copy assignment + @param[in,out] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(iter_impl other) noexcept( + std::is_nothrow_move_constructible<pointer>::value and + std::is_nothrow_move_assignable<pointer>::value and + std::is_nothrow_move_constructible<internal_iterator>::value and + std::is_nothrow_move_assignable<internal_iterator>::value + ) + { + std::swap(m_object, other.m_object); + std::swap(m_it, other.m_it); + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case basic_json::value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } - } - } + } - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator++(int) - { - auto result = *this; - ++(*this); - return result; - } + default: + { + if (m_it.primitive_iterator.is_begin()) + { + return *m_object; + } - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; + JSON_THROW(std::out_of_range("cannot get value")); + } } } - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } + assert(m_object != nullptr); - case basic_json::value_t::array: + switch (m_object->m_type) { - std::advance(m_it.array_iterator, -1); - break; - } + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } - default: - { - --m_it.primitive_iterator; - break; + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (m_it.primitive_iterator.is_begin()) + { + return m_object; + } + + JSON_THROW(std::out_of_range("cannot get value")); + } } } - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator++(int) { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - return (m_it.object_iterator == other.m_it.object_iterator); } - case basic_json::value_t::array: - { - return (m_it.array_iterator == other.m_it.array_iterator); - } + assert(m_object != nullptr); - default: + switch (m_object->m_type) { - return (m_it.primitive_iterator == other.m_it.primitive_iterator); + case basic_json::value_t::object: + { + return (m_it.object_iterator == other.m_it.object_iterator); + } + + case basic_json::value_t::array: + { + return (m_it.array_iterator == other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } } } - } - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } + } - assert(m_object != nullptr); + assert(m_object != nullptr); - switch (m_object->m_type) - { - case basic_json::value_t::object: + switch (m_object->m_type) { + case basic_json::value_t::object: + { JSON_THROW(std::domain_error("cannot compare order of object iterators")); - } - - case basic_json::value_t::array: - { - return (m_it.array_iterator < other.m_it.array_iterator); - } - - default: - { - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - return m_it.array_iterator - other.m_it.array_iterator; - } - - default: - { - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); - } - - case basic_json::value_t::array: - { - return *std::next(m_it.array_iterator, n); - } - - case basic_json::value_t::null: - { - JSON_THROW(std::out_of_range("cannot get value")); - } - - default: - { - if (m_it.primitive_iterator.get_value() == -n) - { - return *m_object; } - JSON_THROW(std::out_of_range("cannot get value")); + case basic_json::value_t::array: + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } } } - } - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const - { - assert(m_object != nullptr); - - if (m_object->is_object()) + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const { - return m_it.object_iterator->first; + return not other.operator < (*this); } + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); + } + + case basic_json::value_t::array: + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); + } + + case basic_json::value_t::array: + { + return *std::next(m_it.array_iterator, n); + } + + case basic_json::value_t::null: + { + JSON_THROW(std::out_of_range("cannot get value")); + } + + default: + { + if (m_it.primitive_iterator.get_value() == -n) + { + return *m_object; + } + + JSON_THROW(std::out_of_range("cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (m_object->is_object()) + { + return m_it.object_iterator->first; + } + JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); - } + } - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator m_it = internal_iterator(); - }; + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator m_it = internal_iterator(); + }; /*! @brief a template for a reverse iterator class @@ -9095,9 +9134,9 @@ class basic_json @since version 1.0.0 */ template<typename Base> - class json_reverse_iterator : public std::reverse_iterator<Base> + class json_reverse_iterator : public std::reverse_iterator<Base> { - public: + public: /// shortcut to the reverse iterator adaptor using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element @@ -9105,89 +9144,89 @@ class basic_json /// create reverse iterator from iterator json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) - {} + : base_iterator(it) + {} - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept - : base_iterator(it) - {} + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept + : base_iterator(it) + {} - /// post-increment (it++) - json_reverse_iterator operator++(int) - { - return base_iterator::operator++(1); - } + /// post-increment (it++) + json_reverse_iterator operator++(int) + { + return base_iterator::operator++(1); + } - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - base_iterator::operator++(); - return *this; - } + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + base_iterator::operator++(); + return *this; + } - /// post-decrement (it--) - json_reverse_iterator operator--(int) - { - return base_iterator::operator--(1); - } + /// post-decrement (it--) + json_reverse_iterator operator--(int) + { + return base_iterator::operator--(1); + } - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - base_iterator::operator--(); - return *this; - } + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + base_iterator::operator--(); + return *this; + } - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - base_iterator::operator+=(i); - return *this; - } + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + base_iterator::operator+=(i); + return *this; + } - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return this->base() - other.base(); - } + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return this->base() - other.base(); + } - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } - /// return the key of an object iterator - typename object_t::key_type key() const - { - auto it = --this->base(); - return it.key(); - } + /// return the key of an object iterator + typename object_t::key_type key() const + { + auto it = --this->base(); + return it.key(); + } - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } - }; + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } + }; private: @@ -9204,1133 +9243,1611 @@ class basic_json */ class lexer { - public: + public: /// token types for the parser enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input ///< indicating the end of the input buffer - }; - - /// the char type to use in the lexer - using lexer_char_t = unsigned char; - - /// a lexer from a buffer with given length - lexer(const lexer_char_t* buff, const size_t len) noexcept - : m_content(buff) - { - assert(m_content != nullptr); - m_start = m_cursor = m_content; - m_limit = m_content + len; - } - - /// a lexer from an input stream - explicit lexer(std::istream& s) - : m_stream(&s), m_line_buffer() - { - // immediately abort if stream is erroneous - if (s.fail()) { - JSON_THROW(std::invalid_argument("stream error")); - } - - // fill buffer - fill_line_buffer(); - - // skip UTF-8 byte-order mark - if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") - { - m_line_buffer[0] = ' '; - m_line_buffer[1] = ' '; - m_line_buffer[2] = ' '; - } - } - - // switch off unwanted functions (due to pointer members) - lexer() = delete; - lexer(const lexer&) = delete; - lexer operator=(const lexer&) = delete; - - /*! - @brief create a string from one or two Unicode code points - - There are two cases: (1) @a codepoint1 is in the Basic Multilingual - Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) - @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to - represent a code point above U+FFFF. - - @param[in] codepoint1 the code point (can be high surrogate) - @param[in] codepoint2 the code point (can be low surrogate or 0) - - @return string representation of the code point; the length of the - result string is between 1 and 4 characters. - - @throw std::out_of_range if code point is > 0x10ffff; example: `"code - points above 0x10FFFF are invalid"` - @throw std::invalid_argument if the low surrogate is invalid; example: - `""missing or wrong low surrogate""` - - @complexity Constant. - - @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> - */ - static string_t to_unicode(const std::size_t codepoint1, - const std::size_t codepoint2 = 0) - { - // calculate the code point from the given code points - std::size_t codepoint = codepoint1; - - // check if codepoint1 is a high surrogate - if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) - { - // check if codepoint2 is a low surrogate - if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) - { - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); - } - } - - string_t result; - - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - result.append(1, static_cast<typename string_t::value_type>(codepoint)); - } - else if (codepoint <= 0x7ff) - { - // 2-byte characters: 110xxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0xffff) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0x10ffff) - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else - { - JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); - } - - return result; - } - - /// return name of values of type token_type (only used for errors) - static std::string token_type_name(const token_type t) - { - switch (t) - { - case token_type::uninitialized: - return "<uninitialized>"; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case token_type::value_number: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return "<parse error>"; - case token_type::end_of_input: - return "end of input"; - default: - { - // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - } - - /*! - This function implements a scanner for JSON. It is specified using - regular expressions that try to follow RFC 7159 as close as possible. - These regular expressions are then translated into a minimized - deterministic finite automaton (DFA) by the tool - [re2c](http://re2c.org). As a result, the translated code for this - function consists of a large block of code with `goto` jumps. - - @return the class of the next token read from the buffer - - @complexity Linear in the length of the input.\n - - Proposition: The loop below will always terminate for finite input.\n - - Proof (by contradiction): Assume a finite input. To loop forever, the - loop must never hit code with a `break` statement. The only code - snippets without a `break` statement are the continue statements for - whitespace and byte-order-marks. To loop forever, the input must be an - infinite sequence of whitespace or byte-order-marks. This contradicts - the assumption of finite input, q.e.d. - */ - token_type scan() - { - while (true) - { - // pointer for backtracking information - m_marker = nullptr; - - // remember the begin of the token - m_start = m_cursor; - assert(m_start != nullptr); - - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_number, ///< a number -- use get_number() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input ///< indicating the end of the input buffer }; - if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - if (yych <= '[') { - if (yych <= '-') { - if (yych <= '"') { - if (yych <= 0x00) goto basic_json_parser_2; - if (yych <= '!') goto basic_json_parser_4; - goto basic_json_parser_9; - } else { - if (yych <= '+') goto basic_json_parser_4; - if (yych <= ',') goto basic_json_parser_10; - goto basic_json_parser_12; - } - } else { - if (yych <= '9') { - if (yych <= '/') goto basic_json_parser_4; - if (yych <= '0') goto basic_json_parser_13; - goto basic_json_parser_15; - } else { - if (yych <= ':') goto basic_json_parser_17; - if (yych <= 'Z') goto basic_json_parser_4; - goto basic_json_parser_19; - } - } - } else { - if (yych <= 'n') { - if (yych <= 'e') { - if (yych == ']') goto basic_json_parser_21; - goto basic_json_parser_4; - } else { - if (yych <= 'f') goto basic_json_parser_23; - if (yych <= 'm') goto basic_json_parser_4; - goto basic_json_parser_24; - } - } else { - if (yych <= 'z') { - if (yych == 't') goto basic_json_parser_25; - goto basic_json_parser_4; - } else { - if (yych <= '{') goto basic_json_parser_26; - if (yych == '}') goto basic_json_parser_28; - goto basic_json_parser_4; - } - } - } -basic_json_parser_2: - ++m_cursor; - { last_token_type = token_type::end_of_input; break; } -basic_json_parser_4: - ++m_cursor; -basic_json_parser_5: - { last_token_type = token_type::parse_error; break; } -basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - { continue; } -basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) goto basic_json_parser_5; - if (yych <= 0x7F) goto basic_json_parser_31; - if (yych <= 0xC1) goto basic_json_parser_5; - if (yych <= 0xF4) goto basic_json_parser_31; - goto basic_json_parser_5; -basic_json_parser_10: - ++m_cursor; - { last_token_type = token_type::value_separator; break; } -basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_5; - if (yych <= '0') goto basic_json_parser_13; - if (yych <= '9') goto basic_json_parser_15; - goto basic_json_parser_5; -basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - } -basic_json_parser_14: - { last_token_type = token_type::value_number; break; } -basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 64) { - goto basic_json_parser_15; - } - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } -basic_json_parser_17: - ++m_cursor; - { last_token_type = token_type::name_separator; break; } -basic_json_parser_19: - ++m_cursor; - { last_token_type = token_type::begin_array; break; } -basic_json_parser_21: - ++m_cursor; - { last_token_type = token_type::end_array; break; } -basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') goto basic_json_parser_45; - goto basic_json_parser_5; -basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') goto basic_json_parser_46; - goto basic_json_parser_5; -basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') goto basic_json_parser_47; - goto basic_json_parser_5; -basic_json_parser_26: - ++m_cursor; - { last_token_type = token_type::begin_object; break; } -basic_json_parser_28: - ++m_cursor; - { last_token_type = token_type::end_object; break; } -basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; -basic_json_parser_31: - if (yybm[0+yych] & 128) { - goto basic_json_parser_30; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x1F) goto basic_json_parser_32; - if (yych <= '"') goto basic_json_parser_33; - goto basic_json_parser_35; - } else { - if (yych <= 0xC1) goto basic_json_parser_32; - if (yych <= 0xDF) goto basic_json_parser_36; - goto basic_json_parser_37; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto basic_json_parser_39; - goto basic_json_parser_38; - } else { - if (yych <= 0xF0) goto basic_json_parser_40; - if (yych <= 0xF3) goto basic_json_parser_41; - if (yych <= 0xF4) goto basic_json_parser_42; - } - } -basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) { - goto basic_json_parser_5; - } else { - goto basic_json_parser_14; - } -basic_json_parser_33: - ++m_cursor; - { last_token_type = token_type::value_string; break; } -basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'e') { - if (yych <= '/') { - if (yych == '"') goto basic_json_parser_30; - if (yych <= '.') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych <= '\\') { - if (yych <= '[') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych == 'b') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'f') goto basic_json_parser_30; - if (yych == 'n') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 's') { - if (yych <= 'r') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 't') goto basic_json_parser_30; - if (yych <= 'u') goto basic_json_parser_48; - goto basic_json_parser_32; - } - } - } -basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_30; - goto basic_json_parser_32; -basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x9F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; -basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; -basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x9F) goto basic_json_parser_36; - goto basic_json_parser_32; -basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x8F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; -basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; -basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x8F) goto basic_json_parser_38; - goto basic_json_parser_32; -basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_32; -basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') { - if (yych == '+') goto basic_json_parser_51; - goto basic_json_parser_32; - } else { - if (yych <= '-') goto basic_json_parser_51; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_32; - } -basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_54; - goto basic_json_parser_32; -basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_55; - goto basic_json_parser_32; -basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') goto basic_json_parser_56; - goto basic_json_parser_32; -basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_57; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_57; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_57; - goto basic_json_parser_32; - } -basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'D') { - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } -basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych >= ':') goto basic_json_parser_32; -basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_14; -basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') goto basic_json_parser_58; - goto basic_json_parser_32; -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_59; - goto basic_json_parser_32; -basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_61; - goto basic_json_parser_32; -basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_63; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_63; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_63; - goto basic_json_parser_32; - } -basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_64; - goto basic_json_parser_32; -basic_json_parser_59: - ++m_cursor; - { last_token_type = token_type::literal_null; break; } -basic_json_parser_61: - ++m_cursor; - { last_token_type = token_type::literal_true; break; } -basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_66; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_66; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_66; - goto basic_json_parser_32; - } -basic_json_parser_64: - ++m_cursor; - { last_token_type = token_type::literal_false; break; } -basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_30; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } - } + /// the char type to use in the lexer + using lexer_char_t = unsigned char; - return last_token_type; - } - - /*! - @brief append data from the stream to the line buffer - - This function is called by the scan() function when the end of the - buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be - incremented without leaving the limits of the line buffer. Note re2c - decides when to call this function. - - If the lexer reads from contiguous storage, there is no trailing null - byte. Therefore, this function must make sure to add these padding - null bytes. - - If the lexer reads from an input stream, this function reads the next - line of the input. - - @pre - p p p p p p u u u u u x . . . . . . - ^ ^ ^ ^ - m_content m_start | m_limit - m_cursor - - @post - u u u u u x x x x x x x . . . . . . - ^ ^ ^ - | m_cursor m_limit - m_start - m_content - */ - void fill_line_buffer(size_t n = 0) - { - // if line buffer is used, m_content points to its data - assert(m_line_buffer.empty() - or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); - - // if line buffer is used, m_limit is set past the end of its data - assert(m_line_buffer.empty() - or m_limit == m_content + m_line_buffer.size()); - - // pointer relationships - assert(m_content <= m_start); - assert(m_start <= m_cursor); - assert(m_cursor <= m_limit); - assert(m_marker == nullptr or m_marker <= m_limit); - - // number of processed characters (p) - const auto num_processed_chars = static_cast<size_t>(m_start - m_content); - // offset for m_marker wrt. to m_start - const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; - // number of unprocessed characters (u) - const auto offset_cursor = m_cursor - m_start; - - // no stream is used or end of file is reached - if (m_stream == nullptr or m_stream->eof()) + /// a lexer from a buffer with given length + lexer(const lexer_char_t* buff, const size_t len) noexcept + : m_content(buff) { - // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right - // thing. See http://stackoverflow.com/q/28142011/266378 - m_line_buffer.assign(m_start, m_limit); + assert(m_content != nullptr); + m_start = m_cursor = m_content; + m_limit = m_content + len; + } - // append n characters to make sure that there is sufficient - // space between m_cursor and m_limit - m_line_buffer.append(1, '\x00'); - if (n > 0) + /// a lexer from an input stream + explicit lexer(std::istream& s) + : m_stream(&s), m_line_buffer() + { + // immediately abort if stream is erroneous + if (s.fail()) { - m_line_buffer.append(n - 1, '\x01'); + JSON_THROW(std::invalid_argument("stream error")); + } + + // fill buffer + fill_line_buffer(); + + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") + { + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; } } - else + + // switch off unwanted functions (due to pointer members) + lexer() = delete; + lexer(const lexer&) = delete; + lexer operator=(const lexer&) = delete; + + /*! + @brief create a string from one or two Unicode code points + + There are two cases: (1) @a codepoint1 is in the Basic Multilingual + Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) + @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to + represent a code point above U+FFFF. + + @param[in] codepoint1 the code point (can be high surrogate) + @param[in] codepoint2 the code point (can be low surrogate or 0) + + @return string representation of the code point; the length of the + result string is between 1 and 4 characters. + + @throw std::out_of_range if code point is > 0x10ffff; example: `"code + points above 0x10FFFF are invalid"` + @throw std::invalid_argument if the low surrogate is invalid; example: + `""missing or wrong low surrogate""` + + @complexity Constant. + + @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> + */ + static string_t to_unicode(const std::size_t codepoint1, + const std::size_t codepoint2 = 0) { - // delete processed characters from line buffer - m_line_buffer.erase(0, num_processed_chars); - // read next line from input stream - m_line_buffer_tmp.clear(); - std::getline(*m_stream, m_line_buffer_tmp, '\n'); + // calculate the code point from the given code points + std::size_t codepoint = codepoint1; - // add line with newline symbol to the line buffer - m_line_buffer += m_line_buffer_tmp; - m_line_buffer.push_back('\n'); - } - - // set pointers - m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); - assert(m_content != nullptr); - m_start = m_content; - m_marker = m_start + offset_marker; - m_cursor = m_start + offset_cursor; - m_limit = m_start + m_line_buffer.size(); - } - - /// return string representation of last read token - string_t get_token_string() const - { - assert(m_start != nullptr); - return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), - static_cast<size_t>(m_cursor - m_start)); - } - - /*! - @brief return string value for string tokens - - The function iterates the characters between the opening and closing - quotes of the string value. The complete string is the range - [m_start,m_cursor). Consequently, we iterate from m_start+1 to - m_cursor-1. - - We differentiate two cases: - - 1. Escaped characters. In this case, a new character is constructed - according to the nature of the escape. Some escapes create new - characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied - as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape - `"\\uxxxx"` need special care. In this case, to_unicode takes care - of the construction of the values. - 2. Unescaped characters are copied as is. - - @pre `m_cursor - m_start >= 2`, meaning the length of the last token - is at least 2 bytes which is trivially true for any string (which - consists of at least two quotes). - - " c1 c2 c3 ... " - ^ ^ - m_start m_cursor - - @complexity Linear in the length of the string.\n - - Lemma: The loop body will always terminate.\n - - Proof (by contradiction): Assume the loop body does not terminate. As - the loop body does not contain another loop, one of the called - functions must never return. The called functions are `std::strtoul` - and to_unicode. Neither function can loop forever, so the loop body - will never loop forever which contradicts the assumption that the loop - body does not terminate, q.e.d.\n - - Lemma: The loop condition for the for loop is eventually false.\n - - Proof (by contradiction): Assume the loop does not terminate. Due to - the above lemma, this can only be due to a tautological loop - condition; that is, the loop condition i < m_cursor - 1 must always be - true. Let x be the change of i for any loop iteration. Then - m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This - can be rephrased to m_cursor - m_start - 2 > x. With the - precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value - of i is strictly increasing with each iteration, as it is incremented - by 1 in the iteration expression and never decremented inside the loop - body. Hence, the loop condition will eventually be false which - contradicts the assumption that the loop condition is a tautology, - q.e.d. - - @return string value of current token without opening and closing - quotes - @throw std::out_of_range if to_unicode fails - */ - string_t get_string() const - { - assert(m_cursor - m_start >= 2); - - string_t result; - result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); - - // iterate the result between the quotes - for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) - { - // find next escape character - auto e = std::find(i, m_cursor - 1, '\\'); - if (e != i) + // check if codepoint1 is a high surrogate + if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) { - // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 - for (auto k = i; k < e; k++) + // check if codepoint2 is a low surrogate + if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) { - result.push_back(static_cast<typename string_t::value_type>(*k)); - } - i = e - 1; // -1 because of ++i - } - else - { - // processing escaped character - // read next character - ++i; - - switch (*i) - { - // the default escapes - case 't': - { - result += "\t"; - break; - } - case 'b': - { - result += "\b"; - break; - } - case 'f': - { - result += "\f"; - break; - } - case 'n': - { - result += "\n"; - break; - } - case 'r': - { - result += "\r"; - break; - } - case '\\': - { - result += "\\"; - break; - } - case '/': - { - result += "/"; - break; - } - case '"': - { - result += "\""; - break; - } - - // unicode - case 'u': - { - // get code xxxx from uxxxx - auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), - 4).c_str(), nullptr, 16); - - // check if codepoint is a high surrogate - if (codepoint >= 0xD800 and codepoint <= 0xDBFF) - { - // make sure there is a subsequent unicode - if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') - { - JSON_THROW(std::invalid_argument("missing low surrogate")); - } - - // get code yyyy from uxxxx\uyyyy - auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> - (i + 7), 4).c_str(), nullptr, 16); - result += to_unicode(codepoint, codepoint2); - // skip the next 10 characters (xxxx\uyyyy) - i += 10; - } - else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) - { - // we found a lone low surrogate - JSON_THROW(std::invalid_argument("missing high surrogate")); - } - else - { - // add unicode character(s) - result += to_unicode(codepoint); - // skip the next four characters (xxxx) - i += 4; - } - break; - } - } - } - } - - return result; - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - long double str_to_float_t(long double* /* type */, char** endptr) const - { - return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const - { - return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief return number value for number tokens - - This function translates the last token into the most appropriate - number type (either integer, unsigned integer or floating point), - which is passed back to the caller via the result parameter. - - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. - - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. - */ - void get_number(basic_json& result) const - { - assert(m_start != nullptr); - - const lexer::lexer_char_t* curptr = m_start; - - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') - { - type = value_t::number_integer; - max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') - { - if (*curptr == '.') - { - // don't count '.' but change to float - type = value_t::number_float; - continue; - } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details - type = value_t::number_float; - break; - } - - // skip if definitely not an integer - if (type != value_t::number_float) - { - auto digit = static_cast<number_unsigned_t>(*curptr - '0'); - - // overflow if value * 10 + digit > max, move terms around - // to avoid overflow in intermediate values - if (value > (max - digit) / 10) - { - // overflow - type = value_t::number_float; + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; } else { - // no overflow - value = value * 10 + digit; + JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); + } + } + + string_t result; + + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + result.append(1, static_cast<typename string_t::value_type>(codepoint)); + } + else if (codepoint <= 0x7ff) + { + // 2-byte characters: 110xxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0xffff) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0x10ffff) + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else + { + JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); + } + + return result; + } + + /// return name of values of type token_type (only used for errors) + static std::string token_type_name(const token_type t) + { + switch (t) + { + case token_type::uninitialized: + return "<uninitialized>"; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_number: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return "<parse error>"; + case token_type::end_of_input: + return "end of input"; + default: + { + // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE } } } - // save the value (if not a float) - if (type == value_t::number_unsigned) - { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - // invariant: if we parsed a '-', the absolute value is between - // 0 (we allow -0) and max == -INT64_MIN - assert(value >= 0); - assert(value <= max); + /*! + This function implements a scanner for JSON. It is specified using + regular expressions that try to follow RFC 7159 as close as possible. + These regular expressions are then translated into a minimized + deterministic finite automaton (DFA) by the tool + [re2c](http://re2c.org). As a result, the translated code for this + function consists of a large block of code with `goto` jumps. - if (value == max) + @return the class of the next token read from the buffer + + @complexity Linear in the length of the input.\n + + Proposition: The loop below will always terminate for finite input.\n + + Proof (by contradiction): Assume a finite input. To loop forever, the + loop must never hit code with a `break` statement. The only code + snippets without a `break` statement are the continue statements for + whitespace and byte-order-marks. To loop forever, the input must be an + infinite sequence of whitespace or byte-order-marks. This contradicts + the assumption of finite input, q.e.d. + */ + token_type scan() + { + while (true) { - // we cannot simply negate value (== max == -INT64_MIN), - // see https://github.com/nlohmann/json/issues/389 - result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + // pointer for backtracking information + m_marker = nullptr; + + // remember the begin of the token + m_start = m_cursor; + assert(m_start != nullptr); + + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) + { + fill_line_buffer(5); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + if (yych <= '[') + { + if (yych <= '-') + { + if (yych <= '"') + { + if (yych <= 0x00) + { + goto basic_json_parser_2; + } + if (yych <= '!') + { + goto basic_json_parser_4; + } + goto basic_json_parser_9; + } + else + { + if (yych <= '+') + { + goto basic_json_parser_4; + } + if (yych <= ',') + { + goto basic_json_parser_10; + } + goto basic_json_parser_12; + } + } + else + { + if (yych <= '9') + { + if (yych <= '/') + { + goto basic_json_parser_4; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + goto basic_json_parser_15; + } + else + { + if (yych <= ':') + { + goto basic_json_parser_17; + } + if (yych <= 'Z') + { + goto basic_json_parser_4; + } + goto basic_json_parser_19; + } + } + } + else + { + if (yych <= 'n') + { + if (yych <= 'e') + { + if (yych == ']') + { + goto basic_json_parser_21; + } + goto basic_json_parser_4; + } + else + { + if (yych <= 'f') + { + goto basic_json_parser_23; + } + if (yych <= 'm') + { + goto basic_json_parser_4; + } + goto basic_json_parser_24; + } + } + else + { + if (yych <= 'z') + { + if (yych == 't') + { + goto basic_json_parser_25; + } + goto basic_json_parser_4; + } + else + { + if (yych <= '{') + { + goto basic_json_parser_26; + } + if (yych == '}') + { + goto basic_json_parser_28; + } + goto basic_json_parser_4; + } + } + } +basic_json_parser_2: + ++m_cursor; + { + last_token_type = token_type::end_of_input; + break; + } +basic_json_parser_4: + ++m_cursor; +basic_json_parser_5: + { + last_token_type = token_type::parse_error; + break; + } +basic_json_parser_6: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + { + continue; + } +basic_json_parser_9: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) + { + goto basic_json_parser_5; + } + if (yych <= 0x7F) + { + goto basic_json_parser_31; + } + if (yych <= 0xC1) + { + goto basic_json_parser_5; + } + if (yych <= 0xF4) + { + goto basic_json_parser_31; + } + goto basic_json_parser_5; +basic_json_parser_10: + ++m_cursor; + { + last_token_type = token_type::value_separator; + break; + } +basic_json_parser_12: + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_5; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + if (yych <= '9') + { + goto basic_json_parser_15; + } + goto basic_json_parser_5; +basic_json_parser_13: + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + } +basic_json_parser_14: + { + last_token_type = token_type::value_number; + break; + } +basic_json_parser_15: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 64) + { + goto basic_json_parser_15; + } + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } +basic_json_parser_17: + ++m_cursor; + { + last_token_type = token_type::name_separator; + break; + } +basic_json_parser_19: + ++m_cursor; + { + last_token_type = token_type::begin_array; + break; + } +basic_json_parser_21: + ++m_cursor; + { + last_token_type = token_type::end_array; + break; + } +basic_json_parser_23: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') + { + goto basic_json_parser_45; + } + goto basic_json_parser_5; +basic_json_parser_24: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') + { + goto basic_json_parser_46; + } + goto basic_json_parser_5; +basic_json_parser_25: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') + { + goto basic_json_parser_47; + } + goto basic_json_parser_5; +basic_json_parser_26: + ++m_cursor; + { + last_token_type = token_type::begin_object; + break; + } +basic_json_parser_28: + ++m_cursor; + { + last_token_type = token_type::end_object; + break; + } +basic_json_parser_30: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; +basic_json_parser_31: + if (yybm[0 + yych] & 128) + { + goto basic_json_parser_30; + } + if (yych <= 0xE0) + { + if (yych <= '\\') + { + if (yych <= 0x1F) + { + goto basic_json_parser_32; + } + if (yych <= '"') + { + goto basic_json_parser_33; + } + goto basic_json_parser_35; + } + else + { + if (yych <= 0xC1) + { + goto basic_json_parser_32; + } + if (yych <= 0xDF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_37; + } + } + else + { + if (yych <= 0xEF) + { + if (yych == 0xED) + { + goto basic_json_parser_39; + } + goto basic_json_parser_38; + } + else + { + if (yych <= 0xF0) + { + goto basic_json_parser_40; + } + if (yych <= 0xF3) + { + goto basic_json_parser_41; + } + if (yych <= 0xF4) + { + goto basic_json_parser_42; + } + } + } +basic_json_parser_32: + m_cursor = m_marker; + if (yyaccept == 0) + { + goto basic_json_parser_5; + } + else + { + goto basic_json_parser_14; + } +basic_json_parser_33: + ++m_cursor; + { + last_token_type = token_type::value_string; + break; + } +basic_json_parser_35: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'e') + { + if (yych <= '/') + { + if (yych == '"') + { + goto basic_json_parser_30; + } + if (yych <= '.') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych <= '\\') + { + if (yych <= '[') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych == 'b') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } + } + else + { + if (yych <= 'q') + { + if (yych <= 'f') + { + goto basic_json_parser_30; + } + if (yych == 'n') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 's') + { + if (yych <= 'r') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 't') + { + goto basic_json_parser_30; + } + if (yych <= 'u') + { + goto basic_json_parser_48; + } + goto basic_json_parser_32; + } + } + } +basic_json_parser_36: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; +basic_json_parser_37: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x9F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; +basic_json_parser_39: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x9F) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; +basic_json_parser_40: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x8F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; +basic_json_parser_42: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x8F) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; +basic_json_parser_43: + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_32; +basic_json_parser_44: + yych = *++m_cursor; + if (yych <= ',') + { + if (yych == '+') + { + goto basic_json_parser_51; + } + goto basic_json_parser_32; + } + else + { + if (yych <= '-') + { + goto basic_json_parser_51; + } + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_32; + } +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_54; + } + goto basic_json_parser_32; +basic_json_parser_46: + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_55; + } + goto basic_json_parser_32; +basic_json_parser_47: + yych = *++m_cursor; + if (yych == 'u') + { + goto basic_json_parser_56; + } + goto basic_json_parser_32; +basic_json_parser_48: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_57; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } +basic_json_parser_49: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'D') + { + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } +basic_json_parser_51: + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych >= ':') + { + goto basic_json_parser_32; + } +basic_json_parser_52: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_14; +basic_json_parser_54: + yych = *++m_cursor; + if (yych == 's') + { + goto basic_json_parser_58; + } + goto basic_json_parser_32; +basic_json_parser_55: + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_59; + } + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_61; + } + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_63; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } +basic_json_parser_58: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_64; + } + goto basic_json_parser_32; +basic_json_parser_59: + ++m_cursor; + { + last_token_type = token_type::literal_null; + break; + } +basic_json_parser_61: + ++m_cursor; + { + last_token_type = token_type::literal_true; + break; + } +basic_json_parser_63: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_66; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } +basic_json_parser_64: + ++m_cursor; + { + last_token_type = token_type::literal_false; + break; + } +basic_json_parser_66: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_30; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } + + } + + return last_token_type; + } + + /*! + @brief append data from the stream to the line buffer + + This function is called by the scan() function when the end of the + buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be + incremented without leaving the limits of the line buffer. Note re2c + decides when to call this function. + + If the lexer reads from contiguous storage, there is no trailing null + byte. Therefore, this function must make sure to add these padding + null bytes. + + If the lexer reads from an input stream, this function reads the next + line of the input. + + @pre + p p p p p p u u u u u x . . . . . . + ^ ^ ^ ^ + m_content m_start | m_limit + m_cursor + + @post + u u u u u x x x x x x x . . . . . . + ^ ^ ^ + | m_cursor m_limit + m_start + m_content + */ + void fill_line_buffer(size_t n = 0) + { + // if line buffer is used, m_content points to its data + assert(m_line_buffer.empty() + or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); + + // if line buffer is used, m_limit is set past the end of its data + assert(m_line_buffer.empty() + or m_limit == m_content + m_line_buffer.size()); + + // pointer relationships + assert(m_content <= m_start); + assert(m_start <= m_cursor); + assert(m_cursor <= m_limit); + assert(m_marker == nullptr or m_marker <= m_limit); + + // number of processed characters (p) + const auto num_processed_chars = static_cast<size_t>(m_start - m_content); + // offset for m_marker wrt. to m_start + const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; + // number of unprocessed characters (u) + const auto offset_cursor = m_cursor - m_start; + + // no stream is used or end of file is reached + if (m_stream == nullptr or m_stream->eof()) + { + // m_start may or may not be pointing into m_line_buffer at + // this point. We trust the standand library to do the right + // thing. See http://stackoverflow.com/q/28142011/266378 + m_line_buffer.assign(m_start, m_limit); + + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + if (n > 0) + { + m_line_buffer.append(n - 1, '\x01'); + } } else { - // all other values can be negated safely - result.m_value.number_integer = -static_cast<number_integer_t>(value); + // delete processed characters from line buffer + m_line_buffer.erase(0, num_processed_chars); + // read next line from input stream + m_line_buffer_tmp.clear(); + std::getline(*m_stream, m_line_buffer_tmp, '\n'); + + // add line with newline symbol to the line buffer + m_line_buffer += m_line_buffer_tmp; + m_line_buffer.push_back('\n'); } + + // set pointers + m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); + assert(m_content != nullptr); + m_start = m_content; + m_marker = m_start + offset_marker; + m_cursor = m_start + offset_cursor; + m_limit = m_start + m_line_buffer.size(); } - else + + /// return string representation of last read token + string_t get_token_string() const { - // parse with strtod + assert(m_start != nullptr); + return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), + static_cast<size_t>(m_cursor - m_start)); + } + + /*! + @brief return string value for string tokens + + The function iterates the characters between the opening and closing + quotes of the string value. The complete string is the range + [m_start,m_cursor). Consequently, we iterate from m_start+1 to + m_cursor-1. + + We differentiate two cases: + + 1. Escaped characters. In this case, a new character is constructed + according to the nature of the escape. Some escapes create new + characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied + as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape + `"\\uxxxx"` need special care. In this case, to_unicode takes care + of the construction of the values. + 2. Unescaped characters are copied as is. + + @pre `m_cursor - m_start >= 2`, meaning the length of the last token + is at least 2 bytes which is trivially true for any string (which + consists of at least two quotes). + + " c1 c2 c3 ... " + ^ ^ + m_start m_cursor + + @complexity Linear in the length of the string.\n + + Lemma: The loop body will always terminate.\n + + Proof (by contradiction): Assume the loop body does not terminate. As + the loop body does not contain another loop, one of the called + functions must never return. The called functions are `std::strtoul` + and to_unicode. Neither function can loop forever, so the loop body + will never loop forever which contradicts the assumption that the loop + body does not terminate, q.e.d.\n + + Lemma: The loop condition for the for loop is eventually false.\n + + Proof (by contradiction): Assume the loop does not terminate. Due to + the above lemma, this can only be due to a tautological loop + condition; that is, the loop condition i < m_cursor - 1 must always be + true. Let x be the change of i for any loop iteration. Then + m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This + can be rephrased to m_cursor - m_start - 2 > x. With the + precondition, we x <= 0, meaning that the loop condition holds + indefinitly if i is always decreased. However, observe that the value + of i is strictly increasing with each iteration, as it is incremented + by 1 in the iteration expression and never decremented inside the loop + body. Hence, the loop condition will eventually be false which + contradicts the assumption that the loop condition is a tautology, + q.e.d. + + @return string value of current token without opening and closing + quotes + @throw std::out_of_range if to_unicode fails + */ + string_t get_string() const + { + assert(m_cursor - m_start >= 2); + + string_t result; + result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); + + // iterate the result between the quotes + for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) + { + // find next escape character + auto e = std::find(i, m_cursor - 1, '\\'); + if (e != i) + { + // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 + for (auto k = i; k < e; k++) + { + result.push_back(static_cast<typename string_t::value_type>(*k)); + } + i = e - 1; // -1 because of ++i + } + else + { + // processing escaped character + // read next character + ++i; + + switch (*i) + { + // the default escapes + case 't': + { + result += "\t"; + break; + } + case 'b': + { + result += "\b"; + break; + } + case 'f': + { + result += "\f"; + break; + } + case 'n': + { + result += "\n"; + break; + } + case 'r': + { + result += "\r"; + break; + } + case '\\': + { + result += "\\"; + break; + } + case '/': + { + result += "/"; + break; + } + case '"': + { + result += "\""; + break; + } + + // unicode + case 'u': + { + // get code xxxx from uxxxx + auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), + 4).c_str(), nullptr, 16); + + // check if codepoint is a high surrogate + if (codepoint >= 0xD800 and codepoint <= 0xDBFF) + { + // make sure there is a subsequent unicode + if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') + { + JSON_THROW(std::invalid_argument("missing low surrogate")); + } + + // get code yyyy from uxxxx\uyyyy + auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> + (i + 7), 4).c_str(), nullptr, 16); + result += to_unicode(codepoint, codepoint2); + // skip the next 10 characters (xxxx\uyyyy) + i += 10; + } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + JSON_THROW(std::invalid_argument("missing high surrogate")); + } + else + { + // add unicode character(s) + result += to_unicode(codepoint); + // skip the next four characters (xxxx) + i += 4; + } + break; + } + } + } + } + + return result; + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + long double str_to_float_t(long double* /* type */, char** endptr) const + { + return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + double str_to_float_t(double* /* type */, char** endptr) const + { + return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + float str_to_float_t(float* /* type */, char** endptr) const + { + return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief return number value for number tokens + + This function translates the last token into the most appropriate + number type (either integer, unsigned integer or floating point), + which is passed back to the caller via the result parameter. + + This function parses the integer component up to the radix point or + exponent while collecting information about the 'floating point + representation', which it stores in the result parameter. If there is + no radix point or exponent, and the number can fit into a @ref + number_integer_t or @ref number_unsigned_t then it sets the result + parameter accordingly. + + If the number is a floating point number the number is then parsed + using @a std:strtod (or @a std:strtof or @a std::strtold). + + @param[out] result @ref basic_json object to receive the number, or + NAN if the conversion read past the current token. The latter case + needs to be treated by the caller function. + */ + void get_number(basic_json& result) const + { + assert(m_start != nullptr); + + const lexer::lexer_char_t* curptr = m_start; + + // accumulate the integer conversion result (unsigned for now) + number_unsigned_t value = 0; + + // maximum absolute value of the relevant integer type + number_unsigned_t max; + + // temporarily store the type to avoid unecessary bitfield access + value_t type; + + // look for sign + if (*curptr == '-') + { + type = value_t::number_integer; + max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; + curptr++; + } + else + { + type = value_t::number_unsigned; + max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); + } + + // count the significant figures + for (; curptr < m_cursor; curptr++) + { + // quickly skip tests if a digit + if (*curptr < '0' || *curptr > '9') + { + if (*curptr == '.') + { + // don't count '.' but change to float + type = value_t::number_float; + continue; + } + // assume exponent (if not then will fail parse): change to + // float, stop counting and record exponent details + type = value_t::number_float; + break; + } + + // skip if definitely not an integer + if (type != value_t::number_float) + { + auto digit = static_cast<number_unsigned_t>(*curptr - '0'); + + // overflow if value * 10 + digit > max, move terms around + // to avoid overflow in intermediate values + if (value > (max - digit) / 10) + { + // overflow + type = value_t::number_float; + } + else + { + // no overflow + value = value * 10 + digit; + } + } + } + + // save the value (if not a float) + if (type == value_t::number_unsigned) + { + result.m_value.number_unsigned = value; + } + else if (type == value_t::number_integer) + { + // invariant: if we parsed a '-', the absolute value is between + // 0 (we allow -0) and max == -INT64_MIN + assert(value >= 0); + assert(value <= max); + + if (value == max) + { + // we cannot simply negate value (== max == -INT64_MIN), + // see https://github.com/nlohmann/json/issues/389 + result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + } + else + { + // all other values can be negated safely + result.m_value.number_integer = -static_cast<number_integer_t>(value); + } + } + else + { + // parse with strtod result.m_value.number_float = str_to_float_t(static_cast<number_float_t*>(nullptr), nullptr); - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - type = value_t::null; - result.m_value = basic_json::json_value(); + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); + } } + + // save the type + result.m_type = type; } - // save the type - result.m_type = type; - } - - private: - /// optional input stream - std::istream* m_stream = nullptr; - /// line buffer buffer for m_stream - string_t m_line_buffer {}; - /// used for filling m_line_buffer - string_t m_line_buffer_tmp {}; - /// the buffer pointer - const lexer_char_t* m_content = nullptr; - /// pointer to the beginning of the current symbol - const lexer_char_t* m_start = nullptr; - /// pointer for backtracking information - const lexer_char_t* m_marker = nullptr; - /// pointer to the current symbol - const lexer_char_t* m_cursor = nullptr; - /// pointer to the end of the buffer - const lexer_char_t* m_limit = nullptr; - /// the last token type - token_type last_token_type = token_type::end_of_input; - }; + private: + /// optional input stream + std::istream* m_stream = nullptr; + /// line buffer buffer for m_stream + string_t m_line_buffer {}; + /// used for filling m_line_buffer + string_t m_line_buffer_tmp {}; + /// the buffer pointer + const lexer_char_t* m_content = nullptr; + /// pointer to the beginning of the current symbol + const lexer_char_t* m_start = nullptr; + /// pointer for backtracking information + const lexer_char_t* m_marker = nullptr; + /// pointer to the current symbol + const lexer_char_t* m_cursor = nullptr; + /// pointer to the end of the buffer + const lexer_char_t* m_limit = nullptr; + /// the last token type + token_type last_token_type = token_type::end_of_input; + }; /*! @brief syntax analysis @@ -10339,282 +10856,282 @@ basic_json_parser_66: */ class parser { - public: + public: /// a parser reading from a string literal parser(const char* buff, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) - {} + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) + {} - /// a parser reading from an input stream - parser(std::istream& is, const parser_callback_t cb = nullptr) - : callback(cb), m_lexer(is) - {} + /// a parser reading from an input stream + parser(std::istream& is, const parser_callback_t cb = nullptr) + : callback(cb), m_lexer(is) + {} - /// a parser reading from an iterator range with contiguous storage - template<class IteratorType, typename std::enable_if< - std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value - , int>::type - = 0> - parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), - static_cast<size_t>(std::distance(first, last))) - {} + /// a parser reading from an iterator range with contiguous storage + template<class IteratorType, typename std::enable_if< + std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value + , int>::type + = 0> + parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), + static_cast<size_t>(std::distance(first, last))) + {} - /// public parser interface - basic_json parse() - { - // read first token - get_token(); - - basic_json result = parse_internal(true); - result.assert_invariant(); - - expect(lexer::token_type::end_of_input); - - // return parser result and replace it with null in case the - // top-level value was discarded by the callback function - return result.is_discarded() ? basic_json() : std::move(result); - } - - private: - /// the actual parser - basic_json parse_internal(bool keep) - { - auto result = basic_json(value_t::discarded); - - switch (last_token) + /// public parser interface + basic_json parse() { - case lexer::token_type::begin_object: + // read first token + get_token(); + + basic_json result = parse_internal(true); + result.assert_invariant(); + + expect(lexer::token_type::end_of_input); + + // return parser result and replace it with null in case the + // top-level value was discarded by the callback function + return result.is_discarded() ? basic_json() : std::move(result); + } + + private: + /// the actual parser + basic_json parse_internal(bool keep) + { + auto result = basic_json(value_t::discarded); + + switch (last_token) { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) + case lexer::token_type::begin_object: { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) + { + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } - // read next token - get_token(); + // read next token + get_token(); - // closing } -> we are done - if (last_token == lexer::token_type::end_object) - { + // closing } -> we are done + if (last_token == lexer::token_type::end_object) + { + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result = basic_json(value_t::discarded); + } + return result; + } + + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse key-value pairs + do + { + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) + { + get_token(); + } + + // store key + expect(lexer::token_type::value_string); + const auto key = m_lexer.get_string(); + + bool keep_tag = false; + if (keep) + { + if (callback) + { + basic_json k(key); + keep_tag = callback(depth, parse_event_t::key, k); + } + else + { + keep_tag = true; + } + } + + // parse separator (:) + get_token(); + expect(lexer::token_type::name_separator); + + // parse and add value + get_token(); + auto value = parse_internal(keep); + if (keep and keep_tag and not value.is_discarded()) + { + result[key] = std::move(value); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing } + expect(lexer::token_type::end_object); get_token(); if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) { result = basic_json(value_t::discarded); } + return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse key-value pairs - do + case lexer::token_type::begin_array: { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) + { + // explicitly set result to object to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == lexer::token_type::end_array) { get_token(); + if (callback and not callback(--depth, parse_event_t::array_end, result)) + { + result = basic_json(value_t::discarded); + } + return result; } - // store key - expect(lexer::token_type::value_string); - const auto key = m_lexer.get_string(); + // no comma is expected here + unexpect(lexer::token_type::value_separator); - bool keep_tag = false; - if (keep) + // otherwise: parse values + do { - if (callback) + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) { - basic_json k(key); - keep_tag = callback(depth, parse_event_t::key, k); + get_token(); } - else + + // parse value + auto value = parse_internal(keep); + if (keep and not value.is_discarded()) { - keep_tag = true; + result.push_back(std::move(value)); } } + while (last_token == lexer::token_type::value_separator); - // parse separator (:) + // closing ] + expect(lexer::token_type::end_array); get_token(); - expect(lexer::token_type::name_separator); - - // parse and add value - get_token(); - auto value = parse_internal(keep); - if (keep and keep_tag and not value.is_discarded()) - { - result[key] = std::move(value); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing } - expect(lexer::token_type::end_object); - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result = basic_json(value_t::discarded); - } - - return result; - } - - case lexer::token_type::begin_array: - { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) - { - // explicitly set result to object to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == lexer::token_type::end_array) - { - get_token(); - if (callback and not callback(--depth, parse_event_t::array_end, result)) + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) { result = basic_json(value_t::discarded); } + return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse values - do + case lexer::token_type::literal_null: { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) - { - get_token(); - } - - // parse value - auto value = parse_internal(keep); - if (keep and not value.is_discarded()) - { - result.push_back(std::move(value)); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing ] - expect(lexer::token_type::end_array); - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) - { - result = basic_json(value_t::discarded); + get_token(); + result.m_type = value_t::null; + break; } - return result; + case lexer::token_type::value_string: + { + const auto s = m_lexer.get_string(); + get_token(); + result = basic_json(s); + break; + } + + case lexer::token_type::literal_true: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case lexer::token_type::literal_false: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case lexer::token_type::value_number: + { + m_lexer.get_number(result); + get_token(); + break; + } + + default: + { + // the last token was unexpected + unexpect(last_token); + } } - case lexer::token_type::literal_null: + if (keep and callback and not callback(depth, parse_event_t::value, result)) { - get_token(); - result.m_type = value_t::null; - break; - } - - case lexer::token_type::value_string: - { - const auto s = m_lexer.get_string(); - get_token(); - result = basic_json(s); - break; - } - - case lexer::token_type::literal_true: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case lexer::token_type::literal_false: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case lexer::token_type::value_number: - { - m_lexer.get_number(result); - get_token(); - break; - } - - default: - { - // the last token was unexpected - unexpect(last_token); + result = basic_json(value_t::discarded); } + return result; } - if (keep and callback and not callback(depth, parse_event_t::value, result)) + /// get next token from lexer + typename lexer::token_type get_token() { - result = basic_json(value_t::discarded); + last_token = m_lexer.scan(); + return last_token; } - return result; - } - /// get next token from lexer - typename lexer::token_type get_token() - { - last_token = m_lexer.scan(); - return last_token; - } - - void expect(typename lexer::token_type t) const - { - if (t != last_token) + void expect(typename lexer::token_type t) const { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); - error_msg += "; expected " + lexer::token_type_name(t); + if (t != last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); + error_msg += "; expected " + lexer::token_type_name(t); JSON_THROW(std::invalid_argument(error_msg)); + } } - } - void unexpect(typename lexer::token_type t) const - { - if (t == last_token) + void unexpect(typename lexer::token_type t) const { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); + if (t == last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); JSON_THROW(std::invalid_argument(error_msg)); + } } - } - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - typename lexer::token_type last_token = lexer::token_type::uninitialized; - /// the lexer - lexer m_lexer; - }; + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + typename lexer::token_type last_token = lexer::token_type::uninitialized; + /// the lexer + lexer m_lexer; + }; public: /*! @@ -10633,7 +11150,7 @@ basic_json_parser_66: /// allow basic_json to access private members friend class basic_json; - public: + public: /*! @brief create JSON pointer @@ -10657,573 +11174,573 @@ basic_json_parser_66: @since version 2.0.0 */ explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} + : reference_tokens(split(s)) + {} - /*! - @brief return a string representation of the JSON pointer + /*! + @brief return a string representation of the JSON pointer - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode - @return a string representation of the JSON pointer + @return a string representation of the JSON pointer - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} - @since version 2.0.0 - */ - std::string to_string() const noexcept - { - return std::accumulate(reference_tokens.begin(), - reference_tokens.end(), std::string{}, - [](const std::string & a, const std::string & b) + @since version 2.0.0 + */ + std::string to_string() const noexcept { - return a + "/" + escape(b); - }); - } + return std::accumulate(reference_tokens.begin(), + reference_tokens.end(), std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } - - private: - /// remove and return last reference pointer - std::string pop_back() - { - if (is_root()) + /// @copydoc to_string() + operator std::string() const { + return to_string(); + } + + private: + /// remove and return last reference pointer + std::string pop_back() + { + if (is_root()) + { JSON_THROW(std::domain_error("JSON pointer has no parent")); + } + + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; } - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; - } - - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } - - json_pointer top() const - { - if (is_root()) + /// return whether pointer points to the root document + bool is_root() const { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (is_root()) + { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - */ - reference get_and_create(reference j) const - { - pointer result = &j; - - // in case no reference tokens exist, return a reference to the - // JSON value j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case value_t::array: - { - // create an entry in the array - result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - /* - The following code is only reached if there exists a - reference token _and_ the current value is primitive. In - this case, we have an error situation, because primitive - values may only occur as single value; that is, with an - empty list of reference tokens. - */ - default: - { - JSON_THROW(std::domain_error("invalid value to unflatten")); - } - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries - to create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number - */ - reference get_unchecked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == value_t::null) - { - // check if reference token is a number - const bool nums = std::all_of(reference_token.begin(), - reference_token.end(), - [](const char x) - { - return std::isdigit(x); - }); - - // change value to array for numbers or "-" or to object - // otherwise - if (nums or reference_token == "-") - { - *ptr = value_t::array; - } - else - { - *ptr = value_t::object; - } } - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicityly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - } - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - reference get_checked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - */ - const_reference get_unchecked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" cannot be used for const access - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // use unchecked array access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - const_reference get_checked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /// split the string input to reference tokens - static std::vector<std::string> split(const std::string& reference_string) - { - std::vector<std::string> result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; return result; } - // check if nonempty reference string begins with slash - if (reference_string[0] != '/') + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + */ + reference get_and_create(reference j) const { + pointer result = &j; + + // in case no reference tokens exist, return a reference to the + // JSON value j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case value_t::array: + { + // create an entry in the array + result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + /* + The following code is only reached if there exists a + reference token _and_ the current value is primitive. In + this case, we have an error situation, because primitive + values may only occur as single value; that is, with an + empty list of reference tokens. + */ + default: + { + JSON_THROW(std::domain_error("invalid value to unflatten")); + } + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries + to create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw std::out_of_range if the JSON pointer can not be resolved + @throw std::domain_error if an array index begins with '0' + @throw std::invalid_argument if an array index was not a number + */ + reference get_unchecked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == value_t::null) + { + // check if reference token is a number + const bool nums = std::all_of(reference_token.begin(), + reference_token.end(), + [](const char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object + // otherwise + if (nums or reference_token == "-") + { + *ptr = value_t::array; + } + else + { + *ptr = value_t::object; + } + } + + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicityly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + } + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + reference get_checked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + */ + const_reference get_unchecked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" cannot be used for const access + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // use unchecked array access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + const_reference get_checked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /// split the string input to reference tokens + static std::vector<std::string> split(const std::string& reference_string) + { + std::vector<std::string> result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (reference_string[0] != '/') + { JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); - } + } - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); - // check reference tokens are properly escaped + // check reference tokens are properly escaped for (size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; + pos != std::string::npos; pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1')) { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1')) + { JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - private: - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, - const std::string& f, - const std::string& t) - { - assert(not f.empty()); - - for ( - size_t pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t - pos = s.find(f, pos + t.size()) // find next occurrence of f - ); - } - - /// escape tilde and slash - static std::string escape(std::string s) - { - // escape "~"" to "~0" and "/" to "~1" - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape tilde and slash - static void unescape(std::string& s) - { - // first transform any occurrence of the sequence '~1' to '/' - replace_substring(s, "~1", "/"); - // then transform any occurrence of the sequence '~0' to '~' - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const basic_json& value, - basic_json& result) - { - switch (value.m_type) - { - case value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); } } - break; + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); } - case value_t::object: + return result; + } + + private: + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, + const std::string& f, + const std::string& t) + { + assert(not f.empty()); + + for ( + size_t pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t + pos = s.find(f, pos + t.size()) // find next occurrence of f + ); + } + + /// escape tilde and slash + static std::string escape(std::string s) + { + // escape "~"" to "~0" and "/" to "~1" + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape tilde and slash + static void unescape(std::string& s) + { + // first transform any occurrence of the sequence '~1' to '/' + replace_substring(s, "~1", "/"); + // then transform any occurrence of the sequence '~0' to '~' + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const basic_json& value, + basic_json& result) + { + switch (value.m_type) { - if (value.m_value.object->empty()) + case value_t::array: { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) + if (value.m_value.array->empty()) { - flatten(reference_string + "/" + escape(element.first), - element.second, result); + // flatten empty array as null + result[reference_string] = nullptr; } + else + { + // iterate array and use index as reference string + for (size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; } - break; - } - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; + case value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), + element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } } } - } - /*! - @param[in] value flattened JSON + /*! + @param[in] value flattened JSON - @return unflattened JSON - */ - static basic_json unflatten(const basic_json& value) - { - if (not value.is_object()) + @return unflattened JSON + */ + static basic_json unflatten(const basic_json& value) { + if (not value.is_object()) + { JSON_THROW(std::domain_error("only objects can be unflattened")); - } - - basic_json result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (not element.second.is_primitive()) - { - JSON_THROW(std::domain_error("values in object must be primitive")); } - // assign value to reference pointed to by JSON pointer; Note - // that if the JSON pointer is "" (i.e., points to the whole - // value), function get_and_create returns a reference to - // result itself. An assignment will then create a primitive - // value. - json_pointer(element.first).get_and_create(result) = element.second; + basic_json result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (not element.second.is_primitive()) + { + JSON_THROW(std::domain_error("values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note + // that if the JSON pointer is "" (i.e., points to the whole + // value), function get_and_create returns a reference to + // result itself. An assignment will then create a primitive + // value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; } - return result; - } + private: + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } - private: - friend bool operator==(json_pointer const &lhs, - json_pointer const &rhs) noexcept - { - return lhs.reference_tokens == rhs.reference_tokens; - } + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return !(lhs == rhs); + } - friend bool operator!=(json_pointer const &lhs, - json_pointer const &rhs) noexcept - { - return !(lhs == rhs); - } - - /// the reference tokens - std::vector<std::string> reference_tokens {}; + /// the reference tokens + std::vector<std::string> reference_tokens {}; }; ////////////////////////// @@ -11899,25 +12416,26 @@ Returns an ordering that is similar to Python: */ inline bool operator<(const value_t lhs, const value_t rhs) noexcept { - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - }}; + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + } + }; - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } - return order[static_cast<std::size_t>(lhs)] < - order[static_cast<std::size_t>(rhs)]; + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; } ///////////// @@ -11942,38 +12460,38 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std +{ +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ +template<> +inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible<nlohmann::json>::value and + is_nothrow_move_assignable<nlohmann::json>::value + ) +{ + j1.swap(j2); +} + +/// hash value for JSON objects +template<> +struct hash<nlohmann::json> { /*! - @brief exchanges the values of two JSON objects + @brief return a hash value for a JSON object @since version 1.0.0 */ - template<> - inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible<nlohmann::json>::value and - is_nothrow_move_assignable<nlohmann::json>::value - ) - { - j1.swap(j2); - } - - /// hash value for JSON objects - template<> - struct hash<nlohmann::json> - { - /*! - @brief return a hash value for a JSON object - - @since version 1.0.0 - */ - std::size_t operator()(const nlohmann::json& j) const + std::size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation const auto& h = hash<nlohmann::json::string_t>(); return h(j.dump()); } - }; +}; } // namespace std /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 8fbff2ad5..cbda7ee77 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -136,15 +136,15 @@ the default value for a given type */ enum class value_t : uint8_t { - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function }; // alias templates to reduce boilerplate @@ -168,29 +168,29 @@ using is_unscoped_enum = namespace detail { -template <typename Json> std::string type_name(const Json &j) +template <typename Json> std::string type_name(const Json& j) { - switch (j.m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } + switch (j.m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } } // dispatch utility (taken from ranges-v3) -template <unsigned N> struct priority_tag : priority_tag<N - 1> {}; +template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; template <> struct priority_tag<0> {}; @@ -201,120 +201,120 @@ template <value_t> struct external_constructor; template <> struct external_constructor<value_t::boolean> { - template <typename Json> - static void construct(Json &j, typename Json::boolean_t b) noexcept - { - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::string> { - template <typename Json> - static void construct(Json &j, const typename Json::string_t& s) - { - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::number_float> { - template <typename Json> - static void construct(Json &j, typename Json::number_float_t val) noexcept - { - // replace infinity and NAN by null - if (not std::isfinite(val)) - j = Json{}; - else + template <typename Json> + static void construct(Json& j, typename Json::number_float_t val) noexcept { - j.m_type = value_t::number_float; - j.m_value = val; + // replace infinity and NAN by null + if (not std::isfinite(val)) + j = Json{}; + else + { + j.m_type = value_t::number_float; + j.m_value = val; + } + j.assert_invariant(); } - j.assert_invariant(); - } }; template <> struct external_constructor<value_t::number_unsigned> { - template <typename Json> - static void construct(Json &j, typename Json::number_unsigned_t val) noexcept - { - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::number_integer> { - template <typename Json> - static void construct(Json &j, typename Json::number_integer_t val) noexcept - { - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, typename Json::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::array> { - template <typename Json> - static void construct(Json &j, const typename Json::array_t& arr) - { - j.m_type = value_t::array; - j.m_value = arr; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } - template <typename Json, typename CompatibleArrayType, - enable_if_t<not std::is_same<CompatibleArrayType, - typename Json::array_t>::value, - int> = 0> - static void construct(Json &j, const CompatibleArrayType &arr) - { - using std::begin; - using std::end; - j.m_type = value_t::array; - j.m_value.array = - j.template create<typename Json::array_t>(begin(arr), end(arr)); - j.assert_invariant(); - } + template <typename Json, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename Json::array_t>::value, + int> = 0> + static void construct(Json& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = + j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.assert_invariant(); + } }; template <> struct external_constructor<value_t::object> { - template <typename Json> - static void construct(Json &j, const typename Json::object_t& obj) - { - j.m_type = value_t::object; - j.m_value = obj; - j.assert_invariant(); - } + template <typename Json> + static void construct(Json& j, const typename Json::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } - template <typename Json, typename CompatibleObjectType, - enable_if_t<not std::is_same<CompatibleObjectType, - typename Json::object_t>::value, - int> = 0> - static void construct(Json &j, const CompatibleObjectType &obj) - { - using std::begin; - using std::end; + template <typename Json, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename Json::object_t>::value, + int> = 0> + static void construct(Json& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; - j.m_type = value_t::object; - j.m_value.object = - j.template create<typename Json::object_t>(begin(obj), end(obj)); - j.assert_invariant(); - } + j.m_type = value_t::object; + j.m_value.object = + j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.assert_invariant(); + } }; // Implementation of 2 C++17 constructs: conjunction, negation. @@ -380,11 +380,11 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> template<class BasicJson, class CompatibleObjectType> struct is_compatible_object_type { - static auto constexpr value = is_compatible_object_type_impl< - conjunction<negation<std::is_same<void, CompatibleObjectType>>, - has_mapped_type<CompatibleObjectType>, - has_key_type<CompatibleObjectType>>::value, - typename BasicJson::object_t, CompatibleObjectType>::value; + static auto constexpr value = is_compatible_object_type_impl < + conjunction<negation<std::is_same<void, CompatibleObjectType>>, + has_mapped_type<CompatibleObjectType>, + has_key_type<CompatibleObjectType>>::value, + typename BasicJson::object_t, CompatibleObjectType >::value; }; template <typename BasicJson, typename T> @@ -400,17 +400,17 @@ struct is_basic_json_nested_type template <class BasicJson, class CompatibleArrayType> struct is_compatible_array_type { - // TODO concept Container? - // this might not make VS happy - static auto constexpr value = + // TODO concept Container? + // this might not make VS happy + static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, - negation<is_compatible_object_type< - BasicJson, CompatibleArrayType>>, - negation<std::is_constructible<typename BasicJson::string_t, - CompatibleArrayType>>, - negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, - has_value_type<CompatibleArrayType>, - has_iterator<CompatibleArrayType>>::value; + negation<is_compatible_object_type< + BasicJson, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJson::string_t, + CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, + has_value_type<CompatibleArrayType>, + has_iterator<CompatibleArrayType>>::value; }; template <bool, typename, typename> @@ -419,7 +419,7 @@ struct is_compatible_integer_type_impl : std::false_type {}; template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { - // is there an assert somewhere on overflows? + // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits<RealIntegerType>; using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; @@ -433,11 +433,11 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn template <typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto - value = is_compatible_integer_type_impl < - std::is_integral<CompatibleNumberIntegerType>::value and - not std::is_same<bool, CompatibleNumberIntegerType>::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; + static constexpr auto + value = is_compatible_integer_type_impl < + std::is_integral<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists @@ -461,261 +461,287 @@ struct has_from_json template <typename Json, typename T> struct has_non_default_from_json { -private: - template < - typename U, - typename = enable_if_t<std::is_same< - T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value>> - static int detect(U &&); - static void detect(...); + private: + template < + typename U, + typename = enable_if_t<std::is_same< + T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value >> + static int detect(U&&); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // This trait checks if Json::json_serializer<T>::to_json exists template <typename Json, typename T> struct has_to_json { -private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json &>(), std::declval<T>()))> - static int detect(U &&); - static void detect(...); + private: + template <typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<Json&>(), std::declval<T>()))> + static int detect(U&&); + static void detect(...); -public: - static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + public: + static constexpr bool value = std::is_integral<decltype(detect( + std::declval<typename Json::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters template <typename Json, typename ArithmeticType, enable_if_t<std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename Json::boolean_t>::value, + not std::is_same<ArithmeticType, + typename Json::boolean_t>::value, int> = 0> -void get_arithmetic_value(const Json &j, ArithmeticType &val) +void get_arithmetic_value(const Json& j, ArithmeticType& val) { - // unsigned must be checked first, since is_number_integer() == true for unsigned - if (j.is_number_unsigned()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - else if (j.is_number_integer()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - else if (j.is_number_float()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - else - throw std::domain_error("type must be number, but is " + type_name(j)); + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + } + else if (j.is_number_integer()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); + } + else if (j.is_number_float()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); + } + else + { + throw std::domain_error("type must be number, but is " + type_name(j)); + } } template <typename Json> -void to_json(Json &j, typename Json::boolean_t b) noexcept +void to_json(Json& j, typename Json::boolean_t b) noexcept { - external_constructor<value_t::boolean>::construct(j, b); + external_constructor<value_t::boolean>::construct(j, b); } template <typename Json, typename CompatibleString, enable_if_t<std::is_constructible<typename Json::string_t, - CompatibleString>::value, + CompatibleString>::value, int> = 0> -void to_json(Json &j, const CompatibleString &s) +void to_json(Json& j, const CompatibleString& s) { - external_constructor<value_t::string>::construct(j, s); + external_constructor<value_t::string>::construct(j, s); } template <typename Json, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> -void to_json(Json &j, FloatType val) noexcept +void to_json(Json& j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); + external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); } template < typename Json, typename CompatibleNumberUnsignedType, - enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, - CompatibleNumberUnsignedType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberUnsignedType val) noexcept + enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + CompatibleNumberUnsignedType>::value, + int> = 0 > +void to_json(Json& j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); } template < typename Json, typename CompatibleNumberIntegerType, - enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, - CompatibleNumberIntegerType>::value, - int> = 0> -void to_json(Json &j, CompatibleNumberIntegerType val) noexcept + enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + CompatibleNumberIntegerType>::value, + int> = 0 > +void to_json(Json& j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json &j, UnscopedEnumType e) noexcept +void to_json(Json& j, UnscopedEnumType e) noexcept { - external_constructor<value_t::number_integer>::construct(j, e); + external_constructor<value_t::number_integer>::construct(j, e); } template < typename Json, typename CompatibleArrayType, - enable_if_t< + enable_if_t < is_compatible_array_type<Json, CompatibleArrayType>::value or - std::is_same<typename Json::array_t, CompatibleArrayType>::value, - int> = 0> -void to_json(Json &j, const CompatibleArrayType &arr) + std::is_same<typename Json::array_t, CompatibleArrayType>::value, + int > = 0 > +void to_json(Json& j, const CompatibleArrayType& arr) { - external_constructor<value_t::array>::construct(j, arr); + external_constructor<value_t::array>::construct(j, arr); } template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, - int> = 0> -void to_json(Json &j, const CompatibleObjectType &arr) + int> = 0 > +void to_json(Json& j, const CompatibleObjectType& arr) { - external_constructor<value_t::object>::construct(j, arr); + external_constructor<value_t::object>::construct(j, arr); } template <typename Json> -void from_json(const Json & j, typename Json::boolean_t& b) +void from_json(const Json& j, typename Json::boolean_t& b) { - if (!j.is_boolean()) - throw std::domain_error("type must be boolean, but is " + type_name(j)); - b = *j.template get_ptr<const typename Json::boolean_t*>(); + if (!j.is_boolean()) + { + throw std::domain_error("type must be boolean, but is " + type_name(j)); + } + b = *j.template get_ptr<const typename Json::boolean_t*>(); } template <typename Json> -void from_json(const Json & j, typename Json::string_t& s) +void from_json(const Json& j, typename Json::string_t& s) { - if (!j.is_string()) - throw std::domain_error("type must be string, but is " + type_name(j)); - s = *j.template get_ptr<const typename Json::string_t*>(); + if (!j.is_string()) + { + throw std::domain_error("type must be string, but is " + type_name(j)); + } + s = *j.template get_ptr<const typename Json::string_t*>(); } template <typename Json> -void from_json(const Json & j, typename Json::number_float_t& val) +void from_json(const Json& j, typename Json::number_float_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json> -void from_json(const Json & j, typename Json::number_unsigned_t& val) +void from_json(const Json& j, typename Json::number_unsigned_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json> -void from_json(const Json & j, typename Json::number_integer_t& val) +void from_json(const Json& j, typename Json::number_integer_t& val) { - get_arithmetic_value(j, val); + get_arithmetic_value(j, val); } template <typename Json, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const Json &j, UnscopedEnumType& e) +void from_json(const Json& j, UnscopedEnumType& e) { - typename std::underlying_type<UnscopedEnumType>::type val = e; - get_arithmetic_value(j, val); - e = static_cast<UnscopedEnumType>(val); + typename std::underlying_type<UnscopedEnumType>::type val = e; + get_arithmetic_value(j, val); + e = static_cast<UnscopedEnumType>(val); } template <typename Json> -void from_json(const Json &j, typename Json::array_t &arr) +void from_json(const Json& j, typename Json::array_t& arr) { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - arr = *j.template get_ptr<const typename Json::array_t*>(); + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + arr = *j.template get_ptr<const typename Json::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list template <typename Json, typename T, typename Allocator> -void from_json(const Json &j, std::forward_list<T, Allocator>& l) +void from_json(const Json& j, std::forward_list<T, Allocator>& l) { - // do not perform the check when user wants to retrieve jsons - // (except when it's null.. ?) - if (j.is_null()) - throw std::domain_error("type must be array, but is " + type_name(j)); - if (not std::is_same<T, Json>::value) - { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - } - for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) - l.push_front(it->template get<T>()); + // do not perform the check when user wants to retrieve jsons + // (except when it's null.. ?) + if (j.is_null()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + if (not std::is_same<T, Json>::value) + { + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + } + for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) + { + l.push_front(it->template get<T>()); + } } template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<0>) +void from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<0>) { - using std::begin; - using std::end; + using std::begin; + using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) - { + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json return i.template get<typename CompatibleArrayType::value_type>(); - }); + }); } template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(const Json &j, CompatibleArrayType &arr, priority_tag<1>) - -> decltype( - arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), - void()) +auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<1>) +-> decltype( + arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), + void()) { - using std::begin; - using std::end; + using std::begin; + using std::end; - arr.reserve(j.size()); - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json &i) - { + arr.reserve(j.size()); + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + { // get<Json>() returns *this, this won't call a from_json method when // value_type is Json return i.template get<typename CompatibleArrayType::value_type>(); - }); + }); } template < typename Json, typename CompatibleArrayType, enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and - not std::is_same<typename Json::array_t, - CompatibleArrayType>::value, - int> = 0> -void from_json(const Json &j, CompatibleArrayType &arr) + not std::is_same<typename Json::array_t, + CompatibleArrayType>::value, + int> = 0 > +void from_json(const Json& j, CompatibleArrayType& arr) { - if (j.is_null()) - throw std::domain_error("type must be array, but is " + type_name(j)); - // when T == Json, do not check if value_t is correct - if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) - { - if (!j.is_array()) - throw std::domain_error("type must be array, but is " + type_name(j)); - } - from_json_array_impl(j, arr, priority_tag<1>{}); + if (j.is_null()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + // when T == Json, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + { + if (!j.is_array()) + { + throw std::domain_error("type must be array, but is " + type_name(j)); + } + } + from_json_array_impl(j, arr, priority_tag<1> {}); } template < typename Json, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, - int> = 0> -void from_json(const Json &j, CompatibleObjectType &obj) + int> = 0 > +void from_json(const Json& j, CompatibleObjectType& obj) { - if (!j.is_object()) - throw std::domain_error("type must be object, but is " + type_name(j)); + if (!j.is_object()) + { + throw std::domain_error("type must be object, but is " + type_name(j)); + } - auto inner_object = j.template get_ptr<const typename Json::object_t*>(); - using std::begin; - using std::end; - // we could avoid the assignment, but this might require a for loop, which - // might be less efficient than the container constructor for some containers (would it?) - obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); + auto inner_object = j.template get_ptr<const typename Json::object_t*>(); + using std::begin; + using std::end; + // we could avoid the assignment, but this might require a for loop, which + // might be less efficient than the container constructor for some containers (would it?) + obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); } // overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) @@ -724,25 +750,35 @@ void from_json(const Json &j, CompatibleObjectType &obj) // in case of a custom BooleanType which is not an arithmetic type? template < typename Json, typename ArithmeticType, - enable_if_t< + enable_if_t < std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, typename Json::number_float_t>::value and - not std::is_same<ArithmeticType, typename Json::boolean_t>::value, - int> = 0> -void from_json(const Json &j, ArithmeticType &val) + not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + int > = 0 > +void from_json(const Json& j, ArithmeticType& val) { - if (j.is_number_unsigned()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - else if (j.is_number_integer()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - else if (j.is_number_float()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - else if (j.is_boolean()) - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); - else - throw std::domain_error("type must be number, but is " + type_name(j)); + if (j.is_number_unsigned()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); + } + else if (j.is_number_integer()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); + } + else if (j.is_number_float()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); + } + else if (j.is_boolean()) + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); + } + else + { + throw std::domain_error("type must be number, but is " + type_name(j)); + } } struct to_json_fn @@ -762,39 +798,39 @@ struct to_json_fn static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); } -public: - template <typename Json, typename T> - void operator()(Json &j, T &&val) const - noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1>{}))) - { - return call(j, std::forward<T>(val), priority_tag<1>{}); - } + public: + template <typename Json, typename T> + void operator()(Json& j, T&& val) const + noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) + { + return call(j, std::forward<T>(val), priority_tag<1> {}); + } }; struct from_json_fn { -private: - template <typename Json, typename T> - auto call(const Json &j, T &val, priority_tag<1>) const - noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val), void()) - { - return from_json(j, val); - } + private: + template <typename Json, typename T> + auto call(const Json& j, T& val, priority_tag<1>) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } - template <typename Json, typename T> - void call(const Json &, T&, priority_tag<0>) const noexcept - { - static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); - } + template <typename Json, typename T> + void call(const Json&, T&, priority_tag<0>) const noexcept + { + static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + } -public: - template <typename Json, typename T> - void operator()(const Json &j, T &val) const - noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1>{}))) - { - return call(j, val, priority_tag<1>{}); - } + public: + template <typename Json, typename T> + void operator()(const Json& j, T& val) const + noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) + { + return call(j, val, priority_tag<1> {}); + } }; // taken from ranges-v3 @@ -830,8 +866,8 @@ struct DecimalSeparator : std::numpunct<char> inline namespace { -constexpr const auto & to_json = detail::static_const<detail::to_json_fn>::value; -constexpr const auto & from_json = detail::static_const<detail::from_json_fn>::value; +constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; +constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; } // default JSONSerializer template argument, doesn't care about template argument @@ -846,10 +882,10 @@ struct adl_serializer } template <typename Json, typename T> - static void to_json(Json &j, T &&val) noexcept( + static void to_json(Json& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<T>(val)); } }; @@ -947,7 +983,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(const Json &); + template <typename Json> friend std::string detail::type_name(const Json&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -1849,15 +1885,15 @@ class basic_json */ template <typename T, typename U = uncvref_t<T>, enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, int> = 0> - basic_json(T &&val) noexcept(noexcept(JSONSerializer<U>::to_json( - std::declval<basic_json_t &>(), std::forward<T>(val)))) + basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t&>(), std::forward<T>(val)))) { - JSONSerializer<U>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<T>(val)); } /*! @@ -2013,7 +2049,7 @@ class basic_json @since version 1.0.0 */ static basic_json array(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::array); } @@ -2053,7 +2089,7 @@ class basic_json @since version 1.0.0 */ static basic_json object(std::initializer_list<basic_json> init = - std::initializer_list<basic_json>()) + std::initializer_list<basic_json>()) { return basic_json(init, false, value_t::object); } @@ -2394,7 +2430,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { // check that passed value is valid other.assert_invariant(); @@ -3020,7 +3056,7 @@ class basic_json enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const { - return *this; + return *this; } /*! @@ -3032,7 +3068,7 @@ class basic_json - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); - @return a value of type U + @return a value of type U @throw what json_serializer<U> from_json method throws @@ -3040,27 +3076,27 @@ class basic_json */ template < typename T, - typename U = uncvref_t<T>, - enable_if_t< + typename U = uncvref_t<T>, + enable_if_t < not std::is_same<basic_json_t, U>::value and - detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, - U>::value, - int> = 0> + detail::has_from_json<basic_json_t, U>::value and + not detail::has_non_default_from_json<basic_json_t, + U>::value, + int > = 0 > // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t &>(), std::declval<U &>()))) - -> U + std::declval<const basic_json_t&>(), std::declval<U&>()))) + -> U { - static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); - U ret; - JSONSerializer<U>::from_json(*this, ret); - return ret; + static_assert(std::is_default_constructible<U>::value and + std::is_copy_constructible<U>::value, + "Types must be DefaultConstructible and " + "CopyConstructible when used with get"); + U ret; + JSONSerializer<U>::from_json(*this, ret); + return ret; } /*! @@ -3072,7 +3108,7 @@ class basic_json - U is not @ref basic_json - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); - @return a value of type U + @return a value of type U @throw what json_serializer<U> from_json method throws @@ -3081,12 +3117,12 @@ class basic_json template < typename T, enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, - int> = 0> - uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t &>()))) + detail::has_non_default_from_json<basic_json_t, + uncvref_t<T>>::value, + int> = 0 > + uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { - return JSONSerializer<T>::from_json(*this); + return JSONSerializer<T>::from_json(*this); } /*! @@ -3168,8 +3204,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -3196,8 +3232,8 @@ class basic_json { // get the type of the PointerType (remove pointer and const) using pointee_t = typename std::remove_const<typename - std::remove_pointer<typename - std::remove_const<PointerType>::type>::type>::type; + std::remove_pointer<typename + std::remove_const<PointerType>::type>::type>::type; // make sure the type matches the allowed types static_assert( std::is_same<object_t, pointee_t>::value @@ -4250,14 +4286,14 @@ class basic_json case value_t::object: { result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); + last.m_it.object_iterator); break; } case value_t::array: { result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); + last.m_it.array_iterator); break; } @@ -5474,9 +5510,9 @@ class basic_json // insert to array and return iterator iterator result(this); result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); return result; } @@ -5546,7 +5582,7 @@ class basic_json std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and std::is_nothrow_move_assignable<json_value>::value - ) + ) { std::swap(m_type, other.m_type); std::swap(m_value, other.m_value); @@ -7871,7 +7907,10 @@ class basic_json @since version 1.0.0 */ - std::string type_name() const { return detail::type_name(*this); } + std::string type_name() const + { + return detail::type_name(*this); + } private: /*! @@ -8086,13 +8125,13 @@ class basic_json o << (pretty_print ? ",\n" : ","); } o << string_t(new_indent, ' ') << "\"" - << escape_string(i->first) << "\":" - << (pretty_print ? " " : ""); - i->second.dump(o, pretty_print, indent_step, new_indent); + << escape_string(i->first) << "\":" + << (pretty_print ? " " : ""); + i->second.dump(o, pretty_print, indent_step, new_indent); } - // decrease indentation - if (pretty_print) + // decrease indentation + if (pretty_print) { new_indent -= indent_step; o << "\n"; @@ -8137,16 +8176,16 @@ class basic_json } o << string_t(new_indent, ' ') << "]"; - return; + return; } - case value_t::string: + case value_t::string: { o << string_t("\"") << escape_string(*m_value.string) << "\""; - return; + return; } - case value_t::boolean: + case value_t::boolean: { o << (m_value.boolean ? "true" : "false"); return; @@ -8220,126 +8259,126 @@ class basic_json */ class primitive_iterator_t { - public: + public: difference_type get_value() const noexcept - { - return m_it; - } - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } + { + return m_it; + } + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return (m_it == begin_value); - } + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return (m_it == begin_value); + } - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return (m_it == end_value); - } + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return (m_it == end_value); + } - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } - friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return !(lhs == rhs); - } + friend constexpr bool operator!=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return !(lhs == rhs); + } - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } - friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it <= rhs.m_it; - } + friend constexpr bool operator<=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it <= rhs.m_it; + } - friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it > rhs.m_it; - } + friend constexpr bool operator>(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it > rhs.m_it; + } - friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it >= rhs.m_it; - } + friend constexpr bool operator>=(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it >= rhs.m_it; + } - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } - primitive_iterator_t& operator++(int) - { - m_it++; - return *this; - } + primitive_iterator_t& operator++(int) + { + m_it++; + return *this; + } - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } - primitive_iterator_t& operator--(int) - { - m_it--; - return *this; - } + primitive_iterator_t& operator--(int) + { + m_it--; + return *this; + } - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; - /// iterator as signed integer type - difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); - }; + /// iterator as signed integer type + difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min(); + }; /*! @brief an iterator value @@ -8359,104 +8398,104 @@ class basic_json /// create an uninitialized internal_iterator internal_iterator() noexcept - : object_iterator(), array_iterator(), primitive_iterator() - {} + : object_iterator(), array_iterator(), primitive_iterator() + {} }; /// proxy class for the iterator_wrapper functions template<typename IteratorType> class iteration_proxy { - private: + private: /// helper class for iteration class iteration_proxy_internal { - private: + private: /// the iterator IteratorType anchor; /// an index for arrays (used to create key names) size_t array_index = 0; - public: + public: explicit iteration_proxy_internal(IteratorType it) noexcept - : anchor(it) - {} + : anchor(it) + {} - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// inequality operator (needed for range-based for) - bool operator!= (const iteration_proxy_internal& o) const - { - return anchor != o.anchor; - } - - /// return key of the iterator - typename basic_json::string_t key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() { - return std::to_string(array_index); + return *this; } - // use key from the object - case value_t::object: + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() { - return anchor.key(); + ++anchor; + ++array_index; + + return *this; } - // use an empty key for all primitive types - default: + /// inequality operator (needed for range-based for) + bool operator!= (const iteration_proxy_internal& o) const { - return ""; + return anchor != o.anchor; } - } - } - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } + /// return key of the iterator + typename basic_json::string_t key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + { + return std::to_string(array_index); + } + + // use key from the object + case value_t::object: + { + return anchor.key(); + } + + // use an empty key for all primitive types + default: + { + return ""; + } + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } }; - /// the container to iterate - typename IteratorType::reference container; + /// the container to iterate + typename IteratorType::reference container; - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) - {} + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) + {} - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } }; public: @@ -8480,7 +8519,7 @@ class basic_json @since version 1.0.0, simplified in version 2.0.9 */ template<typename U> - class iter_impl : public std::iterator<std::random_access_iterator_tag, U> + class iter_impl : public std::iterator<std::random_access_iterator_tag, U> { /// allow basic_json to access private members friend class basic_json; @@ -8490,19 +8529,19 @@ class basic_json or std::is_same<U, const basic_json>::value, "iter_impl only accepts (const) basic_json"); - public: + public: /// the type of the values when the iterator is dereferenced using value_type = typename basic_json::value_type; /// a type to represent differences between iterators using difference_type = typename basic_json::difference_type; /// defines a pointer to the type iterated over (value_type) using pointer = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_pointer, - typename basic_json::pointer>::type; + typename basic_json::const_pointer, + typename basic_json::pointer>::type; /// defines a reference to the type iterated over (value_type) using reference = typename std::conditional<std::is_const<U>::value, - typename basic_json::const_reference, - typename basic_json::reference>::type; + typename basic_json::const_reference, + typename basic_json::reference>::type; /// the category of the iterator using iterator_category = std::bidirectional_iterator_tag; @@ -8516,566 +8555,566 @@ class basic_json @post The iterator is initialized; i.e. `m_object != nullptr`. */ explicit iter_impl(pointer object) noexcept - : m_object(object) - { - assert(m_object != nullptr); - - switch (m_object->m_type) + : m_object(object) { - case basic_json::value_t::object: + assert(m_object != nullptr); + + switch (m_object->m_type) { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /* - Use operator `const_iterator` instead of `const_iterator(const iterator& - other) noexcept` to avoid two class definitions for @ref iterator and - @ref const_iterator. - - This function is only called if this class is an @ref iterator. If this - class is a @ref const_iterator this function is not called. - */ - operator const_iterator() const - { - const_iterator ret; - - if (m_object) - { - ret.m_object = m_object; - ret.m_it = m_it; - } - - return ret; - } - - /*! - @brief copy constructor - @param[in] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief copy assignment - @param[in,out] other iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(iter_impl other) noexcept( - std::is_nothrow_move_constructible<pointer>::value and - std::is_nothrow_move_assignable<pointer>::value and - std::is_nothrow_move_constructible<internal_iterator>::value and - std::is_nothrow_move_assignable<internal_iterator>::value - ) - { - std::swap(m_object, other.m_object); - std::swap(m_it, other.m_it); - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case basic_json::value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case basic_json::value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case basic_json::value_t::null: - { - JSON_THROW(std::out_of_range("cannot get value")); - } - - default: - { - if (m_it.primitive_iterator.is_begin()) + case basic_json::value_t::object: { - return *m_object; + m_it.object_iterator = typename object_t::iterator(); + break; } - JSON_THROW(std::out_of_range("cannot get value")); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case basic_json::value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - default: - { - if (m_it.primitive_iterator.is_begin()) + case basic_json::value_t::array: { - return m_object; + m_it.array_iterator = typename array_t::iterator(); + break; } + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /* + Use operator `const_iterator` instead of `const_iterator(const iterator& + other) noexcept` to avoid two class definitions for @ref iterator and + @ref const_iterator. + + This function is only called if this class is an @ref iterator. If this + class is a @ref const_iterator this function is not called. + */ + operator const_iterator() const + { + const_iterator ret; + + if (m_object) + { + ret.m_object = m_object; + ret.m_it = m_it; + } + + return ret; + } + + /*! + @brief copy constructor + @param[in] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief copy assignment + @param[in,out] other iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(iter_impl other) noexcept( + std::is_nothrow_move_constructible<pointer>::value and + std::is_nothrow_move_assignable<pointer>::value and + std::is_nothrow_move_constructible<internal_iterator>::value and + std::is_nothrow_move_assignable<internal_iterator>::value + ) + { + std::swap(m_object, other.m_object); + std::swap(m_it, other.m_it); + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case basic_json::value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case basic_json::value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case basic_json::value_t::null: + { JSON_THROW(std::out_of_range("cannot get value")); - } - } - } + } - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator++(int) - { - auto result = *this; - ++(*this); - return result; - } + default: + { + if (m_it.primitive_iterator.is_begin()) + { + return *m_object; + } - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; + JSON_THROW(std::out_of_range("cannot get value")); + } } } - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const { - case basic_json::value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } + assert(m_object != nullptr); - case basic_json::value_t::array: + switch (m_object->m_type) { - std::advance(m_it.array_iterator, -1); - break; - } + case basic_json::value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } - default: - { - --m_it.primitive_iterator; - break; + case basic_json::value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (m_it.primitive_iterator.is_begin()) + { + return m_object; + } + + JSON_THROW(std::out_of_range("cannot get value")); + } } } - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator++(int) { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - return (m_it.object_iterator == other.m_it.object_iterator); } - case basic_json::value_t::array: - { - return (m_it.array_iterator == other.m_it.array_iterator); - } + assert(m_object != nullptr); - default: + switch (m_object->m_type) { - return (m_it.primitive_iterator == other.m_it.primitive_iterator); + case basic_json::value_t::object: + { + return (m_it.object_iterator == other.m_it.object_iterator); + } + + case basic_json::value_t::array: + { + return (m_it.array_iterator == other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } } } - } - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (m_object != other.m_object) + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { JSON_THROW(std::domain_error("cannot compare iterators of different containers")); - } + } - assert(m_object != nullptr); + assert(m_object != nullptr); - switch (m_object->m_type) - { - case basic_json::value_t::object: + switch (m_object->m_type) { + case basic_json::value_t::object: + { JSON_THROW(std::domain_error("cannot compare order of object iterators")); - } - - case basic_json::value_t::array: - { - return (m_it.array_iterator < other.m_it.array_iterator); - } - - default: - { - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use offsets with object iterators")); - } - - case basic_json::value_t::array: - { - return m_it.array_iterator - other.m_it.array_iterator; - } - - default: - { - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case basic_json::value_t::object: - { - JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); - } - - case basic_json::value_t::array: - { - return *std::next(m_it.array_iterator, n); - } - - case basic_json::value_t::null: - { - JSON_THROW(std::out_of_range("cannot get value")); - } - - default: - { - if (m_it.primitive_iterator.get_value() == -n) - { - return *m_object; } - JSON_THROW(std::out_of_range("cannot get value")); + case basic_json::value_t::array: + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } } } - } - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const - { - assert(m_object != nullptr); - - if (m_object->is_object()) + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const { - return m_it.object_iterator->first; + return not other.operator < (*this); } + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); + } + + case basic_json::value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use offsets with object iterators")); + } + + case basic_json::value_t::array: + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case basic_json::value_t::object: + { + JSON_THROW(std::domain_error("cannot use operator[] for object iterators")); + } + + case basic_json::value_t::array: + { + return *std::next(m_it.array_iterator, n); + } + + case basic_json::value_t::null: + { + JSON_THROW(std::out_of_range("cannot get value")); + } + + default: + { + if (m_it.primitive_iterator.get_value() == -n) + { + return *m_object; + } + + JSON_THROW(std::out_of_range("cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (m_object->is_object()) + { + return m_it.object_iterator->first; + } + JSON_THROW(std::domain_error("cannot use key() for non-object iterators")); - } + } - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator m_it = internal_iterator(); - }; + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator m_it = internal_iterator(); + }; /*! @brief a template for a reverse iterator class @@ -9095,9 +9134,9 @@ class basic_json @since version 1.0.0 */ template<typename Base> - class json_reverse_iterator : public std::reverse_iterator<Base> + class json_reverse_iterator : public std::reverse_iterator<Base> { - public: + public: /// shortcut to the reverse iterator adaptor using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element @@ -9105,89 +9144,89 @@ class basic_json /// create reverse iterator from iterator json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) - {} + : base_iterator(it) + {} - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept - : base_iterator(it) - {} + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept + : base_iterator(it) + {} - /// post-increment (it++) - json_reverse_iterator operator++(int) - { - return base_iterator::operator++(1); - } + /// post-increment (it++) + json_reverse_iterator operator++(int) + { + return base_iterator::operator++(1); + } - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - base_iterator::operator++(); - return *this; - } + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + base_iterator::operator++(); + return *this; + } - /// post-decrement (it--) - json_reverse_iterator operator--(int) - { - return base_iterator::operator--(1); - } + /// post-decrement (it--) + json_reverse_iterator operator--(int) + { + return base_iterator::operator--(1); + } - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - base_iterator::operator--(); - return *this; - } + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + base_iterator::operator--(); + return *this; + } - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - base_iterator::operator+=(i); - return *this; - } + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + base_iterator::operator+=(i); + return *this; + } - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return this->base() - other.base(); - } + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return this->base() - other.base(); + } - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } - /// return the key of an object iterator - typename object_t::key_type key() const - { - auto it = --this->base(); - return it.key(); - } + /// return the key of an object iterator + typename object_t::key_type key() const + { + auto it = --this->base(); + return it.key(); + } - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } - }; + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } + }; private: @@ -9204,761 +9243,761 @@ class basic_json */ class lexer { - public: + public: /// token types for the parser enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input ///< indicating the end of the input buffer - }; - - /// the char type to use in the lexer - using lexer_char_t = unsigned char; - - /// a lexer from a buffer with given length - lexer(const lexer_char_t* buff, const size_t len) noexcept - : m_content(buff) - { - assert(m_content != nullptr); - m_start = m_cursor = m_content; - m_limit = m_content + len; - } - - /// a lexer from an input stream - explicit lexer(std::istream& s) - : m_stream(&s), m_line_buffer() - { - // immediately abort if stream is erroneous - if (s.fail()) { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_number, ///< a number -- use get_number() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input ///< indicating the end of the input buffer + }; + + /// the char type to use in the lexer + using lexer_char_t = unsigned char; + + /// a lexer from a buffer with given length + lexer(const lexer_char_t* buff, const size_t len) noexcept + : m_content(buff) + { + assert(m_content != nullptr); + m_start = m_cursor = m_content; + m_limit = m_content + len; + } + + /// a lexer from an input stream + explicit lexer(std::istream& s) + : m_stream(&s), m_line_buffer() + { + // immediately abort if stream is erroneous + if (s.fail()) + { JSON_THROW(std::invalid_argument("stream error")); - } - - // fill buffer - fill_line_buffer(); - - // skip UTF-8 byte-order mark - if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") - { - m_line_buffer[0] = ' '; - m_line_buffer[1] = ' '; - m_line_buffer[2] = ' '; - } - } - - // switch off unwanted functions (due to pointer members) - lexer() = delete; - lexer(const lexer&) = delete; - lexer operator=(const lexer&) = delete; - - /*! - @brief create a string from one or two Unicode code points - - There are two cases: (1) @a codepoint1 is in the Basic Multilingual - Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) - @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to - represent a code point above U+FFFF. - - @param[in] codepoint1 the code point (can be high surrogate) - @param[in] codepoint2 the code point (can be low surrogate or 0) - - @return string representation of the code point; the length of the - result string is between 1 and 4 characters. - - @throw std::out_of_range if code point is > 0x10ffff; example: `"code - points above 0x10FFFF are invalid"` - @throw std::invalid_argument if the low surrogate is invalid; example: - `""missing or wrong low surrogate""` - - @complexity Constant. - - @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> - */ - static string_t to_unicode(const std::size_t codepoint1, - const std::size_t codepoint2 = 0) - { - // calculate the code point from the given code points - std::size_t codepoint = codepoint1; - - // check if codepoint1 is a high surrogate - if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) - { - // check if codepoint2 is a low surrogate - if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) - { - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; } - else + + // fill buffer + fill_line_buffer(); + + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") { - JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; } } - string_t result; + // switch off unwanted functions (due to pointer members) + lexer() = delete; + lexer(const lexer&) = delete; + lexer operator=(const lexer&) = delete; - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - result.append(1, static_cast<typename string_t::value_type>(codepoint)); - } - else if (codepoint <= 0x7ff) - { - // 2-byte characters: 110xxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0xffff) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else if (codepoint <= 0x10ffff) - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); - result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); - } - else - { - JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); - } + /*! + @brief create a string from one or two Unicode code points - return result; - } + There are two cases: (1) @a codepoint1 is in the Basic Multilingual + Plane (U+0000 through U+FFFF) and @a codepoint2 is 0, or (2) + @a codepoint1 and @a codepoint2 are a UTF-16 surrogate pair to + represent a code point above U+FFFF. - /// return name of values of type token_type (only used for errors) - static std::string token_type_name(const token_type t) - { - switch (t) + @param[in] codepoint1 the code point (can be high surrogate) + @param[in] codepoint2 the code point (can be low surrogate or 0) + + @return string representation of the code point; the length of the + result string is between 1 and 4 characters. + + @throw std::out_of_range if code point is > 0x10ffff; example: `"code + points above 0x10FFFF are invalid"` + @throw std::invalid_argument if the low surrogate is invalid; example: + `""missing or wrong low surrogate""` + + @complexity Constant. + + @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> + */ + static string_t to_unicode(const std::size_t codepoint1, + const std::size_t codepoint2 = 0) { - case token_type::uninitialized: - return "<uninitialized>"; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case token_type::value_number: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return "<parse error>"; - case token_type::end_of_input: - return "end of input"; - default: + // calculate the code point from the given code points + std::size_t codepoint = codepoint1; + + // check if codepoint1 is a high surrogate + if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) { - // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - } - - /*! - This function implements a scanner for JSON. It is specified using - regular expressions that try to follow RFC 7159 as close as possible. - These regular expressions are then translated into a minimized - deterministic finite automaton (DFA) by the tool - [re2c](http://re2c.org). As a result, the translated code for this - function consists of a large block of code with `goto` jumps. - - @return the class of the next token read from the buffer - - @complexity Linear in the length of the input.\n - - Proposition: The loop below will always terminate for finite input.\n - - Proof (by contradiction): Assume a finite input. To loop forever, the - loop must never hit code with a `break` statement. The only code - snippets without a `break` statement are the continue statements for - whitespace and byte-order-marks. To loop forever, the input must be an - infinite sequence of whitespace or byte-order-marks. This contradicts - the assumption of finite input, q.e.d. - */ - token_type scan() - { - while (true) - { - // pointer for backtracking information - m_marker = nullptr; - - // remember the begin of the token - m_start = m_cursor; - assert(m_start != nullptr); - - /*!re2c - re2c:define:YYCTYPE = lexer_char_t; - re2c:define:YYCURSOR = m_cursor; - re2c:define:YYLIMIT = m_limit; - re2c:define:YYMARKER = m_marker; - re2c:define:YYFILL = "fill_line_buffer(@@); // LCOV_EXCL_LINE"; - re2c:define:YYFILL:naked = 1; - re2c:yyfill:enable = 1; - re2c:indent:string = " "; - re2c:indent:top = 1; - re2c:labelprefix = "basic_json_parser_"; - - // ignore whitespace - ws = [ \t\n\r]+; - ws { continue; } - - // structural characters - "[" { last_token_type = token_type::begin_array; break; } - "]" { last_token_type = token_type::end_array; break; } - "{" { last_token_type = token_type::begin_object; break; } - "}" { last_token_type = token_type::end_object; break; } - "," { last_token_type = token_type::value_separator; break; } - ":" { last_token_type = token_type::name_separator; break; } - - // literal names - "null" { last_token_type = token_type::literal_null; break; } - "true" { last_token_type = token_type::literal_true; break; } - "false" { last_token_type = token_type::literal_false; break; } - - // number - decimal_point = "."; - digit = [0-9]; - digit_1_9 = [1-9]; - e = "e" | "E"; - minus = "-"; - plus = "+"; - zero = "0"; - exp = e (minus | plus)? digit+; - frac = decimal_point digit+; - int = (zero | digit_1_9 digit*); - number = minus? int frac? exp?; - number { last_token_type = token_type::value_number; break; } - - // string - quotation_mark = "\""; - escape = "\\"; - unescaped = [^"\\\x00-\x1f]; - single_escaped = "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t"; - unicode_escaped = "u" [0-9a-fA-F]{4}; - escaped = escape (single_escaped | unicode_escaped); - char = unescaped | escaped; - string = quotation_mark char* quotation_mark; - string { last_token_type = token_type::value_string; break; } - - // end of file - "\x00" { last_token_type = token_type::end_of_input; break; } - - // anything else is an error - * { last_token_type = token_type::parse_error; break; } - */ - } - - return last_token_type; - } - - /*! - @brief append data from the stream to the line buffer - - This function is called by the scan() function when the end of the - buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be - incremented without leaving the limits of the line buffer. Note re2c - decides when to call this function. - - If the lexer reads from contiguous storage, there is no trailing null - byte. Therefore, this function must make sure to add these padding - null bytes. - - If the lexer reads from an input stream, this function reads the next - line of the input. - - @pre - p p p p p p u u u u u x . . . . . . - ^ ^ ^ ^ - m_content m_start | m_limit - m_cursor - - @post - u u u u u x x x x x x x . . . . . . - ^ ^ ^ - | m_cursor m_limit - m_start - m_content - */ - void fill_line_buffer(size_t n = 0) - { - // if line buffer is used, m_content points to its data - assert(m_line_buffer.empty() - or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); - - // if line buffer is used, m_limit is set past the end of its data - assert(m_line_buffer.empty() - or m_limit == m_content + m_line_buffer.size()); - - // pointer relationships - assert(m_content <= m_start); - assert(m_start <= m_cursor); - assert(m_cursor <= m_limit); - assert(m_marker == nullptr or m_marker <= m_limit); - - // number of processed characters (p) - const auto num_processed_chars = static_cast<size_t>(m_start - m_content); - // offset for m_marker wrt. to m_start - const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; - // number of unprocessed characters (u) - const auto offset_cursor = m_cursor - m_start; - - // no stream is used or end of file is reached - if (m_stream == nullptr or m_stream->eof()) - { - // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right - // thing. See http://stackoverflow.com/q/28142011/266378 - m_line_buffer.assign(m_start, m_limit); - - // append n characters to make sure that there is sufficient - // space between m_cursor and m_limit - m_line_buffer.append(1, '\x00'); - if (n > 0) - { - m_line_buffer.append(n - 1, '\x01'); - } - } - else - { - // delete processed characters from line buffer - m_line_buffer.erase(0, num_processed_chars); - // read next line from input stream - m_line_buffer_tmp.clear(); - std::getline(*m_stream, m_line_buffer_tmp, '\n'); - - // add line with newline symbol to the line buffer - m_line_buffer += m_line_buffer_tmp; - m_line_buffer.push_back('\n'); - } - - // set pointers - m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); - assert(m_content != nullptr); - m_start = m_content; - m_marker = m_start + offset_marker; - m_cursor = m_start + offset_cursor; - m_limit = m_start + m_line_buffer.size(); - } - - /// return string representation of last read token - string_t get_token_string() const - { - assert(m_start != nullptr); - return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), - static_cast<size_t>(m_cursor - m_start)); - } - - /*! - @brief return string value for string tokens - - The function iterates the characters between the opening and closing - quotes of the string value. The complete string is the range - [m_start,m_cursor). Consequently, we iterate from m_start+1 to - m_cursor-1. - - We differentiate two cases: - - 1. Escaped characters. In this case, a new character is constructed - according to the nature of the escape. Some escapes create new - characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied - as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape - `"\\uxxxx"` need special care. In this case, to_unicode takes care - of the construction of the values. - 2. Unescaped characters are copied as is. - - @pre `m_cursor - m_start >= 2`, meaning the length of the last token - is at least 2 bytes which is trivially true for any string (which - consists of at least two quotes). - - " c1 c2 c3 ... " - ^ ^ - m_start m_cursor - - @complexity Linear in the length of the string.\n - - Lemma: The loop body will always terminate.\n - - Proof (by contradiction): Assume the loop body does not terminate. As - the loop body does not contain another loop, one of the called - functions must never return. The called functions are `std::strtoul` - and to_unicode. Neither function can loop forever, so the loop body - will never loop forever which contradicts the assumption that the loop - body does not terminate, q.e.d.\n - - Lemma: The loop condition for the for loop is eventually false.\n - - Proof (by contradiction): Assume the loop does not terminate. Due to - the above lemma, this can only be due to a tautological loop - condition; that is, the loop condition i < m_cursor - 1 must always be - true. Let x be the change of i for any loop iteration. Then - m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This - can be rephrased to m_cursor - m_start - 2 > x. With the - precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value - of i is strictly increasing with each iteration, as it is incremented - by 1 in the iteration expression and never decremented inside the loop - body. Hence, the loop condition will eventually be false which - contradicts the assumption that the loop condition is a tautology, - q.e.d. - - @return string value of current token without opening and closing - quotes - @throw std::out_of_range if to_unicode fails - */ - string_t get_string() const - { - assert(m_cursor - m_start >= 2); - - string_t result; - result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); - - // iterate the result between the quotes - for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) - { - // find next escape character - auto e = std::find(i, m_cursor - 1, '\\'); - if (e != i) - { - // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 - for (auto k = i; k < e; k++) + // check if codepoint2 is a low surrogate + if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) { - result.push_back(static_cast<typename string_t::value_type>(*k)); - } - i = e - 1; // -1 because of ++i - } - else - { - // processing escaped character - // read next character - ++i; - - switch (*i) - { - // the default escapes - case 't': - { - result += "\t"; - break; - } - case 'b': - { - result += "\b"; - break; - } - case 'f': - { - result += "\f"; - break; - } - case 'n': - { - result += "\n"; - break; - } - case 'r': - { - result += "\r"; - break; - } - case '\\': - { - result += "\\"; - break; - } - case '/': - { - result += "/"; - break; - } - case '"': - { - result += "\""; - break; - } - - // unicode - case 'u': - { - // get code xxxx from uxxxx - auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), - 4).c_str(), nullptr, 16); - - // check if codepoint is a high surrogate - if (codepoint >= 0xD800 and codepoint <= 0xDBFF) - { - // make sure there is a subsequent unicode - if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') - { - JSON_THROW(std::invalid_argument("missing low surrogate")); - } - - // get code yyyy from uxxxx\uyyyy - auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> - (i + 7), 4).c_str(), nullptr, 16); - result += to_unicode(codepoint, codepoint2); - // skip the next 10 characters (xxxx\uyyyy) - i += 10; - } - else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) - { - // we found a lone low surrogate - JSON_THROW(std::invalid_argument("missing high surrogate")); - } - else - { - // add unicode character(s) - result += to_unicode(codepoint); - // skip the next four characters (xxxx) - i += 4; - } - break; - } - } - } - } - - return result; - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - long double str_to_float_t(long double* /* type */, char** endptr) const - { - return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - double str_to_float_t(double* /* type */, char** endptr) const - { - return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief parse floating point number - - This function (and its overloads) serves to select the most approprate - standard floating point number parsing function based on the type - supplied via the first parameter. Set this to @a - static_cast<number_float_t*>(nullptr). - - @param[in,out] endptr recieves a pointer to the first character after - the number - - @return the floating point number - */ - float str_to_float_t(float* /* type */, char** endptr) const - { - return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); - } - - /*! - @brief return number value for number tokens - - This function translates the last token into the most appropriate - number type (either integer, unsigned integer or floating point), - which is passed back to the caller via the result parameter. - - This function parses the integer component up to the radix point or - exponent while collecting information about the 'floating point - representation', which it stores in the result parameter. If there is - no radix point or exponent, and the number can fit into a @ref - number_integer_t or @ref number_unsigned_t then it sets the result - parameter accordingly. - - If the number is a floating point number the number is then parsed - using @a std:strtod (or @a std:strtof or @a std::strtold). - - @param[out] result @ref basic_json object to receive the number, or - NAN if the conversion read past the current token. The latter case - needs to be treated by the caller function. - */ - void get_number(basic_json& result) const - { - assert(m_start != nullptr); - - const lexer::lexer_char_t* curptr = m_start; - - // accumulate the integer conversion result (unsigned for now) - number_unsigned_t value = 0; - - // maximum absolute value of the relevant integer type - number_unsigned_t max; - - // temporarily store the type to avoid unecessary bitfield access - value_t type; - - // look for sign - if (*curptr == '-') - { - type = value_t::number_integer; - max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; - curptr++; - } - else - { - type = value_t::number_unsigned; - max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); - } - - // count the significant figures - for (; curptr < m_cursor; curptr++) - { - // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') - { - if (*curptr == '.') - { - // don't count '.' but change to float - type = value_t::number_float; - continue; - } - // assume exponent (if not then will fail parse): change to - // float, stop counting and record exponent details - type = value_t::number_float; - break; - } - - // skip if definitely not an integer - if (type != value_t::number_float) - { - auto digit = static_cast<number_unsigned_t>(*curptr - '0'); - - // overflow if value * 10 + digit > max, move terms around - // to avoid overflow in intermediate values - if (value > (max - digit) / 10) - { - // overflow - type = value_t::number_float; + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; } else { - // no overflow - value = value * 10 + digit; + JSON_THROW(std::invalid_argument("missing or wrong low surrogate")); + } + } + + string_t result; + + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + result.append(1, static_cast<typename string_t::value_type>(codepoint)); + } + else if (codepoint <= 0x7ff) + { + // 2-byte characters: 110xxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0xffff) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else if (codepoint <= 0x10ffff) + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F))); + result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F))); + } + else + { + JSON_THROW(std::out_of_range("code points above 0x10FFFF are invalid")); + } + + return result; + } + + /// return name of values of type token_type (only used for errors) + static std::string token_type_name(const token_type t) + { + switch (t) + { + case token_type::uninitialized: + return "<uninitialized>"; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_number: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return "<parse error>"; + case token_type::end_of_input: + return "end of input"; + default: + { + // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE } } } - // save the value (if not a float) - if (type == value_t::number_unsigned) - { - result.m_value.number_unsigned = value; - } - else if (type == value_t::number_integer) - { - // invariant: if we parsed a '-', the absolute value is between - // 0 (we allow -0) and max == -INT64_MIN - assert(value >= 0); - assert(value <= max); + /*! + This function implements a scanner for JSON. It is specified using + regular expressions that try to follow RFC 7159 as close as possible. + These regular expressions are then translated into a minimized + deterministic finite automaton (DFA) by the tool + [re2c](http://re2c.org). As a result, the translated code for this + function consists of a large block of code with `goto` jumps. - if (value == max) + @return the class of the next token read from the buffer + + @complexity Linear in the length of the input.\n + + Proposition: The loop below will always terminate for finite input.\n + + Proof (by contradiction): Assume a finite input. To loop forever, the + loop must never hit code with a `break` statement. The only code + snippets without a `break` statement are the continue statements for + whitespace and byte-order-marks. To loop forever, the input must be an + infinite sequence of whitespace or byte-order-marks. This contradicts + the assumption of finite input, q.e.d. + */ + token_type scan() + { + while (true) { - // we cannot simply negate value (== max == -INT64_MIN), - // see https://github.com/nlohmann/json/issues/389 - result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + // pointer for backtracking information + m_marker = nullptr; + + // remember the begin of the token + m_start = m_cursor; + assert(m_start != nullptr); + + /*!re2c + re2c:define:YYCTYPE = lexer_char_t; + re2c:define:YYCURSOR = m_cursor; + re2c:define:YYLIMIT = m_limit; + re2c:define:YYMARKER = m_marker; + re2c:define:YYFILL = "fill_line_buffer(@@); // LCOV_EXCL_LINE"; + re2c:define:YYFILL:naked = 1; + re2c:yyfill:enable = 1; + re2c:indent:string = " "; + re2c:indent:top = 1; + re2c:labelprefix = "basic_json_parser_"; + + // ignore whitespace + ws = [ \t\n\r]+; + ws { continue; } + + // structural characters + "[" { last_token_type = token_type::begin_array; break; } + "]" { last_token_type = token_type::end_array; break; } + "{" { last_token_type = token_type::begin_object; break; } + "}" { last_token_type = token_type::end_object; break; } + "," { last_token_type = token_type::value_separator; break; } + ":" { last_token_type = token_type::name_separator; break; } + + // literal names + "null" { last_token_type = token_type::literal_null; break; } + "true" { last_token_type = token_type::literal_true; break; } + "false" { last_token_type = token_type::literal_false; break; } + + // number + decimal_point = "."; + digit = [0-9]; + digit_1_9 = [1-9]; + e = "e" | "E"; + minus = "-"; + plus = "+"; + zero = "0"; + exp = e (minus | plus)? digit+; + frac = decimal_point digit+; + int = (zero | digit_1_9 digit*); + number = minus? int frac? exp?; + number { last_token_type = token_type::value_number; break; } + + // string + quotation_mark = "\""; + escape = "\\"; + unescaped = [^"\\\x00-\x1f]; + single_escaped = "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t"; + unicode_escaped = "u" [0-9a-fA-F]{4}; + escaped = escape (single_escaped | unicode_escaped); + char = unescaped | escaped; + string = quotation_mark char* quotation_mark; + string { last_token_type = token_type::value_string; break; } + + // end of file + "\x00" { last_token_type = token_type::end_of_input; break; } + + // anything else is an error + * { last_token_type = token_type::parse_error; break; } + */ + } + + return last_token_type; + } + + /*! + @brief append data from the stream to the line buffer + + This function is called by the scan() function when the end of the + buffer (`m_limit`) is reached and the `m_cursor` pointer cannot be + incremented without leaving the limits of the line buffer. Note re2c + decides when to call this function. + + If the lexer reads from contiguous storage, there is no trailing null + byte. Therefore, this function must make sure to add these padding + null bytes. + + If the lexer reads from an input stream, this function reads the next + line of the input. + + @pre + p p p p p p u u u u u x . . . . . . + ^ ^ ^ ^ + m_content m_start | m_limit + m_cursor + + @post + u u u u u x x x x x x x . . . . . . + ^ ^ ^ + | m_cursor m_limit + m_start + m_content + */ + void fill_line_buffer(size_t n = 0) + { + // if line buffer is used, m_content points to its data + assert(m_line_buffer.empty() + or m_content == reinterpret_cast<const lexer_char_t*>(m_line_buffer.data())); + + // if line buffer is used, m_limit is set past the end of its data + assert(m_line_buffer.empty() + or m_limit == m_content + m_line_buffer.size()); + + // pointer relationships + assert(m_content <= m_start); + assert(m_start <= m_cursor); + assert(m_cursor <= m_limit); + assert(m_marker == nullptr or m_marker <= m_limit); + + // number of processed characters (p) + const auto num_processed_chars = static_cast<size_t>(m_start - m_content); + // offset for m_marker wrt. to m_start + const auto offset_marker = (m_marker == nullptr) ? 0 : m_marker - m_start; + // number of unprocessed characters (u) + const auto offset_cursor = m_cursor - m_start; + + // no stream is used or end of file is reached + if (m_stream == nullptr or m_stream->eof()) + { + // m_start may or may not be pointing into m_line_buffer at + // this point. We trust the standand library to do the right + // thing. See http://stackoverflow.com/q/28142011/266378 + m_line_buffer.assign(m_start, m_limit); + + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + if (n > 0) + { + m_line_buffer.append(n - 1, '\x01'); + } } else { - // all other values can be negated safely - result.m_value.number_integer = -static_cast<number_integer_t>(value); + // delete processed characters from line buffer + m_line_buffer.erase(0, num_processed_chars); + // read next line from input stream + m_line_buffer_tmp.clear(); + std::getline(*m_stream, m_line_buffer_tmp, '\n'); + + // add line with newline symbol to the line buffer + m_line_buffer += m_line_buffer_tmp; + m_line_buffer.push_back('\n'); } + + // set pointers + m_content = reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()); + assert(m_content != nullptr); + m_start = m_content; + m_marker = m_start + offset_marker; + m_cursor = m_start + offset_cursor; + m_limit = m_start + m_line_buffer.size(); } - else + + /// return string representation of last read token + string_t get_token_string() const { - // parse with strtod + assert(m_start != nullptr); + return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start), + static_cast<size_t>(m_cursor - m_start)); + } + + /*! + @brief return string value for string tokens + + The function iterates the characters between the opening and closing + quotes of the string value. The complete string is the range + [m_start,m_cursor). Consequently, we iterate from m_start+1 to + m_cursor-1. + + We differentiate two cases: + + 1. Escaped characters. In this case, a new character is constructed + according to the nature of the escape. Some escapes create new + characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied + as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape + `"\\uxxxx"` need special care. In this case, to_unicode takes care + of the construction of the values. + 2. Unescaped characters are copied as is. + + @pre `m_cursor - m_start >= 2`, meaning the length of the last token + is at least 2 bytes which is trivially true for any string (which + consists of at least two quotes). + + " c1 c2 c3 ... " + ^ ^ + m_start m_cursor + + @complexity Linear in the length of the string.\n + + Lemma: The loop body will always terminate.\n + + Proof (by contradiction): Assume the loop body does not terminate. As + the loop body does not contain another loop, one of the called + functions must never return. The called functions are `std::strtoul` + and to_unicode. Neither function can loop forever, so the loop body + will never loop forever which contradicts the assumption that the loop + body does not terminate, q.e.d.\n + + Lemma: The loop condition for the for loop is eventually false.\n + + Proof (by contradiction): Assume the loop does not terminate. Due to + the above lemma, this can only be due to a tautological loop + condition; that is, the loop condition i < m_cursor - 1 must always be + true. Let x be the change of i for any loop iteration. Then + m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This + can be rephrased to m_cursor - m_start - 2 > x. With the + precondition, we x <= 0, meaning that the loop condition holds + indefinitly if i is always decreased. However, observe that the value + of i is strictly increasing with each iteration, as it is incremented + by 1 in the iteration expression and never decremented inside the loop + body. Hence, the loop condition will eventually be false which + contradicts the assumption that the loop condition is a tautology, + q.e.d. + + @return string value of current token without opening and closing + quotes + @throw std::out_of_range if to_unicode fails + */ + string_t get_string() const + { + assert(m_cursor - m_start >= 2); + + string_t result; + result.reserve(static_cast<size_t>(m_cursor - m_start - 2)); + + // iterate the result between the quotes + for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i) + { + // find next escape character + auto e = std::find(i, m_cursor - 1, '\\'); + if (e != i) + { + // see https://github.com/nlohmann/json/issues/365#issuecomment-262874705 + for (auto k = i; k < e; k++) + { + result.push_back(static_cast<typename string_t::value_type>(*k)); + } + i = e - 1; // -1 because of ++i + } + else + { + // processing escaped character + // read next character + ++i; + + switch (*i) + { + // the default escapes + case 't': + { + result += "\t"; + break; + } + case 'b': + { + result += "\b"; + break; + } + case 'f': + { + result += "\f"; + break; + } + case 'n': + { + result += "\n"; + break; + } + case 'r': + { + result += "\r"; + break; + } + case '\\': + { + result += "\\"; + break; + } + case '/': + { + result += "/"; + break; + } + case '"': + { + result += "\""; + break; + } + + // unicode + case 'u': + { + // get code xxxx from uxxxx + auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1), + 4).c_str(), nullptr, 16); + + // check if codepoint is a high surrogate + if (codepoint >= 0xD800 and codepoint <= 0xDBFF) + { + // make sure there is a subsequent unicode + if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u') + { + JSON_THROW(std::invalid_argument("missing low surrogate")); + } + + // get code yyyy from uxxxx\uyyyy + auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer> + (i + 7), 4).c_str(), nullptr, 16); + result += to_unicode(codepoint, codepoint2); + // skip the next 10 characters (xxxx\uyyyy) + i += 10; + } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + JSON_THROW(std::invalid_argument("missing high surrogate")); + } + else + { + // add unicode character(s) + result += to_unicode(codepoint); + // skip the next four characters (xxxx) + i += 4; + } + break; + } + } + } + } + + return result; + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + long double str_to_float_t(long double* /* type */, char** endptr) const + { + return std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + double str_to_float_t(double* /* type */, char** endptr) const + { + return std::strtod(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief parse floating point number + + This function (and its overloads) serves to select the most approprate + standard floating point number parsing function based on the type + supplied via the first parameter. Set this to @a + static_cast<number_float_t*>(nullptr). + + @param[in,out] endptr recieves a pointer to the first character after + the number + + @return the floating point number + */ + float str_to_float_t(float* /* type */, char** endptr) const + { + return std::strtof(reinterpret_cast<typename string_t::const_pointer>(m_start), endptr); + } + + /*! + @brief return number value for number tokens + + This function translates the last token into the most appropriate + number type (either integer, unsigned integer or floating point), + which is passed back to the caller via the result parameter. + + This function parses the integer component up to the radix point or + exponent while collecting information about the 'floating point + representation', which it stores in the result parameter. If there is + no radix point or exponent, and the number can fit into a @ref + number_integer_t or @ref number_unsigned_t then it sets the result + parameter accordingly. + + If the number is a floating point number the number is then parsed + using @a std:strtod (or @a std:strtof or @a std::strtold). + + @param[out] result @ref basic_json object to receive the number, or + NAN if the conversion read past the current token. The latter case + needs to be treated by the caller function. + */ + void get_number(basic_json& result) const + { + assert(m_start != nullptr); + + const lexer::lexer_char_t* curptr = m_start; + + // accumulate the integer conversion result (unsigned for now) + number_unsigned_t value = 0; + + // maximum absolute value of the relevant integer type + number_unsigned_t max; + + // temporarily store the type to avoid unecessary bitfield access + value_t type; + + // look for sign + if (*curptr == '-') + { + type = value_t::number_integer; + max = static_cast<uint64_t>((std::numeric_limits<number_integer_t>::max)()) + 1; + curptr++; + } + else + { + type = value_t::number_unsigned; + max = static_cast<uint64_t>((std::numeric_limits<number_unsigned_t>::max)()); + } + + // count the significant figures + for (; curptr < m_cursor; curptr++) + { + // quickly skip tests if a digit + if (*curptr < '0' || *curptr > '9') + { + if (*curptr == '.') + { + // don't count '.' but change to float + type = value_t::number_float; + continue; + } + // assume exponent (if not then will fail parse): change to + // float, stop counting and record exponent details + type = value_t::number_float; + break; + } + + // skip if definitely not an integer + if (type != value_t::number_float) + { + auto digit = static_cast<number_unsigned_t>(*curptr - '0'); + + // overflow if value * 10 + digit > max, move terms around + // to avoid overflow in intermediate values + if (value > (max - digit) / 10) + { + // overflow + type = value_t::number_float; + } + else + { + // no overflow + value = value * 10 + digit; + } + } + } + + // save the value (if not a float) + if (type == value_t::number_unsigned) + { + result.m_value.number_unsigned = value; + } + else if (type == value_t::number_integer) + { + // invariant: if we parsed a '-', the absolute value is between + // 0 (we allow -0) and max == -INT64_MIN + assert(value >= 0); + assert(value <= max); + + if (value == max) + { + // we cannot simply negate value (== max == -INT64_MIN), + // see https://github.com/nlohmann/json/issues/389 + result.m_value.number_integer = static_cast<number_integer_t>(INT64_MIN); + } + else + { + // all other values can be negated safely + result.m_value.number_integer = -static_cast<number_integer_t>(value); + } + } + else + { + // parse with strtod result.m_value.number_float = str_to_float_t(static_cast<number_float_t*>(nullptr), nullptr); - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - type = value_t::null; - result.m_value = basic_json::json_value(); + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); + } } + + // save the type + result.m_type = type; } - // save the type - result.m_type = type; - } - - private: - /// optional input stream - std::istream* m_stream = nullptr; - /// line buffer buffer for m_stream - string_t m_line_buffer {}; - /// used for filling m_line_buffer - string_t m_line_buffer_tmp {}; - /// the buffer pointer - const lexer_char_t* m_content = nullptr; - /// pointer to the beginning of the current symbol - const lexer_char_t* m_start = nullptr; - /// pointer for backtracking information - const lexer_char_t* m_marker = nullptr; - /// pointer to the current symbol - const lexer_char_t* m_cursor = nullptr; - /// pointer to the end of the buffer - const lexer_char_t* m_limit = nullptr; - /// the last token type - token_type last_token_type = token_type::end_of_input; - }; + private: + /// optional input stream + std::istream* m_stream = nullptr; + /// line buffer buffer for m_stream + string_t m_line_buffer {}; + /// used for filling m_line_buffer + string_t m_line_buffer_tmp {}; + /// the buffer pointer + const lexer_char_t* m_content = nullptr; + /// pointer to the beginning of the current symbol + const lexer_char_t* m_start = nullptr; + /// pointer for backtracking information + const lexer_char_t* m_marker = nullptr; + /// pointer to the current symbol + const lexer_char_t* m_cursor = nullptr; + /// pointer to the end of the buffer + const lexer_char_t* m_limit = nullptr; + /// the last token type + token_type last_token_type = token_type::end_of_input; + }; /*! @brief syntax analysis @@ -9967,282 +10006,282 @@ class basic_json */ class parser { - public: + public: /// a parser reading from a string literal parser(const char* buff, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) - {} + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(buff), std::strlen(buff)) + {} - /// a parser reading from an input stream - parser(std::istream& is, const parser_callback_t cb = nullptr) - : callback(cb), m_lexer(is) - {} + /// a parser reading from an input stream + parser(std::istream& is, const parser_callback_t cb = nullptr) + : callback(cb), m_lexer(is) + {} - /// a parser reading from an iterator range with contiguous storage - template<class IteratorType, typename std::enable_if< - std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value - , int>::type - = 0> - parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) - : callback(cb), - m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), - static_cast<size_t>(std::distance(first, last))) - {} + /// a parser reading from an iterator range with contiguous storage + template<class IteratorType, typename std::enable_if< + std::is_same<typename std::iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value + , int>::type + = 0> + parser(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr) + : callback(cb), + m_lexer(reinterpret_cast<const typename lexer::lexer_char_t*>(&(*first)), + static_cast<size_t>(std::distance(first, last))) + {} - /// public parser interface - basic_json parse() - { - // read first token - get_token(); - - basic_json result = parse_internal(true); - result.assert_invariant(); - - expect(lexer::token_type::end_of_input); - - // return parser result and replace it with null in case the - // top-level value was discarded by the callback function - return result.is_discarded() ? basic_json() : std::move(result); - } - - private: - /// the actual parser - basic_json parse_internal(bool keep) - { - auto result = basic_json(value_t::discarded); - - switch (last_token) + /// public parser interface + basic_json parse() { - case lexer::token_type::begin_object: + // read first token + get_token(); + + basic_json result = parse_internal(true); + result.assert_invariant(); + + expect(lexer::token_type::end_of_input); + + // return parser result and replace it with null in case the + // top-level value was discarded by the callback function + return result.is_discarded() ? basic_json() : std::move(result); + } + + private: + /// the actual parser + basic_json parse_internal(bool keep) + { + auto result = basic_json(value_t::discarded); + + switch (last_token) { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) + case lexer::token_type::begin_object: { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::object_start, result)) != 0))) + { + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } - // read next token - get_token(); + // read next token + get_token(); - // closing } -> we are done - if (last_token == lexer::token_type::end_object) - { + // closing } -> we are done + if (last_token == lexer::token_type::end_object) + { + get_token(); + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result = basic_json(value_t::discarded); + } + return result; + } + + // no comma is expected here + unexpect(lexer::token_type::value_separator); + + // otherwise: parse key-value pairs + do + { + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) + { + get_token(); + } + + // store key + expect(lexer::token_type::value_string); + const auto key = m_lexer.get_string(); + + bool keep_tag = false; + if (keep) + { + if (callback) + { + basic_json k(key); + keep_tag = callback(depth, parse_event_t::key, k); + } + else + { + keep_tag = true; + } + } + + // parse separator (:) + get_token(); + expect(lexer::token_type::name_separator); + + // parse and add value + get_token(); + auto value = parse_internal(keep); + if (keep and keep_tag and not value.is_discarded()) + { + result[key] = std::move(value); + } + } + while (last_token == lexer::token_type::value_separator); + + // closing } + expect(lexer::token_type::end_object); get_token(); if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) { result = basic_json(value_t::discarded); } + return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse key-value pairs - do + case lexer::token_type::begin_array: { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) + if (keep and (not callback + or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) + { + // explicitly set result to object to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == lexer::token_type::end_array) { get_token(); + if (callback and not callback(--depth, parse_event_t::array_end, result)) + { + result = basic_json(value_t::discarded); + } + return result; } - // store key - expect(lexer::token_type::value_string); - const auto key = m_lexer.get_string(); + // no comma is expected here + unexpect(lexer::token_type::value_separator); - bool keep_tag = false; - if (keep) + // otherwise: parse values + do { - if (callback) + // ugly, but could be fixed with loop reorganization + if (last_token == lexer::token_type::value_separator) { - basic_json k(key); - keep_tag = callback(depth, parse_event_t::key, k); + get_token(); } - else + + // parse value + auto value = parse_internal(keep); + if (keep and not value.is_discarded()) { - keep_tag = true; + result.push_back(std::move(value)); } } + while (last_token == lexer::token_type::value_separator); - // parse separator (:) + // closing ] + expect(lexer::token_type::end_array); get_token(); - expect(lexer::token_type::name_separator); - - // parse and add value - get_token(); - auto value = parse_internal(keep); - if (keep and keep_tag and not value.is_discarded()) - { - result[key] = std::move(value); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing } - expect(lexer::token_type::end_object); - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result = basic_json(value_t::discarded); - } - - return result; - } - - case lexer::token_type::begin_array: - { - if (keep and (not callback - or ((keep = callback(depth++, parse_event_t::array_start, result)) != 0))) - { - // explicitly set result to object to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == lexer::token_type::end_array) - { - get_token(); - if (callback and not callback(--depth, parse_event_t::array_end, result)) + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) { result = basic_json(value_t::discarded); } + return result; } - // no comma is expected here - unexpect(lexer::token_type::value_separator); - - // otherwise: parse values - do + case lexer::token_type::literal_null: { - // ugly, but could be fixed with loop reorganization - if (last_token == lexer::token_type::value_separator) - { - get_token(); - } - - // parse value - auto value = parse_internal(keep); - if (keep and not value.is_discarded()) - { - result.push_back(std::move(value)); - } - } - while (last_token == lexer::token_type::value_separator); - - // closing ] - expect(lexer::token_type::end_array); - get_token(); - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) - { - result = basic_json(value_t::discarded); + get_token(); + result.m_type = value_t::null; + break; } - return result; + case lexer::token_type::value_string: + { + const auto s = m_lexer.get_string(); + get_token(); + result = basic_json(s); + break; + } + + case lexer::token_type::literal_true: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case lexer::token_type::literal_false: + { + get_token(); + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case lexer::token_type::value_number: + { + m_lexer.get_number(result); + get_token(); + break; + } + + default: + { + // the last token was unexpected + unexpect(last_token); + } } - case lexer::token_type::literal_null: + if (keep and callback and not callback(depth, parse_event_t::value, result)) { - get_token(); - result.m_type = value_t::null; - break; - } - - case lexer::token_type::value_string: - { - const auto s = m_lexer.get_string(); - get_token(); - result = basic_json(s); - break; - } - - case lexer::token_type::literal_true: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case lexer::token_type::literal_false: - { - get_token(); - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case lexer::token_type::value_number: - { - m_lexer.get_number(result); - get_token(); - break; - } - - default: - { - // the last token was unexpected - unexpect(last_token); + result = basic_json(value_t::discarded); } + return result; } - if (keep and callback and not callback(depth, parse_event_t::value, result)) + /// get next token from lexer + typename lexer::token_type get_token() { - result = basic_json(value_t::discarded); + last_token = m_lexer.scan(); + return last_token; } - return result; - } - /// get next token from lexer - typename lexer::token_type get_token() - { - last_token = m_lexer.scan(); - return last_token; - } - - void expect(typename lexer::token_type t) const - { - if (t != last_token) + void expect(typename lexer::token_type t) const { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); - error_msg += "; expected " + lexer::token_type_name(t); + if (t != last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); + error_msg += "; expected " + lexer::token_type_name(t); JSON_THROW(std::invalid_argument(error_msg)); + } } - } - void unexpect(typename lexer::token_type t) const - { - if (t == last_token) + void unexpect(typename lexer::token_type t) const { - std::string error_msg = "parse error - unexpected "; - error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + - "'") : - lexer::token_type_name(last_token)); + if (t == last_token) + { + std::string error_msg = "parse error - unexpected "; + error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token_string() + + "'") : + lexer::token_type_name(last_token)); JSON_THROW(std::invalid_argument(error_msg)); + } } - } - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - typename lexer::token_type last_token = lexer::token_type::uninitialized; - /// the lexer - lexer m_lexer; - }; + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + typename lexer::token_type last_token = lexer::token_type::uninitialized; + /// the lexer + lexer m_lexer; + }; public: /*! @@ -10261,7 +10300,7 @@ class basic_json /// allow basic_json to access private members friend class basic_json; - public: + public: /*! @brief create JSON pointer @@ -10285,573 +10324,573 @@ class basic_json @since version 2.0.0 */ explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} + : reference_tokens(split(s)) + {} - /*! - @brief return a string representation of the JSON pointer + /*! + @brief return a string representation of the JSON pointer - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode - @return a string representation of the JSON pointer + @return a string representation of the JSON pointer - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} - @since version 2.0.0 - */ - std::string to_string() const noexcept - { - return std::accumulate(reference_tokens.begin(), - reference_tokens.end(), std::string{}, - [](const std::string & a, const std::string & b) + @since version 2.0.0 + */ + std::string to_string() const noexcept { - return a + "/" + escape(b); - }); - } + return std::accumulate(reference_tokens.begin(), + reference_tokens.end(), std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } - - private: - /// remove and return last reference pointer - std::string pop_back() - { - if (is_root()) + /// @copydoc to_string() + operator std::string() const { + return to_string(); + } + + private: + /// remove and return last reference pointer + std::string pop_back() + { + if (is_root()) + { JSON_THROW(std::domain_error("JSON pointer has no parent")); + } + + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; } - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; - } - - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } - - json_pointer top() const - { - if (is_root()) + /// return whether pointer points to the root document + bool is_root() const { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (is_root()) + { JSON_THROW(std::domain_error("JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - */ - reference get_and_create(reference j) const - { - pointer result = &j; - - // in case no reference tokens exist, return a reference to the - // JSON value j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case value_t::array: - { - // create an entry in the array - result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - /* - The following code is only reached if there exists a - reference token _and_ the current value is primitive. In - this case, we have an error situation, because primitive - values may only occur as single value; that is, with an - empty list of reference tokens. - */ - default: - { - JSON_THROW(std::domain_error("invalid value to unflatten")); - } - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries - to create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number - */ - reference get_unchecked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == value_t::null) - { - // check if reference token is a number - const bool nums = std::all_of(reference_token.begin(), - reference_token.end(), - [](const char x) - { - return std::isdigit(x); - }); - - // change value to array for numbers or "-" or to object - // otherwise - if (nums or reference_token == "-") - { - *ptr = value_t::array; - } - else - { - *ptr = value_t::object; - } } - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicityly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - } - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - reference get_checked(pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - */ - const_reference get_unchecked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" cannot be used for const access - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // use unchecked array access - ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - const_reference get_checked(const_pointer ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case value_t::array: - { - if (reference_token == "-") - { - // "-" always fails the range check - throw std::out_of_range("array index '-' (" + - std::to_string(ptr->m_value.array->size()) + - ") is out of range"); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (reference_token.size() > 1 and reference_token[0] == '0') - { - JSON_THROW(std::domain_error("array index must not begin with '0'")); - } - - // note: at performs range check - ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); - break; - } - - default: - { - JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); - } - } - } - - return *ptr; - } - - /// split the string input to reference tokens - static std::vector<std::string> split(const std::string& reference_string) - { - std::vector<std::string> result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; return result; } - // check if nonempty reference string begins with slash - if (reference_string[0] != '/') + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + */ + reference get_and_create(reference j) const { + pointer result = &j; + + // in case no reference tokens exist, return a reference to the + // JSON value j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case value_t::array: + { + // create an entry in the array + result = &result->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + /* + The following code is only reached if there exists a + reference token _and_ the current value is primitive. In + this case, we have an error situation, because primitive + values may only occur as single value; that is, with an + empty list of reference tokens. + */ + default: + { + JSON_THROW(std::domain_error("invalid value to unflatten")); + } + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries + to create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw std::out_of_range if the JSON pointer can not be resolved + @throw std::domain_error if an array index begins with '0' + @throw std::invalid_argument if an array index was not a number + */ + reference get_unchecked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == value_t::null) + { + // check if reference token is a number + const bool nums = std::all_of(reference_token.begin(), + reference_token.end(), + [](const char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object + // otherwise + if (nums or reference_token == "-") + { + *ptr = value_t::array; + } + else + { + *ptr = value_t::object; + } + } + + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicityly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + } + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + reference get_checked(pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + */ + const_reference get_unchecked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" cannot be used for const access + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // use unchecked array access + ptr = &ptr->operator[](static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + const_reference get_checked(const_pointer ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case value_t::array: + { + if (reference_token == "-") + { + // "-" always fails the range check + throw std::out_of_range("array index '-' (" + + std::to_string(ptr->m_value.array->size()) + + ") is out of range"); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (reference_token.size() > 1 and reference_token[0] == '0') + { + JSON_THROW(std::domain_error("array index must not begin with '0'")); + } + + // note: at performs range check + ptr = &ptr->at(static_cast<size_type>(std::stoi(reference_token))); + break; + } + + default: + { + JSON_THROW(std::out_of_range("unresolved reference token '" + reference_token + "'")); + } + } + } + + return *ptr; + } + + /// split the string input to reference tokens + static std::vector<std::string> split(const std::string& reference_string) + { + std::vector<std::string> result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (reference_string[0] != '/') + { JSON_THROW(std::domain_error("JSON pointer must be empty or begin with '/'")); - } + } - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); - // check reference tokens are properly escaped + // check reference tokens are properly escaped for (size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; + pos != std::string::npos; pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1')) { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1')) + { JSON_THROW(std::domain_error("escape error: '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - private: - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, - const std::string& f, - const std::string& t) - { - assert(not f.empty()); - - for ( - size_t pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t - pos = s.find(f, pos + t.size()) // find next occurrence of f - ); - } - - /// escape tilde and slash - static std::string escape(std::string s) - { - // escape "~"" to "~0" and "/" to "~1" - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape tilde and slash - static void unescape(std::string& s) - { - // first transform any occurrence of the sequence '~1' to '/' - replace_substring(s, "~1", "/"); - // then transform any occurrence of the sequence '~0' to '~' - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const basic_json& value, - basic_json& result) - { - switch (value.m_type) - { - case value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); } } - break; + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); } - case value_t::object: + return result; + } + + private: + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, + const std::string& f, + const std::string& t) + { + assert(not f.empty()); + + for ( + size_t pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t + pos = s.find(f, pos + t.size()) // find next occurrence of f + ); + } + + /// escape tilde and slash + static std::string escape(std::string s) + { + // escape "~"" to "~0" and "/" to "~1" + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape tilde and slash + static void unescape(std::string& s) + { + // first transform any occurrence of the sequence '~1' to '/' + replace_substring(s, "~1", "/"); + // then transform any occurrence of the sequence '~0' to '~' + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const basic_json& value, + basic_json& result) + { + switch (value.m_type) { - if (value.m_value.object->empty()) + case value_t::array: { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) + if (value.m_value.array->empty()) { - flatten(reference_string + "/" + escape(element.first), - element.second, result); + // flatten empty array as null + result[reference_string] = nullptr; } + else + { + // iterate array and use index as reference string + for (size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; } - break; - } - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; + case value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), + element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } } } - } - /*! - @param[in] value flattened JSON + /*! + @param[in] value flattened JSON - @return unflattened JSON - */ - static basic_json unflatten(const basic_json& value) - { - if (not value.is_object()) + @return unflattened JSON + */ + static basic_json unflatten(const basic_json& value) { + if (not value.is_object()) + { JSON_THROW(std::domain_error("only objects can be unflattened")); - } - - basic_json result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (not element.second.is_primitive()) - { - JSON_THROW(std::domain_error("values in object must be primitive")); } - // assign value to reference pointed to by JSON pointer; Note - // that if the JSON pointer is "" (i.e., points to the whole - // value), function get_and_create returns a reference to - // result itself. An assignment will then create a primitive - // value. - json_pointer(element.first).get_and_create(result) = element.second; + basic_json result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (not element.second.is_primitive()) + { + JSON_THROW(std::domain_error("values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note + // that if the JSON pointer is "" (i.e., points to the whole + // value), function get_and_create returns a reference to + // result itself. An assignment will then create a primitive + // value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; } - return result; - } + private: + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } - private: - friend bool operator==(json_pointer const &lhs, - json_pointer const &rhs) noexcept - { - return lhs.reference_tokens == rhs.reference_tokens; - } + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return !(lhs == rhs); + } - friend bool operator!=(json_pointer const &lhs, - json_pointer const &rhs) noexcept - { - return !(lhs == rhs); - } - - /// the reference tokens - std::vector<std::string> reference_tokens {}; + /// the reference tokens + std::vector<std::string> reference_tokens {}; }; ////////////////////////// @@ -11527,25 +11566,26 @@ Returns an ordering that is similar to Python: */ inline bool operator<(const value_t lhs, const value_t rhs) noexcept { - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - }}; + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + } + }; - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } - return order[static_cast<std::size_t>(lhs)] < - order[static_cast<std::size_t>(rhs)]; + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; } ///////////// @@ -11570,38 +11610,38 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std +{ +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ +template<> +inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible<nlohmann::json>::value and + is_nothrow_move_assignable<nlohmann::json>::value + ) +{ + j1.swap(j2); +} + +/// hash value for JSON objects +template<> +struct hash<nlohmann::json> { /*! - @brief exchanges the values of two JSON objects + @brief return a hash value for a JSON object @since version 1.0.0 */ - template<> - inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible<nlohmann::json>::value and - is_nothrow_move_assignable<nlohmann::json>::value - ) - { - j1.swap(j2); - } - - /// hash value for JSON objects - template<> - struct hash<nlohmann::json> - { - /*! - @brief return a hash value for a JSON object - - @since version 1.0.0 - */ - std::size_t operator()(const nlohmann::json& j) const + std::size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation const auto& h = hash<nlohmann::json::string_t>(); return h(j.dump()); } - }; +}; } // namespace std /*! diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 73b686d84..3c4d8bef4 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -177,10 +177,10 @@ TEST_CASE("value conversion") SECTION("reserve is called on containers that supports it") { - // making the call to from_json throw in order to check capacity - std::vector<float> v; - CHECK_THROWS_AS(nlohmann::from_json(j, v), std::logic_error); - CHECK(v.capacity() == j.size()); + // making the call to from_json throw in order to check capacity + std::vector<float> v; + CHECK_THROWS_AS(nlohmann::from_json(j, v), std::logic_error); + CHECK(v.capacity() == j.size()); } } diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp index de13e0578..b939db4e8 100644 --- a/test/src/unit-noexcept.cpp +++ b/test/src/unit-noexcept.cpp @@ -11,8 +11,8 @@ enum test struct pod {}; struct pod_bis {}; -void to_json(json &, pod) noexcept; -void to_json(json &, pod_bis); +void to_json(json&, pod) noexcept; +void to_json(json&, pod_bis); void from_json(const json&, pod) noexcept; void from_json(const json&, pod_bis); static json j; diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 07055bc17..6a5e0c64c 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -63,7 +63,7 @@ TEST_CASE("regression tests") SECTION("pull request #71 - handle enum type") { - enum { t = 0 , u = 1}; + enum { t = 0, u = 1}; json j = json::array(); j.push_back(t); diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 0590a8e52..35f864406 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -114,22 +114,22 @@ void to_json(Json& j, country c) } template <typename Json> -void to_json(Json& j, const person & p) +void to_json(Json& j, const person& p) { j = Json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; } -void to_json(nlohmann::json& j, const address & a) +void to_json(nlohmann::json& j, const address& a) { j = a.m_val; } -void to_json(nlohmann::json& j, const contact & c) +void to_json(nlohmann::json& j, const contact& c) { j = json{{"person", c.m_person}, {"address", c.m_address}}; } -void to_json(nlohmann::json& j, const contact_book & cb) +void to_json(nlohmann::json& j, const contact_book& cb) { j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; } @@ -140,28 +140,28 @@ bool operator==(age lhs, age rhs) return lhs.m_val == rhs.m_val; } -bool operator==(const address & lhs, const address & rhs) +bool operator==(const address& lhs, const address& rhs) { return lhs.m_val == rhs.m_val; } -bool operator==(const name & lhs, const name & rhs) +bool operator==(const name& lhs, const name& rhs) { return lhs.m_val == rhs.m_val; } -bool operator==(const person & lhs, const person & rhs) +bool operator==(const person& lhs, const person& rhs) { return std::tie(lhs.m_name, lhs.m_age) == std::tie(rhs.m_name, rhs.m_age); } -bool operator==(const contact & lhs, const contact & rhs) +bool operator==(const contact& lhs, const contact& rhs) { return std::tie(lhs.m_person, lhs.m_address) == std::tie(rhs.m_person, rhs.m_address); } -bool operator==(const contact_book & lhs, const contact_book & rhs) +bool operator==(const contact_book& lhs, const contact_book& rhs) { return std::tie(lhs.m_book_name, lhs.m_contacts) == std::tie(rhs.m_book_name, rhs.m_contacts); @@ -172,19 +172,19 @@ bool operator==(const contact_book & lhs, const contact_book & rhs) namespace udt { template <typename Json> -void from_json(const Json & j, age& a) +void from_json(const Json& j, age& a) { a.m_val = j.template get<int>(); } template <typename Json> -void from_json(const Json & j, name& n) +void from_json(const Json& j, name& n) { n.m_val = j.template get<std::string>(); } template <typename Json> -void from_json(const Json & j, country& c) +void from_json(const Json& j, country& c) { const auto str = j.template get<std::string>(); static const std::map<std::string, country> m = @@ -200,25 +200,25 @@ void from_json(const Json & j, country& c) } template <typename Json> -void from_json(const Json & j, person& p) +void from_json(const Json& j, person& p) { p.m_age = j["age"].template get<age>(); p.m_name = j["name"].template get<name>(); p.m_country = j["country"].template get<country>(); } -void from_json(const nlohmann::json & j, address& a) +void from_json(const nlohmann::json& j, address& a) { a.m_val = j.get<std::string>(); } -void from_json(const nlohmann::json & j, contact& c) +void from_json(const nlohmann::json& j, contact& c) { c.m_person = j["person"].get<person>(); c.m_address = j["address"].get<address>(); } -void from_json(const nlohmann::json & j, contact_book& cb) +void from_json(const nlohmann::json& j, contact_book& cb) { cb.m_book_name = j["name"].get<name>(); cb.m_contacts = j["contacts"].get<std::vector<contact>>(); @@ -297,7 +297,7 @@ namespace nlohmann template <typename T> struct adl_serializer<std::shared_ptr<T>> { - static void to_json(json& j, const std::shared_ptr<T> & opt) + static void to_json(json& j, const std::shared_ptr<T>& opt) { if (opt) { @@ -309,7 +309,7 @@ struct adl_serializer<std::shared_ptr<T>> } } - static void from_json(const json & j, std::shared_ptr<T>& opt) + static void from_json(const json& j, std::shared_ptr<T>& opt) { if (j.is_null()) { @@ -325,12 +325,12 @@ struct adl_serializer<std::shared_ptr<T>> template <> struct adl_serializer<udt::legacy_type> { - static void to_json(json& j, const udt::legacy_type & l) + static void to_json(json& j, const udt::legacy_type& l) { j = std::stoi(l.number); } - static void from_json(const json & j, udt::legacy_type& l) + static void from_json(const json& j, udt::legacy_type& l) { l.number = std::to_string(j.get<int>()); } @@ -394,21 +394,21 @@ namespace nlohmann template <> struct adl_serializer<std::vector<float>> { - using type = std::vector<float>; - static void to_json(json& j, const type &) + using type = std::vector<float>; + static void to_json(json& j, const type&) { - j = "hijacked!"; + j = "hijacked!"; } - static void from_json(const json &, type& opt) + static void from_json(const json&, type& opt) { - opt = {42.0, 42.0, 42.0}; + opt = {42.0, 42.0, 42.0}; } // preferred version - static type from_json(const json &) + static type from_json(const json&) { - return {4.0, 5.0, 6.0}; + return {4.0, 5.0, 6.0}; } }; } @@ -419,7 +419,7 @@ TEST_CASE("even supported types can be specialized", "[udt]") CHECK(j.dump() == R"("hijacked!")"); auto f = j.get<std::vector<float>>(); // the single argument from_json method is preferred - CHECK((f == std::vector<float>{4.0, 5.0, 6.0})); + CHECK((f == std::vector<float> {4.0, 5.0, 6.0})); } namespace nlohmann @@ -427,7 +427,7 @@ namespace nlohmann template <typename T> struct adl_serializer<std::unique_ptr<T>> { - static void to_json(json& j, const std::unique_ptr<T> & opt) + static void to_json(json& j, const std::unique_ptr<T>& opt) { if (opt) { @@ -440,7 +440,7 @@ struct adl_serializer<std::unique_ptr<T>> } // this is the overload needed for non-copyable types, - static std::unique_ptr<T> from_json(const json & j) + static std::unique_ptr<T> from_json(const json& j) { if (j.is_null()) { @@ -491,64 +491,64 @@ TEST_CASE("Non-copyable types", "[udt]") template <typename T, typename = void> struct pod_serializer { - // use adl for non-pods, or scalar types - template < - typename Json, typename U = T, - typename std::enable_if< - not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> - static void from_json(const Json &j, U &t) - { - using nlohmann::from_json; - from_json(j, t); - } + // use adl for non-pods, or scalar types + template < + typename Json, typename U = T, + typename std::enable_if < + not(std::is_pod<U>::value and std::is_class<U>::value), int >::type = 0 > + static void from_json(const Json& j, U& t) + { + using nlohmann::from_json; + from_json(j, t); + } - // special behaviour for pods - template <typename Json, typename U = T, - typename std::enable_if< - std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void from_json(const Json &j, U &t) - { - std::uint64_t value; - // TODO The following block is no longer relevant in this serializer, make another one that shows the issue - // the problem arises only when one from_json method is defined without any constraint - // - // Why cannot we simply use: j.get<std::uint64_t>() ? - // Well, with the current experiment, the get method looks for a from_json - // function, which we are currently defining! - // This would end up in a stack overflow. Calling nlohmann::from_json is a - // workaround (is it?). - // I shall find a good way to avoid this once all constructors are converted - // to free methods - // - // In short, constructing a json by constructor calls to_json - // calling get calls from_json, for now, we cannot do this in custom - // serializers - nlohmann::from_json(j, value); - auto bytes = static_cast<char *>(static_cast<void *>(&value)); - std::memcpy(&t, bytes, sizeof(value)); - } + // special behaviour for pods + template <typename Json, typename U = T, + typename std::enable_if< + std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> + static void from_json(const Json& j, U& t) + { + std::uint64_t value; + // TODO The following block is no longer relevant in this serializer, make another one that shows the issue + // the problem arises only when one from_json method is defined without any constraint + // + // Why cannot we simply use: j.get<std::uint64_t>() ? + // Well, with the current experiment, the get method looks for a from_json + // function, which we are currently defining! + // This would end up in a stack overflow. Calling nlohmann::from_json is a + // workaround (is it?). + // I shall find a good way to avoid this once all constructors are converted + // to free methods + // + // In short, constructing a json by constructor calls to_json + // calling get calls from_json, for now, we cannot do this in custom + // serializers + nlohmann::from_json(j, value); + auto bytes = static_cast<char*>(static_cast<void*>(&value)); + std::memcpy(&t, bytes, sizeof(value)); + } - template < - typename Json, typename U = T, - typename std::enable_if< - not(std::is_pod<U>::value and std::is_class<U>::value), int>::type = 0> - static void to_json(Json &j, const T &t) - { - using nlohmann::to_json; - to_json(j, t); - } + template < + typename Json, typename U = T, + typename std::enable_if < + not(std::is_pod<U>::value and std::is_class<U>::value), int >::type = 0 > + static void to_json(Json& j, const T& t) + { + using nlohmann::to_json; + to_json(j, t); + } - template <typename Json, typename U = T, - typename std::enable_if< - std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void to_json(Json &j, const T &t) noexcept - { - auto bytes = static_cast< const unsigned char*>(static_cast<const void *>(&t)); - std::uint64_t value = bytes[0]; - for (auto i = 1; i < 8; ++i) - value |= std::uint64_t{bytes[i]} << 8 * i; - nlohmann::to_json(j, value); - } + template <typename Json, typename U = T, + typename std::enable_if< + std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> + static void to_json(Json& j, const T& t) noexcept + { + auto bytes = static_cast< const unsigned char*>(static_cast<const void*>(&t)); + std::uint64_t value = bytes[0]; + for (auto i = 1; i < 8; ++i) + value |= std::uint64_t{bytes[i]} << 8 * i; + nlohmann::to_json(j, value); + } }; namespace udt @@ -562,19 +562,19 @@ struct small_pod struct non_pod { - std::string s; + std::string s; }; template <typename Json> -void to_json(Json& j, const non_pod & np) +void to_json(Json& j, const non_pod& np) { - j = np.s; + j = np.s; } template <typename Json> -void from_json(const Json & j, non_pod& np) +void from_json(const Json& j, non_pod& np) { - np.s = j.template get<std::string>(); + np.s = j.template get<std::string>(); } bool operator==(small_pod lhs, small_pod rhs) noexcept @@ -583,35 +583,35 @@ bool operator==(small_pod lhs, small_pod rhs) noexcept std::tie(rhs.begin, rhs.middle, rhs.end); } -bool operator==(const non_pod &lhs, const non_pod &rhs) noexcept +bool operator==(const non_pod& lhs, const non_pod& rhs) noexcept { - return lhs.s == rhs.s; + return lhs.s == rhs.s; } std::ostream& operator<<(std::ostream& os, small_pod l) { - return os << "begin: " << l.begin << ", middle: " << l.middle << ", end: " << l.end; + return os << "begin: " << l.begin << ", middle: " << l.middle << ", end: " << l.end; } } TEST_CASE("custom serializer for pods", "[udt]") { - using custom_json = - nlohmann::basic_json<std::map, std::vector, std::string, bool, - std::int64_t, std::uint64_t, double, std::allocator, - pod_serializer>; + using custom_json = + nlohmann::basic_json<std::map, std::vector, std::string, bool, + std::int64_t, std::uint64_t, double, std::allocator, + pod_serializer>; - auto p = udt::small_pod{42, '/', 42}; - custom_json j = p; + auto p = udt::small_pod{42, '/', 42}; + custom_json j = p; - auto p2 = j.get<udt::small_pod>(); + auto p2 = j.get<udt::small_pod>(); - CHECK(p == p2); + CHECK(p == p2); - auto np = udt::non_pod{{"non-pod"}}; - custom_json j2 = np; - auto np2 = j2.get<udt::non_pod>(); - CHECK(np == np2); + auto np = udt::non_pod{{"non-pod"}}; + custom_json j2 = np; + auto np2 = j2.get<udt::non_pod>(); + CHECK(np == np2); } template <typename T, typename> @@ -622,13 +622,13 @@ using custom_json = nlohmann::basic_json<std::map, std::vector, std::string, boo template <typename T, typename> struct another_adl_serializer { - static void from_json(const custom_json & j , T& t) + static void from_json(const custom_json& j, T& t) { using nlohmann::from_json; from_json(j, t); } - static void to_json(custom_json& j , const T & t) + static void to_json(custom_json& j, const T& t) { using nlohmann::to_json; to_json(j, t); From 447c6a670f1d058ee37865107d2fccda1d207588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Tue, 17 Jan 2017 10:39:14 +0100 Subject: [PATCH 113/174] run make re2c --- src/json.hpp | 1338 ++++++++++++++++---------------------------------- 1 file changed, 430 insertions(+), 908 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index fc7b60f20..62779059c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9462,915 +9462,437 @@ class basic_json m_start = m_cursor; assert(m_start != nullptr); - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) - { - fill_line_buffer(5); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - if (yych <= '[') - { - if (yych <= '-') - { - if (yych <= '"') - { - if (yych <= 0x00) - { - goto basic_json_parser_2; - } - if (yych <= '!') - { - goto basic_json_parser_4; - } - goto basic_json_parser_9; - } - else - { - if (yych <= '+') - { - goto basic_json_parser_4; - } - if (yych <= ',') - { - goto basic_json_parser_10; - } - goto basic_json_parser_12; - } - } - else - { - if (yych <= '9') - { - if (yych <= '/') - { - goto basic_json_parser_4; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - goto basic_json_parser_15; - } - else - { - if (yych <= ':') - { - goto basic_json_parser_17; - } - if (yych <= 'Z') - { - goto basic_json_parser_4; - } - goto basic_json_parser_19; - } - } - } - else - { - if (yych <= 'n') - { - if (yych <= 'e') - { - if (yych == ']') - { - goto basic_json_parser_21; - } - goto basic_json_parser_4; - } - else - { - if (yych <= 'f') - { - goto basic_json_parser_23; - } - if (yych <= 'm') - { - goto basic_json_parser_4; - } - goto basic_json_parser_24; - } - } - else - { - if (yych <= 'z') - { - if (yych == 't') - { - goto basic_json_parser_25; - } - goto basic_json_parser_4; - } - else - { - if (yych <= '{') - { - goto basic_json_parser_26; - } - if (yych == '}') - { - goto basic_json_parser_28; - } - goto basic_json_parser_4; - } - } - } -basic_json_parser_2: - ++m_cursor; - { - last_token_type = token_type::end_of_input; - break; - } -basic_json_parser_4: - ++m_cursor; -basic_json_parser_5: - { - last_token_type = token_type::parse_error; - break; - } -basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - { - continue; - } -basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) - { - goto basic_json_parser_5; - } - if (yych <= 0x7F) - { - goto basic_json_parser_31; - } - if (yych <= 0xC1) - { - goto basic_json_parser_5; - } - if (yych <= 0xF4) - { - goto basic_json_parser_31; - } - goto basic_json_parser_5; -basic_json_parser_10: - ++m_cursor; - { - last_token_type = token_type::value_separator; - break; - } -basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_5; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - if (yych <= '9') - { - goto basic_json_parser_15; - } - goto basic_json_parser_5; -basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - } -basic_json_parser_14: - { - last_token_type = token_type::value_number; - break; - } -basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 64) - { - goto basic_json_parser_15; - } - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_17: - ++m_cursor; - { - last_token_type = token_type::name_separator; - break; - } -basic_json_parser_19: - ++m_cursor; - { - last_token_type = token_type::begin_array; - break; - } -basic_json_parser_21: - ++m_cursor; - { - last_token_type = token_type::end_array; - break; - } -basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') - { - goto basic_json_parser_45; - } - goto basic_json_parser_5; -basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') - { - goto basic_json_parser_46; - } - goto basic_json_parser_5; -basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') - { - goto basic_json_parser_47; - } - goto basic_json_parser_5; -basic_json_parser_26: - ++m_cursor; - { - last_token_type = token_type::begin_object; - break; - } -basic_json_parser_28: - ++m_cursor; - { - last_token_type = token_type::end_object; - break; - } -basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; -basic_json_parser_31: - if (yybm[0 + yych] & 128) - { - goto basic_json_parser_30; - } - if (yych <= 0xE0) - { - if (yych <= '\\') - { - if (yych <= 0x1F) - { - goto basic_json_parser_32; - } - if (yych <= '"') - { - goto basic_json_parser_33; - } - goto basic_json_parser_35; - } - else - { - if (yych <= 0xC1) - { - goto basic_json_parser_32; - } - if (yych <= 0xDF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_37; - } - } - else - { - if (yych <= 0xEF) - { - if (yych == 0xED) - { - goto basic_json_parser_39; - } - goto basic_json_parser_38; - } - else - { - if (yych <= 0xF0) - { - goto basic_json_parser_40; - } - if (yych <= 0xF3) - { - goto basic_json_parser_41; - } - if (yych <= 0xF4) - { - goto basic_json_parser_42; - } - } - } -basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) - { - goto basic_json_parser_5; - } - else - { - goto basic_json_parser_14; - } -basic_json_parser_33: - ++m_cursor; - { - last_token_type = token_type::value_string; - break; - } -basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'e') - { - if (yych <= '/') - { - if (yych == '"') - { - goto basic_json_parser_30; - } - if (yych <= '.') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych <= '\\') - { - if (yych <= '[') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych == 'b') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - } - } - else - { - if (yych <= 'q') - { - if (yych <= 'f') - { - goto basic_json_parser_30; - } - if (yych == 'n') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 's') - { - if (yych <= 'r') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 't') - { - goto basic_json_parser_30; - } - if (yych <= 'u') - { - goto basic_json_parser_48; - } - goto basic_json_parser_32; - } - } - } -basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; -basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x9F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x9F) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x8F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x8F) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_32; -basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') - { - if (yych == '+') - { - goto basic_json_parser_51; - } - goto basic_json_parser_32; - } - else - { - if (yych <= '-') - { - goto basic_json_parser_51; - } - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_32; - } -basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_54; - } - goto basic_json_parser_32; -basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_55; - } - goto basic_json_parser_32; -basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') - { - goto basic_json_parser_56; - } - goto basic_json_parser_32; -basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_57; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } -basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'D') - { - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych >= ':') - { - goto basic_json_parser_32; - } -basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_14; -basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') - { - goto basic_json_parser_58; - } - goto basic_json_parser_32; -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_59; - } - goto basic_json_parser_32; -basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_61; - } - goto basic_json_parser_32; -basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_63; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } -basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_64; - } - goto basic_json_parser_32; -basic_json_parser_59: - ++m_cursor; - { - last_token_type = token_type::literal_null; - break; - } -basic_json_parser_61: - ++m_cursor; - { - last_token_type = token_type::literal_true; - break; - } -basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_66; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } -basic_json_parser_64: - ++m_cursor; - { - last_token_type = token_type::literal_false; - break; - } -basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_30; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + if (yych <= '[') { + if (yych <= '-') { + if (yych <= '"') { + if (yych <= 0x00) goto basic_json_parser_2; + if (yych <= '!') goto basic_json_parser_4; + goto basic_json_parser_9; + } else { + if (yych <= '+') goto basic_json_parser_4; + if (yych <= ',') goto basic_json_parser_10; + goto basic_json_parser_12; } + } else { + if (yych <= '9') { + if (yych <= '/') goto basic_json_parser_4; + if (yych <= '0') goto basic_json_parser_13; + goto basic_json_parser_15; + } else { + if (yych <= ':') goto basic_json_parser_17; + if (yych <= 'Z') goto basic_json_parser_4; + goto basic_json_parser_19; + } + } + } else { + if (yych <= 'n') { + if (yych <= 'e') { + if (yych == ']') goto basic_json_parser_21; + goto basic_json_parser_4; + } else { + if (yych <= 'f') goto basic_json_parser_23; + if (yych <= 'm') goto basic_json_parser_4; + goto basic_json_parser_24; + } + } else { + if (yych <= 'z') { + if (yych == 't') goto basic_json_parser_25; + goto basic_json_parser_4; + } else { + if (yych <= '{') goto basic_json_parser_26; + if (yych == '}') goto basic_json_parser_28; + goto basic_json_parser_4; + } + } + } +basic_json_parser_2: + ++m_cursor; + { last_token_type = token_type::end_of_input; break; } +basic_json_parser_4: + ++m_cursor; +basic_json_parser_5: + { last_token_type = token_type::parse_error; break; } +basic_json_parser_6: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + { continue; } +basic_json_parser_9: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) goto basic_json_parser_5; + if (yych <= 0x7F) goto basic_json_parser_31; + if (yych <= 0xC1) goto basic_json_parser_5; + if (yych <= 0xF4) goto basic_json_parser_31; + goto basic_json_parser_5; +basic_json_parser_10: + ++m_cursor; + { last_token_type = token_type::value_separator; break; } +basic_json_parser_12: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_5; + if (yych <= '0') goto basic_json_parser_13; + if (yych <= '9') goto basic_json_parser_15; + goto basic_json_parser_5; +basic_json_parser_13: + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + } +basic_json_parser_14: + { last_token_type = token_type::value_number; break; } +basic_json_parser_15: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 64) { + goto basic_json_parser_15; + } + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } +basic_json_parser_17: + ++m_cursor; + { last_token_type = token_type::name_separator; break; } +basic_json_parser_19: + ++m_cursor; + { last_token_type = token_type::begin_array; break; } +basic_json_parser_21: + ++m_cursor; + { last_token_type = token_type::end_array; break; } +basic_json_parser_23: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') goto basic_json_parser_45; + goto basic_json_parser_5; +basic_json_parser_24: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') goto basic_json_parser_46; + goto basic_json_parser_5; +basic_json_parser_25: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') goto basic_json_parser_47; + goto basic_json_parser_5; +basic_json_parser_26: + ++m_cursor; + { last_token_type = token_type::begin_object; break; } +basic_json_parser_28: + ++m_cursor; + { last_token_type = token_type::end_object; break; } +basic_json_parser_30: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; +basic_json_parser_31: + if (yybm[0+yych] & 128) { + goto basic_json_parser_30; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x1F) goto basic_json_parser_32; + if (yych <= '"') goto basic_json_parser_33; + goto basic_json_parser_35; + } else { + if (yych <= 0xC1) goto basic_json_parser_32; + if (yych <= 0xDF) goto basic_json_parser_36; + goto basic_json_parser_37; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) goto basic_json_parser_39; + goto basic_json_parser_38; + } else { + if (yych <= 0xF0) goto basic_json_parser_40; + if (yych <= 0xF3) goto basic_json_parser_41; + if (yych <= 0xF4) goto basic_json_parser_42; + } + } +basic_json_parser_32: + m_cursor = m_marker; + if (yyaccept == 0) { + goto basic_json_parser_5; + } else { + goto basic_json_parser_14; + } +basic_json_parser_33: + ++m_cursor; + { last_token_type = token_type::value_string; break; } +basic_json_parser_35: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'e') { + if (yych <= '/') { + if (yych == '"') goto basic_json_parser_30; + if (yych <= '.') goto basic_json_parser_32; + goto basic_json_parser_30; + } else { + if (yych <= '\\') { + if (yych <= '[') goto basic_json_parser_32; + goto basic_json_parser_30; + } else { + if (yych == 'b') goto basic_json_parser_30; + goto basic_json_parser_32; + } + } + } else { + if (yych <= 'q') { + if (yych <= 'f') goto basic_json_parser_30; + if (yych == 'n') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 's') { + if (yych <= 'r') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 't') goto basic_json_parser_30; + if (yych <= 'u') goto basic_json_parser_48; + goto basic_json_parser_32; + } + } + } +basic_json_parser_36: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_30; + goto basic_json_parser_32; +basic_json_parser_37: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x9F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_39: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x9F) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_40: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x8F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_42: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x8F) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_43: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_32; +basic_json_parser_44: + yych = *++m_cursor; + if (yych <= ',') { + if (yych == '+') goto basic_json_parser_51; + goto basic_json_parser_32; + } else { + if (yych <= '-') goto basic_json_parser_51; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_32; + } +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_54; + goto basic_json_parser_32; +basic_json_parser_46: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_55; + goto basic_json_parser_32; +basic_json_parser_47: + yych = *++m_cursor; + if (yych == 'u') goto basic_json_parser_56; + goto basic_json_parser_32; +basic_json_parser_48: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_57; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_57; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_57; + goto basic_json_parser_32; + } +basic_json_parser_49: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'D') { + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } +basic_json_parser_51: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych >= ':') goto basic_json_parser_32; +basic_json_parser_52: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_14; +basic_json_parser_54: + yych = *++m_cursor; + if (yych == 's') goto basic_json_parser_58; + goto basic_json_parser_32; +basic_json_parser_55: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_59; + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_61; + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_63; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_63; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_63; + goto basic_json_parser_32; + } +basic_json_parser_58: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_64; + goto basic_json_parser_32; +basic_json_parser_59: + ++m_cursor; + { last_token_type = token_type::literal_null; break; } +basic_json_parser_61: + ++m_cursor; + { last_token_type = token_type::literal_true; break; } +basic_json_parser_63: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_66; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_66; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_66; + goto basic_json_parser_32; + } +basic_json_parser_64: + ++m_cursor; + { last_token_type = token_type::literal_false; break; } +basic_json_parser_66: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_30; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_30; + goto basic_json_parser_32; + } + } } From 1e20887cff2a57dc562f1a19b76c716d19d98da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Fri, 20 Jan 2017 23:07:06 +0100 Subject: [PATCH 114/174] use JSON_THROW --- src/json.hpp | 20 ++++++++++---------- src/json.hpp.re2c | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 62779059c..630624a64 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -513,7 +513,7 @@ void get_arithmetic_value(const Json& j, ArithmeticType& val) } else { - throw std::domain_error("type must be number, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); } } @@ -592,7 +592,7 @@ void from_json(const Json& j, typename Json::boolean_t& b) { if (!j.is_boolean()) { - throw std::domain_error("type must be boolean, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); } b = *j.template get_ptr<const typename Json::boolean_t*>(); } @@ -602,7 +602,7 @@ void from_json(const Json& j, typename Json::string_t& s) { if (!j.is_string()) { - throw std::domain_error("type must be string, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); } s = *j.template get_ptr<const typename Json::string_t*>(); } @@ -639,7 +639,7 @@ void from_json(const Json& j, typename Json::array_t& arr) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } arr = *j.template get_ptr<const typename Json::array_t*>(); } @@ -652,13 +652,13 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) // (except when it's null.. ?) if (j.is_null()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } if (not std::is_same<T, Json>::value) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } } for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) @@ -711,14 +711,14 @@ void from_json(const Json& j, CompatibleArrayType& arr) { if (j.is_null()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } // when T == Json, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } } from_json_array_impl(j, arr, priority_tag<1> {}); @@ -733,7 +733,7 @@ void from_json(const Json& j, CompatibleObjectType& obj) { if (!j.is_object()) { - throw std::domain_error("type must be object, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); } auto inner_object = j.template get_ptr<const typename Json::object_t*>(); @@ -777,7 +777,7 @@ void from_json(const Json& j, ArithmeticType& val) } else { - throw std::domain_error("type must be number, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cbda7ee77..710f61e80 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -513,7 +513,7 @@ void get_arithmetic_value(const Json& j, ArithmeticType& val) } else { - throw std::domain_error("type must be number, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); } } @@ -592,7 +592,7 @@ void from_json(const Json& j, typename Json::boolean_t& b) { if (!j.is_boolean()) { - throw std::domain_error("type must be boolean, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); } b = *j.template get_ptr<const typename Json::boolean_t*>(); } @@ -602,7 +602,7 @@ void from_json(const Json& j, typename Json::string_t& s) { if (!j.is_string()) { - throw std::domain_error("type must be string, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); } s = *j.template get_ptr<const typename Json::string_t*>(); } @@ -639,7 +639,7 @@ void from_json(const Json& j, typename Json::array_t& arr) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } arr = *j.template get_ptr<const typename Json::array_t*>(); } @@ -652,13 +652,13 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) // (except when it's null.. ?) if (j.is_null()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } if (not std::is_same<T, Json>::value) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } } for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) @@ -711,14 +711,14 @@ void from_json(const Json& j, CompatibleArrayType& arr) { if (j.is_null()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } // when T == Json, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) { if (!j.is_array()) { - throw std::domain_error("type must be array, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } } from_json_array_impl(j, arr, priority_tag<1> {}); @@ -733,7 +733,7 @@ void from_json(const Json& j, CompatibleObjectType& obj) { if (!j.is_object()) { - throw std::domain_error("type must be object, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); } auto inner_object = j.template get_ptr<const typename Json::object_t*>(); @@ -777,7 +777,7 @@ void from_json(const Json& j, ArithmeticType& val) } else { - throw std::domain_error("type must be number, but is " + type_name(j)); + JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); } } From d566bb81c4e304a2a05be6b01c75b8a3dc63442a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Fri, 20 Jan 2017 23:21:20 +0100 Subject: [PATCH 115/174] use switchs where appropriate --- src/json.hpp | 80 +++++++++++++++++++++++++---------------------- src/json.hpp.re2c | 80 +++++++++++++++++++++++++---------------------- 2 files changed, 86 insertions(+), 74 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 630624a64..9fd0d05bc 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -498,22 +498,23 @@ template <typename Json, typename ArithmeticType, int> = 0> void get_arithmetic_value(const Json& j, ArithmeticType& val) { - // unsigned must be checked first, since is_number_integer() == true for unsigned - if (j.is_number_unsigned()) + switch (static_cast<value_t>(j)) { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - } - else if (j.is_number_integer()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - } - else if (j.is_number_float()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - } - else - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); + case value_t::number_unsigned: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_unsigned_t*>()); + break; + case value_t::number_integer: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_integer_t*>()); + break; + case value_t::number_float: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_float_t*>()); + break; + default: + JSON_THROW( + std::domain_error("type must be number, but is " + type_name(j))); } } @@ -752,32 +753,37 @@ template < typename Json, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int > = 0 > -void from_json(const Json& j, ArithmeticType& val) +void from_json(const Json& j, ArithmeticType& val) { - if (j.is_number_unsigned()) + switch (static_cast<value_t>(j)) { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - } - else if (j.is_number_integer()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - } - else if (j.is_number_float()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - } - else if (j.is_boolean()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); - } - else - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); + case value_t::number_unsigned: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_unsigned_t*>()); + break; + case value_t::number_integer: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_integer_t*>()); + break; + case value_t::number_float: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_float_t*>()); + break; + case value_t::boolean: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::boolean_t*>()); + break; + default: + JSON_THROW( + std::domain_error("type must be number, but is " + type_name(j))); } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 710f61e80..c400e1560 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -498,22 +498,23 @@ template <typename Json, typename ArithmeticType, int> = 0> void get_arithmetic_value(const Json& j, ArithmeticType& val) { - // unsigned must be checked first, since is_number_integer() == true for unsigned - if (j.is_number_unsigned()) + switch (static_cast<value_t>(j)) { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - } - else if (j.is_number_integer()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - } - else if (j.is_number_float()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - } - else - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); + case value_t::number_unsigned: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_unsigned_t*>()); + break; + case value_t::number_integer: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_integer_t*>()); + break; + case value_t::number_float: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_float_t*>()); + break; + default: + JSON_THROW( + std::domain_error("type must be number, but is " + type_name(j))); } } @@ -752,32 +753,37 @@ template < typename Json, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, typename Json::number_unsigned_t>::value and - not std::is_same<ArithmeticType, typename Json::number_integer_t>::value and - not std::is_same<ArithmeticType, typename Json::number_float_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_unsigned_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_integer_t>::value and + not std::is_same<ArithmeticType, + typename Json::number_float_t>::value and not std::is_same<ArithmeticType, typename Json::boolean_t>::value, int > = 0 > -void from_json(const Json& j, ArithmeticType& val) +void from_json(const Json& j, ArithmeticType& val) { - if (j.is_number_unsigned()) + switch (static_cast<value_t>(j)) { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_unsigned_t*>()); - } - else if (j.is_number_integer()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_integer_t*>()); - } - else if (j.is_number_float()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::number_float_t*>()); - } - else if (j.is_boolean()) - { - val = static_cast<ArithmeticType>(*j.template get_ptr<const typename Json::boolean_t*>()); - } - else - { - JSON_THROW(std::domain_error("type must be number, but is " + type_name(j))); + case value_t::number_unsigned: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_unsigned_t*>()); + break; + case value_t::number_integer: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_integer_t*>()); + break; + case value_t::number_float: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::number_float_t*>()); + break; + case value_t::boolean: + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename Json::boolean_t*>()); + break; + default: + JSON_THROW( + std::domain_error("type must be number, but is " + type_name(j))); } } From a6b028286b13203331237f21ece1dc751962722e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Fri, 20 Jan 2017 23:28:36 +0100 Subject: [PATCH 116/174] move conjunction/disjunction to the top of detail --- src/json.hpp | 1280 +++++++++++++++++++++++++++++++-------------- src/json.hpp.re2c | 38 +- 2 files changed, 898 insertions(+), 420 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9fd0d05bc..bd21c93cd 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -168,6 +168,25 @@ using is_unscoped_enum = namespace detail { +// Implementation of 2 C++17 constructs: conjunction, negation. +// This is needed to avoid evaluating all the traits in a condition +// +// For example: not std::is_same<void, T>::value and has_value_type<T>::value +// will not compile when T = void (on MSVC at least) +// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value +// will stop evaluating if negation<...>::value == false +// +// Please note that those constructs must be used with caution, since symbols can +// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) +// Only use it when you have too (see example ahead) +template <class...> struct conjunction : std::true_type {}; +template <class B1> struct conjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct conjunction<B1, Bn...> +: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; + +template <class B> struct negation : std::integral_constant < bool, !B::value > {}; + template <typename Json> std::string type_name(const Json& j) { switch (j.m_type) @@ -317,25 +336,6 @@ struct external_constructor<value_t::object> } }; -// Implementation of 2 C++17 constructs: conjunction, negation. -// This is needed to avoid evaluating all the traits in a condition -// -// For example: not std::is_same<void, T>::value and has_value_type<T>::value -// will not compile when T = void (on MSVC at least) -// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value -// will stop evaluating if negation<...>::value == false -// -// Please note that those constructs must be used with caution, since symbols can -// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) -// Only use it when you have too (see example ahead) -template <class...> struct conjunction : std::true_type {}; -template <class B1> struct conjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct conjunction<B1, Bn...> -: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; - -template <class B> struct negation : std::integral_constant < bool, !B::value > {}; - /*! @brief Helper to determine whether there's a key_type for T. @@ -9468,437 +9468,915 @@ class basic_json m_start = m_cursor; assert(m_start != nullptr); - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - if (yych <= '[') { - if (yych <= '-') { - if (yych <= '"') { - if (yych <= 0x00) goto basic_json_parser_2; - if (yych <= '!') goto basic_json_parser_4; - goto basic_json_parser_9; - } else { - if (yych <= '+') goto basic_json_parser_4; - if (yych <= ',') goto basic_json_parser_10; - goto basic_json_parser_12; - } - } else { - if (yych <= '9') { - if (yych <= '/') goto basic_json_parser_4; - if (yych <= '0') goto basic_json_parser_13; - goto basic_json_parser_15; - } else { - if (yych <= ':') goto basic_json_parser_17; - if (yych <= 'Z') goto basic_json_parser_4; - goto basic_json_parser_19; - } - } - } else { - if (yych <= 'n') { - if (yych <= 'e') { - if (yych == ']') goto basic_json_parser_21; - goto basic_json_parser_4; - } else { - if (yych <= 'f') goto basic_json_parser_23; - if (yych <= 'm') goto basic_json_parser_4; - goto basic_json_parser_24; - } - } else { - if (yych <= 'z') { - if (yych == 't') goto basic_json_parser_25; - goto basic_json_parser_4; - } else { - if (yych <= '{') goto basic_json_parser_26; - if (yych == '}') goto basic_json_parser_28; - goto basic_json_parser_4; - } - } - } + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) + { + fill_line_buffer(5); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + if (yych <= '[') + { + if (yych <= '-') + { + if (yych <= '"') + { + if (yych <= 0x00) + { + goto basic_json_parser_2; + } + if (yych <= '!') + { + goto basic_json_parser_4; + } + goto basic_json_parser_9; + } + else + { + if (yych <= '+') + { + goto basic_json_parser_4; + } + if (yych <= ',') + { + goto basic_json_parser_10; + } + goto basic_json_parser_12; + } + } + else + { + if (yych <= '9') + { + if (yych <= '/') + { + goto basic_json_parser_4; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + goto basic_json_parser_15; + } + else + { + if (yych <= ':') + { + goto basic_json_parser_17; + } + if (yych <= 'Z') + { + goto basic_json_parser_4; + } + goto basic_json_parser_19; + } + } + } + else + { + if (yych <= 'n') + { + if (yych <= 'e') + { + if (yych == ']') + { + goto basic_json_parser_21; + } + goto basic_json_parser_4; + } + else + { + if (yych <= 'f') + { + goto basic_json_parser_23; + } + if (yych <= 'm') + { + goto basic_json_parser_4; + } + goto basic_json_parser_24; + } + } + else + { + if (yych <= 'z') + { + if (yych == 't') + { + goto basic_json_parser_25; + } + goto basic_json_parser_4; + } + else + { + if (yych <= '{') + { + goto basic_json_parser_26; + } + if (yych == '}') + { + goto basic_json_parser_28; + } + goto basic_json_parser_4; + } + } + } basic_json_parser_2: - ++m_cursor; - { last_token_type = token_type::end_of_input; break; } + ++m_cursor; + { + last_token_type = token_type::end_of_input; + break; + } basic_json_parser_4: - ++m_cursor; + ++m_cursor; basic_json_parser_5: - { last_token_type = token_type::parse_error; break; } + { + last_token_type = token_type::parse_error; + break; + } basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - { continue; } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + { + continue; + } basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) goto basic_json_parser_5; - if (yych <= 0x7F) goto basic_json_parser_31; - if (yych <= 0xC1) goto basic_json_parser_5; - if (yych <= 0xF4) goto basic_json_parser_31; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) + { + goto basic_json_parser_5; + } + if (yych <= 0x7F) + { + goto basic_json_parser_31; + } + if (yych <= 0xC1) + { + goto basic_json_parser_5; + } + if (yych <= 0xF4) + { + goto basic_json_parser_31; + } + goto basic_json_parser_5; basic_json_parser_10: - ++m_cursor; - { last_token_type = token_type::value_separator; break; } + ++m_cursor; + { + last_token_type = token_type::value_separator; + break; + } basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_5; - if (yych <= '0') goto basic_json_parser_13; - if (yych <= '9') goto basic_json_parser_15; - goto basic_json_parser_5; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_5; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + if (yych <= '9') + { + goto basic_json_parser_15; + } + goto basic_json_parser_5; basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - } + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + } basic_json_parser_14: - { last_token_type = token_type::value_number; break; } + { + last_token_type = token_type::value_number; + break; + } basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 64) { - goto basic_json_parser_15; - } - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 64) + { + goto basic_json_parser_15; + } + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } basic_json_parser_17: - ++m_cursor; - { last_token_type = token_type::name_separator; break; } + ++m_cursor; + { + last_token_type = token_type::name_separator; + break; + } basic_json_parser_19: - ++m_cursor; - { last_token_type = token_type::begin_array; break; } + ++m_cursor; + { + last_token_type = token_type::begin_array; + break; + } basic_json_parser_21: - ++m_cursor; - { last_token_type = token_type::end_array; break; } + ++m_cursor; + { + last_token_type = token_type::end_array; + break; + } basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') goto basic_json_parser_45; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') + { + goto basic_json_parser_45; + } + goto basic_json_parser_5; basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') goto basic_json_parser_46; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') + { + goto basic_json_parser_46; + } + goto basic_json_parser_5; basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') goto basic_json_parser_47; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') + { + goto basic_json_parser_47; + } + goto basic_json_parser_5; basic_json_parser_26: - ++m_cursor; - { last_token_type = token_type::begin_object; break; } + ++m_cursor; + { + last_token_type = token_type::begin_object; + break; + } basic_json_parser_28: - ++m_cursor; - { last_token_type = token_type::end_object; break; } + ++m_cursor; + { + last_token_type = token_type::end_object; + break; + } basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; basic_json_parser_31: - if (yybm[0+yych] & 128) { - goto basic_json_parser_30; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x1F) goto basic_json_parser_32; - if (yych <= '"') goto basic_json_parser_33; - goto basic_json_parser_35; - } else { - if (yych <= 0xC1) goto basic_json_parser_32; - if (yych <= 0xDF) goto basic_json_parser_36; - goto basic_json_parser_37; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto basic_json_parser_39; - goto basic_json_parser_38; - } else { - if (yych <= 0xF0) goto basic_json_parser_40; - if (yych <= 0xF3) goto basic_json_parser_41; - if (yych <= 0xF4) goto basic_json_parser_42; - } - } + if (yybm[0 + yych] & 128) + { + goto basic_json_parser_30; + } + if (yych <= 0xE0) + { + if (yych <= '\\') + { + if (yych <= 0x1F) + { + goto basic_json_parser_32; + } + if (yych <= '"') + { + goto basic_json_parser_33; + } + goto basic_json_parser_35; + } + else + { + if (yych <= 0xC1) + { + goto basic_json_parser_32; + } + if (yych <= 0xDF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_37; + } + } + else + { + if (yych <= 0xEF) + { + if (yych == 0xED) + { + goto basic_json_parser_39; + } + goto basic_json_parser_38; + } + else + { + if (yych <= 0xF0) + { + goto basic_json_parser_40; + } + if (yych <= 0xF3) + { + goto basic_json_parser_41; + } + if (yych <= 0xF4) + { + goto basic_json_parser_42; + } + } + } basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) { - goto basic_json_parser_5; - } else { - goto basic_json_parser_14; - } + m_cursor = m_marker; + if (yyaccept == 0) + { + goto basic_json_parser_5; + } + else + { + goto basic_json_parser_14; + } basic_json_parser_33: - ++m_cursor; - { last_token_type = token_type::value_string; break; } + ++m_cursor; + { + last_token_type = token_type::value_string; + break; + } basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'e') { - if (yych <= '/') { - if (yych == '"') goto basic_json_parser_30; - if (yych <= '.') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych <= '\\') { - if (yych <= '[') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych == 'b') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'f') goto basic_json_parser_30; - if (yych == 'n') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 's') { - if (yych <= 'r') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 't') goto basic_json_parser_30; - if (yych <= 'u') goto basic_json_parser_48; - goto basic_json_parser_32; - } - } - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'e') + { + if (yych <= '/') + { + if (yych == '"') + { + goto basic_json_parser_30; + } + if (yych <= '.') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych <= '\\') + { + if (yych <= '[') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych == 'b') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } + } + else + { + if (yych <= 'q') + { + if (yych <= 'f') + { + goto basic_json_parser_30; + } + if (yych == 'n') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 's') + { + if (yych <= 'r') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 't') + { + goto basic_json_parser_30; + } + if (yych <= 'u') + { + goto basic_json_parser_48; + } + goto basic_json_parser_32; + } + } + } basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_30; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x9F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x9F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x9F) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x9F) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x8F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x8F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x8F) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x8F) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_32; basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') { - if (yych == '+') goto basic_json_parser_51; - goto basic_json_parser_32; - } else { - if (yych <= '-') goto basic_json_parser_51; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_32; - } + yych = *++m_cursor; + if (yych <= ',') + { + if (yych == '+') + { + goto basic_json_parser_51; + } + goto basic_json_parser_32; + } + else + { + if (yych <= '-') + { + goto basic_json_parser_51; + } + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_32; + } basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_54; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_54; + } + goto basic_json_parser_32; basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_55; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_55; + } + goto basic_json_parser_32; basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') goto basic_json_parser_56; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'u') + { + goto basic_json_parser_56; + } + goto basic_json_parser_32; basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_57; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_57; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_57; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_57; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'D') { - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'D') + { + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych >= ':') goto basic_json_parser_32; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych >= ':') + { + goto basic_json_parser_32; + } basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_14; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_14; basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') goto basic_json_parser_58; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 's') + { + goto basic_json_parser_58; + } + goto basic_json_parser_32; basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_59; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_59; + } + goto basic_json_parser_32; basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_61; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_61; + } + goto basic_json_parser_32; basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_63; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_63; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_63; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_63; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_64; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_64; + } + goto basic_json_parser_32; basic_json_parser_59: - ++m_cursor; - { last_token_type = token_type::literal_null; break; } + ++m_cursor; + { + last_token_type = token_type::literal_null; + break; + } basic_json_parser_61: - ++m_cursor; - { last_token_type = token_type::literal_true; break; } + ++m_cursor; + { + last_token_type = token_type::literal_true; + break; + } basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_66; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_66; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_66; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_66; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } basic_json_parser_64: - ++m_cursor; - { last_token_type = token_type::literal_false; break; } + ++m_cursor; + { + last_token_type = token_type::literal_false; + break; + } basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_30; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_30; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c400e1560..c47b321cf 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -168,6 +168,25 @@ using is_unscoped_enum = namespace detail { +// Implementation of 2 C++17 constructs: conjunction, negation. +// This is needed to avoid evaluating all the traits in a condition +// +// For example: not std::is_same<void, T>::value and has_value_type<T>::value +// will not compile when T = void (on MSVC at least) +// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value +// will stop evaluating if negation<...>::value == false +// +// Please note that those constructs must be used with caution, since symbols can +// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) +// Only use it when you have too (see example ahead) +template <class...> struct conjunction : std::true_type {}; +template <class B1> struct conjunction<B1> : B1 {}; +template <class B1, class... Bn> +struct conjunction<B1, Bn...> +: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; + +template <class B> struct negation : std::integral_constant < bool, !B::value > {}; + template <typename Json> std::string type_name(const Json& j) { switch (j.m_type) @@ -317,25 +336,6 @@ struct external_constructor<value_t::object> } }; -// Implementation of 2 C++17 constructs: conjunction, negation. -// This is needed to avoid evaluating all the traits in a condition -// -// For example: not std::is_same<void, T>::value and has_value_type<T>::value -// will not compile when T = void (on MSVC at least) -// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value -// will stop evaluating if negation<...>::value == false -// -// Please note that those constructs must be used with caution, since symbols can -// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) -// Only use it when you have too (see example ahead) -template <class...> struct conjunction : std::true_type {}; -template <class B1> struct conjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct conjunction<B1, Bn...> -: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; - -template <class B> struct negation : std::integral_constant < bool, !B::value > {}; - /*! @brief Helper to determine whether there's a key_type for T. From 889b269a4fc081b1fae4369b0fdefe3f1ccc29b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Fri, 20 Jan 2017 23:34:52 +0100 Subject: [PATCH 117/174] rename template argument: BasicJson -> Json --- src/json.hpp | 1362 +++++++++++++++------------------------------ src/json.hpp.re2c | 24 +- 2 files changed, 454 insertions(+), 932 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index bd21c93cd..e9a6c80b3 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -377,27 +377,27 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class BasicJson, class CompatibleObjectType> +template<class Json, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, has_key_type<CompatibleObjectType>>::value, - typename BasicJson::object_t, CompatibleObjectType >::value; + typename Json::object_t, CompatibleObjectType >::value; }; -template <typename BasicJson, typename T> +template <typename Json, typename T> struct is_basic_json_nested_type { - static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or - std::is_same<T, typename BasicJson::const_iterator>::value or - std::is_same<T, typename BasicJson::reverse_iterator>::value or - std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, typename BasicJson::json_pointer>::value; + static auto constexpr value = std::is_same<T, typename Json::iterator>::value or + std::is_same<T, typename Json::const_iterator>::value or + std::is_same<T, typename Json::reverse_iterator>::value or + std::is_same<T, typename Json::const_reverse_iterator>::value or + std::is_same<T, typename Json::json_pointer>::value; }; -template <class BasicJson, class CompatibleArrayType> +template <class Json, class CompatibleArrayType> struct is_compatible_array_type { // TODO concept Container? @@ -405,10 +405,10 @@ struct is_compatible_array_type static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< - BasicJson, CompatibleArrayType>>, - negation<std::is_constructible<typename BasicJson::string_t, + Json, CompatibleArrayType>>, + negation<std::is_constructible<typename Json::string_t, CompatibleArrayType>>, - negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, + negation<is_basic_json_nested_type<Json, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, has_iterator<CompatibleArrayType>>::value; }; @@ -9468,915 +9468,437 @@ class basic_json m_start = m_cursor; assert(m_start != nullptr); - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) - { - fill_line_buffer(5); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - if (yych <= '[') - { - if (yych <= '-') - { - if (yych <= '"') - { - if (yych <= 0x00) - { - goto basic_json_parser_2; - } - if (yych <= '!') - { - goto basic_json_parser_4; - } - goto basic_json_parser_9; - } - else - { - if (yych <= '+') - { - goto basic_json_parser_4; - } - if (yych <= ',') - { - goto basic_json_parser_10; - } - goto basic_json_parser_12; - } - } - else - { - if (yych <= '9') - { - if (yych <= '/') - { - goto basic_json_parser_4; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - goto basic_json_parser_15; - } - else - { - if (yych <= ':') - { - goto basic_json_parser_17; - } - if (yych <= 'Z') - { - goto basic_json_parser_4; - } - goto basic_json_parser_19; - } - } - } - else - { - if (yych <= 'n') - { - if (yych <= 'e') - { - if (yych == ']') - { - goto basic_json_parser_21; - } - goto basic_json_parser_4; - } - else - { - if (yych <= 'f') - { - goto basic_json_parser_23; - } - if (yych <= 'm') - { - goto basic_json_parser_4; - } - goto basic_json_parser_24; - } - } - else - { - if (yych <= 'z') - { - if (yych == 't') - { - goto basic_json_parser_25; - } - goto basic_json_parser_4; - } - else - { - if (yych <= '{') - { - goto basic_json_parser_26; - } - if (yych == '}') - { - goto basic_json_parser_28; - } - goto basic_json_parser_4; - } - } - } -basic_json_parser_2: - ++m_cursor; - { - last_token_type = token_type::end_of_input; - break; - } -basic_json_parser_4: - ++m_cursor; -basic_json_parser_5: - { - last_token_type = token_type::parse_error; - break; - } -basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 32) - { - goto basic_json_parser_6; - } - { - continue; - } -basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) - { - goto basic_json_parser_5; - } - if (yych <= 0x7F) - { - goto basic_json_parser_31; - } - if (yych <= 0xC1) - { - goto basic_json_parser_5; - } - if (yych <= 0xF4) - { - goto basic_json_parser_31; - } - goto basic_json_parser_5; -basic_json_parser_10: - ++m_cursor; - { - last_token_type = token_type::value_separator; - break; - } -basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_5; - } - if (yych <= '0') - { - goto basic_json_parser_13; - } - if (yych <= '9') - { - goto basic_json_parser_15; - } - goto basic_json_parser_5; -basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - } -basic_json_parser_14: - { - last_token_type = token_type::value_number; - break; - } -basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yybm[0 + yych] & 64) - { - goto basic_json_parser_15; - } - if (yych <= 'D') - { - if (yych == '.') - { - goto basic_json_parser_43; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_17: - ++m_cursor; - { - last_token_type = token_type::name_separator; - break; - } -basic_json_parser_19: - ++m_cursor; - { - last_token_type = token_type::begin_array; - break; - } -basic_json_parser_21: - ++m_cursor; - { - last_token_type = token_type::end_array; - break; - } -basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') - { - goto basic_json_parser_45; - } - goto basic_json_parser_5; -basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') - { - goto basic_json_parser_46; - } - goto basic_json_parser_5; -basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') - { - goto basic_json_parser_47; - } - goto basic_json_parser_5; -basic_json_parser_26: - ++m_cursor; - { - last_token_type = token_type::begin_object; - break; - } -basic_json_parser_28: - ++m_cursor; - { - last_token_type = token_type::end_object; - break; - } -basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; -basic_json_parser_31: - if (yybm[0 + yych] & 128) - { - goto basic_json_parser_30; - } - if (yych <= 0xE0) - { - if (yych <= '\\') - { - if (yych <= 0x1F) - { - goto basic_json_parser_32; - } - if (yych <= '"') - { - goto basic_json_parser_33; - } - goto basic_json_parser_35; - } - else - { - if (yych <= 0xC1) - { - goto basic_json_parser_32; - } - if (yych <= 0xDF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_37; - } - } - else - { - if (yych <= 0xEF) - { - if (yych == 0xED) - { - goto basic_json_parser_39; - } - goto basic_json_parser_38; - } - else - { - if (yych <= 0xF0) - { - goto basic_json_parser_40; - } - if (yych <= 0xF3) - { - goto basic_json_parser_41; - } - if (yych <= 0xF4) - { - goto basic_json_parser_42; - } - } - } -basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) - { - goto basic_json_parser_5; - } - else - { - goto basic_json_parser_14; - } -basic_json_parser_33: - ++m_cursor; - { - last_token_type = token_type::value_string; - break; - } -basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'e') - { - if (yych <= '/') - { - if (yych == '"') - { - goto basic_json_parser_30; - } - if (yych <= '.') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych <= '\\') - { - if (yych <= '[') - { - goto basic_json_parser_32; - } - goto basic_json_parser_30; - } - else - { - if (yych == 'b') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - } - } - else - { - if (yych <= 'q') - { - if (yych <= 'f') - { - goto basic_json_parser_30; - } - if (yych == 'n') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 's') - { - if (yych <= 'r') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 't') - { - goto basic_json_parser_30; - } - if (yych <= 'u') - { - goto basic_json_parser_48; - } - goto basic_json_parser_32; - } - } - } -basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; -basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x9F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x9F) - { - goto basic_json_parser_36; - } - goto basic_json_parser_32; -basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x8F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0xBF) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_32; - } - if (yych <= 0x8F) - { - goto basic_json_parser_38; - } - goto basic_json_parser_32; -basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_32; -basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') - { - if (yych == '+') - { - goto basic_json_parser_51; - } - goto basic_json_parser_32; - } - else - { - if (yych <= '-') - { - goto basic_json_parser_51; - } - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_32; - } -basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_54; - } - goto basic_json_parser_32; -basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_55; - } - goto basic_json_parser_32; -basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') - { - goto basic_json_parser_56; - } - goto basic_json_parser_32; -basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_57; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_57; - } - goto basic_json_parser_32; - } -basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) - { - fill_line_buffer(3); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= 'D') - { - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_49; - } - goto basic_json_parser_14; - } - else - { - if (yych <= 'E') - { - goto basic_json_parser_44; - } - if (yych == 'e') - { - goto basic_json_parser_44; - } - goto basic_json_parser_14; - } -basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych >= ':') - { - goto basic_json_parser_32; - } -basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '/') - { - goto basic_json_parser_14; - } - if (yych <= '9') - { - goto basic_json_parser_52; - } - goto basic_json_parser_14; -basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') - { - goto basic_json_parser_58; - } - goto basic_json_parser_32; -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_59; - } - goto basic_json_parser_32; -basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_61; - } - goto basic_json_parser_32; -basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_63; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_63; - } - goto basic_json_parser_32; - } -basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_64; - } - goto basic_json_parser_32; -basic_json_parser_59: - ++m_cursor; - { - last_token_type = token_type::literal_null; - break; - } -basic_json_parser_61: - ++m_cursor; - { - last_token_type = token_type::literal_true; - break; - } -basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_66; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_66; - } - goto basic_json_parser_32; - } -basic_json_parser_64: - ++m_cursor; - { - last_token_type = token_type::literal_false; - break; - } -basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(1); // LCOV_EXCL_LINE - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_32; - } - if (yych <= '9') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_30; - } - if (yych <= '`') - { - goto basic_json_parser_32; - } - if (yych <= 'f') - { - goto basic_json_parser_30; - } - goto basic_json_parser_32; - } + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + if (yych <= '[') { + if (yych <= '-') { + if (yych <= '"') { + if (yych <= 0x00) goto basic_json_parser_2; + if (yych <= '!') goto basic_json_parser_4; + goto basic_json_parser_9; + } else { + if (yych <= '+') goto basic_json_parser_4; + if (yych <= ',') goto basic_json_parser_10; + goto basic_json_parser_12; } + } else { + if (yych <= '9') { + if (yych <= '/') goto basic_json_parser_4; + if (yych <= '0') goto basic_json_parser_13; + goto basic_json_parser_15; + } else { + if (yych <= ':') goto basic_json_parser_17; + if (yych <= 'Z') goto basic_json_parser_4; + goto basic_json_parser_19; + } + } + } else { + if (yych <= 'n') { + if (yych <= 'e') { + if (yych == ']') goto basic_json_parser_21; + goto basic_json_parser_4; + } else { + if (yych <= 'f') goto basic_json_parser_23; + if (yych <= 'm') goto basic_json_parser_4; + goto basic_json_parser_24; + } + } else { + if (yych <= 'z') { + if (yych == 't') goto basic_json_parser_25; + goto basic_json_parser_4; + } else { + if (yych <= '{') goto basic_json_parser_26; + if (yych == '}') goto basic_json_parser_28; + goto basic_json_parser_4; + } + } + } +basic_json_parser_2: + ++m_cursor; + { last_token_type = token_type::end_of_input; break; } +basic_json_parser_4: + ++m_cursor; +basic_json_parser_5: + { last_token_type = token_type::parse_error; break; } +basic_json_parser_6: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 32) { + goto basic_json_parser_6; + } + { continue; } +basic_json_parser_9: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) goto basic_json_parser_5; + if (yych <= 0x7F) goto basic_json_parser_31; + if (yych <= 0xC1) goto basic_json_parser_5; + if (yych <= 0xF4) goto basic_json_parser_31; + goto basic_json_parser_5; +basic_json_parser_10: + ++m_cursor; + { last_token_type = token_type::value_separator; break; } +basic_json_parser_12: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_5; + if (yych <= '0') goto basic_json_parser_13; + if (yych <= '9') goto basic_json_parser_15; + goto basic_json_parser_5; +basic_json_parser_13: + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + } +basic_json_parser_14: + { last_token_type = token_type::value_number; break; } +basic_json_parser_15: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yybm[0+yych] & 64) { + goto basic_json_parser_15; + } + if (yych <= 'D') { + if (yych == '.') goto basic_json_parser_43; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } +basic_json_parser_17: + ++m_cursor; + { last_token_type = token_type::name_separator; break; } +basic_json_parser_19: + ++m_cursor; + { last_token_type = token_type::begin_array; break; } +basic_json_parser_21: + ++m_cursor; + { last_token_type = token_type::end_array; break; } +basic_json_parser_23: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') goto basic_json_parser_45; + goto basic_json_parser_5; +basic_json_parser_24: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') goto basic_json_parser_46; + goto basic_json_parser_5; +basic_json_parser_25: + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') goto basic_json_parser_47; + goto basic_json_parser_5; +basic_json_parser_26: + ++m_cursor; + { last_token_type = token_type::begin_object; break; } +basic_json_parser_28: + ++m_cursor; + { last_token_type = token_type::end_object; break; } +basic_json_parser_30: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; +basic_json_parser_31: + if (yybm[0+yych] & 128) { + goto basic_json_parser_30; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x1F) goto basic_json_parser_32; + if (yych <= '"') goto basic_json_parser_33; + goto basic_json_parser_35; + } else { + if (yych <= 0xC1) goto basic_json_parser_32; + if (yych <= 0xDF) goto basic_json_parser_36; + goto basic_json_parser_37; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) goto basic_json_parser_39; + goto basic_json_parser_38; + } else { + if (yych <= 0xF0) goto basic_json_parser_40; + if (yych <= 0xF3) goto basic_json_parser_41; + if (yych <= 0xF4) goto basic_json_parser_42; + } + } +basic_json_parser_32: + m_cursor = m_marker; + if (yyaccept == 0) { + goto basic_json_parser_5; + } else { + goto basic_json_parser_14; + } +basic_json_parser_33: + ++m_cursor; + { last_token_type = token_type::value_string; break; } +basic_json_parser_35: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'e') { + if (yych <= '/') { + if (yych == '"') goto basic_json_parser_30; + if (yych <= '.') goto basic_json_parser_32; + goto basic_json_parser_30; + } else { + if (yych <= '\\') { + if (yych <= '[') goto basic_json_parser_32; + goto basic_json_parser_30; + } else { + if (yych == 'b') goto basic_json_parser_30; + goto basic_json_parser_32; + } + } + } else { + if (yych <= 'q') { + if (yych <= 'f') goto basic_json_parser_30; + if (yych == 'n') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 's') { + if (yych <= 'r') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 't') goto basic_json_parser_30; + if (yych <= 'u') goto basic_json_parser_48; + goto basic_json_parser_32; + } + } + } +basic_json_parser_36: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_30; + goto basic_json_parser_32; +basic_json_parser_37: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x9F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_39: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x9F) goto basic_json_parser_36; + goto basic_json_parser_32; +basic_json_parser_40: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x8F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0xBF) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_42: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 0x7F) goto basic_json_parser_32; + if (yych <= 0x8F) goto basic_json_parser_38; + goto basic_json_parser_32; +basic_json_parser_43: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_32; +basic_json_parser_44: + yych = *++m_cursor; + if (yych <= ',') { + if (yych == '+') goto basic_json_parser_51; + goto basic_json_parser_32; + } else { + if (yych <= '-') goto basic_json_parser_51; + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_32; + } +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_54; + goto basic_json_parser_32; +basic_json_parser_46: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_55; + goto basic_json_parser_32; +basic_json_parser_47: + yych = *++m_cursor; + if (yych == 'u') goto basic_json_parser_56; + goto basic_json_parser_32; +basic_json_parser_48: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_57; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_57; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_57; + goto basic_json_parser_32; + } +basic_json_parser_49: + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= 'D') { + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_49; + goto basic_json_parser_14; + } else { + if (yych <= 'E') goto basic_json_parser_44; + if (yych == 'e') goto basic_json_parser_44; + goto basic_json_parser_14; + } +basic_json_parser_51: + yych = *++m_cursor; + if (yych <= '/') goto basic_json_parser_32; + if (yych >= ':') goto basic_json_parser_32; +basic_json_parser_52: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '/') goto basic_json_parser_14; + if (yych <= '9') goto basic_json_parser_52; + goto basic_json_parser_14; +basic_json_parser_54: + yych = *++m_cursor; + if (yych == 's') goto basic_json_parser_58; + goto basic_json_parser_32; +basic_json_parser_55: + yych = *++m_cursor; + if (yych == 'l') goto basic_json_parser_59; + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_61; + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_63; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_63; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_63; + goto basic_json_parser_32; + } +basic_json_parser_58: + yych = *++m_cursor; + if (yych == 'e') goto basic_json_parser_64; + goto basic_json_parser_32; +basic_json_parser_59: + ++m_cursor; + { last_token_type = token_type::literal_null; break; } +basic_json_parser_61: + ++m_cursor; + { last_token_type = token_type::literal_true; break; } +basic_json_parser_63: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_66; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_66; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_66; + goto basic_json_parser_32; + } +basic_json_parser_64: + ++m_cursor; + { last_token_type = token_type::literal_false; break; } +basic_json_parser_66: + ++m_cursor; + if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE + yych = *m_cursor; + if (yych <= '@') { + if (yych <= '/') goto basic_json_parser_32; + if (yych <= '9') goto basic_json_parser_30; + goto basic_json_parser_32; + } else { + if (yych <= 'F') goto basic_json_parser_30; + if (yych <= '`') goto basic_json_parser_32; + if (yych <= 'f') goto basic_json_parser_30; + goto basic_json_parser_32; + } + } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c47b321cf..cb4f3ad1a 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -377,27 +377,27 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class BasicJson, class CompatibleObjectType> +template<class Json, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, has_key_type<CompatibleObjectType>>::value, - typename BasicJson::object_t, CompatibleObjectType >::value; + typename Json::object_t, CompatibleObjectType >::value; }; -template <typename BasicJson, typename T> +template <typename Json, typename T> struct is_basic_json_nested_type { - static auto constexpr value = std::is_same<T, typename BasicJson::iterator>::value or - std::is_same<T, typename BasicJson::const_iterator>::value or - std::is_same<T, typename BasicJson::reverse_iterator>::value or - std::is_same<T, typename BasicJson::const_reverse_iterator>::value or - std::is_same<T, typename BasicJson::json_pointer>::value; + static auto constexpr value = std::is_same<T, typename Json::iterator>::value or + std::is_same<T, typename Json::const_iterator>::value or + std::is_same<T, typename Json::reverse_iterator>::value or + std::is_same<T, typename Json::const_reverse_iterator>::value or + std::is_same<T, typename Json::json_pointer>::value; }; -template <class BasicJson, class CompatibleArrayType> +template <class Json, class CompatibleArrayType> struct is_compatible_array_type { // TODO concept Container? @@ -405,10 +405,10 @@ struct is_compatible_array_type static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< - BasicJson, CompatibleArrayType>>, - negation<std::is_constructible<typename BasicJson::string_t, + Json, CompatibleArrayType>>, + negation<std::is_constructible<typename Json::string_t, CompatibleArrayType>>, - negation<is_basic_json_nested_type<BasicJson, CompatibleArrayType>>, + negation<is_basic_json_nested_type<Json, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, has_iterator<CompatibleArrayType>>::value; }; From 708eb9613b24422848b2bee92425fcaf3fc11d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 16:35:23 +0100 Subject: [PATCH 118/174] disable reserve tests when exceptions are disabled --- test/src/unit-conversions.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 3c4d8bef4..994f882dd 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -175,6 +175,7 @@ TEST_CASE("value conversion") CHECK_THROWS_WITH(json(json::value_t::null).get<std::vector<json>>(), "type must be array, but is null"); +#if not defined(JSON_NOEXCEPTION) SECTION("reserve is called on containers that supports it") { // making the call to from_json throw in order to check capacity @@ -182,6 +183,7 @@ TEST_CASE("value conversion") CHECK_THROWS_AS(nlohmann::from_json(j, v), std::logic_error); CHECK(v.capacity() == j.size()); } +#endif } SECTION("std::deque<json>") From 7f359017d2d0da0138cfeafa9bfc2c5e0e892cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 16:41:14 +0100 Subject: [PATCH 119/174] rename template argument Json -> BasicJsonType --- src/json.hpp | 1536 +++++++++++++++++++++++++++-------------- src/json.hpp.re2c | 294 ++++---- test/src/unit-udt.cpp | 58 +- 3 files changed, 1183 insertions(+), 705 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index e9a6c80b3..2524a694e 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -187,7 +187,7 @@ struct conjunction<B1, Bn...> template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <typename Json> std::string type_name(const Json& j) +template <typename BasicJsonType> std::string type_name(const BasicJsonType& j) { switch (j.m_type) { @@ -220,8 +220,8 @@ template <value_t> struct external_constructor; template <> struct external_constructor<value_t::boolean> { - template <typename Json> - static void construct(Json& j, typename Json::boolean_t b) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { j.m_type = value_t::boolean; j.m_value = b; @@ -232,8 +232,8 @@ struct external_constructor<value_t::boolean> template <> struct external_constructor<value_t::string> { - template <typename Json> - static void construct(Json& j, const typename Json::string_t& s) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) { j.m_type = value_t::string; j.m_value = s; @@ -244,12 +244,12 @@ struct external_constructor<value_t::string> template <> struct external_constructor<value_t::number_float> { - template <typename Json> - static void construct(Json& j, typename Json::number_float_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept { // replace infinity and NAN by null if (not std::isfinite(val)) - j = Json{}; + j = BasicJsonType{}; else { j.m_type = value_t::number_float; @@ -262,8 +262,8 @@ struct external_constructor<value_t::number_float> template <> struct external_constructor<value_t::number_unsigned> { - template <typename Json> - static void construct(Json& j, typename Json::number_unsigned_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept { j.m_type = value_t::number_unsigned; j.m_value = val; @@ -274,8 +274,8 @@ struct external_constructor<value_t::number_unsigned> template <> struct external_constructor<value_t::number_integer> { - template <typename Json> - static void construct(Json& j, typename Json::number_integer_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept { j.m_type = value_t::number_integer; j.m_value = val; @@ -286,25 +286,25 @@ struct external_constructor<value_t::number_integer> template <> struct external_constructor<value_t::array> { - template <typename Json> - static void construct(Json& j, const typename Json::array_t& arr) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) { j.m_type = value_t::array; j.m_value = arr; j.assert_invariant(); } - template <typename Json, typename CompatibleArrayType, + template <typename BasicJsonType, typename CompatibleArrayType, enable_if_t<not std::is_same<CompatibleArrayType, - typename Json::array_t>::value, + typename BasicJsonType::array_t>::value, int> = 0> - static void construct(Json& j, const CompatibleArrayType& arr) + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; using std::end; j.m_type = value_t::array; j.m_value.array = - j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); j.assert_invariant(); } }; @@ -312,26 +312,26 @@ struct external_constructor<value_t::array> template <> struct external_constructor<value_t::object> { - template <typename Json> - static void construct(Json& j, const typename Json::object_t& obj) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) { j.m_type = value_t::object; j.m_value = obj; j.assert_invariant(); } - template <typename Json, typename CompatibleObjectType, + template <typename BasicJsonType, typename CompatibleObjectType, enable_if_t<not std::is_same<CompatibleObjectType, - typename Json::object_t>::value, + typename BasicJsonType::object_t>::value, int> = 0> - static void construct(Json& j, const CompatibleObjectType& obj) + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; using std::end; j.m_type = value_t::object; j.m_value.object = - j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); j.assert_invariant(); } }; @@ -377,27 +377,27 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class Json, class CompatibleObjectType> +template<class BasicJsonType, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, has_key_type<CompatibleObjectType>>::value, - typename Json::object_t, CompatibleObjectType >::value; + typename BasicJsonType::object_t, CompatibleObjectType >::value; }; -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct is_basic_json_nested_type { - static auto constexpr value = std::is_same<T, typename Json::iterator>::value or - std::is_same<T, typename Json::const_iterator>::value or - std::is_same<T, typename Json::reverse_iterator>::value or - std::is_same<T, typename Json::const_reverse_iterator>::value or - std::is_same<T, typename Json::json_pointer>::value; + static auto constexpr value = std::is_same<T, typename BasicJsonType::iterator>::value or + std::is_same<T, typename BasicJsonType::const_iterator>::value or + std::is_same<T, typename BasicJsonType::reverse_iterator>::value or + std::is_same<T, typename BasicJsonType::const_reverse_iterator>::value or + std::is_same<T, typename BasicJsonType::json_pointer>::value; }; -template <class Json, class CompatibleArrayType> +template <class BasicJsonType, class CompatibleArrayType> struct is_compatible_array_type { // TODO concept Container? @@ -405,10 +405,10 @@ struct is_compatible_array_type static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< - Json, CompatibleArrayType>>, - negation<std::is_constructible<typename Json::string_t, + BasicJsonType, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJsonType::string_t, CompatibleArrayType>>, - negation<is_basic_json_nested_type<Json, CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJsonType, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, has_iterator<CompatibleArrayType>>::value; }; @@ -441,76 +441,76 @@ struct is_compatible_integer_type }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct has_from_json { private: // also check the return type of from_json template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( - std::declval<Json>(), std::declval<T&>()))>::value>> + std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype( - detect(std::declval<typename Json::template json_serializer<T, void>>()))>::value; + detect(std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct has_non_default_from_json { private: template < typename U, typename = enable_if_t<std::is_same< - T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value >> + T, decltype(uncvref_t<U>::from_json(std::declval<BasicJsonType>()))>::value >> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; -// This trait checks if Json::json_serializer<T>::to_json exists -template <typename Json, typename T> +// This trait checks if BasicJsonType::json_serializer<T>::to_json exists +template <typename BasicJsonType, typename T> struct has_to_json { private: template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json&>(), std::declval<T>()))> + std::declval<BasicJsonType&>(), std::declval<T>()))> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters -template <typename Json, typename ArithmeticType, +template <typename BasicJsonType, typename ArithmeticType, enable_if_t<std::is_arithmetic<ArithmeticType>::value and not std::is_same<ArithmeticType, - typename Json::boolean_t>::value, + typename BasicJsonType::boolean_t>::value, int> = 0> -void get_arithmetic_value(const Json& j, ArithmeticType& val) +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_unsigned_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_integer_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_float_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; default: JSON_THROW( @@ -518,136 +518,136 @@ void get_arithmetic_value(const Json& j, ArithmeticType& val) } } -template <typename Json> -void to_json(Json& j, typename Json::boolean_t b) noexcept +template <typename BasicJsonType> +void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { external_constructor<value_t::boolean>::construct(j, b); } -template <typename Json, typename CompatibleString, - enable_if_t<std::is_constructible<typename Json::string_t, +template <typename BasicJsonType, typename CompatibleString, + enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0> -void to_json(Json& j, const CompatibleString& s) +void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); } -template <typename Json, typename FloatType, +template <typename BasicJsonType, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> -void to_json(Json& j, FloatType val) noexcept +void to_json(BasicJsonType& j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); + external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val)); } template < - typename Json, typename CompatibleNumberUnsignedType, - enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + typename BasicJsonType, typename CompatibleNumberUnsignedType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0 > -void to_json(Json& j, CompatibleNumberUnsignedType val) noexcept +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val)); } template < - typename Json, typename CompatibleNumberIntegerType, - enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + typename BasicJsonType, typename CompatibleNumberIntegerType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0 > -void to_json(Json& j, CompatibleNumberIntegerType val) noexcept +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); } -template <typename Json, typename UnscopedEnumType, +template <typename BasicJsonType, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json& j, UnscopedEnumType e) noexcept +void to_json(BasicJsonType& j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); } template < - typename Json, typename CompatibleArrayType, + typename BasicJsonType, typename CompatibleArrayType, enable_if_t < - is_compatible_array_type<Json, CompatibleArrayType>::value or - std::is_same<typename Json::array_t, CompatibleArrayType>::value, + is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value or + std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int > = 0 > -void to_json(Json& j, const CompatibleArrayType& arr) +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) { external_constructor<value_t::array>::construct(j, arr); } template < - typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, + typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0 > -void to_json(Json& j, const CompatibleObjectType& arr) +void to_json(BasicJsonType& j, const CompatibleObjectType& arr) { external_constructor<value_t::object>::construct(j, arr); } -template <typename Json> -void from_json(const Json& j, typename Json::boolean_t& b) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) { JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); } - b = *j.template get_ptr<const typename Json::boolean_t*>(); + b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } -template <typename Json> -void from_json(const Json& j, typename Json::string_t& s) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) { JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); } - s = *j.template get_ptr<const typename Json::string_t*>(); + s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } -template <typename Json> -void from_json(const Json& j, typename Json::number_float_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) { get_arithmetic_value(j, val); } -template <typename Json> -void from_json(const Json& j, typename Json::number_unsigned_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) { get_arithmetic_value(j, val); } -template <typename Json> -void from_json(const Json& j, typename Json::number_integer_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) { get_arithmetic_value(j, val); } -template <typename Json, typename UnscopedEnumType, +template <typename BasicJsonType, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const Json& j, UnscopedEnumType& e) +void from_json(const BasicJsonType& j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); e = static_cast<UnscopedEnumType>(val); } -template <typename Json> -void from_json(const Json& j, typename Json::array_t& arr) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - arr = *j.template get_ptr<const typename Json::array_t*>(); + arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list -template <typename Json, typename T, typename Allocator> -void from_json(const Json& j, std::forward_list<T, Allocator>& l) +template <typename BasicJsonType, typename T, typename Allocator> +void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons // (except when it's null.. ?) @@ -655,7 +655,7 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - if (not std::is_same<T, Json>::value) + if (not std::is_same<T, BasicJsonType>::value) { if (!j.is_array()) { @@ -668,23 +668,23 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) } } -template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<0>) +template <typename BasicJsonType, typename CompatibleArrayType> +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) { using std::begin; using std::end; std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json + // get<BasicJsonType>() returns *this, this won't call a from_json method when + // value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<1>) +template <typename BasicJsonType, typename CompatibleArrayType> +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -694,28 +694,28 @@ auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag arr.reserve(j.size()); std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json + // get<BasicJsonType>() returns *this, this won't call a from_json method when + // value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } template < - typename Json, typename CompatibleArrayType, - enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and - not std::is_same<typename Json::array_t, + typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and + not std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int> = 0 > -void from_json(const Json& j, CompatibleArrayType& arr) +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - // when T == Json, do not check if value_t is correct - if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + // when T == BasicJsonType, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { if (!j.is_array()) { @@ -727,17 +727,17 @@ void from_json(const Json& j, CompatibleArrayType& arr) template < - typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, + typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0 > -void from_json(const Json& j, CompatibleObjectType& obj) +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); } - auto inner_object = j.template get_ptr<const typename Json::object_t*>(); + auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>(); using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which @@ -750,36 +750,36 @@ void from_json(const Json& j, CompatibleObjectType& obj) // note: Is it really necessary to provide explicit overloads for boolean_t etc.. // in case of a custom BooleanType which is not an arithmetic type? template < - typename Json, typename ArithmeticType, + typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and not std::is_same<ArithmeticType, - typename Json::number_unsigned_t>::value and + typename BasicJsonType::number_unsigned_t>::value and not std::is_same<ArithmeticType, - typename Json::number_integer_t>::value and + typename BasicJsonType::number_integer_t>::value and not std::is_same<ArithmeticType, - typename Json::number_float_t>::value and - not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + typename BasicJsonType::number_float_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, int > = 0 > -void from_json(const Json& j, ArithmeticType& val) +void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_unsigned_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_integer_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_float_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; case value_t::boolean: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::boolean_t*>()); + *j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; default: JSON_THROW( @@ -789,8 +789,8 @@ void from_json(const Json& j, ArithmeticType& val) struct to_json_fn { - template <typename Json, typename T> - auto call(Json& j, T&& val, priority_tag<1>) const + template <typename BasicJsonType, typename T> + auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) -> decltype(to_json(j, std::forward<T>(val)), void()) @@ -798,15 +798,15 @@ struct to_json_fn return to_json(j, std::forward<T>(val)); } - template <typename Json, typename T> - void call(Json&, T&&, priority_tag<0>) const noexcept + template <typename BasicJsonType, typename T> + void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { - static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); } public: - template <typename Json, typename T> - void operator()(Json& j, T&& val) const + template <typename BasicJsonType, typename T> + void operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) { return call(j, std::forward<T>(val), priority_tag<1> {}); @@ -816,23 +816,23 @@ struct to_json_fn struct from_json_fn { private: - template <typename Json, typename T> - auto call(const Json& j, T& val, priority_tag<1>) const + template <typename BasicJsonType, typename T> + auto call(const BasicJsonType& j, T& val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { return from_json(j, val); } - template <typename Json, typename T> - void call(const Json&, T&, priority_tag<0>) const noexcept + template <typename BasicJsonType, typename T> + void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { - static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); } public: - template <typename Json, typename T> - void operator()(const Json& j, T& val) const + template <typename BasicJsonType, typename T> + void operator()(const BasicJsonType& j, T& val) const noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) { return call(j, val, priority_tag<1> {}); @@ -881,14 +881,14 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va template <typename = void, typename = void> struct adl_serializer { - template <typename Json, typename T> - static void from_json(Json&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<Json>(j), val))) + template <typename BasicJsonType, typename T> + static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { - ::nlohmann::from_json(std::forward<Json>(j), val); + ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template <typename Json, typename T> - static void to_json(Json& j, T&& val) noexcept( + template <typename BasicJsonType, typename T> + static void to_json(BasicJsonType& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { ::nlohmann::to_json(j, std::forward<T>(val)); @@ -989,7 +989,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(const Json&); + template <typename BasicJsonType> friend std::string detail::type_name(const BasicJsonType&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -9468,437 +9468,915 @@ class basic_json m_start = m_cursor; assert(m_start != nullptr); - - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 32, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 160, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((m_limit - m_cursor) < 5) fill_line_buffer(5); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - if (yych <= '[') { - if (yych <= '-') { - if (yych <= '"') { - if (yych <= 0x00) goto basic_json_parser_2; - if (yych <= '!') goto basic_json_parser_4; - goto basic_json_parser_9; - } else { - if (yych <= '+') goto basic_json_parser_4; - if (yych <= ',') goto basic_json_parser_10; - goto basic_json_parser_12; - } - } else { - if (yych <= '9') { - if (yych <= '/') goto basic_json_parser_4; - if (yych <= '0') goto basic_json_parser_13; - goto basic_json_parser_15; - } else { - if (yych <= ':') goto basic_json_parser_17; - if (yych <= 'Z') goto basic_json_parser_4; - goto basic_json_parser_19; - } - } - } else { - if (yych <= 'n') { - if (yych <= 'e') { - if (yych == ']') goto basic_json_parser_21; - goto basic_json_parser_4; - } else { - if (yych <= 'f') goto basic_json_parser_23; - if (yych <= 'm') goto basic_json_parser_4; - goto basic_json_parser_24; - } - } else { - if (yych <= 'z') { - if (yych == 't') goto basic_json_parser_25; - goto basic_json_parser_4; - } else { - if (yych <= '{') goto basic_json_parser_26; - if (yych == '}') goto basic_json_parser_28; - goto basic_json_parser_4; - } - } - } + + { + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 160, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if ((m_limit - m_cursor) < 5) + { + fill_line_buffer(5); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + if (yych <= '[') + { + if (yych <= '-') + { + if (yych <= '"') + { + if (yych <= 0x00) + { + goto basic_json_parser_2; + } + if (yych <= '!') + { + goto basic_json_parser_4; + } + goto basic_json_parser_9; + } + else + { + if (yych <= '+') + { + goto basic_json_parser_4; + } + if (yych <= ',') + { + goto basic_json_parser_10; + } + goto basic_json_parser_12; + } + } + else + { + if (yych <= '9') + { + if (yych <= '/') + { + goto basic_json_parser_4; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + goto basic_json_parser_15; + } + else + { + if (yych <= ':') + { + goto basic_json_parser_17; + } + if (yych <= 'Z') + { + goto basic_json_parser_4; + } + goto basic_json_parser_19; + } + } + } + else + { + if (yych <= 'n') + { + if (yych <= 'e') + { + if (yych == ']') + { + goto basic_json_parser_21; + } + goto basic_json_parser_4; + } + else + { + if (yych <= 'f') + { + goto basic_json_parser_23; + } + if (yych <= 'm') + { + goto basic_json_parser_4; + } + goto basic_json_parser_24; + } + } + else + { + if (yych <= 'z') + { + if (yych == 't') + { + goto basic_json_parser_25; + } + goto basic_json_parser_4; + } + else + { + if (yych <= '{') + { + goto basic_json_parser_26; + } + if (yych == '}') + { + goto basic_json_parser_28; + } + goto basic_json_parser_4; + } + } + } basic_json_parser_2: - ++m_cursor; - { last_token_type = token_type::end_of_input; break; } + ++m_cursor; + { + last_token_type = token_type::end_of_input; + break; + } basic_json_parser_4: - ++m_cursor; + ++m_cursor; basic_json_parser_5: - { last_token_type = token_type::parse_error; break; } + { + last_token_type = token_type::parse_error; + break; + } basic_json_parser_6: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 32) { - goto basic_json_parser_6; - } - { continue; } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 32) + { + goto basic_json_parser_6; + } + { + continue; + } basic_json_parser_9: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych <= 0x1F) goto basic_json_parser_5; - if (yych <= 0x7F) goto basic_json_parser_31; - if (yych <= 0xC1) goto basic_json_parser_5; - if (yych <= 0xF4) goto basic_json_parser_31; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych <= 0x1F) + { + goto basic_json_parser_5; + } + if (yych <= 0x7F) + { + goto basic_json_parser_31; + } + if (yych <= 0xC1) + { + goto basic_json_parser_5; + } + if (yych <= 0xF4) + { + goto basic_json_parser_31; + } + goto basic_json_parser_5; basic_json_parser_10: - ++m_cursor; - { last_token_type = token_type::value_separator; break; } + ++m_cursor; + { + last_token_type = token_type::value_separator; + break; + } basic_json_parser_12: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_5; - if (yych <= '0') goto basic_json_parser_13; - if (yych <= '9') goto basic_json_parser_15; - goto basic_json_parser_5; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_5; + } + if (yych <= '0') + { + goto basic_json_parser_13; + } + if (yych <= '9') + { + goto basic_json_parser_15; + } + goto basic_json_parser_5; basic_json_parser_13: - yyaccept = 1; - yych = *(m_marker = ++m_cursor); - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - } + yyaccept = 1; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + } basic_json_parser_14: - { last_token_type = token_type::value_number; break; } + { + last_token_type = token_type::value_number; + break; + } basic_json_parser_15: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yybm[0+yych] & 64) { - goto basic_json_parser_15; - } - if (yych <= 'D') { - if (yych == '.') goto basic_json_parser_43; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yybm[0 + yych] & 64) + { + goto basic_json_parser_15; + } + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_43; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } basic_json_parser_17: - ++m_cursor; - { last_token_type = token_type::name_separator; break; } + ++m_cursor; + { + last_token_type = token_type::name_separator; + break; + } basic_json_parser_19: - ++m_cursor; - { last_token_type = token_type::begin_array; break; } + ++m_cursor; + { + last_token_type = token_type::begin_array; + break; + } basic_json_parser_21: - ++m_cursor; - { last_token_type = token_type::end_array; break; } + ++m_cursor; + { + last_token_type = token_type::end_array; + break; + } basic_json_parser_23: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'a') goto basic_json_parser_45; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'a') + { + goto basic_json_parser_45; + } + goto basic_json_parser_5; basic_json_parser_24: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'u') goto basic_json_parser_46; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'u') + { + goto basic_json_parser_46; + } + goto basic_json_parser_5; basic_json_parser_25: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 'r') goto basic_json_parser_47; - goto basic_json_parser_5; + yyaccept = 0; + yych = *(m_marker = ++m_cursor); + if (yych == 'r') + { + goto basic_json_parser_47; + } + goto basic_json_parser_5; basic_json_parser_26: - ++m_cursor; - { last_token_type = token_type::begin_object; break; } + ++m_cursor; + { + last_token_type = token_type::begin_object; + break; + } basic_json_parser_28: - ++m_cursor; - { last_token_type = token_type::end_object; break; } + ++m_cursor; + { + last_token_type = token_type::end_object; + break; + } basic_json_parser_30: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; basic_json_parser_31: - if (yybm[0+yych] & 128) { - goto basic_json_parser_30; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x1F) goto basic_json_parser_32; - if (yych <= '"') goto basic_json_parser_33; - goto basic_json_parser_35; - } else { - if (yych <= 0xC1) goto basic_json_parser_32; - if (yych <= 0xDF) goto basic_json_parser_36; - goto basic_json_parser_37; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto basic_json_parser_39; - goto basic_json_parser_38; - } else { - if (yych <= 0xF0) goto basic_json_parser_40; - if (yych <= 0xF3) goto basic_json_parser_41; - if (yych <= 0xF4) goto basic_json_parser_42; - } - } + if (yybm[0 + yych] & 128) + { + goto basic_json_parser_30; + } + if (yych <= 0xE0) + { + if (yych <= '\\') + { + if (yych <= 0x1F) + { + goto basic_json_parser_32; + } + if (yych <= '"') + { + goto basic_json_parser_33; + } + goto basic_json_parser_35; + } + else + { + if (yych <= 0xC1) + { + goto basic_json_parser_32; + } + if (yych <= 0xDF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_37; + } + } + else + { + if (yych <= 0xEF) + { + if (yych == 0xED) + { + goto basic_json_parser_39; + } + goto basic_json_parser_38; + } + else + { + if (yych <= 0xF0) + { + goto basic_json_parser_40; + } + if (yych <= 0xF3) + { + goto basic_json_parser_41; + } + if (yych <= 0xF4) + { + goto basic_json_parser_42; + } + } + } basic_json_parser_32: - m_cursor = m_marker; - if (yyaccept == 0) { - goto basic_json_parser_5; - } else { - goto basic_json_parser_14; - } + m_cursor = m_marker; + if (yyaccept == 0) + { + goto basic_json_parser_5; + } + else + { + goto basic_json_parser_14; + } basic_json_parser_33: - ++m_cursor; - { last_token_type = token_type::value_string; break; } + ++m_cursor; + { + last_token_type = token_type::value_string; + break; + } basic_json_parser_35: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'e') { - if (yych <= '/') { - if (yych == '"') goto basic_json_parser_30; - if (yych <= '.') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych <= '\\') { - if (yych <= '[') goto basic_json_parser_32; - goto basic_json_parser_30; - } else { - if (yych == 'b') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'f') goto basic_json_parser_30; - if (yych == 'n') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 's') { - if (yych <= 'r') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 't') goto basic_json_parser_30; - if (yych <= 'u') goto basic_json_parser_48; - goto basic_json_parser_32; - } - } - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'e') + { + if (yych <= '/') + { + if (yych == '"') + { + goto basic_json_parser_30; + } + if (yych <= '.') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych <= '\\') + { + if (yych <= '[') + { + goto basic_json_parser_32; + } + goto basic_json_parser_30; + } + else + { + if (yych == 'b') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } + } + else + { + if (yych <= 'q') + { + if (yych <= 'f') + { + goto basic_json_parser_30; + } + if (yych == 'n') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 's') + { + if (yych <= 'r') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 't') + { + goto basic_json_parser_30; + } + if (yych <= 'u') + { + goto basic_json_parser_48; + } + goto basic_json_parser_32; + } + } + } basic_json_parser_36: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_30; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; basic_json_parser_37: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x9F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x9F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_38: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_39: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x9F) goto basic_json_parser_36; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x9F) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x8F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x8F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_41: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0xBF) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_42: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 0x7F) goto basic_json_parser_32; - if (yych <= 0x8F) goto basic_json_parser_38; - goto basic_json_parser_32; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0x8F) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_43: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_32; basic_json_parser_44: - yych = *++m_cursor; - if (yych <= ',') { - if (yych == '+') goto basic_json_parser_51; - goto basic_json_parser_32; - } else { - if (yych <= '-') goto basic_json_parser_51; - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_32; - } + yych = *++m_cursor; + if (yych <= ',') + { + if (yych == '+') + { + goto basic_json_parser_51; + } + goto basic_json_parser_32; + } + else + { + if (yych <= '-') + { + goto basic_json_parser_51; + } + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_32; + } basic_json_parser_45: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_54; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_54; + } + goto basic_json_parser_32; basic_json_parser_46: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_55; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_55; + } + goto basic_json_parser_32; basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'u') goto basic_json_parser_56; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'u') + { + goto basic_json_parser_56; + } + goto basic_json_parser_32; basic_json_parser_48: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_57; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_57; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_57; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_57; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_57; + } + goto basic_json_parser_32; + } basic_json_parser_49: - yyaccept = 1; - m_marker = ++m_cursor; - if ((m_limit - m_cursor) < 3) fill_line_buffer(3); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= 'D') { - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_49; - goto basic_json_parser_14; - } else { - if (yych <= 'E') goto basic_json_parser_44; - if (yych == 'e') goto basic_json_parser_44; - goto basic_json_parser_14; - } + yyaccept = 1; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= 'D') + { + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_49; + } + goto basic_json_parser_14; + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_44; + } + if (yych == 'e') + { + goto basic_json_parser_44; + } + goto basic_json_parser_14; + } basic_json_parser_51: - yych = *++m_cursor; - if (yych <= '/') goto basic_json_parser_32; - if (yych >= ':') goto basic_json_parser_32; + yych = *++m_cursor; + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych >= ':') + { + goto basic_json_parser_32; + } basic_json_parser_52: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '/') goto basic_json_parser_14; - if (yych <= '9') goto basic_json_parser_52; - goto basic_json_parser_14; + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '/') + { + goto basic_json_parser_14; + } + if (yych <= '9') + { + goto basic_json_parser_52; + } + goto basic_json_parser_14; basic_json_parser_54: - yych = *++m_cursor; - if (yych == 's') goto basic_json_parser_58; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 's') + { + goto basic_json_parser_58; + } + goto basic_json_parser_32; basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'l') goto basic_json_parser_59; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_59; + } + goto basic_json_parser_32; basic_json_parser_56: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_61; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_61; + } + goto basic_json_parser_32; basic_json_parser_57: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_63; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_63; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_63; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_63; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } basic_json_parser_58: - yych = *++m_cursor; - if (yych == 'e') goto basic_json_parser_64; - goto basic_json_parser_32; + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_64; + } + goto basic_json_parser_32; basic_json_parser_59: - ++m_cursor; - { last_token_type = token_type::literal_null; break; } + ++m_cursor; + { + last_token_type = token_type::literal_null; + break; + } basic_json_parser_61: - ++m_cursor; - { last_token_type = token_type::literal_true; break; } + ++m_cursor; + { + last_token_type = token_type::literal_true; + break; + } basic_json_parser_63: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_66; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_66; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_66; - goto basic_json_parser_32; - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_66; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_66; + } + goto basic_json_parser_32; + } basic_json_parser_64: - ++m_cursor; - { last_token_type = token_type::literal_false; break; } + ++m_cursor; + { + last_token_type = token_type::literal_false; + break; + } basic_json_parser_66: - ++m_cursor; - if (m_limit <= m_cursor) fill_line_buffer(1); // LCOV_EXCL_LINE - yych = *m_cursor; - if (yych <= '@') { - if (yych <= '/') goto basic_json_parser_32; - if (yych <= '9') goto basic_json_parser_30; - goto basic_json_parser_32; - } else { - if (yych <= 'F') goto basic_json_parser_30; - if (yych <= '`') goto basic_json_parser_32; - if (yych <= 'f') goto basic_json_parser_30; - goto basic_json_parser_32; - } - } + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(1); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_30; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_30; + } + goto basic_json_parser_32; + } + } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cb4f3ad1a..94b72eb23 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -187,7 +187,7 @@ struct conjunction<B1, Bn...> template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <typename Json> std::string type_name(const Json& j) +template <typename BasicJsonType> std::string type_name(const BasicJsonType& j) { switch (j.m_type) { @@ -220,8 +220,8 @@ template <value_t> struct external_constructor; template <> struct external_constructor<value_t::boolean> { - template <typename Json> - static void construct(Json& j, typename Json::boolean_t b) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { j.m_type = value_t::boolean; j.m_value = b; @@ -232,8 +232,8 @@ struct external_constructor<value_t::boolean> template <> struct external_constructor<value_t::string> { - template <typename Json> - static void construct(Json& j, const typename Json::string_t& s) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) { j.m_type = value_t::string; j.m_value = s; @@ -244,12 +244,12 @@ struct external_constructor<value_t::string> template <> struct external_constructor<value_t::number_float> { - template <typename Json> - static void construct(Json& j, typename Json::number_float_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept { // replace infinity and NAN by null if (not std::isfinite(val)) - j = Json{}; + j = BasicJsonType{}; else { j.m_type = value_t::number_float; @@ -262,8 +262,8 @@ struct external_constructor<value_t::number_float> template <> struct external_constructor<value_t::number_unsigned> { - template <typename Json> - static void construct(Json& j, typename Json::number_unsigned_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept { j.m_type = value_t::number_unsigned; j.m_value = val; @@ -274,8 +274,8 @@ struct external_constructor<value_t::number_unsigned> template <> struct external_constructor<value_t::number_integer> { - template <typename Json> - static void construct(Json& j, typename Json::number_integer_t val) noexcept + template <typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept { j.m_type = value_t::number_integer; j.m_value = val; @@ -286,25 +286,25 @@ struct external_constructor<value_t::number_integer> template <> struct external_constructor<value_t::array> { - template <typename Json> - static void construct(Json& j, const typename Json::array_t& arr) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) { j.m_type = value_t::array; j.m_value = arr; j.assert_invariant(); } - template <typename Json, typename CompatibleArrayType, + template <typename BasicJsonType, typename CompatibleArrayType, enable_if_t<not std::is_same<CompatibleArrayType, - typename Json::array_t>::value, + typename BasicJsonType::array_t>::value, int> = 0> - static void construct(Json& j, const CompatibleArrayType& arr) + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; using std::end; j.m_type = value_t::array; j.m_value.array = - j.template create<typename Json::array_t>(begin(arr), end(arr)); + j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); j.assert_invariant(); } }; @@ -312,26 +312,26 @@ struct external_constructor<value_t::array> template <> struct external_constructor<value_t::object> { - template <typename Json> - static void construct(Json& j, const typename Json::object_t& obj) + template <typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) { j.m_type = value_t::object; j.m_value = obj; j.assert_invariant(); } - template <typename Json, typename CompatibleObjectType, + template <typename BasicJsonType, typename CompatibleObjectType, enable_if_t<not std::is_same<CompatibleObjectType, - typename Json::object_t>::value, + typename BasicJsonType::object_t>::value, int> = 0> - static void construct(Json& j, const CompatibleObjectType& obj) + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; using std::end; j.m_type = value_t::object; j.m_value.object = - j.template create<typename Json::object_t>(begin(obj), end(obj)); + j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); j.assert_invariant(); } }; @@ -377,27 +377,27 @@ struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> typename CompatibleObjectType::mapped_type>::value; }; -template<class Json, class CompatibleObjectType> +template<class BasicJsonType, class CompatibleObjectType> struct is_compatible_object_type { static auto constexpr value = is_compatible_object_type_impl < conjunction<negation<std::is_same<void, CompatibleObjectType>>, has_mapped_type<CompatibleObjectType>, has_key_type<CompatibleObjectType>>::value, - typename Json::object_t, CompatibleObjectType >::value; + typename BasicJsonType::object_t, CompatibleObjectType >::value; }; -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct is_basic_json_nested_type { - static auto constexpr value = std::is_same<T, typename Json::iterator>::value or - std::is_same<T, typename Json::const_iterator>::value or - std::is_same<T, typename Json::reverse_iterator>::value or - std::is_same<T, typename Json::const_reverse_iterator>::value or - std::is_same<T, typename Json::json_pointer>::value; + static auto constexpr value = std::is_same<T, typename BasicJsonType::iterator>::value or + std::is_same<T, typename BasicJsonType::const_iterator>::value or + std::is_same<T, typename BasicJsonType::reverse_iterator>::value or + std::is_same<T, typename BasicJsonType::const_reverse_iterator>::value or + std::is_same<T, typename BasicJsonType::json_pointer>::value; }; -template <class Json, class CompatibleArrayType> +template <class BasicJsonType, class CompatibleArrayType> struct is_compatible_array_type { // TODO concept Container? @@ -405,10 +405,10 @@ struct is_compatible_array_type static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< - Json, CompatibleArrayType>>, - negation<std::is_constructible<typename Json::string_t, + BasicJsonType, CompatibleArrayType>>, + negation<std::is_constructible<typename BasicJsonType::string_t, CompatibleArrayType>>, - negation<is_basic_json_nested_type<Json, CompatibleArrayType>>, + negation<is_basic_json_nested_type<BasicJsonType, CompatibleArrayType>>, has_value_type<CompatibleArrayType>, has_iterator<CompatibleArrayType>>::value; }; @@ -441,76 +441,76 @@ struct is_compatible_integer_type }; // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct has_from_json { private: // also check the return type of from_json template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( - std::declval<Json>(), std::declval<T&>()))>::value>> + std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype( - detect(std::declval<typename Json::template json_serializer<T, void>>()))>::value; + detect(std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <typename Json, typename T> +template <typename BasicJsonType, typename T> struct has_non_default_from_json { private: template < typename U, typename = enable_if_t<std::is_same< - T, decltype(uncvref_t<U>::from_json(std::declval<Json>()))>::value >> + T, decltype(uncvref_t<U>::from_json(std::declval<BasicJsonType>()))>::value >> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; -// This trait checks if Json::json_serializer<T>::to_json exists -template <typename Json, typename T> +// This trait checks if BasicJsonType::json_serializer<T>::to_json exists +template <typename BasicJsonType, typename T> struct has_to_json { private: template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<Json&>(), std::declval<T>()))> + std::declval<BasicJsonType&>(), std::declval<T>()))> static int detect(U&&); static void detect(...); public: static constexpr bool value = std::is_integral<decltype(detect( - std::declval<typename Json::template json_serializer<T, void>>()))>::value; + std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; // overloads for basic_json template parameters -template <typename Json, typename ArithmeticType, +template <typename BasicJsonType, typename ArithmeticType, enable_if_t<std::is_arithmetic<ArithmeticType>::value and not std::is_same<ArithmeticType, - typename Json::boolean_t>::value, + typename BasicJsonType::boolean_t>::value, int> = 0> -void get_arithmetic_value(const Json& j, ArithmeticType& val) +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_unsigned_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_integer_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_float_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; default: JSON_THROW( @@ -518,136 +518,136 @@ void get_arithmetic_value(const Json& j, ArithmeticType& val) } } -template <typename Json> -void to_json(Json& j, typename Json::boolean_t b) noexcept +template <typename BasicJsonType> +void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { external_constructor<value_t::boolean>::construct(j, b); } -template <typename Json, typename CompatibleString, - enable_if_t<std::is_constructible<typename Json::string_t, +template <typename BasicJsonType, typename CompatibleString, + enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0> -void to_json(Json& j, const CompatibleString& s) +void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); } -template <typename Json, typename FloatType, +template <typename BasicJsonType, typename FloatType, enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> -void to_json(Json& j, FloatType val) noexcept +void to_json(BasicJsonType& j, FloatType val) noexcept { - external_constructor<value_t::number_float>::construct(j, static_cast<typename Json::number_float_t>(val)); + external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val)); } template < - typename Json, typename CompatibleNumberUnsignedType, - enable_if_t<is_compatible_integer_type<typename Json::number_unsigned_t, + typename BasicJsonType, typename CompatibleNumberUnsignedType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0 > -void to_json(Json& j, CompatibleNumberUnsignedType val) noexcept +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept { - external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename Json::number_unsigned_t>(val)); + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val)); } template < - typename Json, typename CompatibleNumberIntegerType, - enable_if_t<is_compatible_integer_type<typename Json::number_integer_t, + typename BasicJsonType, typename CompatibleNumberIntegerType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0 > -void to_json(Json& j, CompatibleNumberIntegerType val) noexcept +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept { - external_constructor<value_t::number_integer>::construct(j, static_cast<typename Json::number_integer_t>(val)); + external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); } -template <typename Json, typename UnscopedEnumType, +template <typename BasicJsonType, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void to_json(Json& j, UnscopedEnumType e) noexcept +void to_json(BasicJsonType& j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); } template < - typename Json, typename CompatibleArrayType, + typename BasicJsonType, typename CompatibleArrayType, enable_if_t < - is_compatible_array_type<Json, CompatibleArrayType>::value or - std::is_same<typename Json::array_t, CompatibleArrayType>::value, + is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value or + std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int > = 0 > -void to_json(Json& j, const CompatibleArrayType& arr) +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) { external_constructor<value_t::array>::construct(j, arr); } template < - typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, + typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0 > -void to_json(Json& j, const CompatibleObjectType& arr) +void to_json(BasicJsonType& j, const CompatibleObjectType& arr) { external_constructor<value_t::object>::construct(j, arr); } -template <typename Json> -void from_json(const Json& j, typename Json::boolean_t& b) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) { JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); } - b = *j.template get_ptr<const typename Json::boolean_t*>(); + b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } -template <typename Json> -void from_json(const Json& j, typename Json::string_t& s) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) { JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); } - s = *j.template get_ptr<const typename Json::string_t*>(); + s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } -template <typename Json> -void from_json(const Json& j, typename Json::number_float_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) { get_arithmetic_value(j, val); } -template <typename Json> -void from_json(const Json& j, typename Json::number_unsigned_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) { get_arithmetic_value(j, val); } -template <typename Json> -void from_json(const Json& j, typename Json::number_integer_t& val) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) { get_arithmetic_value(j, val); } -template <typename Json, typename UnscopedEnumType, +template <typename BasicJsonType, typename UnscopedEnumType, enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const Json& j, UnscopedEnumType& e) +void from_json(const BasicJsonType& j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); e = static_cast<UnscopedEnumType>(val); } -template <typename Json> -void from_json(const Json& j, typename Json::array_t& arr) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - arr = *j.template get_ptr<const typename Json::array_t*>(); + arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } // forward_list doesn't have an insert method, TODO find a way to avoid including forward_list -template <typename Json, typename T, typename Allocator> -void from_json(const Json& j, std::forward_list<T, Allocator>& l) +template <typename BasicJsonType, typename T, typename Allocator> +void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons // (except when it's null.. ?) @@ -655,7 +655,7 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - if (not std::is_same<T, Json>::value) + if (not std::is_same<T, BasicJsonType>::value) { if (!j.is_array()) { @@ -668,23 +668,23 @@ void from_json(const Json& j, std::forward_list<T, Allocator>& l) } } -template <typename Json, typename CompatibleArrayType> -void from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<0>) +template <typename BasicJsonType, typename CompatibleArrayType> +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) { using std::begin; using std::end; std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json + // get<BasicJsonType>() returns *this, this won't call a from_json method when + // value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template <typename Json, typename CompatibleArrayType> -auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag<1>) +template <typename BasicJsonType, typename CompatibleArrayType> +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -694,28 +694,28 @@ auto from_json_array_impl(const Json& j, CompatibleArrayType& arr, priority_tag arr.reserve(j.size()); std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const Json & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<Json>() returns *this, this won't call a from_json method when - // value_type is Json + // get<BasicJsonType>() returns *this, this won't call a from_json method when + // value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } template < - typename Json, typename CompatibleArrayType, - enable_if_t<is_compatible_array_type<Json, CompatibleArrayType>::value and - not std::is_same<typename Json::array_t, + typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and + not std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int> = 0 > -void from_json(const Json& j, CompatibleArrayType& arr) +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); } - // when T == Json, do not check if value_t is correct - if (not std::is_same<typename CompatibleArrayType::value_type, Json>::value) + // when T == BasicJsonType, do not check if value_t is correct + if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { if (!j.is_array()) { @@ -727,17 +727,17 @@ void from_json(const Json& j, CompatibleArrayType& arr) template < - typename Json, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<Json, CompatibleObjectType>::value, + typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0 > -void from_json(const Json& j, CompatibleObjectType& obj) +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); } - auto inner_object = j.template get_ptr<const typename Json::object_t*>(); + auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>(); using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which @@ -750,36 +750,36 @@ void from_json(const Json& j, CompatibleObjectType& obj) // note: Is it really necessary to provide explicit overloads for boolean_t etc.. // in case of a custom BooleanType which is not an arithmetic type? template < - typename Json, typename ArithmeticType, + typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and not std::is_same<ArithmeticType, - typename Json::number_unsigned_t>::value and + typename BasicJsonType::number_unsigned_t>::value and not std::is_same<ArithmeticType, - typename Json::number_integer_t>::value and + typename BasicJsonType::number_integer_t>::value and not std::is_same<ArithmeticType, - typename Json::number_float_t>::value and - not std::is_same<ArithmeticType, typename Json::boolean_t>::value, + typename BasicJsonType::number_float_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, int > = 0 > -void from_json(const Json& j, ArithmeticType& val) +void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_unsigned_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_integer_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::number_float_t*>()); + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; case value_t::boolean: val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename Json::boolean_t*>()); + *j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; default: JSON_THROW( @@ -789,8 +789,8 @@ void from_json(const Json& j, ArithmeticType& val) struct to_json_fn { - template <typename Json, typename T> - auto call(Json& j, T&& val, priority_tag<1>) const + template <typename BasicJsonType, typename T> + auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) -> decltype(to_json(j, std::forward<T>(val)), void()) @@ -798,15 +798,15 @@ struct to_json_fn return to_json(j, std::forward<T>(val)); } - template <typename Json, typename T> - void call(Json&, T&&, priority_tag<0>) const noexcept + template <typename BasicJsonType, typename T> + void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { - static_assert(sizeof(Json) == 0, "to_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); } public: - template <typename Json, typename T> - void operator()(Json& j, T&& val) const + template <typename BasicJsonType, typename T> + void operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) { return call(j, std::forward<T>(val), priority_tag<1> {}); @@ -816,23 +816,23 @@ struct to_json_fn struct from_json_fn { private: - template <typename Json, typename T> - auto call(const Json& j, T& val, priority_tag<1>) const + template <typename BasicJsonType, typename T> + auto call(const BasicJsonType& j, T& val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { return from_json(j, val); } - template <typename Json, typename T> - void call(const Json&, T&, priority_tag<0>) const noexcept + template <typename BasicJsonType, typename T> + void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { - static_assert(sizeof(Json) == 0, "from_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); } public: - template <typename Json, typename T> - void operator()(const Json& j, T& val) const + template <typename BasicJsonType, typename T> + void operator()(const BasicJsonType& j, T& val) const noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) { return call(j, val, priority_tag<1> {}); @@ -881,14 +881,14 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va template <typename = void, typename = void> struct adl_serializer { - template <typename Json, typename T> - static void from_json(Json&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<Json>(j), val))) + template <typename BasicJsonType, typename T> + static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { - ::nlohmann::from_json(std::forward<Json>(j), val); + ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template <typename Json, typename T> - static void to_json(Json& j, T&& val) noexcept( + template <typename BasicJsonType, typename T> + static void to_json(BasicJsonType& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { ::nlohmann::to_json(j, std::forward<T>(val)); @@ -989,7 +989,7 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename Json> friend std::string detail::type_name(const Json&); + template <typename BasicJsonType> friend std::string detail::type_name(const BasicJsonType&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 35f864406..7c297190c 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -84,20 +84,20 @@ struct contact_book namespace udt { // templates because of the custom_json tests (see below) -template <typename Json> -void to_json(Json& j, age a) +template <typename BasicJsonType> +void to_json(BasicJsonType& j, age a) { j = a.m_val; } -template <typename Json> -void to_json(Json& j, const name& n) +template <typename BasicJsonType> +void to_json(BasicJsonType& j, const name& n) { j = n.m_val; } -template <typename Json> -void to_json(Json& j, country c) +template <typename BasicJsonType> +void to_json(BasicJsonType& j, country c) { switch (c) { @@ -113,10 +113,10 @@ void to_json(Json& j, country c) } } -template <typename Json> -void to_json(Json& j, const person& p) +template <typename BasicJsonType> +void to_json(BasicJsonType& j, const person& p) { - j = Json{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; + j = BasicJsonType{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; } void to_json(nlohmann::json& j, const address& a) @@ -171,20 +171,20 @@ bool operator==(const contact_book& lhs, const contact_book& rhs) // from_json methods namespace udt { -template <typename Json> -void from_json(const Json& j, age& a) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, age& a) { a.m_val = j.template get<int>(); } -template <typename Json> -void from_json(const Json& j, name& n) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, name& n) { n.m_val = j.template get<std::string>(); } -template <typename Json> -void from_json(const Json& j, country& c) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, country& c) { const auto str = j.template get<std::string>(); static const std::map<std::string, country> m = @@ -199,8 +199,8 @@ void from_json(const Json& j, country& c) c = it->second; } -template <typename Json> -void from_json(const Json& j, person& p) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, person& p) { p.m_age = j["age"].template get<age>(); p.m_name = j["name"].template get<name>(); @@ -493,20 +493,20 @@ struct pod_serializer { // use adl for non-pods, or scalar types template < - typename Json, typename U = T, + typename BasicJsonType, typename U = T, typename std::enable_if < not(std::is_pod<U>::value and std::is_class<U>::value), int >::type = 0 > - static void from_json(const Json& j, U& t) + static void from_json(const BasicJsonType& j, U& t) { using nlohmann::from_json; from_json(j, t); } // special behaviour for pods - template <typename Json, typename U = T, + template <typename BasicJsonType, typename U = T, typename std::enable_if< std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void from_json(const Json& j, U& t) + static void from_json(const BasicJsonType& j, U& t) { std::uint64_t value; // TODO The following block is no longer relevant in this serializer, make another one that shows the issue @@ -529,19 +529,19 @@ struct pod_serializer } template < - typename Json, typename U = T, + typename BasicJsonType, typename U = T, typename std::enable_if < not(std::is_pod<U>::value and std::is_class<U>::value), int >::type = 0 > - static void to_json(Json& j, const T& t) + static void to_json(BasicJsonType& j, const T& t) { using nlohmann::to_json; to_json(j, t); } - template <typename Json, typename U = T, + template <typename BasicJsonType, typename U = T, typename std::enable_if< std::is_pod<U>::value and std::is_class<U>::value, int>::type = 0> - static void to_json(Json& j, const T& t) noexcept + static void to_json(BasicJsonType& j, const T& t) noexcept { auto bytes = static_cast< const unsigned char*>(static_cast<const void*>(&t)); std::uint64_t value = bytes[0]; @@ -565,14 +565,14 @@ struct non_pod std::string s; }; -template <typename Json> -void to_json(Json& j, const non_pod& np) +template <typename BasicJsonType> +void to_json(BasicJsonType& j, const non_pod& np) { j = np.s; } -template <typename Json> -void from_json(const Json& j, non_pod& np) +template <typename BasicJsonType> +void from_json(const BasicJsonType& j, non_pod& np) { np.s = j.template get<std::string>(); } From 40ba5a8b7b4dffce2a24e43a4a108a04756dbfc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 16:45:08 +0100 Subject: [PATCH 120/174] remove inline keyword from anonymous namespace (not needed) --- src/json.hpp | 2 +- src/json.hpp.re2c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2524a694e..8e2cfed0b 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -870,7 +870,7 @@ struct DecimalSeparator : std::numpunct<char> }; } -inline namespace +namespace { constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 94b72eb23..4fcdb23f8 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -870,7 +870,7 @@ struct DecimalSeparator : std::numpunct<char> }; } -inline namespace +namespace { constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; From f997758cad75c901262fc174481d622f5ff5a070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 16:47:41 +0100 Subject: [PATCH 121/174] remove useless forward declaration of primitive_iterator_t --- src/json.hpp | 1 - src/json.hpp.re2c | 1 - 2 files changed, 2 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 8e2cfed0b..daa4e21b4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -994,7 +994,6 @@ class basic_json using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer>; - class primitive_iterator_t; public: using value_t = ::nlohmann::value_t; diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 4fcdb23f8..924a4ca1f 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -994,7 +994,6 @@ class basic_json using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer>; - class primitive_iterator_t; public: using value_t = ::nlohmann::value_t; From 7d771c71ed3558e5affabe1c0ceb193fafbb431c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 17:09:41 +0100 Subject: [PATCH 122/174] put back type_name in basic_json This can however not be done easily for value_t, since external_constructor depends on it, as is operator< which was moved outside basic_json too. This is not really an issue, since all basic_json classes share the same enum --- src/json.hpp | 63 ++++++++++++++++++++++------------------------- src/json.hpp.re2c | 63 ++++++++++++++++++++++------------------------- 2 files changed, 60 insertions(+), 66 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index daa4e21b4..124a794f2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -187,27 +187,6 @@ struct conjunction<B1, Bn...> template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <typename BasicJsonType> std::string type_name(const BasicJsonType& j) -{ - switch (j.m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } -} - // dispatch utility (taken from ranges-v3) template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; @@ -514,7 +493,7 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) break; default: JSON_THROW( - std::domain_error("type must be number, but is " + type_name(j))); + std::domain_error("type must be number, but is " + j.type_name())); } } @@ -593,7 +572,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) { - JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be boolean, but is " + j.type_name())); } b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } @@ -603,7 +582,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) { - JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be string, but is " + j.type_name())); } s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } @@ -640,7 +619,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } @@ -653,13 +632,13 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) // (except when it's null.. ?) if (j.is_null()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } if (not std::is_same<T, BasicJsonType>::value) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } } for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) @@ -712,14 +691,14 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } } from_json_array_impl(j, arr, priority_tag<1> {}); @@ -734,7 +713,7 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { - JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be object, but is " + j.type_name())); } auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>(); @@ -783,7 +762,7 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) break; default: JSON_THROW( - std::domain_error("type must be number, but is " + type_name(j))); + std::domain_error("type must be number, but is " + j.type_name())); } } @@ -989,7 +968,6 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename BasicJsonType> friend std::string detail::type_name(const BasicJsonType&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -7914,7 +7892,26 @@ class basic_json */ std::string type_name() const { - return detail::type_name(*this); + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } + } + } private: diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 924a4ca1f..7ba1cc855 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -187,27 +187,6 @@ struct conjunction<B1, Bn...> template <class B> struct negation : std::integral_constant < bool, !B::value > {}; -template <typename BasicJsonType> std::string type_name(const BasicJsonType& j) -{ - switch (j.m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } -} - // dispatch utility (taken from ranges-v3) template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; @@ -514,7 +493,7 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) break; default: JSON_THROW( - std::domain_error("type must be number, but is " + type_name(j))); + std::domain_error("type must be number, but is " + j.type_name())); } } @@ -593,7 +572,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) { - JSON_THROW(std::domain_error("type must be boolean, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be boolean, but is " + j.type_name())); } b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } @@ -603,7 +582,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) { - JSON_THROW(std::domain_error("type must be string, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be string, but is " + j.type_name())); } s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } @@ -640,7 +619,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } @@ -653,13 +632,13 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) // (except when it's null.. ?) if (j.is_null()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } if (not std::is_same<T, BasicJsonType>::value) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } } for (auto it = j.rbegin(), end = j.rend(); it != end; ++it) @@ -712,14 +691,14 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { if (!j.is_array()) { - JSON_THROW(std::domain_error("type must be array, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } } from_json_array_impl(j, arr, priority_tag<1> {}); @@ -734,7 +713,7 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { - JSON_THROW(std::domain_error("type must be object, but is " + type_name(j))); + JSON_THROW(std::domain_error("type must be object, but is " + j.type_name())); } auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>(); @@ -783,7 +762,7 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) break; default: JSON_THROW( - std::domain_error("type must be number, but is " + type_name(j))); + std::domain_error("type must be number, but is " + j.type_name())); } } @@ -989,7 +968,6 @@ class basic_json { private: template <::nlohmann::value_t> friend struct detail::external_constructor; - template <typename BasicJsonType> friend std::string detail::type_name(const BasicJsonType&); /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -7914,7 +7892,26 @@ class basic_json */ std::string type_name() const { - return detail::type_name(*this); + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } + } + } private: From 37fd20b2eb6a03c0b1681db19283d4d770c9a1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 17:17:13 +0100 Subject: [PATCH 123/174] put uncvref_t, enable_if_t, value_t and operator<(value_t) in detail --- src/json.hpp | 127 +++++++++++++++++++++++----------------------- src/json.hpp.re2c | 127 +++++++++++++++++++++++----------------------- 2 files changed, 126 insertions(+), 128 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 124a794f2..c40691a50 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -107,7 +107,14 @@ SOFTWARE. */ namespace nlohmann { +// TODO update this doc +/*! +@brief unnamed namespace with internal helper functions +@since version 1.0.0 +*/ +namespace detail +{ /////////////////////////// // JSON type enumeration // /////////////////////////// @@ -147,6 +154,45 @@ enum class value_t : uint8_t discarded ///< discarded by the the parser callback function }; +////////////////////////////////////////// +// lexicographical comparison operators // +////////////////////////////////////////// + +/// @name lexicographical comparison operators +/// @{ +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + } + }; + + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } + + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; +} + // alias templates to reduce boilerplate template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; @@ -160,14 +206,6 @@ using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; -// TODO update this doc -/*! -@brief unnamed namespace with internal helper functions -@since version 1.0.0 -*/ - -namespace detail -{ // Implementation of 2 C++17 constructs: conjunction, negation. // This is needed to avoid evaluating all the traits in a condition // @@ -967,14 +1005,14 @@ template < class basic_json { private: - template <::nlohmann::value_t> friend struct detail::external_constructor; + template <detail::value_t> friend struct detail::external_constructor; /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer>; public: - using value_t = ::nlohmann::value_t; + using value_t = detail::value_t; // forward declarations template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; @@ -1866,13 +1904,13 @@ class basic_json @since version 2.1.0 */ - template <typename T, typename U = uncvref_t<T>, - enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> + template <typename T, typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( std::declval<basic_json_t&>(), std::forward<T>(val)))) { @@ -3036,7 +3074,7 @@ class basic_json @since version 2.1.0 */ template <typename T, - enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + detail::enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const { return *this; @@ -3059,8 +3097,8 @@ class basic_json */ template < typename T, - typename U = uncvref_t<T>, - enable_if_t < + typename U = detail::uncvref_t<T>, + detail::enable_if_t < not std::is_same<basic_json_t, U>::value and detail::has_from_json<basic_json_t, U>::value and not detail::has_non_default_from_json<basic_json_t, @@ -3099,11 +3137,11 @@ class basic_json */ template < typename T, - enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, - int> = 0 > - uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + detail::enable_if_t<not std::is_same<basic_json_t, detail::uncvref_t<T>>::value and + detail::has_non_default_from_json<basic_json_t, + detail::uncvref_t<T>>::value, + int> = 0 > + detail::uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { return JSONSerializer<T>::from_json(*this); } @@ -12401,45 +12439,6 @@ basic_json_parser_66: /// @} }; -////////////////////////////////////////// -// lexicographical comparison operators // -////////////////////////////////////////// - -/// @name lexicographical comparison operators -/// @{ -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - } - }; - - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } - - return order[static_cast<std::size_t>(lhs)] < - order[static_cast<std::size_t>(rhs)]; -} - ///////////// // presets // ///////////// diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 7ba1cc855..e3fee848b 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -107,7 +107,14 @@ SOFTWARE. */ namespace nlohmann { +// TODO update this doc +/*! +@brief unnamed namespace with internal helper functions +@since version 1.0.0 +*/ +namespace detail +{ /////////////////////////// // JSON type enumeration // /////////////////////////// @@ -147,6 +154,45 @@ enum class value_t : uint8_t discarded ///< discarded by the the parser callback function }; +////////////////////////////////////////// +// lexicographical comparison operators // +////////////////////////////////////////// + +/// @name lexicographical comparison operators +/// @{ +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array<uint8_t, 8> order = {{ + 0, // null + 3, // object + 4, // array + 5, // string + 1, // boolean + 2, // integer + 2, // unsigned + 2, // float + } + }; + + // discarded values are not comparable + if (lhs == value_t::discarded or rhs == value_t::discarded) + { + return false; + } + + return order[static_cast<std::size_t>(lhs)] < + order[static_cast<std::size_t>(rhs)]; +} + // alias templates to reduce boilerplate template <bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; @@ -160,14 +206,6 @@ using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; -// TODO update this doc -/*! -@brief unnamed namespace with internal helper functions -@since version 1.0.0 -*/ - -namespace detail -{ // Implementation of 2 C++17 constructs: conjunction, negation. // This is needed to avoid evaluating all the traits in a condition // @@ -967,14 +1005,14 @@ template < class basic_json { private: - template <::nlohmann::value_t> friend struct detail::external_constructor; + template <detail::value_t> friend struct detail::external_constructor; /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer>; public: - using value_t = ::nlohmann::value_t; + using value_t = detail::value_t; // forward declarations template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; @@ -1866,13 +1904,13 @@ class basic_json @since version 2.1.0 */ - template <typename T, typename U = uncvref_t<T>, - enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> + template <typename T, typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( std::declval<basic_json_t&>(), std::forward<T>(val)))) { @@ -3036,7 +3074,7 @@ class basic_json @since version 2.1.0 */ template <typename T, - enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + detail::enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> basic_json get() const { return *this; @@ -3059,8 +3097,8 @@ class basic_json */ template < typename T, - typename U = uncvref_t<T>, - enable_if_t < + typename U = detail::uncvref_t<T>, + detail::enable_if_t < not std::is_same<basic_json_t, U>::value and detail::has_from_json<basic_json_t, U>::value and not detail::has_non_default_from_json<basic_json_t, @@ -3099,11 +3137,11 @@ class basic_json */ template < typename T, - enable_if_t<not std::is_same<basic_json_t, uncvref_t<T>>::value and - detail::has_non_default_from_json<basic_json_t, - uncvref_t<T>>::value, - int> = 0 > - uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + detail::enable_if_t<not std::is_same<basic_json_t, detail::uncvref_t<T>>::value and + detail::has_non_default_from_json<basic_json_t, + detail::uncvref_t<T>>::value, + int> = 0 > + detail::uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { return JSONSerializer<T>::from_json(*this); } @@ -11551,45 +11589,6 @@ class basic_json /// @} }; -////////////////////////////////////////// -// lexicographical comparison operators // -////////////////////////////////////////// - -/// @name lexicographical comparison operators -/// @{ -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array<uint8_t, 8> order = {{ - 0, // null - 3, // object - 4, // array - 5, // string - 1, // boolean - 2, // integer - 2, // unsigned - 2, // float - } - }; - - // discarded values are not comparable - if (lhs == value_t::discarded or rhs == value_t::discarded) - { - return false; - } - - return order[static_cast<std::size_t>(lhs)] < - order[static_cast<std::size_t>(rhs)]; -} - ///////////// // presets // ///////////// From ba0b35f414af97aba682cd4d29c405f358a53cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 17:20:32 +0100 Subject: [PATCH 124/174] use typename U = uncvref_t where appropriate --- src/json.hpp | 18 +++++++++--------- src/json.hpp.re2c | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index c40691a50..d238a28f3 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3107,14 +3107,13 @@ class basic_json // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such - auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t&>(), std::declval<U&>()))) - -> U + U get() const noexcept(noexcept(JSONSerializer<U>::from_json( + std::declval<const basic_json_t&>(), std::declval<U&>()))) { static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); + std::is_copy_constructible<U>::value, + "Types must be DefaultConstructible and " + "CopyConstructible when used with get"); U ret; JSONSerializer<U>::from_json(*this, ret); return ret; @@ -3137,11 +3136,12 @@ class basic_json */ template < typename T, - detail::enable_if_t<not std::is_same<basic_json_t, detail::uncvref_t<T>>::value and + typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_same<basic_json_t, U>::value and detail::has_non_default_from_json<basic_json_t, - detail::uncvref_t<T>>::value, + U>::value, int> = 0 > - detail::uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { return JSONSerializer<T>::from_json(*this); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index e3fee848b..9510cddca 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3107,14 +3107,13 @@ class basic_json // do we really want the uncvref ? if a user call get<int &>, shouldn't we // static assert ? // i know there is a special behaviour for boolean_t* and such - auto get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t&>(), std::declval<U&>()))) - -> U + U get() const noexcept(noexcept(JSONSerializer<U>::from_json( + std::declval<const basic_json_t&>(), std::declval<U&>()))) { static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); + std::is_copy_constructible<U>::value, + "Types must be DefaultConstructible and " + "CopyConstructible when used with get"); U ret; JSONSerializer<U>::from_json(*this, ret); return ret; @@ -3137,11 +3136,12 @@ class basic_json */ template < typename T, - detail::enable_if_t<not std::is_same<basic_json_t, detail::uncvref_t<T>>::value and + typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_same<basic_json_t, U>::value and detail::has_non_default_from_json<basic_json_t, - detail::uncvref_t<T>>::value, + U>::value, int> = 0 > - detail::uncvref_t<T> get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { return JSONSerializer<T>::from_json(*this); } From 9c6ef74a28a2bbad33f84a5370227e77c9eb6c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sat, 21 Jan 2017 17:56:59 +0100 Subject: [PATCH 125/174] add static_asserts/remove the need for CopyConstructible in get --- src/json.hpp | 22 +++++++++++++--------- src/json.hpp.re2c | 20 +++++++++++--------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index d238a28f3..f7101d142 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3073,8 +3073,11 @@ class basic_json @since version 2.1.0 */ - template <typename T, - detail::enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + template < + typename T, + detail::enable_if_t<std::is_same<typename std::remove_const<T>::type, + basic_json_t>::value, + int> = 0 > basic_json get() const { return *this; @@ -3104,16 +3107,15 @@ class basic_json not detail::has_non_default_from_json<basic_json_t, U>::value, int > = 0 > - // do we really want the uncvref ? if a user call get<int &>, shouldn't we - // static assert ? - // i know there is a special behaviour for boolean_t* and such U get() const noexcept(noexcept(JSONSerializer<U>::from_json( std::declval<const basic_json_t&>(), std::declval<U&>()))) { - static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); + // we cannot static_assert on T being non-const, because there is support + // for get<const basic_json_t>(), which is why we still need the uncvref + static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); + static_assert(not std::is_pointer<T>::value, "get cannot be used with pointer types, you might want to use get_ptr"); + static_assert(std::is_default_constructible<U>::value, + "Types must be DefaultConstructible when used with get"); U ret; JSONSerializer<U>::from_json(*this, ret); return ret; @@ -3143,6 +3145,8 @@ class basic_json int> = 0 > U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { + static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); + static_assert(not std::is_pointer<T>::value, "get cannot be used with pointer types, you might want to use get_ptr"); return JSONSerializer<T>::from_json(*this); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 9510cddca..65860c4d7 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3073,8 +3073,11 @@ class basic_json @since version 2.1.0 */ - template <typename T, - detail::enable_if_t<std::is_same<T, basic_json_t>::value, int> = 0> + template < + typename T, + detail::enable_if_t<std::is_same<typename std::remove_const<T>::type, + basic_json_t>::value, + int> = 0 > basic_json get() const { return *this; @@ -3104,16 +3107,14 @@ class basic_json not detail::has_non_default_from_json<basic_json_t, U>::value, int > = 0 > - // do we really want the uncvref ? if a user call get<int &>, shouldn't we - // static assert ? - // i know there is a special behaviour for boolean_t* and such U get() const noexcept(noexcept(JSONSerializer<U>::from_json( std::declval<const basic_json_t&>(), std::declval<U&>()))) { - static_assert(std::is_default_constructible<U>::value and - std::is_copy_constructible<U>::value, - "Types must be DefaultConstructible and " - "CopyConstructible when used with get"); + // we cannot static_assert on T being non-const, because there is support + // for get<const basic_json_t>(), which is why we still need the uncvref + static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); + static_assert(std::is_default_constructible<U>::value, + "Types must be DefaultConstructible when used with get"); U ret; JSONSerializer<U>::from_json(*this, ret); return ret; @@ -3143,6 +3144,7 @@ class basic_json int> = 0 > U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { + static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); return JSONSerializer<T>::from_json(*this); } From 9f8b270ed91808b621e26cab9c6c1dfa81459317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 22 Jan 2017 14:07:28 +0100 Subject: [PATCH 126/174] fix some warnings --- src/json.hpp | 4 +--- src/json.hpp.re2c | 2 +- test/src/unit-udt.cpp | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index f7101d142..7f17a5554 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -372,7 +372,7 @@ contains a `mapped_type`, whereas `std::vector` fails the test. public: \ static constexpr bool value = \ std::is_integral<decltype(detect(std::declval<T>()))>::value; \ - }; + } NLOHMANN_JSON_HAS_HELPER(mapped_type); NLOHMANN_JSON_HAS_HELPER(key_type); @@ -3113,7 +3113,6 @@ class basic_json // we cannot static_assert on T being non-const, because there is support // for get<const basic_json_t>(), which is why we still need the uncvref static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - static_assert(not std::is_pointer<T>::value, "get cannot be used with pointer types, you might want to use get_ptr"); static_assert(std::is_default_constructible<U>::value, "Types must be DefaultConstructible when used with get"); U ret; @@ -3146,7 +3145,6 @@ class basic_json U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - static_assert(not std::is_pointer<T>::value, "get cannot be used with pointer types, you might want to use get_ptr"); return JSONSerializer<T>::from_json(*this); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 65860c4d7..8c670c909 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -372,7 +372,7 @@ contains a `mapped_type`, whereas `std::vector` fails the test. public: \ static constexpr bool value = \ std::is_integral<decltype(detect(std::declval<T>()))>::value; \ - }; + } NLOHMANN_JSON_HAS_HELPER(mapped_type); NLOHMANN_JSON_HAS_HELPER(key_type); diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 7c297190c..98a60c34d 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -348,7 +348,7 @@ TEST_CASE("adl_serializer specialization", "[udt]") json j = optPerson; CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}}); + optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); j = optPerson; CHECK_FALSE(j.is_null()); @@ -357,7 +357,7 @@ TEST_CASE("adl_serializer specialization", "[udt]") SECTION("from_json") { - auto person = udt::person{{42}, {"John Doe"}}; + auto person = udt::person{{42}, {"John Doe"}, udt::country::russia}; json j = person; auto optPerson = j.get<std::shared_ptr<udt::person>>(); From 9f103d19d7a2df9f88f6d4749adc9071e2e6ad1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo@tanker.io> Date: Sun, 22 Jan 2017 14:23:24 +0100 Subject: [PATCH 127/174] add implicit conversions test (operator T()) --- test/src/unit-udt.cpp | 67 +++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 98a60c34d..07f85b378 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -261,26 +261,55 @@ TEST_CASE("basic usage", "[udt]") { const auto big_json = u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; - const auto parsed_book = big_json.get<udt::contact_book>(); - const auto book_name = big_json["name"].get<udt::name>(); - const auto contacts = big_json["contacts"].get<std::vector<udt::contact>>(); - const auto contact_json = big_json["contacts"].at(0); - const auto contact = contact_json.get<udt::contact>(); - const auto person = contact_json["person"].get<udt::person>(); - const auto address = contact_json["address"].get<udt::address>(); - const auto age = contact_json["person"]["age"].get<udt::age>(); - const auto country = contact_json["person"]["country"].get<udt::country>(); - const auto name = contact_json["person"]["name"].get<udt::name>(); + SECTION("via explicit calls to get") + { + const auto parsed_book = big_json.get<udt::contact_book>(); + const auto book_name = big_json["name"].get<udt::name>(); + const auto contacts = + big_json["contacts"].get<std::vector<udt::contact>>(); + const auto contact_json = big_json["contacts"].at(0); + const auto contact = contact_json.get<udt::contact>(); + const auto person = contact_json["person"].get<udt::person>(); + const auto address = contact_json["address"].get<udt::address>(); + const auto age = contact_json["person"]["age"].get<udt::age>(); + const auto country = + contact_json["person"]["country"].get<udt::country>(); + const auto name = contact_json["person"]["name"].get<udt::name>(); - CHECK(age == a); - CHECK(name == n); - CHECK(country == c); - CHECK(address == addr); - CHECK(person == sfinae_addict); - CHECK(contact == cpp_programmer); - CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); - CHECK(book == parsed_book); + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } + + SECTION("implicit conversions") + { + const udt::contact_book parsed_book = big_json; + const udt::name book_name = big_json["name"]; + const std::vector<udt::contact> contacts = big_json["contacts"]; + const auto contact_json = big_json["contacts"].at(0); + const udt::contact contact = contact_json; + const udt::person person = contact_json["person"]; + const udt::address address = contact_json["address"]; + const udt::age age = contact_json["person"]["age"]; + const udt::country country = contact_json["person"]["country"]; + const udt::name name = contact_json["person"]["name"]; + + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } } } From 3857e55290fa735a5910b678be2f7186d3ff97c9 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 12:43:43 +0100 Subject: [PATCH 128/174] :lipstick: ran "make pretty" --- test/src/unit-udt.cpp | 80 +++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 07f85b378..4231e6870 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -263,52 +263,52 @@ TEST_CASE("basic usage", "[udt]") u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; SECTION("via explicit calls to get") { - const auto parsed_book = big_json.get<udt::contact_book>(); - const auto book_name = big_json["name"].get<udt::name>(); - const auto contacts = - big_json["contacts"].get<std::vector<udt::contact>>(); - const auto contact_json = big_json["contacts"].at(0); - const auto contact = contact_json.get<udt::contact>(); - const auto person = contact_json["person"].get<udt::person>(); - const auto address = contact_json["address"].get<udt::address>(); - const auto age = contact_json["person"]["age"].get<udt::age>(); - const auto country = - contact_json["person"]["country"].get<udt::country>(); - const auto name = contact_json["person"]["name"].get<udt::name>(); + const auto parsed_book = big_json.get<udt::contact_book>(); + const auto book_name = big_json["name"].get<udt::name>(); + const auto contacts = + big_json["contacts"].get<std::vector<udt::contact>>(); + const auto contact_json = big_json["contacts"].at(0); + const auto contact = contact_json.get<udt::contact>(); + const auto person = contact_json["person"].get<udt::person>(); + const auto address = contact_json["address"].get<udt::address>(); + const auto age = contact_json["person"]["age"].get<udt::age>(); + const auto country = + contact_json["person"]["country"].get<udt::country>(); + const auto name = contact_json["person"]["name"].get<udt::name>(); - CHECK(age == a); - CHECK(name == n); - CHECK(country == c); - CHECK(address == addr); - CHECK(person == sfinae_addict); - CHECK(contact == cpp_programmer); - CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); - CHECK(book == parsed_book); + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); } SECTION("implicit conversions") { - const udt::contact_book parsed_book = big_json; - const udt::name book_name = big_json["name"]; - const std::vector<udt::contact> contacts = big_json["contacts"]; - const auto contact_json = big_json["contacts"].at(0); - const udt::contact contact = contact_json; - const udt::person person = contact_json["person"]; - const udt::address address = contact_json["address"]; - const udt::age age = contact_json["person"]["age"]; - const udt::country country = contact_json["person"]["country"]; - const udt::name name = contact_json["person"]["name"]; + const udt::contact_book parsed_book = big_json; + const udt::name book_name = big_json["name"]; + const std::vector<udt::contact> contacts = big_json["contacts"]; + const auto contact_json = big_json["contacts"].at(0); + const udt::contact contact = contact_json; + const udt::person person = contact_json["person"]; + const udt::address address = contact_json["address"]; + const udt::age age = contact_json["person"]["age"]; + const udt::country country = contact_json["person"]["country"]; + const udt::name name = contact_json["person"]["name"]; - CHECK(age == a); - CHECK(name == n); - CHECK(country == c); - CHECK(address == addr); - CHECK(person == sfinae_addict); - CHECK(contact == cpp_programmer); - CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); - CHECK(book == parsed_book); + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); } } } From 030cf674ef93992a789e513be82908af56e3005e Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 12:49:38 +0100 Subject: [PATCH 129/174] :construction: fixed a warning --- test/src/unit-udt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 4231e6870..241336f39 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -668,7 +668,7 @@ TEST_CASE("custom serializer that does adl by default", "[udt]") { using json = nlohmann::json; - auto me = udt::person{23, "theo", udt::country::france}; + auto me = udt::person{{23}, {"theo"}, udt::country::france}; json j = me; custom_json cj = me; From 250e5bf43d58eabe17b970ae15b8c37218b628b4 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 13:47:33 +0100 Subject: [PATCH 130/174] :lipstick: overworked documentation and indentation --- src/json.hpp | 461 ++++++++++++++++++++++++---------------------- src/json.hpp.re2c | 461 ++++++++++++++++++++++++---------------------- 2 files changed, 486 insertions(+), 436 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 7f17a5554..5987b3853 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -107,12 +107,15 @@ SOFTWARE. */ namespace nlohmann { -// TODO update this doc + /*! @brief unnamed namespace with internal helper functions -@since version 1.0.0 -*/ +This namespace collects some functions that could not be defined inside the +@ref basic_json class. + +@since version 2.1.0 +*/ namespace detail { /////////////////////////// @@ -122,22 +125,24 @@ namespace detail /*! @brief the JSON type enumeration -This enumeration collects the different JSON types. It is internally used -to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref -basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref -basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and -@ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and @ref basic_json::is_structured() rely on it. -@note There are three enumeration entries (number_integer, -number_unsigned, and number_float), because the library distinguishes -these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned -integers, @ref basic_json::number_integer_t is used for signed integers, and @ref -basic_json::number_float_t is used for floating-point numbers or to approximate -integers which do not fit in the limits of their respective type. +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with -the default value for a given type +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type @since version 1.0.0 */ @@ -154,12 +159,6 @@ enum class value_t : uint8_t discarded ///< discarded by the the parser callback function }; -////////////////////////////////////////// -// lexicographical comparison operators // -////////////////////////////////////////// - -/// @name lexicographical comparison operators -/// @{ /*! @brief comparison operator for JSON types @@ -193,51 +192,62 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept order[static_cast<std::size_t>(rhs)]; } + +///////////// +// helpers // +///////////// + // alias templates to reduce boilerplate -template <bool B, typename T = void> +template<bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; -template <typename T> +template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; // Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait -template <typename T> +template<typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; -// Implementation of 2 C++17 constructs: conjunction, negation. -// This is needed to avoid evaluating all the traits in a condition -// -// For example: not std::is_same<void, T>::value and has_value_type<T>::value -// will not compile when T = void (on MSVC at least) -// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value -// will stop evaluating if negation<...>::value == false -// -// Please note that those constructs must be used with caution, since symbols can -// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) -// Only use it when you have too (see example ahead) -template <class...> struct conjunction : std::true_type {}; -template <class B1> struct conjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct conjunction<B1, Bn...> -: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; +/* +Implementation of 2 C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition -template <class B> struct negation : std::integral_constant < bool, !B::value > {}; +For example: not std::is_same<void, T>::value and has_value_type<T>::value +will not compile when T = void (on MSVC at least). Whereas +conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template<class...> struct conjunction : std::true_type {}; +template<class B1> struct conjunction<B1> : B1 {}; +template<class B1, class... Bn> +struct conjunction<B1, Bn...> : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; + +template<class B> struct negation : std::integral_constant < bool, !B::value > {}; // dispatch utility (taken from ranges-v3) -template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; +template<unsigned N> struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; -template <> struct priority_tag<0> {}; + +////////////////// +// constructors // +////////////////// // This is an experiment. I need this to move constructors out of basic_json. -// I'm sure there is a better way, but this might need a big basic_json refactoring -template <value_t> struct external_constructor; +// I'm sure there is a better way, but this might need a big basic_json +// refactoring +template<value_t> struct external_constructor; -template <> +template<> struct external_constructor<value_t::boolean> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { j.m_type = value_t::boolean; @@ -246,10 +256,10 @@ struct external_constructor<value_t::boolean> } }; -template <> +template<> struct external_constructor<value_t::string> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) { j.m_type = value_t::string; @@ -258,15 +268,17 @@ struct external_constructor<value_t::string> } }; -template <> +template<> struct external_constructor<value_t::number_float> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept { // replace infinity and NAN by null if (not std::isfinite(val)) + { j = BasicJsonType{}; + } else { j.m_type = value_t::number_float; @@ -276,10 +288,10 @@ struct external_constructor<value_t::number_float> } }; -template <> +template<> struct external_constructor<value_t::number_unsigned> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept { j.m_type = value_t::number_unsigned; @@ -288,10 +300,10 @@ struct external_constructor<value_t::number_unsigned> } }; -template <> +template<> struct external_constructor<value_t::number_integer> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept { j.m_type = value_t::number_integer; @@ -300,10 +312,10 @@ struct external_constructor<value_t::number_integer> } }; -template <> +template<> struct external_constructor<value_t::array> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) { j.m_type = value_t::array; @@ -311,25 +323,24 @@ struct external_constructor<value_t::array> j.assert_invariant(); } - template <typename BasicJsonType, typename CompatibleArrayType, - enable_if_t<not std::is_same<CompatibleArrayType, - typename BasicJsonType::array_t>::value, - int> = 0> + template<typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename BasicJsonType::array_t>::value, + int> = 0> static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; using std::end; j.m_type = value_t::array; - j.m_value.array = - j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); + j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); j.assert_invariant(); } }; -template <> +template<> struct external_constructor<value_t::object> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) { j.m_type = value_t::object; @@ -337,22 +348,26 @@ struct external_constructor<value_t::object> j.assert_invariant(); } - template <typename BasicJsonType, typename CompatibleObjectType, - enable_if_t<not std::is_same<CompatibleObjectType, - typename BasicJsonType::object_t>::value, - int> = 0> + template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename BasicJsonType::object_t>::value, + int> = 0> static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; using std::end; j.m_type = value_t::object; - j.m_value.object = - j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); + j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); j.assert_invariant(); } }; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + /*! @brief Helper to determine whether there's a key_type for T. @@ -364,9 +379,9 @@ contains a `mapped_type`, whereas `std::vector` fails the test. @since version 1.0.0, overworked in version 2.0.6 */ #define NLOHMANN_JSON_HAS_HELPER(type) \ - template <typename T> struct has_##type { \ + template<typename T> struct has_##type { \ private: \ - template <typename U, typename = typename U::type> \ + template<typename U, typename = typename U::type> \ static int detect(U &&); \ static void detect(...); \ public: \ @@ -381,10 +396,10 @@ NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER -template <bool B, class RealType, class CompatibleObjectType> +template<bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type {}; -template <class RealType, class CompatibleObjectType> +template<class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> { static constexpr auto value = @@ -404,7 +419,7 @@ struct is_compatible_object_type typename BasicJsonType::object_t, CompatibleObjectType >::value; }; -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct is_basic_json_nested_type { static auto constexpr value = std::is_same<T, typename BasicJsonType::iterator>::value or @@ -414,11 +429,9 @@ struct is_basic_json_nested_type std::is_same<T, typename BasicJsonType::json_pointer>::value; }; -template <class BasicJsonType, class CompatibleArrayType> +template<class BasicJsonType, class CompatibleArrayType> struct is_compatible_array_type { - // TODO concept Container? - // this might not make VS happy static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< @@ -430,10 +443,10 @@ struct is_compatible_array_type has_iterator<CompatibleArrayType>>::value; }; -template <bool, typename, typename> +template<bool, typename, typename> struct is_compatible_integer_type_impl : std::false_type {}; -template <typename RealIntegerType, typename CompatibleNumberIntegerType> +template<typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { // is there an assert somewhere on overflows? @@ -447,24 +460,25 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn RealLimits::is_signed == CompatibleLimits::is_signed; }; -template <typename RealIntegerType, typename CompatibleNumberIntegerType> +template<typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto - value = is_compatible_integer_type_impl < - std::is_integral<CompatibleNumberIntegerType>::value and - not std::is_same<bool, CompatibleNumberIntegerType>::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; + // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_from_json { private: // also check the return type of from_json - template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( - std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> + template<typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( + std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> static int detect(U&&); static void detect(...); @@ -475,7 +489,7 @@ struct has_from_json // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_non_default_from_json { private: @@ -492,12 +506,12 @@ struct has_non_default_from_json }; // This trait checks if BasicJsonType::json_serializer<T>::to_json exists -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_to_json { private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<BasicJsonType&>(), std::declval<T>()))> + template<typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<BasicJsonType&>(), std::declval<T>()))> static int detect(U&&); static void detect(...); @@ -506,58 +520,33 @@ struct has_to_json std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; -// overloads for basic_json template parameters -template <typename BasicJsonType, typename ArithmeticType, - enable_if_t<std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::boolean_t>::value, - int> = 0> -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast<value_t>(j)) - { - case value_t::number_unsigned: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); - break; - case value_t::number_integer: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); - break; - case value_t::number_float: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); - break; - default: - JSON_THROW( - std::domain_error("type must be number, but is " + j.type_name())); - } -} +///////////// +// to_json // +///////////// -template <typename BasicJsonType> +template<typename BasicJsonType> void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { external_constructor<value_t::boolean>::construct(j, b); } -template <typename BasicJsonType, typename CompatibleString, - enable_if_t<std::is_constructible<typename BasicJsonType::string_t, - CompatibleString>::value, - int> = 0> +template<typename BasicJsonType, typename CompatibleString, + enable_if_t<std::is_constructible<typename BasicJsonType::string_t, + CompatibleString>::value, + int> = 0> void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); } -template <typename BasicJsonType, typename FloatType, - enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> +template<typename BasicJsonType, typename FloatType, + enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> void to_json(BasicJsonType& j, FloatType val) noexcept { external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val)); } - template < typename BasicJsonType, typename CompatibleNumberUnsignedType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, @@ -578,8 +567,8 @@ void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); } -template <typename BasicJsonType, typename UnscopedEnumType, - enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +template<typename BasicJsonType, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> void to_json(BasicJsonType& j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); @@ -605,7 +594,48 @@ void to_json(BasicJsonType& j, const CompatibleObjectType& arr) external_constructor<value_t::object>::construct(j, arr); } -template <typename BasicJsonType> + +/////////////// +// from_json // +/////////////// + +// overloads for basic_json template parameters +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t<std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename BasicJsonType::boolean_t>::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast<value_t>(j)) + { + case value_t::number_unsigned: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + break; + } + case value_t::number_integer: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + break; + } + case value_t::number_float: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + break; + } + default: + { + JSON_THROW( + std::domain_error("type must be number, but is " + j.type_name())); + } + } +} + +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) @@ -615,7 +645,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) @@ -625,35 +655,35 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType, typename UnscopedEnumType, - enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const BasicJsonType& j, UnscopedEnumType& e) +template<typename BasicJsonType, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void from_json(const BasicJsonType& j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); e = static_cast<UnscopedEnumType>(val); } -template <typename BasicJsonType> -void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { @@ -662,8 +692,9 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } -// forward_list doesn't have an insert method, TODO find a way to avoid including forward_list -template <typename BasicJsonType, typename T, typename Allocator> +// forward_list doesn't have an insert method +// TODO find a way to avoid including forward_list +template<typename BasicJsonType, typename T, typename Allocator> void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons @@ -685,23 +716,23 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) } } -template <typename BasicJsonType, typename CompatibleArrayType> -void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) +template<typename BasicJsonType, typename CompatibleArrayType> +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) { using std::begin; using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<BasicJsonType>() returns *this, this won't call a from_json method when - // value_type is BasicJsonType + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template <typename BasicJsonType, typename CompatibleArrayType> -auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) +template<typename BasicJsonType, typename CompatibleArrayType> +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -711,26 +742,24 @@ auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, pri arr.reserve(j.size()); std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<BasicJsonType>() returns *this, this won't call a from_json method when - // value_type is BasicJsonType + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template < - typename BasicJsonType, typename CompatibleArrayType, - enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and - not std::is_same<typename BasicJsonType::array_t, - CompatibleArrayType>::value, - int> = 0 > -void from_json(const BasicJsonType& j, CompatibleArrayType& arr) +template<typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and + not std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } + // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { @@ -742,12 +771,9 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) from_json_array_impl(j, arr, priority_tag<1> {}); } - -template < - typename BasicJsonType, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, - int> = 0 > -void from_json(const BasicJsonType& j, CompatibleObjectType& obj) +template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { @@ -766,63 +792,52 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. // in case of a custom BooleanType which is not an arithmetic type? -template < - typename BasicJsonType, typename ArithmeticType, - enable_if_t < - std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_unsigned_t>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_integer_t>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_float_t>::value and - not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, - int > = 0 > +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, + int> = 0> void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; case value_t::boolean: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::boolean_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; default: - JSON_THROW( - std::domain_error("type must be number, but is " + j.type_name())); + JSON_THROW(std::domain_error("type must be number, but is " + j.type_name())); } } struct to_json_fn { - template <typename BasicJsonType, typename T> - auto call(BasicJsonType& j, T&& val, priority_tag<1>) const - noexcept(noexcept(to_json(j, std::forward<T>(val)))) - -> decltype(to_json(j, std::forward<T>(val)), - void()) + template<typename BasicJsonType, typename T> + auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) + -> decltype(to_json(j, std::forward<T>(val)), void()) { return to_json(j, std::forward<T>(val)); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); } public: - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) { @@ -833,23 +848,23 @@ struct to_json_fn struct from_json_fn { private: - template <typename BasicJsonType, typename T> - auto call(const BasicJsonType& j, T& val, priority_tag<1>) const + template<typename BasicJsonType, typename T> + auto call(const BasicJsonType& j, T& val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { return from_json(j, val); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); } public: - template <typename BasicJsonType, typename T> - void operator()(const BasicJsonType& j, T& val) const + template<typename BasicJsonType, typename T> + void operator()(const BasicJsonType& j, T& val) const noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) { return call(j, val, priority_tag<1> {}); @@ -857,15 +872,16 @@ struct from_json_fn }; // taken from ranges-v3 -template <typename T> +template<typename T> struct static_const { static constexpr T value{}; }; -template <typename T> +template<typename T> constexpr T static_const<T>::value; + /*! @brief helper class to create locales with decimal point @@ -885,7 +901,8 @@ struct DecimalSeparator : std::numpunct<char> return '.'; } }; -} +} // namespace detail + namespace { @@ -895,16 +912,16 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va // default JSONSerializer template argument, doesn't care about template argument // will use ADL for serialization -template <typename = void, typename = void> +template<typename = void, typename = void> struct adl_serializer { - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> static void to_json(BasicJsonType& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { @@ -912,6 +929,7 @@ struct adl_serializer } }; + /*! @brief a class to store JSON values @@ -1005,7 +1023,7 @@ template < class basic_json { private: - template <detail::value_t> friend struct detail::external_constructor; + template<detail::value_t> friend struct detail::external_constructor; /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -1017,7 +1035,7 @@ class basic_json template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; class json_pointer; - template <typename T, typename SFINAE> + template<typename T, typename SFINAE> using json_serializer = JSONSerializer<T, SFINAE>; ///////////////////// @@ -1904,13 +1922,13 @@ class basic_json @since version 2.1.0 */ - template <typename T, typename U = detail::uncvref_t<T>, - detail::enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> + template<typename T, typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( std::declval<basic_json_t&>(), std::forward<T>(val)))) { @@ -5714,6 +5732,13 @@ class basic_json /// @} public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + /*! @brief comparison: equal @@ -10795,7 +10820,7 @@ basic_json_parser_66: for (; curptr < m_cursor; curptr++) { // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') + if (*curptr < '0' or* curptr > '9') { if (*curptr == '.') { diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 8c670c909..0a7f207d7 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -107,12 +107,15 @@ SOFTWARE. */ namespace nlohmann { -// TODO update this doc + /*! @brief unnamed namespace with internal helper functions -@since version 1.0.0 -*/ +This namespace collects some functions that could not be defined inside the +@ref basic_json class. + +@since version 2.1.0 +*/ namespace detail { /////////////////////////// @@ -122,22 +125,24 @@ namespace detail /*! @brief the JSON type enumeration -This enumeration collects the different JSON types. It is internally used -to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref -basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref -basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and -@ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and @ref basic_json::is_structured() rely on it. -@note There are three enumeration entries (number_integer, -number_unsigned, and number_float), because the library distinguishes -these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned -integers, @ref basic_json::number_integer_t is used for signed integers, and @ref -basic_json::number_float_t is used for floating-point numbers or to approximate -integers which do not fit in the limits of their respective type. +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with -the default value for a given type +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type @since version 1.0.0 */ @@ -154,12 +159,6 @@ enum class value_t : uint8_t discarded ///< discarded by the the parser callback function }; -////////////////////////////////////////// -// lexicographical comparison operators // -////////////////////////////////////////// - -/// @name lexicographical comparison operators -/// @{ /*! @brief comparison operator for JSON types @@ -193,51 +192,62 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept order[static_cast<std::size_t>(rhs)]; } + +///////////// +// helpers // +///////////// + // alias templates to reduce boilerplate -template <bool B, typename T = void> +template<bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; -template <typename T> +template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; // Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait -template <typename T> +template<typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; -// Implementation of 2 C++17 constructs: conjunction, negation. -// This is needed to avoid evaluating all the traits in a condition -// -// For example: not std::is_same<void, T>::value and has_value_type<T>::value -// will not compile when T = void (on MSVC at least) -// Whereas conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value -// will stop evaluating if negation<...>::value == false -// -// Please note that those constructs must be used with caution, since symbols can -// become very long quickly (which can slow down compilation and cause MSVC internal compiler errors) -// Only use it when you have too (see example ahead) -template <class...> struct conjunction : std::true_type {}; -template <class B1> struct conjunction<B1> : B1 {}; -template <class B1, class... Bn> -struct conjunction<B1, Bn...> -: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; +/* +Implementation of 2 C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition -template <class B> struct negation : std::integral_constant < bool, !B::value > {}; +For example: not std::is_same<void, T>::value and has_value_type<T>::value +will not compile when T = void (on MSVC at least). Whereas +conjunction<negation<std::is_same<void, T>>, has_value_type<T>>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template<class...> struct conjunction : std::true_type {}; +template<class B1> struct conjunction<B1> : B1 {}; +template<class B1, class... Bn> +struct conjunction<B1, Bn...> : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {}; + +template<class B> struct negation : std::integral_constant < bool, !B::value > {}; // dispatch utility (taken from ranges-v3) -template <unsigned N> struct priority_tag : priority_tag < N - 1 > {}; +template<unsigned N> struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; -template <> struct priority_tag<0> {}; + +////////////////// +// constructors // +////////////////// // This is an experiment. I need this to move constructors out of basic_json. -// I'm sure there is a better way, but this might need a big basic_json refactoring -template <value_t> struct external_constructor; +// I'm sure there is a better way, but this might need a big basic_json +// refactoring +template<value_t> struct external_constructor; -template <> +template<> struct external_constructor<value_t::boolean> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { j.m_type = value_t::boolean; @@ -246,10 +256,10 @@ struct external_constructor<value_t::boolean> } }; -template <> +template<> struct external_constructor<value_t::string> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) { j.m_type = value_t::string; @@ -258,15 +268,17 @@ struct external_constructor<value_t::string> } }; -template <> +template<> struct external_constructor<value_t::number_float> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept { // replace infinity and NAN by null if (not std::isfinite(val)) + { j = BasicJsonType{}; + } else { j.m_type = value_t::number_float; @@ -276,10 +288,10 @@ struct external_constructor<value_t::number_float> } }; -template <> +template<> struct external_constructor<value_t::number_unsigned> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept { j.m_type = value_t::number_unsigned; @@ -288,10 +300,10 @@ struct external_constructor<value_t::number_unsigned> } }; -template <> +template<> struct external_constructor<value_t::number_integer> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept { j.m_type = value_t::number_integer; @@ -300,10 +312,10 @@ struct external_constructor<value_t::number_integer> } }; -template <> +template<> struct external_constructor<value_t::array> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) { j.m_type = value_t::array; @@ -311,25 +323,24 @@ struct external_constructor<value_t::array> j.assert_invariant(); } - template <typename BasicJsonType, typename CompatibleArrayType, - enable_if_t<not std::is_same<CompatibleArrayType, - typename BasicJsonType::array_t>::value, - int> = 0> + template<typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, + typename BasicJsonType::array_t>::value, + int> = 0> static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; using std::end; j.m_type = value_t::array; - j.m_value.array = - j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); + j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); j.assert_invariant(); } }; -template <> +template<> struct external_constructor<value_t::object> { - template <typename BasicJsonType> + template<typename BasicJsonType> static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) { j.m_type = value_t::object; @@ -337,22 +348,26 @@ struct external_constructor<value_t::object> j.assert_invariant(); } - template <typename BasicJsonType, typename CompatibleObjectType, - enable_if_t<not std::is_same<CompatibleObjectType, - typename BasicJsonType::object_t>::value, - int> = 0> + template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, + typename BasicJsonType::object_t>::value, + int> = 0> static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; using std::end; j.m_type = value_t::object; - j.m_value.object = - j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); + j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); j.assert_invariant(); } }; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + /*! @brief Helper to determine whether there's a key_type for T. @@ -364,9 +379,9 @@ contains a `mapped_type`, whereas `std::vector` fails the test. @since version 1.0.0, overworked in version 2.0.6 */ #define NLOHMANN_JSON_HAS_HELPER(type) \ - template <typename T> struct has_##type { \ + template<typename T> struct has_##type { \ private: \ - template <typename U, typename = typename U::type> \ + template<typename U, typename = typename U::type> \ static int detect(U &&); \ static void detect(...); \ public: \ @@ -381,10 +396,10 @@ NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER -template <bool B, class RealType, class CompatibleObjectType> +template<bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type {}; -template <class RealType, class CompatibleObjectType> +template<class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl<true, RealType, CompatibleObjectType> { static constexpr auto value = @@ -404,7 +419,7 @@ struct is_compatible_object_type typename BasicJsonType::object_t, CompatibleObjectType >::value; }; -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct is_basic_json_nested_type { static auto constexpr value = std::is_same<T, typename BasicJsonType::iterator>::value or @@ -414,11 +429,9 @@ struct is_basic_json_nested_type std::is_same<T, typename BasicJsonType::json_pointer>::value; }; -template <class BasicJsonType, class CompatibleArrayType> +template<class BasicJsonType, class CompatibleArrayType> struct is_compatible_array_type { - // TODO concept Container? - // this might not make VS happy static auto constexpr value = conjunction<negation<std::is_same<void, CompatibleArrayType>>, negation<is_compatible_object_type< @@ -430,10 +443,10 @@ struct is_compatible_array_type has_iterator<CompatibleArrayType>>::value; }; -template <bool, typename, typename> +template<bool, typename, typename> struct is_compatible_integer_type_impl : std::false_type {}; -template <typename RealIntegerType, typename CompatibleNumberIntegerType> +template<typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> { // is there an assert somewhere on overflows? @@ -447,24 +460,25 @@ struct is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIn RealLimits::is_signed == CompatibleLimits::is_signed; }; -template <typename RealIntegerType, typename CompatibleNumberIntegerType> +template<typename RealIntegerType, typename CompatibleNumberIntegerType> struct is_compatible_integer_type { - static constexpr auto - value = is_compatible_integer_type_impl < - std::is_integral<CompatibleNumberIntegerType>::value and - not std::is_same<bool, CompatibleNumberIntegerType>::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; }; + // This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_from_json { private: // also check the return type of from_json - template <typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( - std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> + template<typename U, typename = enable_if_t<std::is_same<void, decltype(uncvref_t<U>::from_json( + std::declval<BasicJsonType>(), std::declval<T&>()))>::value>> static int detect(U&&); static void detect(...); @@ -475,7 +489,7 @@ struct has_from_json // This trait checks if JSONSerializer<T>::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_non_default_from_json { private: @@ -492,12 +506,12 @@ struct has_non_default_from_json }; // This trait checks if BasicJsonType::json_serializer<T>::to_json exists -template <typename BasicJsonType, typename T> +template<typename BasicJsonType, typename T> struct has_to_json { private: - template <typename U, typename = decltype(uncvref_t<U>::to_json( - std::declval<BasicJsonType&>(), std::declval<T>()))> + template<typename U, typename = decltype(uncvref_t<U>::to_json( + std::declval<BasicJsonType&>(), std::declval<T>()))> static int detect(U&&); static void detect(...); @@ -506,58 +520,33 @@ struct has_to_json std::declval<typename BasicJsonType::template json_serializer<T, void>>()))>::value; }; -// overloads for basic_json template parameters -template <typename BasicJsonType, typename ArithmeticType, - enable_if_t<std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::boolean_t>::value, - int> = 0> -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast<value_t>(j)) - { - case value_t::number_unsigned: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); - break; - case value_t::number_integer: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); - break; - case value_t::number_float: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); - break; - default: - JSON_THROW( - std::domain_error("type must be number, but is " + j.type_name())); - } -} +///////////// +// to_json // +///////////// -template <typename BasicJsonType> +template<typename BasicJsonType> void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { external_constructor<value_t::boolean>::construct(j, b); } -template <typename BasicJsonType, typename CompatibleString, - enable_if_t<std::is_constructible<typename BasicJsonType::string_t, - CompatibleString>::value, - int> = 0> +template<typename BasicJsonType, typename CompatibleString, + enable_if_t<std::is_constructible<typename BasicJsonType::string_t, + CompatibleString>::value, + int> = 0> void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); } -template <typename BasicJsonType, typename FloatType, - enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> +template<typename BasicJsonType, typename FloatType, + enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> void to_json(BasicJsonType& j, FloatType val) noexcept { external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val)); } - template < typename BasicJsonType, typename CompatibleNumberUnsignedType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, @@ -578,8 +567,8 @@ void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); } -template <typename BasicJsonType, typename UnscopedEnumType, - enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +template<typename BasicJsonType, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> void to_json(BasicJsonType& j, UnscopedEnumType e) noexcept { external_constructor<value_t::number_integer>::construct(j, e); @@ -605,7 +594,48 @@ void to_json(BasicJsonType& j, const CompatibleObjectType& arr) external_constructor<value_t::object>::construct(j, arr); } -template <typename BasicJsonType> + +/////////////// +// from_json // +/////////////// + +// overloads for basic_json template parameters +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t<std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, + typename BasicJsonType::boolean_t>::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast<value_t>(j)) + { + case value_t::number_unsigned: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + break; + } + case value_t::number_integer: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + break; + } + case value_t::number_float: + { + val = static_cast<ArithmeticType>( + *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + break; + } + default: + { + JSON_THROW( + std::domain_error("type must be number, but is " + j.type_name())); + } + } +} + +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (!j.is_boolean()) @@ -615,7 +645,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (!j.is_string()) @@ -625,35 +655,35 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType> +template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) { get_arithmetic_value(j, val); } -template <typename BasicJsonType, typename UnscopedEnumType, - enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> -void from_json(const BasicJsonType& j, UnscopedEnumType& e) +template<typename BasicJsonType, typename UnscopedEnumType, + enable_if_t<is_unscoped_enum<UnscopedEnumType>::value, int> = 0> +void from_json(const BasicJsonType& j, UnscopedEnumType& e) { typename std::underlying_type<UnscopedEnumType>::type val = e; get_arithmetic_value(j, val); e = static_cast<UnscopedEnumType>(val); } -template <typename BasicJsonType> -void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { if (!j.is_array()) { @@ -662,8 +692,9 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); } -// forward_list doesn't have an insert method, TODO find a way to avoid including forward_list -template <typename BasicJsonType, typename T, typename Allocator> +// forward_list doesn't have an insert method +// TODO find a way to avoid including forward_list +template<typename BasicJsonType, typename T, typename Allocator> void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { // do not perform the check when user wants to retrieve jsons @@ -685,23 +716,23 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) } } -template <typename BasicJsonType, typename CompatibleArrayType> -void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) +template<typename BasicJsonType, typename CompatibleArrayType> +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0>) { using std::begin; using std::end; - std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<BasicJsonType>() returns *this, this won't call a from_json method when - // value_type is BasicJsonType + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template <typename BasicJsonType, typename CompatibleArrayType> -auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) +template<typename BasicJsonType, typename CompatibleArrayType> +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval<typename CompatibleArrayType::size_type>()), void()) @@ -711,26 +742,24 @@ auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, pri arr.reserve(j.size()); std::transform( - j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) + j.begin(), j.end(), std::inserter(arr, end(arr)), [](const BasicJsonType & i) { - // get<BasicJsonType>() returns *this, this won't call a from_json method when - // value_type is BasicJsonType + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType return i.template get<typename CompatibleArrayType::value_type>(); }); } -template < - typename BasicJsonType, typename CompatibleArrayType, - enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and - not std::is_same<typename BasicJsonType::array_t, - CompatibleArrayType>::value, - int> = 0 > -void from_json(const BasicJsonType& j, CompatibleArrayType& arr) +template<typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value and + not std::is_same<typename BasicJsonType::array_t, CompatibleArrayType>::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) { if (j.is_null()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } + // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { @@ -742,12 +771,9 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) from_json_array_impl(j, arr, priority_tag<1> {}); } - -template < - typename BasicJsonType, typename CompatibleObjectType, - enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, - int> = 0 > -void from_json(const BasicJsonType& j, CompatibleObjectType& obj) +template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { if (!j.is_object()) { @@ -766,63 +792,52 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) // // note: Is it really necessary to provide explicit overloads for boolean_t etc.. // in case of a custom BooleanType which is not an arithmetic type? -template < - typename BasicJsonType, typename ArithmeticType, - enable_if_t < - std::is_arithmetic<ArithmeticType>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_unsigned_t>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_integer_t>::value and - not std::is_same<ArithmeticType, - typename BasicJsonType::number_float_t>::value and - not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, - int > = 0 > +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, + int> = 0> void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast<value_t>(j)) { case value_t::number_unsigned: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; case value_t::number_integer: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; case value_t::number_float: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; case value_t::boolean: - val = static_cast<ArithmeticType>( - *j.template get_ptr<const typename BasicJsonType::boolean_t*>()); + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; default: - JSON_THROW( - std::domain_error("type must be number, but is " + j.type_name())); + JSON_THROW(std::domain_error("type must be number, but is " + j.type_name())); } } struct to_json_fn { - template <typename BasicJsonType, typename T> - auto call(BasicJsonType& j, T&& val, priority_tag<1>) const - noexcept(noexcept(to_json(j, std::forward<T>(val)))) - -> decltype(to_json(j, std::forward<T>(val)), - void()) + template<typename BasicJsonType, typename T> + auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) + -> decltype(to_json(j, std::forward<T>(val)), void()) { return to_json(j, std::forward<T>(val)); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); } public: - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(std::declval<to_json_fn>().call(j, std::forward<T>(val), priority_tag<1> {}))) { @@ -833,23 +848,23 @@ struct to_json_fn struct from_json_fn { private: - template <typename BasicJsonType, typename T> - auto call(const BasicJsonType& j, T& val, priority_tag<1>) const + template<typename BasicJsonType, typename T> + auto call(const BasicJsonType& j, T& val, priority_tag<1>) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void()) { return from_json(j, val); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); } public: - template <typename BasicJsonType, typename T> - void operator()(const BasicJsonType& j, T& val) const + template<typename BasicJsonType, typename T> + void operator()(const BasicJsonType& j, T& val) const noexcept(noexcept(std::declval<from_json_fn>().call(j, val, priority_tag<1> {}))) { return call(j, val, priority_tag<1> {}); @@ -857,15 +872,16 @@ struct from_json_fn }; // taken from ranges-v3 -template <typename T> +template<typename T> struct static_const { static constexpr T value{}; }; -template <typename T> +template<typename T> constexpr T static_const<T>::value; + /*! @brief helper class to create locales with decimal point @@ -885,7 +901,8 @@ struct DecimalSeparator : std::numpunct<char> return '.'; } }; -} +} // namespace detail + namespace { @@ -895,16 +912,16 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va // default JSONSerializer template argument, doesn't care about template argument // will use ADL for serialization -template <typename = void, typename = void> +template<typename = void, typename = void> struct adl_serializer { - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template <typename BasicJsonType, typename T> + template<typename BasicJsonType, typename T> static void to_json(BasicJsonType& j, T&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) { @@ -912,6 +929,7 @@ struct adl_serializer } }; + /*! @brief a class to store JSON values @@ -1005,7 +1023,7 @@ template < class basic_json { private: - template <detail::value_t> friend struct detail::external_constructor; + template<detail::value_t> friend struct detail::external_constructor; /// workaround type for MSVC using basic_json_t = basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, @@ -1017,7 +1035,7 @@ class basic_json template<typename U> class iter_impl; template<typename Base> class json_reverse_iterator; class json_pointer; - template <typename T, typename SFINAE> + template<typename T, typename SFINAE> using json_serializer = JSONSerializer<T, SFINAE>; ///////////////////// @@ -1904,13 +1922,13 @@ class basic_json @since version 2.1.0 */ - template <typename T, typename U = detail::uncvref_t<T>, - detail::enable_if_t<not std::is_base_of<std::istream, U>::value and - not std::is_same<U, basic_json_t>::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json<basic_json, U>::value, - int> = 0> + template<typename T, typename U = detail::uncvref_t<T>, + detail::enable_if_t<not std::is_base_of<std::istream, U>::value and + not std::is_same<U, basic_json_t>::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json<basic_json, U>::value, + int> = 0> basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( std::declval<basic_json_t&>(), std::forward<T>(val)))) { @@ -5714,6 +5732,13 @@ class basic_json /// @} public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + /*! @brief comparison: equal @@ -9945,7 +9970,7 @@ class basic_json for (; curptr < m_cursor; curptr++) { // quickly skip tests if a digit - if (*curptr < '0' || *curptr > '9') + if (*curptr < '0' or* curptr > '9') { if (*curptr == '.') { From daf8dcdb32a3c1e121ed12232e7c00557277aa4b Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 14:37:25 +0100 Subject: [PATCH 131/174] :memo: overworked README --- README.md | 227 +++++++++++++++++++++++++++--------------------------- 1 file changed, 114 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index b64c14171..30c76f074 100644 --- a/README.md +++ b/README.md @@ -442,15 +442,20 @@ int vi = jn.get<int>(); // etc. ``` + ### Arbitrary types conversions -Every type can be serialized in JSON, not just STL-containers and scalar types. -Usually, you would do something along those lines: +Every type can be serialized in JSON, not just STL-containers and scalar types. Usually, you would do something along those lines: ```cpp namespace ns { -struct person { std::string name; std::string address; int age; }; + struct person { + std::string name; + std::string address; + int age; + }; } + // convert to JSON json j; ns::person p = createSomeone(); @@ -461,10 +466,14 @@ j["age"] = p.age; // ... // convert from JSON -ns::person p {j["name"].get<std::string>(), j["address"].get<std::string>(), j["age"].get<int>()}; +ns::person p { + j["name"].get<std::string>(), + j["address"].get<std::string>(), + j["age"].get<int>() +}; ``` -It works, but that's quite a lot of boilerplate.. Hopefully, there's a better way: +It works, but that's quite a lot of boilerplate... Hopefully, there's a better way: ```cpp ns::person p = createPerson(); @@ -482,27 +491,25 @@ To make this work with one of your types, you only need to provide two methods: using nlohmann::json; namespace ns { -void to_json(json& j, person const& p) -{ - j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; -} + void to_json(json& j, person const& p) { + j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; + } -void from_json(json const& j, person& p) -{ - p.name = j["name"].get<std::string>(); - p.address = j["address"].get<std::string>(); - p.age = j["age"].get<int>(); -} + void from_json(json const& j, person& p) { + p.name = j["name"].get<std::string>(); + p.address = j["address"].get<std::string>(); + p.age = j["age"].get<int>(); + } } // namespace ns ``` -That's all. When calling the json constructor with your type, your custom `to_json` method will be automatically called. +That's all! When calling the `json` constructor with your type, your custom `to_json` method will be automatically called. Likewise, when calling `get<your_type>()`, the `from_json` method will be called. Some important things: * Those methods **MUST** be in your type's namespace, or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). -* When using `get<your_type>()`, `your_type` **MUST** be DefaultConstructible and CopyConstructible (There is a way to bypass those requirements described later) +* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible) and [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible). (There is a way to bypass those requirements described later.) #### How do I convert third-party types? @@ -510,124 +517,117 @@ This requires a bit more advanced technique. But first, let's see how this conversion mechanism works: The library uses **JSON Serializers** to convert types to json. -The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](http://en.cppreference.com/w/cpp/language/adl)) +The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](http://en.cppreference.com/w/cpp/language/adl)). It is implemented like this (simplified): ```cpp template <typename T> -struct adl_serializer -{ - static void to_json(json& j, const T& value) - { - // calls the "to_json" method in T's namespace - } - - static void from_json(const json& j, T& value) - { - // same thing, but with the "from_json" method - } +struct adl_serializer { + static void to_json(json& j, const T& value) { + // calls the "to_json" method in T's namespace + } + + static void from_json(const json& j, T& value) { + // same thing, but with the "from_json" method + } }; ``` -This serializer works fine when you have control over the type's namespace. -However, what about `boost::optional`, or `std::filesystem::path` (C++17)? - -Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... +This serializer works fine when you have control over the type's namespace. However, what about `boost::optional`, or `std::filesystem::path` (C++17)? Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... To solve this, you need to add a specialization of `adl_serializer` to the `nlohmann` namespace, here's an example: ```cpp // partial specialization (full specialization works too) namespace nlohmann { -template <typename T> -struct adl_serializer<boost::optional<T>> -{ - static void to_json(json& j, const boost::optional<T>& opt) - { - if (opt == boost::none) - j = nullptr; - else - j = *opt; // this will call adl_serializer<T>::to_json, which will find the free function to_json in T's namespace! - } - - static void from_json(const json& j, boost::optional<T>& opt) - { - if (!j.is_null()) - opt = j.get<T>(); // same as above, but with adl_serializer<T>::from_json - } -}; + template <typename T> + struct adl_serializer<boost::optional<T>> { + static void to_json(json& j, const boost::optional<T>& opt) { + if (opt == boost::none) { + j = nullptr; + } else { + j = *opt; // this will call adl_serializer<T>::to_json + // which will find the free function to_json + // in T's namespace! + } + } + + static void from_json(const json& j, boost::optional<T>& opt) { + if (!j.is_null()) { + opt = j.get<T>(); // same as above, but with + // adl_serializer<T>::from_json + } + } + }; } ``` #### How can I use `get()` for non-default constructible/non-copyable types? -There is a way, if your type is **MoveConstructible**. -You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: +There is a way, if your type is [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: ```cpp struct move_only_type { - move_only_type() = delete; - move_only_type(int ii): i(ii) {} - move_only_type(const move_only_type&) = delete; - move_only_type(move_only_type&&) = default; - : - int i; + move_only_type() = delete; + move_only_type(int ii): i(ii) {} + move_only_type(const move_only_type&) = delete; + move_only_type(move_only_type&&) = default; + + private: + int i; }; namespace nlohmann { -template <> -struct adl_serializer<move_only_type> -{ - // note: the return type is no longer 'void', and the method only takes one argument - static move_only_type from_json(const json& j) - { - return {j.get<int>()}; - } - - // Here's the catch! You must provide a to_json method! - // Otherwise you will not be able to convert move_only_type to json, - // since you fully specialized adl_serializer on that type - static void to_json(json& j, move_only_type t) - { - j = t.i; - } -}; + template <> + struct adl_serializer<move_only_type> { + // note: the return type is no longer 'void', + // and the method only takes one argument + static move_only_type from_json(const json& j) { + return {j.get<int>()}; + } + + // Here's the catch! You must provide a to_json method! + // Otherwise you will not be able to convert move_only_type to json, + // since you fully specialized adl_serializer on that type + static void to_json(json& j, move_only_type t) { + j = t.i; + } + }; } ``` #### Can I write my own serializer? (Advanced use) -Yes. You might want to take a look at `unit-udt.cpp` in the test suite, to see a few examples. +Yes. You might want to take a look at `[unit-udt.cpp](https://github.com/nlohmann/json/blob/develop/test/src/unit-udt.cpp)` in the test suite, to see a few examples. If you write your own serializer, you'll need to do a few things: -* use a different `basic_json` alias than nlohmann::json (the last template parameter of basic_json is the JSONSerializer) +* use a different `basic_json` alias than `nlohmann::json` (the last template parameter of `basic_json` is the `JSONSerializer`) * use your `basic_json` alias (or a template parameter) in all your `to_json`/`from_json` methods * use `nlohmann::to_json` and `nlohmann::from_json` when you need ADL Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL. ```cpp -// You should use void as a second template argument if you don't need compile-time checks on T -template <typename T, typename SFINAE = typename std::enable_if<sizeof(T) <= 32>::type> -struct less_than_32_serializer // if someone tries to use a type bigger than 32, the compiler will complain -{ - template <typename Json> - static void to_json(Json& j, T value) - { - // we want to use ADL, and call the correct to_json overload - using nlohmann::to_json; // this method is called by adl_serializer, this is where the magic happens - to_json(j, value); - } - - template <typename Json> - static void from_json(const Json& j, T& value) - { - // same thing here - using nlohmann::from_json; - from_json(j, value); - } +// You should use void as a second template argument +// if you don't need compile-time checks on T +template<typename T, typename SFINAE = typename std::enable_if<sizeof(T) <= 32>::type> +struct less_than_32_serializer { + template <typename BasicJsonType> + static void to_json(BasicJsonType& j, T value) { + // we want to use ADL, and call the correct to_json overload + using nlohmann::to_json; // this method is called by adl_serializer, + // this is where the magic happens + to_json(j, value); + } + + template <typename BasicJsonType> + static void from_json(const BasicJsonType& j, T& value) { + // same thing here + using nlohmann::from_json; + from_json(j, value); + } }; ``` @@ -637,21 +637,19 @@ Be **very** careful when reimplementing your serializer, you can stack overflow template <typename T, void> struct bad_serializer { - template <typename Json> - static void to_json(Json& j, const T& value) - { - // this calls Json::json_serializer<T>::to_json(j, value); - // if Json::json_serializer == bad_serializer ... oops! - j = value; - } - - template <typename Json> - static void to_json(const Json& j, T& value) - { - // this calls Json::json_serializer<T>::from_json(j, value); - // if Json::json_serializer == bad_serializer ... oops! - value = j.template get<T>(); // oops! - } + template <typename BasicJsonType> + static void to_json(BasicJsonType& j, const T& value) { + // this calls BasicJsonType::json_serializer<T>::to_json(j, value); + // if BasicJsonType::json_serializer == bad_serializer ... oops! + j = value; + } + + template <typename BasicJsonType> + static void to_json(const BasicJsonType& j, T& value) { + // this calls BasicJsonType::json_serializer<T>::from_json(j, value); + // if BasicJsonType::json_serializer == bad_serializer ... oops! + value = j.template get<T>(); // oops! + } }; ``` @@ -759,7 +757,7 @@ I deeply appreciate the help of the following people. - [Eric Cornelius](https://github.com/EricMCornelius) pointed out a bug in the handling with NaN and infinity values. He also improved the performance of the string escaping. - [易思龙](https://github.com/likebeta) implemented a conversion from anonymous enums. - [kepkin](https://github.com/kepkin) patiently pushed forward the support for Microsoft Visual studio. -- [gregmarr](https://github.com/gregmarr) simplified the implementation of reverse iterators and helped with numerous hints and improvements. +- [gregmarr](https://github.com/gregmarr) simplified the implementation of reverse iterators and helped with numerous hints and improvements. In particular, he pushed forward the implementation of user-defined types. - [Caio Luppi](https://github.com/caiovlp) fixed a bug in the Unicode handling. - [dariomt](https://github.com/dariomt) fixed some typos in the examples. - [Daniel Frey](https://github.com/d-frey) cleaned up some pointers and implemented exception-safe memory allocation. @@ -787,7 +785,7 @@ I deeply appreciate the help of the following people. - [duncanwerner](https://github.com/duncanwerner) found a really embarrassing performance regression in the 2.0.0 release. - [Damien](https://github.com/dtoma) fixed one of the last conversion warnings. - [Thomas Braun](https://github.com/t-b) fixed a warning in a test case. -- [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). +- [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). He also implemented the magic behind the serialization/deserialization of user-defined types. - [Stefan](https://github.com/5tefan) fixed a minor issue in the documentation. - [Vasil Dimov](https://github.com/vasild) fixed the documentation regarding conversions from `std::multiset`. - [ChristophJud](https://github.com/ChristophJud) overworked the CMake files to ease project inclusion. @@ -801,6 +799,9 @@ I deeply appreciate the help of the following people. - [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one. - [Daniel599](https://github.com/Daniel599) helped to get Travis execute the tests with Clang's sanitizers. - [Jonathan Lee](https://github.com/vjon) fixed an example in the README file. +- [gnzlbg](https://github.com/gnzlbg) supported the implementation of user-defined types. +- [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio. +- [Jared Grubb](https://github.com/jaredgrubb) supported the implementation of user-defined types. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. From 781fd09f2de382f0aeadf89a1dd527ff335c9eb2 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 14:45:32 +0100 Subject: [PATCH 132/174] :memo: cleanup --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 30c76f074..dd54fe712 100644 --- a/README.md +++ b/README.md @@ -449,6 +449,7 @@ Every type can be serialized in JSON, not just STL-containers and scalar types. ```cpp namespace ns { + // a simple struct to model a person struct person { std::string name; std::string address; @@ -456,7 +457,7 @@ namespace ns { }; } -// convert to JSON +// convert to JSON: copy each value into the JSON object json j; ns::person p = createSomeone(); j["name"] = p.name; @@ -465,7 +466,7 @@ j["age"] = p.age; // ... -// convert from JSON +// convert from JSON: copy each value from the JSON object ns::person p { j["name"].get<std::string>(), j["address"].get<std::string>(), @@ -476,9 +477,11 @@ ns::person p { It works, but that's quite a lot of boilerplate... Hopefully, there's a better way: ```cpp +// person -> json ns::person p = createPerson(); json j = p; +// json -> person auto p2 = j.get<ns::person>(); assert(p == p2); ``` @@ -547,9 +550,8 @@ namespace nlohmann { if (opt == boost::none) { j = nullptr; } else { - j = *opt; // this will call adl_serializer<T>::to_json - // which will find the free function to_json - // in T's namespace! + j = *opt; // this will call adl_serializer<T>::to_json which will + // find the free function to_json in T's namespace! } } @@ -581,15 +583,15 @@ struct move_only_type { namespace nlohmann { template <> struct adl_serializer<move_only_type> { - // note: the return type is no longer 'void', - // and the method only takes one argument + // note: the return type is no longer 'void', and the method only takes + // one argument static move_only_type from_json(const json& j) { return {j.get<int>()}; } - // Here's the catch! You must provide a to_json method! - // Otherwise you will not be able to convert move_only_type to json, - // since you fully specialized adl_serializer on that type + // Here's the catch! You must provide a to_json method! Otherwise you + // will not be able to convert move_only_type to json, since you fully + // specialized adl_serializer on that type static void to_json(json& j, move_only_type t) { j = t.i; } @@ -599,7 +601,7 @@ namespace nlohmann { #### Can I write my own serializer? (Advanced use) -Yes. You might want to take a look at `[unit-udt.cpp](https://github.com/nlohmann/json/blob/develop/test/src/unit-udt.cpp)` in the test suite, to see a few examples. +Yes. You might want to take a look at [`unit-udt.cpp`](https://github.com/nlohmann/json/blob/develop/test/src/unit-udt.cpp) in the test suite, to see a few examples. If you write your own serializer, you'll need to do a few things: From 50a3f3b301467d69c86d98d977c5db82764bda89 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 14:55:51 +0100 Subject: [PATCH 133/174] :memo: added nicer example --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index dd54fe712..3d05dc338 100644 --- a/README.md +++ b/README.md @@ -457,9 +457,10 @@ namespace ns { }; } +ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; + // convert to JSON: copy each value into the JSON object json j; -ns::person p = createSomeone(); j["name"] = p.name; j["address"] = p.address; j["age"] = p.age; @@ -477,12 +478,19 @@ ns::person p { It works, but that's quite a lot of boilerplate... Hopefully, there's a better way: ```cpp -// person -> json -ns::person p = createPerson(); +// create a person +ns::person p {"Ned Flanders", "744 Evergreen Terrace", 60}; + +// conversion: person -> json json j = p; -// json -> person -auto p2 = j.get<ns::person>(); +std::cout << j << std::endl; +// {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} + +// conversion: json -> person +ns::person p2 = j; + +// that's it assert(p == p2); ``` From c154f3133d300ba53be90a052bbd996be458b7a4 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 15:02:35 +0100 Subject: [PATCH 134/174] :construction: rephrased assertions --- src/json.hpp | 6 ++++-- src/json.hpp.re2c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 5987b3853..f7af945aa 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -833,7 +833,8 @@ struct to_json_fn template<typename BasicJsonType, typename T> void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { - static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, + "could not find to_json() method in T's namespace"); } public: @@ -859,7 +860,8 @@ struct from_json_fn template<typename BasicJsonType, typename T> void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { - static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, + "could not find from_json() method in T's namespace"); } public: diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 0a7f207d7..039fc9fb8 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -833,7 +833,8 @@ struct to_json_fn template<typename BasicJsonType, typename T> void call(BasicJsonType&, T&&, priority_tag<0>) const noexcept { - static_assert(sizeof(BasicJsonType) == 0, "to_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, + "could not find to_json() method in T's namespace"); } public: @@ -859,7 +860,8 @@ struct from_json_fn template<typename BasicJsonType, typename T> void call(const BasicJsonType&, T&, priority_tag<0>) const noexcept { - static_assert(sizeof(BasicJsonType) == 0, "from_json method in T's namespace can not be called"); + static_assert(sizeof(BasicJsonType) == 0, + "could not find from_json() method in T's namespace"); } public: From 4139bb65728cef0737804111891583fa6351ec9b Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Tue, 24 Jan 2017 15:20:20 +0100 Subject: [PATCH 135/174] :memo: adjusted test count --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3d05dc338..33d7518de 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ - [Conversion from STL containers](#conversion-from-stl-containers) - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) - [Implicit conversions](#implicit-conversions) - - [Conversions to arbitrary types](#arbitrary-types-conversions) + - [Conversions to/from arbitrary types](#arbitrary-types-conversions) - [Binary formats (CBOR and MessagePack)](#binary-formats-cbor-and-messagepack) - [Supported compilers](#supported-compilers) - [License](#license) @@ -835,10 +835,11 @@ Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I To compile and run the tests, you need to execute ```sh -$ make check +$ make json_unit -Ctest +$ ./test/json_unit "*"" =============================================================================== -All tests passed (11202040 assertions in 44 test cases) +All tests passed (11202052 assertions in 47 test cases) ``` Alternatively, you can use [CMake](https://cmake.org) and run From ec03c9c53ef7a0112fd6b065555129d8ec070452 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 25 Jan 2017 19:01:31 +0100 Subject: [PATCH 136/174] :memo: overworked docs #435 --- README.md | 15 +++++++-------- src/json.hpp | 3 --- src/json.hpp.re2c | 3 --- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 33d7518de..8cf4865b3 100644 --- a/README.md +++ b/README.md @@ -475,7 +475,7 @@ ns::person p { }; ``` -It works, but that's quite a lot of boilerplate... Hopefully, there's a better way: +It works, but that's quite a lot of boilerplate... Fortunately, there's a better way: ```cpp // create a person @@ -496,17 +496,17 @@ assert(p == p2); #### Basic usage -To make this work with one of your types, you only need to provide two methods: +To make this work with one of your types, you only need to provide two functions: ```cpp using nlohmann::json; namespace ns { - void to_json(json& j, person const& p) { + void to_json(json& j, const person& p) { j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; } - void from_json(json const& j, person& p) { + void from_json(const json& j, person& p) { p.name = j["name"].get<std::string>(); p.address = j["address"].get<std::string>(); p.age = j["age"].get<int>(); @@ -519,13 +519,12 @@ Likewise, when calling `get<your_type>()`, the `from_json` method will be called Some important things: -* Those methods **MUST** be in your type's namespace, or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). -* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible) and [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible). (There is a way to bypass those requirements described later.) +* Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). +* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass those requirements described later.) #### How do I convert third-party types? -This requires a bit more advanced technique. -But first, let's see how this conversion mechanism works: +This requires a bit more advanced technique. But first, let's see how this conversion mechanism works: The library uses **JSON Serializers** to convert types to json. The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](http://en.cppreference.com/w/cpp/language/adl)). diff --git a/src/json.hpp b/src/json.hpp index f7af945aa..13e7b07d0 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -239,9 +239,6 @@ template<> struct priority_tag<0> {}; // constructors // ////////////////// -// This is an experiment. I need this to move constructors out of basic_json. -// I'm sure there is a better way, but this might need a big basic_json -// refactoring template<value_t> struct external_constructor; template<> diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 039fc9fb8..45e1ba58f 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -239,9 +239,6 @@ template<> struct priority_tag<0> {}; // constructors // ////////////////// -// This is an experiment. I need this to move constructors out of basic_json. -// I'm sure there is a better way, but this might need a big basic_json -// refactoring template<value_t> struct external_constructor; template<> From 94d9b7bc8602b30c2220a74b8a74368c495a0d05 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 25 Jan 2017 21:59:54 +0100 Subject: [PATCH 137/174] :memo: overworked documentation (re-added constructor examples) --- .../basic_json__CompatibleArrayType.cpp | 58 ----- .../basic_json__CompatibleArrayType.link | 1 - .../basic_json__CompatibleArrayType.output | 9 - ...asic_json__CompatibleIntegerNumberType.cpp | 27 --- ...sic_json__CompatibleIntegerNumberType.link | 1 - ...c_json__CompatibleIntegerNumberType.output | 5 - .../basic_json__CompatibleNumberFloatType.cpp | 21 -- ...basic_json__CompatibleNumberFloatType.link | 1 - ...sic_json__CompatibleNumberFloatType.output | 3 - .../basic_json__CompatibleObjectType.cpp | 41 ---- .../basic_json__CompatibleObjectType.link | 1 - .../basic_json__CompatibleObjectType.output | 4 - .../basic_json__CompatibleStringType.cpp | 15 -- .../basic_json__CompatibleStringType.link | 1 - .../basic_json__CompatibleStringType.output | 1 - doc/examples/basic_json__CompatibleType.cpp | 211 ++++++++++++++++++ doc/examples/basic_json__CompatibleType.link | 1 + .../basic_json__CompatibleType.output | 38 ++++ doc/examples/basic_json__array_t.cpp | 15 -- doc/examples/basic_json__array_t.link | 1 - doc/examples/basic_json__array_t.output | 1 - doc/examples/basic_json__boolean_t.cpp | 14 -- doc/examples/basic_json__boolean_t.link | 1 - doc/examples/basic_json__boolean_t.output | 2 - doc/examples/basic_json__const_int.cpp | 15 -- doc/examples/basic_json__const_int.link | 1 - doc/examples/basic_json__const_int.output | 1 - doc/examples/basic_json__number_float_t.cpp | 21 -- doc/examples/basic_json__number_float_t.link | 1 - .../basic_json__number_float_t.output | 3 - doc/examples/basic_json__number_integer_t.cpp | 14 -- .../basic_json__number_integer_t.link | 1 - .../basic_json__number_integer_t.output | 1 - doc/examples/basic_json__object_t.cpp | 15 -- doc/examples/basic_json__object_t.link | 1 - doc/examples/basic_json__object_t.output | 1 - doc/examples/basic_json__string_t.cpp | 15 -- doc/examples/basic_json__string_t.link | 1 - doc/examples/basic_json__string_t.output | 1 - .../basic_json__string_t_value_type.cpp | 12 - .../basic_json__string_t_value_type.link | 1 - .../basic_json__string_t_value_type.output | 1 - src/json.hpp | 64 ++++-- src/json.hpp.re2c | 64 ++++-- 44 files changed, 352 insertions(+), 355 deletions(-) delete mode 100644 doc/examples/basic_json__CompatibleArrayType.cpp delete mode 100644 doc/examples/basic_json__CompatibleArrayType.link delete mode 100644 doc/examples/basic_json__CompatibleArrayType.output delete mode 100644 doc/examples/basic_json__CompatibleIntegerNumberType.cpp delete mode 100644 doc/examples/basic_json__CompatibleIntegerNumberType.link delete mode 100644 doc/examples/basic_json__CompatibleIntegerNumberType.output delete mode 100644 doc/examples/basic_json__CompatibleNumberFloatType.cpp delete mode 100644 doc/examples/basic_json__CompatibleNumberFloatType.link delete mode 100644 doc/examples/basic_json__CompatibleNumberFloatType.output delete mode 100644 doc/examples/basic_json__CompatibleObjectType.cpp delete mode 100644 doc/examples/basic_json__CompatibleObjectType.link delete mode 100644 doc/examples/basic_json__CompatibleObjectType.output delete mode 100644 doc/examples/basic_json__CompatibleStringType.cpp delete mode 100644 doc/examples/basic_json__CompatibleStringType.link delete mode 100644 doc/examples/basic_json__CompatibleStringType.output create mode 100644 doc/examples/basic_json__CompatibleType.cpp create mode 100644 doc/examples/basic_json__CompatibleType.link create mode 100644 doc/examples/basic_json__CompatibleType.output delete mode 100644 doc/examples/basic_json__array_t.cpp delete mode 100644 doc/examples/basic_json__array_t.link delete mode 100644 doc/examples/basic_json__array_t.output delete mode 100644 doc/examples/basic_json__boolean_t.cpp delete mode 100644 doc/examples/basic_json__boolean_t.link delete mode 100644 doc/examples/basic_json__boolean_t.output delete mode 100644 doc/examples/basic_json__const_int.cpp delete mode 100644 doc/examples/basic_json__const_int.link delete mode 100644 doc/examples/basic_json__const_int.output delete mode 100644 doc/examples/basic_json__number_float_t.cpp delete mode 100644 doc/examples/basic_json__number_float_t.link delete mode 100644 doc/examples/basic_json__number_float_t.output delete mode 100644 doc/examples/basic_json__number_integer_t.cpp delete mode 100644 doc/examples/basic_json__number_integer_t.link delete mode 100644 doc/examples/basic_json__number_integer_t.output delete mode 100644 doc/examples/basic_json__object_t.cpp delete mode 100644 doc/examples/basic_json__object_t.link delete mode 100644 doc/examples/basic_json__object_t.output delete mode 100644 doc/examples/basic_json__string_t.cpp delete mode 100644 doc/examples/basic_json__string_t.link delete mode 100644 doc/examples/basic_json__string_t.output delete mode 100644 doc/examples/basic_json__string_t_value_type.cpp delete mode 100644 doc/examples/basic_json__string_t_value_type.link delete mode 100644 doc/examples/basic_json__string_t_value_type.output diff --git a/doc/examples/basic_json__CompatibleArrayType.cpp b/doc/examples/basic_json__CompatibleArrayType.cpp deleted file mode 100644 index 26a1a1014..000000000 --- a/doc/examples/basic_json__CompatibleArrayType.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include <json.hpp> -#include <deque> -#include <list> -#include <forward_list> -#include <set> -#include <unordered_set> - -using json = nlohmann::json; - -int main() -{ - // create an array from std::vector - std::vector<int> c_vector {1, 2, 3, 4}; - json j_vec(c_vector); - - // create an array from std::deque - std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6}; - json j_deque(c_deque); - - // create an array from std::list - std::list<bool> c_list {true, true, false, true}; - json j_list(c_list); - - // create an array from std::forward_list - std::forward_list<int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543}; - json j_flist(c_flist); - - // create an array from std::array - std::array<unsigned long, 4> c_array {{1, 2, 3, 4}}; - json j_array(c_array); - - // create an array from std::set - std::set<std::string> c_set {"one", "two", "three", "four", "one"}; - json j_set(c_set); // only one entry for "one" is used - - // create an array from std::unordered_set - std::unordered_set<std::string> c_uset {"one", "two", "three", "four", "one"}; - json j_uset(c_uset); // only one entry for "one" is used - - // create an array from std::multiset - std::multiset<std::string> c_mset {"one", "two", "one", "four"}; - json j_mset(c_mset); // both entries for "one" are used - - // create an array from std::unordered_multiset - std::unordered_multiset<std::string> c_umset {"one", "two", "one", "four"}; - json j_umset(c_umset); // both entries for "one" are used - - // serialize the JSON arrays - std::cout << j_vec << '\n'; - std::cout << j_deque << '\n'; - std::cout << j_list << '\n'; - std::cout << j_flist << '\n'; - std::cout << j_array << '\n'; - std::cout << j_set << '\n'; - std::cout << j_uset << '\n'; - std::cout << j_mset << '\n'; - std::cout << j_umset << '\n'; -} diff --git a/doc/examples/basic_json__CompatibleArrayType.link b/doc/examples/basic_json__CompatibleArrayType.link deleted file mode 100644 index 95ecb0508..000000000 --- a/doc/examples/basic_json__CompatibleArrayType.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/3BIhBw91FUVuHE1D"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleArrayType.output b/doc/examples/basic_json__CompatibleArrayType.output deleted file mode 100644 index 428505a17..000000000 --- a/doc/examples/basic_json__CompatibleArrayType.output +++ /dev/null @@ -1,9 +0,0 @@ -[1,2,3,4] -[1.2,2.3,3.4,5.6] -[true,true,false,true] -[12345678909876,23456789098765,34567890987654,45678909876543] -[1,2,3,4] -["four","one","three","two"] -["four","three","two","one"] -["four","one","one","two"] -["four","two","one","one"] diff --git a/doc/examples/basic_json__CompatibleIntegerNumberType.cpp b/doc/examples/basic_json__CompatibleIntegerNumberType.cpp deleted file mode 100644 index 50e751d11..000000000 --- a/doc/examples/basic_json__CompatibleIntegerNumberType.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create values of different integer types - short n42 = 42; - int n23 = 23; - long n1024 = 1024; - int_least32_t n17 = 17; - uint8_t n8 = 8; - - // create JSON numbers - json j42(n42); - json j23(n23); - json j1024(n1024); - json j17(n17); - json j8(n8); - - // serialize the JSON numbers - std::cout << j42 << '\n'; - std::cout << j23 << '\n'; - std::cout << j1024 << '\n'; - std::cout << j17 << '\n'; - std::cout << j8 << '\n'; -} diff --git a/doc/examples/basic_json__CompatibleIntegerNumberType.link b/doc/examples/basic_json__CompatibleIntegerNumberType.link deleted file mode 100644 index 7a37e9eb2..000000000 --- a/doc/examples/basic_json__CompatibleIntegerNumberType.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/PcMzhcu2RpD7KSwr"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleIntegerNumberType.output b/doc/examples/basic_json__CompatibleIntegerNumberType.output deleted file mode 100644 index c7f24d63d..000000000 --- a/doc/examples/basic_json__CompatibleIntegerNumberType.output +++ /dev/null @@ -1,5 +0,0 @@ -42 -23 -1024 -17 -8 diff --git a/doc/examples/basic_json__CompatibleNumberFloatType.cpp b/doc/examples/basic_json__CompatibleNumberFloatType.cpp deleted file mode 100644 index 6f8d3f67a..000000000 --- a/doc/examples/basic_json__CompatibleNumberFloatType.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create values of different floating-point types - float f42 = 42.23; - float f_nan = 1.0f / 0.0f; - double f23 = 23.42; - - // create JSON numbers - json j42(f42); - json j_nan(f_nan); - json j23(f23); - - // serialize the JSON numbers - std::cout << j42 << '\n'; - std::cout << j_nan << '\n'; - std::cout << j23 << '\n'; -} diff --git a/doc/examples/basic_json__CompatibleNumberFloatType.link b/doc/examples/basic_json__CompatibleNumberFloatType.link deleted file mode 100644 index 9fbc73177..000000000 --- a/doc/examples/basic_json__CompatibleNumberFloatType.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/2TCYWSrOxnR05AZI"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleNumberFloatType.output b/doc/examples/basic_json__CompatibleNumberFloatType.output deleted file mode 100644 index 64bb796c3..000000000 --- a/doc/examples/basic_json__CompatibleNumberFloatType.output +++ /dev/null @@ -1,3 +0,0 @@ -42.2299995422363 -null -23.42 diff --git a/doc/examples/basic_json__CompatibleObjectType.cpp b/doc/examples/basic_json__CompatibleObjectType.cpp deleted file mode 100644 index d284b697b..000000000 --- a/doc/examples/basic_json__CompatibleObjectType.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include <json.hpp> -#include <unordered_map> - -using json = nlohmann::json; - -int main() -{ - // create an object from std::map - std::map<std::string, int> c_map - { - {"one", 1}, {"two", 2}, {"three", 3} - }; - json j_map(c_map); - - // create an object from std::unordered_map - std::unordered_map<const char*, double> c_umap - { - {"one", 1.2}, {"two", 2.3}, {"three", 3.4} - }; - json j_umap(c_umap); - - // create an object from std::multimap - std::multimap<std::string, bool> c_mmap - { - {"one", true}, {"two", true}, {"three", false}, {"three", true} - }; - json j_mmap(c_mmap); // only one entry for key "three" is used - - // create an object from std::unordered_multimap - std::unordered_multimap<std::string, bool> c_ummap - { - {"one", true}, {"two", true}, {"three", false}, {"three", true} - }; - json j_ummap(c_ummap); // only one entry for key "three" is used - - // serialize the JSON objects - std::cout << j_map << '\n'; - std::cout << j_umap << '\n'; - std::cout << j_mmap << '\n'; - std::cout << j_ummap << '\n'; -} diff --git a/doc/examples/basic_json__CompatibleObjectType.link b/doc/examples/basic_json__CompatibleObjectType.link deleted file mode 100644 index 7512fb35a..000000000 --- a/doc/examples/basic_json__CompatibleObjectType.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/JzLCMcSXNsh4uVWa"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleObjectType.output b/doc/examples/basic_json__CompatibleObjectType.output deleted file mode 100644 index c70f71848..000000000 --- a/doc/examples/basic_json__CompatibleObjectType.output +++ /dev/null @@ -1,4 +0,0 @@ -{"one":1,"three":3,"two":2} -{"one":1.2,"three":3.4,"two":2.3} -{"one":true,"three":false,"two":true} -{"one":true,"three":false,"two":true} diff --git a/doc/examples/basic_json__CompatibleStringType.cpp b/doc/examples/basic_json__CompatibleStringType.cpp deleted file mode 100644 index a0f3b4f67..000000000 --- a/doc/examples/basic_json__CompatibleStringType.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create a string value - std::string s = "The quick brown fox jumps over the lazy dog."; - - // create a JSON string value - json j = s; - - // serialize the JSON string - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__CompatibleStringType.link b/doc/examples/basic_json__CompatibleStringType.link deleted file mode 100644 index 351d6c0ce..000000000 --- a/doc/examples/basic_json__CompatibleStringType.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/b9hbCY8zfOiTOuoK"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleStringType.output b/doc/examples/basic_json__CompatibleStringType.output deleted file mode 100644 index 1316dd98a..000000000 --- a/doc/examples/basic_json__CompatibleStringType.output +++ /dev/null @@ -1 +0,0 @@ -"The quick brown fox jumps over the lazy dog." diff --git a/doc/examples/basic_json__CompatibleType.cpp b/doc/examples/basic_json__CompatibleType.cpp new file mode 100644 index 000000000..ff564a72f --- /dev/null +++ b/doc/examples/basic_json__CompatibleType.cpp @@ -0,0 +1,211 @@ +#include <json.hpp> +#include <deque> +#include <list> +#include <forward_list> +#include <set> +#include <unordered_map> +#include <unordered_set> + +using json = nlohmann::json; + +int main() +{ + // ============ + // object types + // ============ + + // create an object from an object_t value + json::object_t object_value = { {"one", 1}, {"two", 2} }; + json j_object_t(object_value); + + // create an object from std::map + std::map<std::string, int> c_map + { + {"one", 1}, {"two", 2}, {"three", 3} + }; + json j_map(c_map); + + // create an object from std::unordered_map + std::unordered_map<const char*, double> c_umap + { + {"one", 1.2}, {"two", 2.3}, {"three", 3.4} + }; + json j_umap(c_umap); + + // create an object from std::multimap + std::multimap<std::string, bool> c_mmap + { + {"one", true}, {"two", true}, {"three", false}, {"three", true} + }; + json j_mmap(c_mmap); // only one entry for key "three" is used + + // create an object from std::unordered_multimap + std::unordered_multimap<std::string, bool> c_ummap + { + {"one", true}, {"two", true}, {"three", false}, {"three", true} + }; + json j_ummap(c_ummap); // only one entry for key "three" is used + + // serialize the JSON objects + std::cout << j_object_t << '\n'; + std::cout << j_map << '\n'; + std::cout << j_umap << '\n'; + std::cout << j_mmap << '\n'; + std::cout << j_ummap << "\n\n"; + + + // =========== + // array types + // =========== + + // create an array from an array_t value + json::array_t array_value = {"one", "two", 3, 4.5, false}; + json j_array_t(array_value); + + // create an array from std::vector + std::vector<int> c_vector {1, 2, 3, 4}; + json j_vec(c_vector); + + // create an array from std::deque + std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6}; + json j_deque(c_deque); + + // create an array from std::list + std::list<bool> c_list {true, true, false, true}; + json j_list(c_list); + + // create an array from std::forward_list + std::forward_list<int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543}; + json j_flist(c_flist); + + // create an array from std::array + std::array<unsigned long, 4> c_array {{1, 2, 3, 4}}; + json j_array(c_array); + + // create an array from std::set + std::set<std::string> c_set {"one", "two", "three", "four", "one"}; + json j_set(c_set); // only one entry for "one" is used + + // create an array from std::unordered_set + std::unordered_set<std::string> c_uset {"one", "two", "three", "four", "one"}; + json j_uset(c_uset); // only one entry for "one" is used + + // create an array from std::multiset + std::multiset<std::string> c_mset {"one", "two", "one", "four"}; + json j_mset(c_mset); // both entries for "one" are used + + // create an array from std::unordered_multiset + std::unordered_multiset<std::string> c_umset {"one", "two", "one", "four"}; + json j_umset(c_umset); // both entries for "one" are used + + // serialize the JSON arrays + std::cout << j_array_t << '\n'; + std::cout << j_vec << '\n'; + std::cout << j_deque << '\n'; + std::cout << j_list << '\n'; + std::cout << j_flist << '\n'; + std::cout << j_array << '\n'; + std::cout << j_set << '\n'; + std::cout << j_uset << '\n'; + std::cout << j_mset << '\n'; + std::cout << j_umset << "\n\n"; + + + // ============ + // string types + // ============ + + // create string from a string_t value + json::string_t string_value = "The quick brown fox jumps over the lazy dog."; + json j_string_t(string_value); + + // create a JSON string directly from a string literal + json j_string_literal("The quick brown fox jumps over the lazy dog."); + + // create string from std::string + std::string s_stdstring = "The quick brown fox jumps over the lazy dog."; + json j_stdstring(s_stdstring); + + // serialize the JSON strings + std::cout << j_string_t << '\n'; + std::cout << j_string_literal << '\n'; + std::cout << j_stdstring << "\n\n"; + + + // ============ + // number types + // ============ + + // create a JSON number from number_integer_t + json::number_integer_t value_integer_t = -42; + json j_integer_t(value_integer_t); + + // create a JSON number from number_unsigned_t + json::number_integer_t value_unsigned_t = 17; + json j_unsigned_t(value_unsigned_t); + + // create a JSON number from an anonymous enum + enum { enum_value = 17 }; + json j_enum(enum_value); + + // create values of different integer types + short n_short = 42; + int n_int = -23; + long n_long = 1024; + int_least32_t n_int_least32_t = -17; + uint8_t n_uint8_t = 8; + + // create (integer) JSON numbers + json j_short(n_short); + json j_int(n_int); + json j_long(n_long); + json j_int_least32_t(n_int_least32_t); + json j_uint8_t(n_uint8_t); + + // create values of different floating-point types + json::number_float_t v_ok = 3.141592653589793; + json::number_float_t v_nan = NAN; + json::number_float_t v_infinity = INFINITY; + + // create values of different floating-point types + float n_float = 42.23; + float n_float_nan = 1.0f / 0.0f; + double n_double = 23.42; + + // create (floating point) JSON numbers + json j_ok(v_ok); + json j_nan(v_nan); + json j_infinity(v_infinity); + json j_float(n_float); + json j_float_nan(n_float_nan); + json j_double(n_double); + + // serialize the JSON numbers + std::cout << j_integer_t << '\n'; + std::cout << j_unsigned_t << '\n'; + std::cout << j_enum << '\n'; + std::cout << j_short << '\n'; + std::cout << j_int << '\n'; + std::cout << j_long << '\n'; + std::cout << j_int_least32_t << '\n'; + std::cout << j_uint8_t << '\n'; + std::cout << j_ok << '\n'; + std::cout << j_nan << '\n'; + std::cout << j_infinity << '\n'; + std::cout << j_float << '\n'; + std::cout << j_float_nan << '\n'; + std::cout << j_double << "\n\n"; + + + // ============= + // boolean types + // ============= + + // create boolean values + json j_truth = true; + json j_falsity = false; + + // serialize the JSON booleans + std::cout << j_truth << '\n'; + std::cout << j_falsity << '\n'; +} diff --git a/doc/examples/basic_json__CompatibleType.link b/doc/examples/basic_json__CompatibleType.link new file mode 100644 index 000000000..a78f01bb8 --- /dev/null +++ b/doc/examples/basic_json__CompatibleType.link @@ -0,0 +1 @@ +<a target="_blank" href="http://melpon.org/wandbox/permlink/VM7W2kpE7sIYJ5DW"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleType.output b/doc/examples/basic_json__CompatibleType.output new file mode 100644 index 000000000..d69ff44f7 --- /dev/null +++ b/doc/examples/basic_json__CompatibleType.output @@ -0,0 +1,38 @@ +{"one":1,"two":2} +{"one":1,"three":3,"two":2} +{"one":1.2,"three":3.4,"two":2.3} +{"one":true,"three":false,"two":true} +{"one":true,"three":false,"two":true} + +["one","two",3,4.5,false] +[1,2,3,4] +[1.2,2.3,3.4,5.6] +[true,true,false,true] +[12345678909876,23456789098765,34567890987654,45678909876543] +[1,2,3,4] +["four","one","three","two"] +["four","three","two","one"] +["four","one","one","two"] +["four","two","one","one"] + +"The quick brown fox jumps over the lazy dog." +"The quick brown fox jumps over the lazy dog." +"The quick brown fox jumps over the lazy dog." + +-42 +17 +17 +42 +-23 +1024 +-17 +8 +3.14159265358979 +null +null +42.2299995422363 +null +23.42 + +true +false diff --git a/doc/examples/basic_json__array_t.cpp b/doc/examples/basic_json__array_t.cpp deleted file mode 100644 index 1bb6931b2..000000000 --- a/doc/examples/basic_json__array_t.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create an array_t value - json::array_t value = {"one", "two", 3, 4.5, false}; - - // create a JSON array from the value - json j(value); - - // serialize the JSON array - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__array_t.link b/doc/examples/basic_json__array_t.link deleted file mode 100644 index 70c9cb8cd..000000000 --- a/doc/examples/basic_json__array_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/dTbSNAvl6TqrMEAn"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__array_t.output b/doc/examples/basic_json__array_t.output deleted file mode 100644 index d379a756e..000000000 --- a/doc/examples/basic_json__array_t.output +++ /dev/null @@ -1 +0,0 @@ -["one","two",3,4.5,false] diff --git a/doc/examples/basic_json__boolean_t.cpp b/doc/examples/basic_json__boolean_t.cpp deleted file mode 100644 index 38f014e01..000000000 --- a/doc/examples/basic_json__boolean_t.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create boolean values - json j_truth = true; - json j_falsity = false; - - // serialize the JSON booleans - std::cout << j_truth << '\n'; - std::cout << j_falsity << '\n'; -} diff --git a/doc/examples/basic_json__boolean_t.link b/doc/examples/basic_json__boolean_t.link deleted file mode 100644 index c64e1fc47..000000000 --- a/doc/examples/basic_json__boolean_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/VmVl9pyrQp8LyOnU"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__boolean_t.output b/doc/examples/basic_json__boolean_t.output deleted file mode 100644 index da29283aa..000000000 --- a/doc/examples/basic_json__boolean_t.output +++ /dev/null @@ -1,2 +0,0 @@ -true -false diff --git a/doc/examples/basic_json__const_int.cpp b/doc/examples/basic_json__const_int.cpp deleted file mode 100644 index 7e38544bf..000000000 --- a/doc/examples/basic_json__const_int.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // an anonymous enum - enum { t = 17 }; - - // create a JSON number from the enum - json j(t); - - // serialize the JSON numbers - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__const_int.link b/doc/examples/basic_json__const_int.link deleted file mode 100644 index 68a9e235d..000000000 --- a/doc/examples/basic_json__const_int.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/3xQ1qy7BT9OrSSCo"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__const_int.output b/doc/examples/basic_json__const_int.output deleted file mode 100644 index 98d9bcb75..000000000 --- a/doc/examples/basic_json__const_int.output +++ /dev/null @@ -1 +0,0 @@ -17 diff --git a/doc/examples/basic_json__number_float_t.cpp b/doc/examples/basic_json__number_float_t.cpp deleted file mode 100644 index 92533b7d0..000000000 --- a/doc/examples/basic_json__number_float_t.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create values of different floating-point types - json::number_float_t v_ok = 3.141592653589793; - json::number_float_t v_nan = NAN; - json::number_float_t v_infinity = INFINITY; - - // create JSON numbers - json j_ok(v_ok); - json j_nan(v_nan); - json j_infinity(v_infinity); - - // serialize the JSON numbers - std::cout << j_ok << '\n'; - std::cout << j_nan << '\n'; - std::cout << j_infinity << '\n'; -} diff --git a/doc/examples/basic_json__number_float_t.link b/doc/examples/basic_json__number_float_t.link deleted file mode 100644 index 47aa2553a..000000000 --- a/doc/examples/basic_json__number_float_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/OTgOxjIAKFvxpFdm"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__number_float_t.output b/doc/examples/basic_json__number_float_t.output deleted file mode 100644 index 964a7b1f2..000000000 --- a/doc/examples/basic_json__number_float_t.output +++ /dev/null @@ -1,3 +0,0 @@ -3.14159265358979 -null -null diff --git a/doc/examples/basic_json__number_integer_t.cpp b/doc/examples/basic_json__number_integer_t.cpp deleted file mode 100644 index 1078f360e..000000000 --- a/doc/examples/basic_json__number_integer_t.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create a JSON number from number_integer_t - json::number_integer_t value = 42; - - json j(value); - - // serialize the JSON numbers - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__number_integer_t.link b/doc/examples/basic_json__number_integer_t.link deleted file mode 100644 index 5d4499b59..000000000 --- a/doc/examples/basic_json__number_integer_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/cCQRCvjXdRM9YpT5"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__number_integer_t.output b/doc/examples/basic_json__number_integer_t.output deleted file mode 100644 index d81cc0710..000000000 --- a/doc/examples/basic_json__number_integer_t.output +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/doc/examples/basic_json__object_t.cpp b/doc/examples/basic_json__object_t.cpp deleted file mode 100644 index 39e2fcc0c..000000000 --- a/doc/examples/basic_json__object_t.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create an object_t value - json::object_t value = { {"one", 1}, {"two", 2} }; - - // create a JSON object from the value - json j(value); - - // serialize the JSON object - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__object_t.link b/doc/examples/basic_json__object_t.link deleted file mode 100644 index 2e07a3efb..000000000 --- a/doc/examples/basic_json__object_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/DgtHcz5L6JphTOGJ"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__object_t.output b/doc/examples/basic_json__object_t.output deleted file mode 100644 index 62376d83e..000000000 --- a/doc/examples/basic_json__object_t.output +++ /dev/null @@ -1 +0,0 @@ -{"one":1,"two":2} diff --git a/doc/examples/basic_json__string_t.cpp b/doc/examples/basic_json__string_t.cpp deleted file mode 100644 index 3205f623d..000000000 --- a/doc/examples/basic_json__string_t.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create an string_t value - json::string_t value = "The quick brown fox jumps over the lazy doc"; - - // create a JSON string from the value - json j(value); - - // serialize the JSON array - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__string_t.link b/doc/examples/basic_json__string_t.link deleted file mode 100644 index d7d02f2fb..000000000 --- a/doc/examples/basic_json__string_t.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/cwNYP1q2mT8CFLTk"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__string_t.output b/doc/examples/basic_json__string_t.output deleted file mode 100644 index 89990044c..000000000 --- a/doc/examples/basic_json__string_t.output +++ /dev/null @@ -1 +0,0 @@ -"The quick brown fox jumps over the lazy doc" diff --git a/doc/examples/basic_json__string_t_value_type.cpp b/doc/examples/basic_json__string_t_value_type.cpp deleted file mode 100644 index 5379ca064..000000000 --- a/doc/examples/basic_json__string_t_value_type.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include <json.hpp> - -using json = nlohmann::json; - -int main() -{ - // create a JSON string directly from a string literal - json j("The quick brown fox jumps over the lazy doc"); - - // serialize the JSON array - std::cout << j << '\n'; -} diff --git a/doc/examples/basic_json__string_t_value_type.link b/doc/examples/basic_json__string_t_value_type.link deleted file mode 100644 index 569087684..000000000 --- a/doc/examples/basic_json__string_t_value_type.link +++ /dev/null @@ -1 +0,0 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/AtV4zVErfLwkileg"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/basic_json__string_t_value_type.output b/doc/examples/basic_json__string_t_value_type.output deleted file mode 100644 index 89990044c..000000000 --- a/doc/examples/basic_json__string_t_value_type.output +++ /dev/null @@ -1 +0,0 @@ -"The quick brown fox jumps over the lazy doc" diff --git a/src/json.hpp b/src/json.hpp index 13e7b07d0..29c1a7ab4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1907,31 +1907,70 @@ class basic_json } /*! - @brief forwards the parameter to json_serializer<U>::to_json method (U = uncvref_t<T>) + @brief create a JSON value - this constructor is chosen if: - - T is not derived from std::istream - - T is not @ref basic_json (to avoid hijacking copy/move constructors) - - T is not a @ref basic_json nested type (@ref json_pointer, @ref iterator, etc ...) - - @ref json_serializer<U> has a to_json(basic_json_t&, T&&) method + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exsits. The constructor forwards the + parameter @a val to that method (to `json_serializer<U>::to_json` method + with `U = uncvref_t<CompatibleType>`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::set`, `std::unordered_set`, `std::multiset`, and + `unordered_multiset` with a `value_type` from which a @ref basic_json + value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - @ref @ref json_serializer<U> has a + `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t<CompatibleType>` @param[in] val the value to be forwarded - @throw what json_serializer<U>::to_json throws + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @throw what `json_serializer<U>::to_json()` throws + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} @since version 2.1.0 */ - template<typename T, typename U = detail::uncvref_t<T>, + template<typename CompatibleType, typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t<not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and not detail::is_basic_json_nested_type< basic_json_t, U>::value and detail::has_to_json<basic_json, U>::value, int> = 0> - basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( - std::declval<basic_json_t&>(), std::forward<T>(val)))) + basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t&>(), std::forward<CompatibleType>(val)))) { - JSONSerializer<U>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val)); + assert_invariant(); } /*! @@ -7950,7 +7989,7 @@ class basic_json @complexity Constant. @liveexample{The following code exemplifies `type_name()` for all JSON - types.,typename} + types.,type_name} @since version 1.0.0 */ @@ -7975,7 +8014,6 @@ class basic_json return "number"; } } - } private: diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 45e1ba58f..ab180d9ff 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1907,31 +1907,70 @@ class basic_json } /*! - @brief forwards the parameter to json_serializer<U>::to_json method (U = uncvref_t<T>) + @brief create a JSON value - this constructor is chosen if: - - T is not derived from std::istream - - T is not @ref basic_json (to avoid hijacking copy/move constructors) - - T is not a @ref basic_json nested type (@ref json_pointer, @ref iterator, etc ...) - - @ref json_serializer<U> has a to_json(basic_json_t&, T&&) method + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exsits. The constructor forwards the + parameter @a val to that method (to `json_serializer<U>::to_json` method + with `U = uncvref_t<CompatibleType>`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::set`, `std::unordered_set`, `std::multiset`, and + `unordered_multiset` with a `value_type` from which a @ref basic_json + value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - @ref @ref json_serializer<U> has a + `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t<CompatibleType>` @param[in] val the value to be forwarded - @throw what json_serializer<U>::to_json throws + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @throw what `json_serializer<U>::to_json()` throws + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} @since version 2.1.0 */ - template<typename T, typename U = detail::uncvref_t<T>, + template<typename CompatibleType, typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t<not std::is_base_of<std::istream, U>::value and not std::is_same<U, basic_json_t>::value and not detail::is_basic_json_nested_type< basic_json_t, U>::value and detail::has_to_json<basic_json, U>::value, int> = 0> - basic_json(T && val) noexcept(noexcept(JSONSerializer<U>::to_json( - std::declval<basic_json_t&>(), std::forward<T>(val)))) + basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer<U>::to_json( + std::declval<basic_json_t&>(), std::forward<CompatibleType>(val)))) { - JSONSerializer<U>::to_json(*this, std::forward<T>(val)); + JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val)); + assert_invariant(); } /*! @@ -7950,7 +7989,7 @@ class basic_json @complexity Constant. @liveexample{The following code exemplifies `type_name()` for all JSON - types.,typename} + types.,type_name} @since version 1.0.0 */ @@ -7975,7 +8014,6 @@ class basic_json return "number"; } } - } private: From 4d3053cd42c41dd4bcf6cf45f996a0d1af655fb3 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 25 Jan 2017 22:21:07 +0100 Subject: [PATCH 138/174] :lipstick: some cleanup --- src/json.hpp | 44 +++++++++++++++++++++++++------------------- src/json.hpp.re2c | 44 +++++++++++++++++++++++++------------------- 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 29c1a7ab4..2bc35c4ab 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -204,14 +204,14 @@ using enable_if_t = typename std::enable_if<B, T>::type; template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; -// Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait +// taken from http://stackoverflow.com/a/26936864/266378 template<typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; /* -Implementation of 2 C++17 constructs: conjunction, negation. This is needed +Implementation of two C++17 constructs: conjunction, negation. This is needed to avoid evaluating all the traits in a condition For example: not std::is_same<void, T>::value and has_value_type<T>::value @@ -393,6 +393,7 @@ NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER + template<bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type {}; @@ -468,7 +469,7 @@ struct is_compatible_integer_type }; -// This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists +// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists template<typename BasicJsonType, typename T> struct has_from_json { @@ -530,8 +531,7 @@ void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept template<typename BasicJsonType, typename CompatibleString, enable_if_t<std::is_constructible<typename BasicJsonType::string_t, - CompatibleString>::value, - int> = 0> + CompatibleString>::value, int> = 0> void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); @@ -547,8 +547,7 @@ void to_json(BasicJsonType& j, FloatType val) noexcept template < typename BasicJsonType, typename CompatibleNumberUnsignedType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, - CompatibleNumberUnsignedType>::value, - int> = 0 > + CompatibleNumberUnsignedType>::value, int> = 0 > void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept { external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val)); @@ -557,8 +556,7 @@ void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept template < typename BasicJsonType, typename CompatibleNumberIntegerType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, - CompatibleNumberIntegerType>::value, - int> = 0 > + CompatibleNumberIntegerType>::value, int> = 0 > void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept { external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); @@ -690,7 +688,6 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) } // forward_list doesn't have an insert method -// TODO find a way to avoid including forward_list template<typename BasicJsonType, typename T, typename Allocator> void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { @@ -781,14 +778,15 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which - // might be less efficient than the container constructor for some containers (would it?) + // might be less efficient than the container constructor for some + // containers (would it?) obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); } -// overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) -// -// note: Is it really necessary to provide explicit overloads for boolean_t etc.. -// in case of a custom BooleanType which is not an arithmetic type? +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? template<typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and @@ -802,19 +800,29 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) switch (static_cast<value_t>(j)) { case value_t::number_unsigned: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; + } case value_t::number_integer: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; + } case value_t::number_float: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; + } case value_t::boolean: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; + } default: + { JSON_THROW(std::domain_error("type must be number, but is " + j.type_name())); + } } } @@ -3160,8 +3168,7 @@ class basic_json detail::enable_if_t < not std::is_same<basic_json_t, U>::value and detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, - U>::value, + not detail::has_non_default_from_json<basic_json_t, U>::value, int > = 0 > U get() const noexcept(noexcept(JSONSerializer<U>::from_json( std::declval<const basic_json_t&>(), std::declval<U&>()))) @@ -3196,8 +3203,7 @@ class basic_json typename U = detail::uncvref_t<T>, detail::enable_if_t<not std::is_same<basic_json_t, U>::value and detail::has_non_default_from_json<basic_json_t, - U>::value, - int> = 0 > + U>::value, int> = 0 > U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index ab180d9ff..5a9d2f88c 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -204,14 +204,14 @@ using enable_if_t = typename std::enable_if<B, T>::type; template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; -// Taken from http://stackoverflow.com/questions/26936640/how-to-implement-is-enum-class-type-trait +// taken from http://stackoverflow.com/a/26936864/266378 template<typename T> using is_unscoped_enum = std::integral_constant<bool, std::is_convertible<T, int>::value and std::is_enum<T>::value>; /* -Implementation of 2 C++17 constructs: conjunction, negation. This is needed +Implementation of two C++17 constructs: conjunction, negation. This is needed to avoid evaluating all the traits in a condition For example: not std::is_same<void, T>::value and has_value_type<T>::value @@ -393,6 +393,7 @@ NLOHMANN_JSON_HAS_HELPER(iterator); #undef NLOHMANN_JSON_HAS_HELPER + template<bool B, class RealType, class CompatibleObjectType> struct is_compatible_object_type_impl : std::false_type {}; @@ -468,7 +469,7 @@ struct is_compatible_integer_type }; -// This trait checks if JSONSerializer<T>::from_json(json const&, udt&) exists +// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists template<typename BasicJsonType, typename T> struct has_from_json { @@ -530,8 +531,7 @@ void to_json(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept template<typename BasicJsonType, typename CompatibleString, enable_if_t<std::is_constructible<typename BasicJsonType::string_t, - CompatibleString>::value, - int> = 0> + CompatibleString>::value, int> = 0> void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor<value_t::string>::construct(j, s); @@ -547,8 +547,7 @@ void to_json(BasicJsonType& j, FloatType val) noexcept template < typename BasicJsonType, typename CompatibleNumberUnsignedType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, - CompatibleNumberUnsignedType>::value, - int> = 0 > + CompatibleNumberUnsignedType>::value, int> = 0 > void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept { external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val)); @@ -557,8 +556,7 @@ void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept template < typename BasicJsonType, typename CompatibleNumberIntegerType, enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, - CompatibleNumberIntegerType>::value, - int> = 0 > + CompatibleNumberIntegerType>::value, int> = 0 > void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept { external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); @@ -690,7 +688,6 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) } // forward_list doesn't have an insert method -// TODO find a way to avoid including forward_list template<typename BasicJsonType, typename T, typename Allocator> void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) { @@ -781,14 +778,15 @@ void from_json(const BasicJsonType& j, CompatibleObjectType& obj) using std::begin; using std::end; // we could avoid the assignment, but this might require a for loop, which - // might be less efficient than the container constructor for some containers (would it?) + // might be less efficient than the container constructor for some + // containers (would it?) obj = CompatibleObjectType(begin(*inner_object), end(*inner_object)); } -// overload for arithmetic types, not chosen for basic_json template arguments (BooleanType, etc..) -// -// note: Is it really necessary to provide explicit overloads for boolean_t etc.. -// in case of a custom BooleanType which is not an arithmetic type? +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? template<typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic<ArithmeticType>::value and @@ -802,19 +800,29 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) switch (static_cast<value_t>(j)) { case value_t::number_unsigned: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); break; + } case value_t::number_integer: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); break; + } case value_t::number_float: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); break; + } case value_t::boolean: + { val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>()); break; + } default: + { JSON_THROW(std::domain_error("type must be number, but is " + j.type_name())); + } } } @@ -3160,8 +3168,7 @@ class basic_json detail::enable_if_t < not std::is_same<basic_json_t, U>::value and detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, - U>::value, + not detail::has_non_default_from_json<basic_json_t, U>::value, int > = 0 > U get() const noexcept(noexcept(JSONSerializer<U>::from_json( std::declval<const basic_json_t&>(), std::declval<U&>()))) @@ -3196,8 +3203,7 @@ class basic_json typename U = detail::uncvref_t<T>, detail::enable_if_t<not std::is_same<basic_json_t, U>::value and detail::has_non_default_from_json<basic_json_t, - U>::value, - int> = 0 > + U>::value, int> = 0 > U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) { static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); From 77bb7af5d91606d90c0894ed61459d327c64dda9 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 26 Jan 2017 07:29:37 +0100 Subject: [PATCH 139/174] :memo: added more documentation --- src/json.hpp | 132 +++++++++++++++++++++++++++++++++------------- src/json.hpp.re2c | 132 +++++++++++++++++++++++++++++++++------------- 2 files changed, 188 insertions(+), 76 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2bc35c4ab..06c5683b0 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -956,6 +956,8 @@ default; will be used in @ref number_integer_t) default; will be used in @ref number_float_t) @tparam AllocatorType type of the allocator to use (`std::allocator` by default) +@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` +and `from_json()` @requirement The class satisfies the following concept requirements: - Basic @@ -2997,6 +2999,10 @@ class basic_json /// @} private: + ////////////////// + // value access // + ////////////////// + /// get a boolean (explicit) boolean_t get_impl(boolean_t* /*unused*/) const { @@ -3124,12 +3130,17 @@ class basic_json } public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + /*! @brief get special-case overload - This overloads avoids a lot of template boilerplate, it can be seen as the identity method + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method - @tparam T type; T == @ref basic_json + @tparam BasicJsonType == @ref basic_json @return a copy of *this @@ -3138,8 +3149,8 @@ class basic_json @since version 2.1.0 */ template < - typename T, - detail::enable_if_t<std::is_same<typename std::remove_const<T>::type, + typename BasicJsonType, + detail::enable_if_t<std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value, int> = 0 > basic_json get() const @@ -3148,66 +3159,111 @@ class basic_json } /*! - @brief get overload for CopyConstructible and DefaultConstructible types - construct a default U value, and call @ref json_serializer<U> from_json method with it + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); + return ret; + @endcode This overloads is chosen if: - - U is not @ref basic_json - - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) - - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); + - @a ValueType is not @ref basic_json, + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `void from_json(const @ref basic_json&, ValueType&)`, and + - @ref json_serializer<ValueType> does not have a `from_json()` method of + the form `ValueType from_json(const @ref basic_json&)` - @return a value of type U + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type - @throw what json_serializer<U> from_json method throws + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector<short>`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map<std::string\, + json>`.,get__ValueType_const} @since version 2.1.0 */ template < - typename T, - typename U = detail::uncvref_t<T>, + typename ValueTypeCV, + typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t < - not std::is_same<basic_json_t, U>::value and - detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, U>::value, + not std::is_same<basic_json_t, ValueType>::value and + detail::has_from_json<basic_json_t, ValueType>::value and + not detail::has_non_default_from_json<basic_json_t, ValueType>::value, int > = 0 > - U get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t&>(), std::declval<U&>()))) + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>()))) { - // we cannot static_assert on T being non-const, because there is support - // for get<const basic_json_t>(), which is why we still need the uncvref - static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - static_assert(std::is_default_constructible<U>::value, - "Types must be DefaultConstructible when used with get"); - U ret; - JSONSerializer<U>::from_json(*this, ret); + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get<const basic_json_t>(), which is why we + // still need the uncvref + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + static_assert(std::is_default_constructible<ValueType>::value, + "types must be DefaultConstructible when used with get()"); + + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); return ret; } /*! - @brief get overload for types than cannot be default constructed or copy constructed + @brief get a value (explicit); special case - If @ref json_serializer<U> has both overloads of from_json, this one is chosen + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer<ValueTypeCV>::from_json(*this); + @endcode This overloads is chosen if: - - U is not @ref basic_json - - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); + - @a ValueType is not @ref basic_json and + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `ValueType from_json(const @ref basic_json&)` - @return a value of type U + @note If @ref json_serializer<ValueType> has both overloads of + `from_json()`, this one is chosen. - @throw what json_serializer<U> from_json method throws + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws @since version 2.1.0 */ template < - typename T, - typename U = detail::uncvref_t<T>, - detail::enable_if_t<not std::is_same<basic_json_t, U>::value and + typename ValueTypeCV, + typename ValueType = detail::uncvref_t<ValueTypeCV>, + detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and detail::has_non_default_from_json<basic_json_t, - U>::value, int> = 0 > - U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + ValueType>::value, int> = 0 > + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>()))) { - static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - return JSONSerializer<T>::from_json(*this); + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return JSONSerializer<ValueTypeCV>::from_json(*this); } /*! diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 5a9d2f88c..0bf3db1d7 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -956,6 +956,8 @@ default; will be used in @ref number_integer_t) default; will be used in @ref number_float_t) @tparam AllocatorType type of the allocator to use (`std::allocator` by default) +@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` +and `from_json()` @requirement The class satisfies the following concept requirements: - Basic @@ -2997,6 +2999,10 @@ class basic_json /// @} private: + ////////////////// + // value access // + ////////////////// + /// get a boolean (explicit) boolean_t get_impl(boolean_t* /*unused*/) const { @@ -3124,12 +3130,17 @@ class basic_json } public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + /*! @brief get special-case overload - This overloads avoids a lot of template boilerplate, it can be seen as the identity method + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method - @tparam T type; T == @ref basic_json + @tparam BasicJsonType == @ref basic_json @return a copy of *this @@ -3138,8 +3149,8 @@ class basic_json @since version 2.1.0 */ template < - typename T, - detail::enable_if_t<std::is_same<typename std::remove_const<T>::type, + typename BasicJsonType, + detail::enable_if_t<std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value, int> = 0 > basic_json get() const @@ -3148,66 +3159,111 @@ class basic_json } /*! - @brief get overload for CopyConstructible and DefaultConstructible types - construct a default U value, and call @ref json_serializer<U> from_json method with it + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); + return ret; + @endcode This overloads is chosen if: - - U is not @ref basic_json - - @ref json_serializer<U> has a from_json method of the form: void from_json(const @ref basic_json&, U&) - - @ref json_serializer<U> does not have a from_json method of the form: U from_json(const @ref basic_json&); + - @a ValueType is not @ref basic_json, + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `void from_json(const @ref basic_json&, ValueType&)`, and + - @ref json_serializer<ValueType> does not have a `from_json()` method of + the form `ValueType from_json(const @ref basic_json&)` - @return a value of type U + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type - @throw what json_serializer<U> from_json method throws + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector<short>`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map<std::string\, + json>`.,get__ValueType_const} @since version 2.1.0 */ template < - typename T, - typename U = detail::uncvref_t<T>, + typename ValueTypeCV, + typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t < - not std::is_same<basic_json_t, U>::value and - detail::has_from_json<basic_json_t, U>::value and - not detail::has_non_default_from_json<basic_json_t, U>::value, + not std::is_same<basic_json_t, ValueType>::value and + detail::has_from_json<basic_json_t, ValueType>::value and + not detail::has_non_default_from_json<basic_json_t, ValueType>::value, int > = 0 > - U get() const noexcept(noexcept(JSONSerializer<U>::from_json( - std::declval<const basic_json_t&>(), std::declval<U&>()))) + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>()))) { - // we cannot static_assert on T being non-const, because there is support - // for get<const basic_json_t>(), which is why we still need the uncvref - static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - static_assert(std::is_default_constructible<U>::value, - "Types must be DefaultConstructible when used with get"); - U ret; - JSONSerializer<U>::from_json(*this, ret); + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get<const basic_json_t>(), which is why we + // still need the uncvref + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + static_assert(std::is_default_constructible<ValueType>::value, + "types must be DefaultConstructible when used with get()"); + + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); return ret; } /*! - @brief get overload for types than cannot be default constructed or copy constructed + @brief get a value (explicit); special case - If @ref json_serializer<U> has both overloads of from_json, this one is chosen + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer<ValueTypeCV>::from_json(*this); + @endcode This overloads is chosen if: - - U is not @ref basic_json - - @ref json_serializer<U> has a from_json method of the form: U from_json(const @ref basic_json&); + - @a ValueType is not @ref basic_json and + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `ValueType from_json(const @ref basic_json&)` - @return a value of type U + @note If @ref json_serializer<ValueType> has both overloads of + `from_json()`, this one is chosen. - @throw what json_serializer<U> from_json method throws + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws @since version 2.1.0 */ template < - typename T, - typename U = detail::uncvref_t<T>, - detail::enable_if_t<not std::is_same<basic_json_t, U>::value and + typename ValueTypeCV, + typename ValueType = detail::uncvref_t<ValueTypeCV>, + detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and detail::has_non_default_from_json<basic_json_t, - U>::value, int> = 0 > - U get() const noexcept(noexcept(JSONSerializer<T>::from_json(std::declval<const basic_json_t&>()))) + ValueType>::value, int> = 0 > + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>()))) { - static_assert(not std::is_reference<T>::value, "get cannot be used with reference types, you might want to use get_ref"); - return JSONSerializer<T>::from_json(*this); + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return JSONSerializer<ValueTypeCV>::from_json(*this); } /*! From 1305e0355795e41521a1de9b3137b7c0ff4ea01e Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 26 Jan 2017 19:39:34 +0100 Subject: [PATCH 140/174] :memo: fixed documentation --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8cf4865b3..e2e36fd13 100644 --- a/README.md +++ b/README.md @@ -520,7 +520,7 @@ Likewise, when calling `get<your_type>()`, the `from_json` method will be called Some important things: * Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). -* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass those requirements described later.) +* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass this requirement described later.) #### How do I convert third-party types? @@ -583,8 +583,7 @@ struct move_only_type { move_only_type(const move_only_type&) = delete; move_only_type(move_only_type&&) = default; - private: - int i; + int i; }; namespace nlohmann { From cd9701b123df0bc470c3ec15d71b35b3c5410088 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Thu, 26 Jan 2017 20:51:30 +0100 Subject: [PATCH 141/174] :lipstick: cleanup --- src/json.hpp | 78 +++++++++++++++++++++++++---------------------- src/json.hpp.re2c | 78 +++++++++++++++++++++++++---------------------- 2 files changed, 84 insertions(+), 72 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 06c5683b0..6909553a1 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -633,7 +633,7 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { - if (!j.is_boolean()) + if (not j.is_boolean()) { JSON_THROW(std::domain_error("type must be boolean, but is " + j.type_name())); } @@ -643,7 +643,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { - if (!j.is_string()) + if (not j.is_string()) { JSON_THROW(std::domain_error("type must be string, but is " + j.type_name())); } @@ -680,7 +680,7 @@ void from_json(const BasicJsonType& j, UnscopedEnumType& e) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -699,7 +699,7 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) } if (not std::is_same<T, BasicJsonType>::value) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -757,7 +757,7 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -769,7 +769,7 @@ template<typename BasicJsonType, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0> void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { - if (!j.is_object()) + if (not j.is_object()) { JSON_THROW(std::domain_error("type must be object, but is " + j.type_name())); } @@ -828,6 +828,7 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) struct to_json_fn { + private: template<typename BasicJsonType, typename T> auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) -> decltype(to_json(j, std::forward<T>(val)), void()) @@ -887,52 +888,57 @@ struct static_const template<typename T> constexpr T static_const<T>::value; - - -/*! -@brief helper class to create locales with decimal point - -This struct is used a default locale during the JSON serialization. JSON -requires the decimal point to be `.`, so this function overloads the -`do_decimal_point()` function to return `.`. This function is called by -float-to-string conversions to retrieve the decimal separator between integer -and fractional parts. - -@sa https://github.com/nlohmann/json/issues/51#issuecomment-86869315 -@since version 2.0.0 -*/ -struct DecimalSeparator : std::numpunct<char> -{ - char do_decimal_point() const - { - return '.'; - } -}; } // namespace detail +/// namespace to hold default `to_json` / `from_json` functions namespace { constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; } -// default JSONSerializer template argument, doesn't care about template argument -// will use ADL for serialization + +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ template<typename = void, typename = void> struct adl_serializer { - template<typename BasicJsonType, typename T> - static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in, out] val value to write to + */ + template<typename BasicJsonType, typename ValueType> + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template<typename BasicJsonType, typename T> - static void to_json(BasicJsonType& j, T&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in, out] j JSON value to write to + @param[in] val value to read from + */ + template<typename BasicJsonType, typename ValueType> + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<ValueType>(val)); } }; @@ -957,7 +963,7 @@ default; will be used in @ref number_float_t) @tparam AllocatorType type of the allocator to use (`std::allocator` by default) @tparam JSONSerializer the serializer to resolve internal calls to `to_json()` -and `from_json()` +and `from_json()` (@ref adl_serializer by default) @requirement The class satisfies the following concept requirements: - Basic diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 0bf3db1d7..b1df2bf78 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -633,7 +633,7 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { - if (!j.is_boolean()) + if (not j.is_boolean()) { JSON_THROW(std::domain_error("type must be boolean, but is " + j.type_name())); } @@ -643,7 +643,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { - if (!j.is_string()) + if (not j.is_string()) { JSON_THROW(std::domain_error("type must be string, but is " + j.type_name())); } @@ -680,7 +680,7 @@ void from_json(const BasicJsonType& j, UnscopedEnumType& e) template<typename BasicJsonType> void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -699,7 +699,7 @@ void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) } if (not std::is_same<T, BasicJsonType>::value) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -757,7 +757,7 @@ void from_json(const BasicJsonType& j, CompatibleArrayType& arr) // when T == BasicJsonType, do not check if value_t is correct if (not std::is_same<typename CompatibleArrayType::value_type, BasicJsonType>::value) { - if (!j.is_array()) + if (not j.is_array()) { JSON_THROW(std::domain_error("type must be array, but is " + j.type_name())); } @@ -769,7 +769,7 @@ template<typename BasicJsonType, typename CompatibleObjectType, enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value, int> = 0> void from_json(const BasicJsonType& j, CompatibleObjectType& obj) { - if (!j.is_object()) + if (not j.is_object()) { JSON_THROW(std::domain_error("type must be object, but is " + j.type_name())); } @@ -828,6 +828,7 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) struct to_json_fn { + private: template<typename BasicJsonType, typename T> auto call(BasicJsonType& j, T&& val, priority_tag<1>) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) -> decltype(to_json(j, std::forward<T>(val)), void()) @@ -887,52 +888,57 @@ struct static_const template<typename T> constexpr T static_const<T>::value; - - -/*! -@brief helper class to create locales with decimal point - -This struct is used a default locale during the JSON serialization. JSON -requires the decimal point to be `.`, so this function overloads the -`do_decimal_point()` function to return `.`. This function is called by -float-to-string conversions to retrieve the decimal separator between integer -and fractional parts. - -@sa https://github.com/nlohmann/json/issues/51#issuecomment-86869315 -@since version 2.0.0 -*/ -struct DecimalSeparator : std::numpunct<char> -{ - char do_decimal_point() const - { - return '.'; - } -}; } // namespace detail +/// namespace to hold default `to_json` / `from_json` functions namespace { constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; } -// default JSONSerializer template argument, doesn't care about template argument -// will use ADL for serialization + +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ template<typename = void, typename = void> struct adl_serializer { - template<typename BasicJsonType, typename T> - static void from_json(BasicJsonType&& j, T& val) noexcept(noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in, out] val value to write to + */ + template<typename BasicJsonType, typename ValueType> + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } - template<typename BasicJsonType, typename T> - static void to_json(BasicJsonType& j, T&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward<T>(val)))) + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in, out] j JSON value to write to + @param[in] val value to read from + */ + template<typename BasicJsonType, typename ValueType> + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) { - ::nlohmann::to_json(j, std::forward<T>(val)); + ::nlohmann::to_json(j, std::forward<ValueType>(val)); } }; @@ -957,7 +963,7 @@ default; will be used in @ref number_float_t) @tparam AllocatorType type of the allocator to use (`std::allocator` by default) @tparam JSONSerializer the serializer to resolve internal calls to `to_json()` -and `from_json()` +and `from_json()` (@ref adl_serializer by default) @requirement The class satisfies the following concept requirements: - Basic From 2f6260751c15780c9217613cce69d3eb98570d2f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Fri, 27 Jan 2017 18:50:52 +0100 Subject: [PATCH 142/174] :memo: fixed #434 --- README.md | 1 + doc/examples/at__object_t_key_type.cpp | 2 +- doc/examples/at__object_t_key_type.link | 2 +- doc/examples/at__object_t_key_type_const.cpp | 2 +- doc/examples/at__object_t_key_type_const.link | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e2e36fd13..0f5fb760d 100644 --- a/README.md +++ b/README.md @@ -810,6 +810,7 @@ I deeply appreciate the help of the following people. - [gnzlbg](https://github.com/gnzlbg) supported the implementation of user-defined types. - [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio. - [Jared Grubb](https://github.com/jaredgrubb) supported the implementation of user-defined types. +- [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. diff --git a/doc/examples/at__object_t_key_type.cpp b/doc/examples/at__object_t_key_type.cpp index a8fc9998c..83646f155 100644 --- a/doc/examples/at__object_t_key_type.cpp +++ b/doc/examples/at__object_t_key_type.cpp @@ -8,7 +8,7 @@ int main() json object = { {"the good", "il buono"}, - {"the bad", "il cativo"}, + {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; diff --git a/doc/examples/at__object_t_key_type.link b/doc/examples/at__object_t_key_type.link index e01197e69..4a050ecfd 100644 --- a/doc/examples/at__object_t_key_type.link +++ b/doc/examples/at__object_t_key_type.link @@ -1 +1 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/rsnwWxpDjmtRRSzb"><b>online</b></a> \ No newline at end of file +<a target="_blank" href="http://melpon.org/wandbox/permlink/tb5CaFfsMWpAvi7m"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/at__object_t_key_type_const.cpp b/doc/examples/at__object_t_key_type_const.cpp index 0686db45e..0e8d9d728 100644 --- a/doc/examples/at__object_t_key_type_const.cpp +++ b/doc/examples/at__object_t_key_type_const.cpp @@ -8,7 +8,7 @@ int main() json object = { {"the good", "il buono"}, - {"the bad", "il cativo"}, + {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; diff --git a/doc/examples/at__object_t_key_type_const.link b/doc/examples/at__object_t_key_type_const.link index 2588529b8..1ad9c07d9 100644 --- a/doc/examples/at__object_t_key_type_const.link +++ b/doc/examples/at__object_t_key_type_const.link @@ -1 +1 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/aeoZrnhnb3HKClCY"><b>online</b></a> \ No newline at end of file +<a target="_blank" href="http://melpon.org/wandbox/permlink/NFG86H5khRUePc1s"><b>online</b></a> \ No newline at end of file From d870826811039034e517c4e64e35a833bddf666c Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 16:03:35 +0100 Subject: [PATCH 143/174] :bookmark: set version to 2.1.0 --- CMakeLists.txt | 2 +- ChangeLog.md | 37 ++++++++++++++++++++++++++ doc/Doxyfile | 2 +- doc/index.md | 2 +- src/json.hpp | 6 ++--- src/json.hpp.re2c | 6 ++--- test/src/fuzzer-driver_afl.cpp | 2 +- test/src/fuzzer-parse_cbor.cpp | 2 +- test/src/fuzzer-parse_json.cpp | 2 +- test/src/fuzzer-parse_msgpack.cpp | 2 +- test/src/unit-algorithms.cpp | 2 +- test/src/unit-allocator.cpp | 2 +- test/src/unit-capacity.cpp | 2 +- test/src/unit-cbor.cpp | 2 +- test/src/unit-class_const_iterator.cpp | 2 +- test/src/unit-class_iterator.cpp | 2 +- test/src/unit-class_lexer.cpp | 2 +- test/src/unit-class_parser.cpp | 2 +- test/src/unit-comparison.cpp | 2 +- test/src/unit-concepts.cpp | 2 +- test/src/unit-constructor1.cpp | 2 +- test/src/unit-constructor2.cpp | 2 +- test/src/unit-convenience.cpp | 2 +- test/src/unit-conversions.cpp | 2 +- test/src/unit-deserialization.cpp | 2 +- test/src/unit-element_access1.cpp | 2 +- test/src/unit-element_access2.cpp | 2 +- test/src/unit-inspection.cpp | 2 +- test/src/unit-iterator_wrapper.cpp | 2 +- test/src/unit-iterators1.cpp | 2 +- test/src/unit-iterators2.cpp | 2 +- test/src/unit-json_patch.cpp | 2 +- test/src/unit-json_pointer.cpp | 2 +- test/src/unit-meta.cpp | 2 +- test/src/unit-modifiers.cpp | 2 +- test/src/unit-msgpack.cpp | 2 +- test/src/unit-noexcept.cpp | 29 +++++++++++++++++++- test/src/unit-pointer_access.cpp | 2 +- test/src/unit-readme.cpp | 2 +- test/src/unit-reference_access.cpp | 2 +- test/src/unit-regression.cpp | 2 +- test/src/unit-serialization.cpp | 2 +- test/src/unit-testsuites.cpp | 2 +- test/src/unit-udt.cpp | 2 +- test/src/unit-unicode.cpp | 2 +- test/src/unit.cpp | 2 +- 46 files changed, 113 insertions(+), 49 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f9931c45..f1ccf47e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.0) # define the project -project(nlohmann_json VERSION 2.0.10 LANGUAGES CXX) +project(nlohmann_json VERSION 2.1.0 LANGUAGES CXX) enable_testing() diff --git a/ChangeLog.md b/ChangeLog.md index ce82d14bc..0e2f8daeb 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,43 @@ # Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [v2.1.0](https://github.com/nlohmann/json/releases/tag/v2.1.0) (2017-01-28) +[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.10...v2.1.0) + +- Parsing multiple JSON objects from a string or stream [\#438](https://github.com/nlohmann/json/issues/438) +- Use-of-uninitialized-value \(OSS-Fuzz issue 477\) [\#437](https://github.com/nlohmann/json/issues/437) +- add `reserve` function for array to reserve memory before adding json values into it [\#436](https://github.com/nlohmann/json/issues/436) +- Typo in examples page [\#434](https://github.com/nlohmann/json/issues/434) +- avoid malformed json [\#433](https://github.com/nlohmann/json/issues/433) +- How to add json objects to a map? [\#432](https://github.com/nlohmann/json/issues/432) +- create json instance from raw json \(unsigned char\*\) [\#431](https://github.com/nlohmann/json/issues/431) +- Getting std::invalid\_argument: stream error when following example [\#429](https://github.com/nlohmann/json/issues/429) +- Forward declare-only header? [\#427](https://github.com/nlohmann/json/issues/427) +- Implicit conversion from array to object [\#425](https://github.com/nlohmann/json/issues/425) +- Automatic ordered JSON [\#424](https://github.com/nlohmann/json/issues/424) +- error C4996: 'strerror' when reading file [\#422](https://github.com/nlohmann/json/issues/422) +- Get an error - JSON pointer must be empty or begin with '/' [\#421](https://github.com/nlohmann/json/issues/421) +- size parameter for parse\(\) [\#419](https://github.com/nlohmann/json/issues/419) +- json.hpp forcibly defines GCC\_VERSION [\#417](https://github.com/nlohmann/json/issues/417) +- Use-of-uninitialized-value \(OSS-Fuzz issue 377\) [\#416](https://github.com/nlohmann/json/issues/416) +- Single char converted to ASCII code instead of string [\#413](https://github.com/nlohmann/json/issues/413) +- How to know if a string was parsed as utf-8? [\#406](https://github.com/nlohmann/json/issues/406) +- Overloaded += to add objects to an array makes no sense? [\#404](https://github.com/nlohmann/json/issues/404) +- Finding a value in an array [\#399](https://github.com/nlohmann/json/issues/399) +- add release information in static function [\#397](https://github.com/nlohmann/json/issues/397) +- Optimize memory usage of json objects in combination with binary serialization [\#373](https://github.com/nlohmann/json/issues/373) +- Conversion operators not considered [\#369](https://github.com/nlohmann/json/issues/369) +- Append ".0" to serialized floating\_point values that are digits-only. [\#362](https://github.com/nlohmann/json/issues/362) +- Add a customization point for user-defined types [\#328](https://github.com/nlohmann/json/issues/328) +- Conformance report for reference [\#307](https://github.com/nlohmann/json/issues/307) +- Document the best way to serialize/deserialize user defined types to json [\#298](https://github.com/nlohmann/json/issues/298) +- Add StringView template typename to basic\_json [\#297](https://github.com/nlohmann/json/issues/297) +- \[Improvement\] Add option to remove exceptions [\#296](https://github.com/nlohmann/json/issues/296) +- Performance in miloyip/nativejson-benchmark [\#202](https://github.com/nlohmann/json/issues/202) + +- conversion from/to user-defined types [\#435](https://github.com/nlohmann/json/pull/435) ([nlohmann](https://github.com/nlohmann)) +- Fix documentation error [\#430](https://github.com/nlohmann/json/pull/430) ([vjon](https://github.com/vjon)) + ## [v2.0.10](https://github.com/nlohmann/json/releases/tag/v2.0.10) (2017-01-02) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.9...v2.0.10) diff --git a/doc/Doxyfile b/doc/Doxyfile index 4d511af31..b4f578636 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "JSON for Modern C++" -PROJECT_NUMBER = 2.0.10 +PROJECT_NUMBER = 2.1.0 PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = . diff --git a/doc/index.md b/doc/index.md index f7ef3554d..2f12767ff 100644 --- a/doc/index.md +++ b/doc/index.md @@ -277,4 +277,4 @@ The container functions known from STL have been extended to support the differe @author [Niels Lohmann](http://nlohmann.me) @see https://github.com/nlohmann/json to download the source code -@version 2.0.10 +@version 2.1.0 diff --git a/src/json.hpp b/src/json.hpp index 6909553a1..3b010cd1b 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. @@ -1115,7 +1115,7 @@ class basic_json result["url"] = "https://github.com/nlohmann/json"; result["version"] = { - {"string", "2.0.10"}, + {"string", "2.1.0"}, {"major", 2}, {"minor", 0}, {"patch", 10}, @@ -1726,7 +1726,7 @@ class basic_json { if (t == value_t::null) { - JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10")); // LCOV_EXCL_LINE + JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.1.0")); // LCOV_EXCL_LINE } break; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b1df2bf78..4932bfcf4 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. @@ -1115,7 +1115,7 @@ class basic_json result["url"] = "https://github.com/nlohmann/json"; result["version"] = { - {"string", "2.0.10"}, + {"string", "2.1.0"}, {"major", 2}, {"minor", 0}, {"patch", 10}, @@ -1726,7 +1726,7 @@ class basic_json { if (t == value_t::null) { - JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.0.10")); // LCOV_EXCL_LINE + JSON_THROW(std::domain_error("961c151d2e87f2686a955a9be24d316f1362bf21 2.1.0")); // LCOV_EXCL_LINE } break; } diff --git a/test/src/fuzzer-driver_afl.cpp b/test/src/fuzzer-driver_afl.cpp index 0c173b457..b1699f364 100644 --- a/test/src/fuzzer-driver_afl.cpp +++ b/test/src/fuzzer-driver_afl.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a driver for American Fuzzy Lop (afl-fuzz). It relies on diff --git a/test/src/fuzzer-parse_cbor.cpp b/test/src/fuzzer-parse_cbor.cpp index bba56747c..1b6664f8f 100644 --- a/test/src/fuzzer-parse_cbor.cpp +++ b/test/src/fuzzer-parse_cbor.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/fuzzer-parse_json.cpp b/test/src/fuzzer-parse_json.cpp index f61df56d3..40ccf587d 100644 --- a/test/src/fuzzer-parse_json.cpp +++ b/test/src/fuzzer-parse_json.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/fuzzer-parse_msgpack.cpp b/test/src/fuzzer-parse_msgpack.cpp index 0355db3b8..381dc75f2 100644 --- a/test/src/fuzzer-parse_msgpack.cpp +++ b/test/src/fuzzer-parse_msgpack.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/unit-algorithms.cpp b/test/src/unit-algorithms.cpp index 0905d05eb..3a73c104e 100644 --- a/test/src/unit-algorithms.cpp +++ b/test/src/unit-algorithms.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index 76f9a16b2..ae45ac266 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-capacity.cpp b/test/src/unit-capacity.cpp index d3ee33d2c..44a35b90f 100644 --- a/test/src/unit-capacity.cpp +++ b/test/src/unit-capacity.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp index 43f9f4338..539d408bb 100644 --- a/test/src/unit-cbor.cpp +++ b/test/src/unit-cbor.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index dba96e1f3..1a05becbe 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 16833cd9d..e3ef6a0e4 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 71e75df43..ac43de8ad 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index 095150428..3dfad5bd3 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp index 7f89729e3..f1e1aeb36 100644 --- a/test/src/unit-comparison.cpp +++ b/test/src/unit-comparison.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-concepts.cpp b/test/src/unit-concepts.cpp index 1c04b62be..d65f7401b 100644 --- a/test/src/unit-concepts.cpp +++ b/test/src/unit-concepts.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index d03a5f408..93546c5f4 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-constructor2.cpp b/test/src/unit-constructor2.cpp index ab1e43cc4..95cb87dae 100644 --- a/test/src/unit-constructor2.cpp +++ b/test/src/unit-constructor2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index cd78f83a9..a9355da0b 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 994f882dd..fca807a0c 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index 21e3bb444..aaf4627b1 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-element_access1.cpp b/test/src/unit-element_access1.cpp index a596ac214..5f264ac73 100644 --- a/test/src/unit-element_access1.cpp +++ b/test/src/unit-element_access1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp index f12da1e43..353d66d9b 100644 --- a/test/src/unit-element_access2.cpp +++ b/test/src/unit-element_access2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index 9e1147187..2e3d075df 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-iterator_wrapper.cpp b/test/src/unit-iterator_wrapper.cpp index f4255f99e..79def908e 100644 --- a/test/src/unit-iterator_wrapper.cpp +++ b/test/src/unit-iterator_wrapper.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-iterators1.cpp b/test/src/unit-iterators1.cpp index a6fd2df9c..78ea3db4d 100644 --- a/test/src/unit-iterators1.cpp +++ b/test/src/unit-iterators1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-iterators2.cpp b/test/src/unit-iterators2.cpp index 6f1b6251e..ef806ad75 100644 --- a/test/src/unit-iterators2.cpp +++ b/test/src/unit-iterators2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-json_patch.cpp b/test/src/unit-json_patch.cpp index b7987509a..837691de5 100644 --- a/test/src/unit-json_patch.cpp +++ b/test/src/unit-json_patch.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp index 672579439..24aa4a7d0 100644 --- a/test/src/unit-json_pointer.cpp +++ b/test/src/unit-json_pointer.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-meta.cpp b/test/src/unit-meta.cpp index 7040042ed..28c1a9d80 100644 --- a/test/src/unit-meta.cpp +++ b/test/src/unit-meta.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp index 3e8d96007..80b1a7115 100644 --- a/test/src/unit-modifiers.cpp +++ b/test/src/unit-modifiers.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-msgpack.cpp b/test/src/unit-msgpack.cpp index 89fa450d8..cad78ae83 100644 --- a/test/src/unit-msgpack.cpp +++ b/test/src/unit-msgpack.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp index b939db4e8..ddd8102d4 100644 --- a/test/src/unit-noexcept.cpp +++ b/test/src/unit-noexcept.cpp @@ -1,5 +1,32 @@ -#include "catch.hpp" +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 2.1.0 +|_____|_____|_____|_|___| https://github.com/nlohmann/json +Licensed under the MIT License <http://opensource.org/licenses/MIT>. +Copyright (c) 2013-2017 Niels Lohmann <http://nlohmann.me>. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "catch.hpp" #include "json.hpp" using nlohmann::json; diff --git a/test/src/unit-pointer_access.cpp b/test/src/unit-pointer_access.cpp index 4771c5089..5611a7502 100644 --- a/test/src/unit-pointer_access.cpp +++ b/test/src/unit-pointer_access.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp index 5c62e850c..061aadb4a 100644 --- a/test/src/unit-readme.cpp +++ b/test/src/unit-readme.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-reference_access.cpp b/test/src/unit-reference_access.cpp index 54db1a865..6281572ad 100644 --- a/test/src/unit-reference_access.cpp +++ b/test/src/unit-reference_access.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 6a5e0c64c..17edbd5ea 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-serialization.cpp b/test/src/unit-serialization.cpp index 72d9ae6c9..b8bb6455c 100644 --- a/test/src/unit-serialization.cpp +++ b/test/src/unit-serialization.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index b939bb620..9a9de1273 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 241336f39..347ea3774 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.7 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 0b1c0e5e5..89e828f48 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. diff --git a/test/src/unit.cpp b/test/src/unit.cpp index 096a29732..c89a0e83d 100644 --- a/test/src/unit.cpp +++ b/test/src/unit.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.10 +| | |__ | | | | | | version 2.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. From cdde1a9436be11592e850a6eabc38bcbb3423146 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 16:46:03 +0100 Subject: [PATCH 144/174] :bookmark: set version to 2.1.0 --- src/json.hpp | 4 ++-- src/json.hpp.re2c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 3b010cd1b..da700f644 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1117,8 +1117,8 @@ class basic_json { {"string", "2.1.0"}, {"major", 2}, - {"minor", 0}, - {"patch", 10}, + {"minor", 1}, + {"patch", 0}, }; #ifdef _WIN32 diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 4932bfcf4..3f9c04f3a 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1117,8 +1117,8 @@ class basic_json { {"string", "2.1.0"}, {"major", 2}, - {"minor", 0}, - {"patch", 10}, + {"minor", 1}, + {"patch", 0}, }; #ifdef _WIN32 From 38e4935db04b04b2eb0508bdebdf63a48ba279fb Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 17:12:29 +0100 Subject: [PATCH 145/174] :memo: added example and documentation for the meta function --- doc/examples/meta.cpp | 9 +++++++++ doc/examples/meta.link | 1 + doc/examples/meta.output | 17 +++++++++++++++++ src/json.hpp | 22 +++++++++++++++++++++- src/json.hpp.re2c | 22 +++++++++++++++++++++- 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 doc/examples/meta.cpp create mode 100644 doc/examples/meta.link create mode 100644 doc/examples/meta.output diff --git a/doc/examples/meta.cpp b/doc/examples/meta.cpp new file mode 100644 index 000000000..3a31ca24b --- /dev/null +++ b/doc/examples/meta.cpp @@ -0,0 +1,9 @@ +#include <json.hpp> + +using json = nlohmann::json; + +int main() +{ + // call meta() + std::cout << std::setw(4) << json::meta() << '\n'; +} diff --git a/doc/examples/meta.link b/doc/examples/meta.link new file mode 100644 index 000000000..6a5ad0c19 --- /dev/null +++ b/doc/examples/meta.link @@ -0,0 +1 @@ +<a target="_blank" href="http://melpon.org/wandbox/permlink/3hERJociqLo3vdod"><b>online</b></a> \ No newline at end of file diff --git a/doc/examples/meta.output b/doc/examples/meta.output new file mode 100644 index 000000000..f361bb60e --- /dev/null +++ b/doc/examples/meta.output @@ -0,0 +1,17 @@ +{ + "compiler": { + "c++": "201103", + "family": "clang", + "version": "8.0.0 (clang-800.0.42.1)" + }, + "copyright": "(C) 2013-2017 Niels Lohmann", + "name": "JSON for Modern C++", + "platform": "apple", + "url": "https://github.com/nlohmann/json", + "version": { + "major": 2, + "minor": 1, + "patch": 0, + "string": "2.1.0" + } +} diff --git a/src/json.hpp b/src/json.hpp index da700f644..5fdd83d6e 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1105,6 +1105,26 @@ class basic_json /*! @brief returns version information on the library + + This function returns a JSON object with infiormation about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @complexity Constant. + + @since 2.1.0 */ static basic_json meta() { @@ -8059,7 +8079,7 @@ class basic_json @liveexample{The following code exemplifies `type_name()` for all JSON types.,type_name} - @since version 1.0.0 + @since version 1.0.0, public since 2.1.0 */ std::string type_name() const { diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 3f9c04f3a..068b87630 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1105,6 +1105,26 @@ class basic_json /*! @brief returns version information on the library + + This function returns a JSON object with infiormation about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @complexity Constant. + + @since 2.1.0 */ static basic_json meta() { @@ -8059,7 +8079,7 @@ class basic_json @liveexample{The following code exemplifies `type_name()` for all JSON types.,type_name} - @since version 1.0.0 + @since version 1.0.0, public since 2.1.0 */ std::string type_name() const { From 4b5c61075f788a5e5eff10a3b2bc5cf6b1e0f22e Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 18:17:57 +0100 Subject: [PATCH 146/174] :page_facing_up: changes to let Github detect the license --- LICENSE.MIT | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/LICENSE.MIT b/LICENSE.MIT index c4ce40d19..00599afe6 100644 --- a/LICENSE.MIT +++ b/LICENSE.MIT @@ -1,14 +1,13 @@ -JSON for Modern C++ is licensed under the MIT License -<http://opensource.org/licenses/MIT>: +MIT License Copyright (c) 2013-2017 Niels Lohmann -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. From eb08e8b09b6793cc2143a2f9d812b6ddf18d288e Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 18:20:12 +0100 Subject: [PATCH 147/174] :memo: updated documentation --- README.md | 2 +- doc/examples/README.link | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0f5fb760d..1ee358e5b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Build status](https://doozer.io/badge/nlohmann/json/buildstatus/develop)](https://doozer.io/user/nlohmann/json) [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) -[![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/IoZNMHqubixQx2dN) +[![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/4NEU6ZZMoM9lpIex) [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) [![Github Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) diff --git a/doc/examples/README.link b/doc/examples/README.link index 58daac889..d0168aab3 100644 --- a/doc/examples/README.link +++ b/doc/examples/README.link @@ -1 +1 @@ -<a target="_blank" href="http://melpon.org/wandbox/permlink/IoZNMHqubixQx2dN"><b>online</b></a> \ No newline at end of file +<a target="_blank" href="http://melpon.org/wandbox/permlink/4NEU6ZZMoM9lpIex"><b>online</b></a> \ No newline at end of file From 6746a5752477f61ce5a65ba632f2017485e8d7a7 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 28 Jan 2017 18:41:30 +0100 Subject: [PATCH 148/174] :memo: updated slides --- doc/json.gif | Bin 1331326 -> 1457913 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/json.gif b/doc/json.gif index efd2ee634a0704653811c31714f7cc1757c02966..9d05cfd691010a4cb1d930995334f72411c62bb6 100644 GIT binary patch delta 1357391 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�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�}yp;bk!V@-~%>s|g_ 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≤t_kzH&0U*{!TCNHcCF4 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�W4? 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%0DhL(*j9!}yY(f@KJlaB zeT6)4+RKFhc(a|q-=KJ{KeYuOTqe2d0fhGHy`EoxScY5rCLSwwk-w{1R9+Xr*2dUJ zr7Pbq(%7)Z<iUi*0FXYI=)u(iQ2?u@{oZAN(*r*i_9-rUP?sghs|gfe3}BlM_n1VT z+xz%@h<#A$)ZQ&Yz!Q6TXD&Qb@TyDcKWAGR8UZ!XcK&|~x~0aNe^}RCXR5`c0SGn6 zgLseDMOjx^5TYV)e96LIVAjwlXndLCEUJHQWoF{N6<6*ArumzW{eX2tl22Bk&HHjD z*Zg^n=N%PM=3&!iEWx6>94&DeZey5+ElM+iTE>KB_-C<Q*bbC{SL<%go?`8aGw+vZ zsuGYxW@DeU;ZvEas8qF*VWlFb*4<+@E{@NAT-BjAz(3T(bBqZ2Y5z4RL6R(tgz<U* zO=BR9uIaGkfsC<twrTv$&3ql?!8~u8tKvKNGkmhq?RMxjE*c1E3zA5ne}ESN+i&pT z*f+3|J^Q|p$DxZW8DawM!d#rbET3kl{v0S9#^=*nIVWo*!WL^_;H7q<vt_0J+h4fC zsRs08K76aq=NQv(KiG`3!1AVpqJPN7zXag^fz`XgCjKh_>vZu4LI%NfdX_9s`Q8#_ zXb}E3_$H`m>B<jI`jR+6)%e3%+#}MmmrFE7+&k_YMKY*xLhYF&eN3f#h!!(Z$P?_* z(WfTKQd0@j2^KlVD+G>6nz(dBWsbN~SQT5tLQ%kQc|=!4v-_v+6PM7TOid=?M}rn~ zgZOBS;Ytis>VjrC+TDth9!a?dj~x+Vg>jhKN}Kd_Y?b3EQsAEKOT`pkiOq<rg4kX@ zlZWYDiFtCkyC&AMMR1u$QZj^&F`7-DRq46d>hvAJIL{@iYrPbq1i0OTNOKP768}7T zEI*l`lw%A)I%}svFTGSc<U~D)(G`kluC_jG+klnR=$rI1l${!}F};O)lr7EHgJw*b zBlA=3U%6fMjeqk@?bxRZF(d{UEQ7!wS}xK8n4@BHRM2Tbix#xYzkab)e&|(Lo6WW! zfcXIy{t=d#K@UL~RFKlwYOw?H+m(<Ylc>6XYVo(<rD3%a{1<}HELRJe%SIc5o6U(m z!t+y!r>|f7{pU3I>9v<lGC$*@1#M2+#-~^v&EW71oVqI?V@z=uct>S3s<FJiZ*!Q} zIfZyA!gZYxCTLGHw&{G+V$d!o&}p#z$s;ZP0?9iKr`q7yhP+HotCfxTZD}BAQ@P$5 zuz^lFp>I>{oiWw~d&#KUg2FwlEMl=<cjl&Ia>ey~W7GCW0BhMI_hV*5od9nlTjW5( z0%~pT&WCPc6Tw2!PW(3=_2=!A6P7c-8h^|<z~Pz$j$NnC1Ou9*8vJHI?lkZdRyPT! z)`Sd8>Q>^s6Z(E{fmOx8cKs5WOOAVl;7>EJpnG|zV*p9}h$~k0zk*YKokGbFa{Gjz zm98Ki<WUQIIa~5gc0b!{IewZY%^{q{)v6BwE#sYm%Z{&%h0l@CJI3xoKSEI%IqZlq z7=uiDNjq9?wBj%5n4lPumBP$VAge+0AZlbM#O)}20%2yrDhvU}4=;LdBzeEp(=|X7 zVVHaZr|c+*(}zjHrrSV8lWH`_=AoH~&|<Pt+N^!Qmv82ow-&+5Mi!4+R1RaQB1Yz{ zr-`AlcfL!Lh_CZ}ORbd(Ee23d0nKP?v=VL9%iRwVBxz)GOWmt`K8zS`fo3E0E#g=Z zvp?33#lxbl=~uxY3;So#TT05ACxQJ}5zfQIm$6QzXHkHBCwC2?u*QqT;X^Wio;^)g zl;XufqXg1+0t|2WUhj8JhyR@&f=|AZ0EIT@`Fwd&D56T=JL@rxT&Z;~xzh$$te_R} z9qU}KeGaa-=N{!+z8tbqZI#b-k5LxA9-0NV9<}VWM5rjUnFQ=KP8nCJ{A^7pGD13{ z>O$?6b3^DjS&q>82Ih0qnkc|8>gVm57L}x$usj>;J4fDdWQa}<cnPNlFyPAfq++$H zBY61BamgvDfI6pPe|AI8?!AMhby=j?!*B&<KImFeq%=v__^Mg{7qwGQ+{_JP^qJSs zVdL%QmBeBmVl<`{%Md3|%m1yu=^CSFiSdij=71(TTv}oUlvVfRbU%?;ph#D!`yP+J z1z80AC;d#Jgi8lPcmP-w=&)H#iePs=kOlaluqRKS0Z94-<p(qOUy5S^k5m?6Ilm67 zHbnu1VE#Y}aJnz}C$I0f+v%rZqV}i#AOErQjFK#MG7JP}c1%$IW0yy?Mm$O@!Fdum zbH{G~G;wVhz}}6;TkjfyH$GzZnXOPSTP5|l=#@%U>`8N1kM3;8z>|`9%SakfXQtsd zMI{R3L`TA8Hajq$Mp%5~wD+6B_Bu)RnIgoW2DrZ3h`xEIVg;i)cvL>|g3?*-Ed_}T z5X5995}erN9<1zk)A6p-t<N=Y;m+e0RnMbQDq8TpZ3C7mM8q7vhCT1^zjBOxOL3GW zoP2hqO&s4+j&47fog9p>4iuwtH|vV`OgTv^iKolA9%8Aqn+_R3K&kV`n5%tf%hEo^ zs(2{B5iBS!n;zvSRnh~`D^wXX8%U^n>?5T)Q^fkYj+hhKLoHlpS%F7QYTZDvu%La0 zc-mc6O#(-yRN$>4Etp3R2~7S$zE_oxw-f2EA^m;gEGbI%zSaIkgmeo@n#qW7)Tty@ zX{e~fPTr(Nktt|4B-nL^M70=JL#`G|WyTq*J8cGe1FaiL<@-s1(%TvDGy+zu0Pt9N zii6O1g!7DW&rt2@kg#3kIg5+4<I2wvX*(ft_1^QJLodD#`?ntd*n6P|6K&724VUP% z7qC$ufj1z841N-)WG_&$FL8T$%-~JMC)o@c01XM%XJ=wn*TTcKWV`G|Oa=5yn9?z= zHyM*8rT;Z6$t?0%jC;hHy6@G`&F7GWIRi!P#eoO2<E({m|Mg$lKW&oGE}>?%s{e`@ zG9Vy_BY_tPRJIq<0>R_k+LSb9)jCPXz-eHdaEa@H^VbTH)CN(I<O!6&W+NT=8V{$L z(LrzCXw^vmq;JOFu5@riq!{!n!m+30+txW6uzHVAM`i{Nj%ZCbnGV&wEC%D3$H5s% z>x#KsFKsWX2^o20d{WncEAkcrv!1McwxBQUeZ=VeWWC?7eZrBIAnDHZW53@bllr2O zfpE9#8A_c)azs)jcMlCPpXzsmxkb>35vFI@>-5HN;m=LJ*;jx3Q@%9v=#}}GH0<^5 zbzDob9O_5fR=S$UuHFkVXC-a;yyAqo&6eB4x(wX}tke~1`L%7!$_7BaKIMQ+ao_iw zRFg7E!%?D|D?k9GSHVjFSDLrUIODVFcM_^_P2=~OoPKuKkxCvTYp(U%XAVug9DdzP zc)^_UvD^%8x8L26V9VEMqU6Q1NK(m20+Y|h8lffiBqolawTY7+tcr)yu9E%PC2g5q zK$kGNbsG+qekU`kV9K%OQ((50ht{Gu5Mj$f=y5QFJGqiw&)yW?8@Tt^MQ6dK#}Hd% zZd6!o{s6Fd2bm3pP{lH6T0X+g{vAvXEB=pauC|#jgl*Idty_XpIi{@fmIGkoO$5J` zO6=Go8AHtvTBHb0HjzQ52`@QTGq;(9D)-NQb&g<bStx!IDq4}TdxX-_@NjBzz_o(p zkwx*WpiDs(GAk)QPaidhsdcr($vABZokpnyNWzaSDjzRPiy*j}43v4XWD^)@4nqzK z*^e=$yn!0fEw#?F0`b`n_fbB!+4_t3udOq*<2c5x=4eM?>_ONoC9?~O<>H9O>s@Mx zT*d1gALh?h)$k47ogPH$3^5WI2985_lj_lgwuS>Oxsnz++5-9rDmnpZ2p~FhKzkN! z2I}7f4_e!Sa!E=hm12*OOZ6zS`DtQzq+x0n>P!b&;HjEfHEAUfSr5j-08n94dz8pH znarW`jWX$@F^ynTS*YA3rN+*twt^A?r=Rn&X(*(ac^jAWAi0Hkj!|SZ&vH^bh1$xZ z8d}|ytkQ_%So2uJVoyXfAO~IZ91#!$4;t8n-cwcrF?3|9`h$%V#>`YX5-x{sH?ydV zPbN7K;}TYD9MZADFkUz14%zN*aFbO6yV|whx|L<cdm;`?8J)DdxoBquU|WYhnJR&h zxL{++r&ILfr!#F{C)>{i-+O(8JJbBk!%p1u0PItQn6alUYs>tG&Yp}M!~W<j?bsVr zhn1R}^BvF@JBQU|hcz}Y5JbP4?(n(r9t!fjl+*iwjdbw`$4ow#Y-3>vFOVzHzjOCy zI(iFw9R5pwG35EYf?&JdeBxj4i&sQt&%qOWlbXhKX6I)I?l`3TjLC2o(z$_UKm`Lf z8Q{x#&>wjjE}hH~`-UvjgpCt4;ra2&Ru;ewY=}4^BIktqFg}Z~N7*}JeDhA&?H4Gg zqjV7W5^%7FVvZWeJadwpcaq<n_^*Qkz-lPSIpc)otkL;sK+kIpQmBUWq07#MY-d$B zgN=0Iu`*|kDJOmG<Md3>i)4FiDp<#!HS*N?h?$F?y^H?dW#n-_h-S`f-}_dlf6ZmD zkTrN`6jK6}cVvy#xE$YgAqu;aQXJg#b9N+M$@Z=kUsuaWSF6je7meslk|_0-t8JgF z-7{DFc~`w!l~targRq;EoSU<zn~T|$$6I!SB7K+ScJi{DN4A^iH8(G1c@2M%pd(!{ zfvJAW?bNQDzp#72Rmnd<1zLuE7wCAy#F@<oA|1loaQAG!V+B1KZFVxw{`KcL(2^wG zJyOPq%aG!}*8R|tc<tn0{7b{NJPH1>3q=FQ+XvitPBJw;SSioMvV}pC@`eX)m-!bY z%{#TLLHEjxXQZBvrF#Qo?|S5HdgR)hZKr43g_WZwEy_8)3HdJ{S<o1V?Iq+Ff!!?6 zl1*UA<#9H&tEATR+9o6UnWoE#XZIUV`L$PSz`4?tS(Oh`k4>NTKFK#4vDSLulK$gb z?k%sIeO_hTEVZs?0e_JCnp?avZ)S1Y-jndV3Dzjbskz|%`^}8FVom1S=+|nvteI|Z zJCueot=ztI1D2w<=u8W-zK7DYY1Z_4*f)24{KTIy-4jW|-^0s&E01%rS~{6L#}bwi zmu1B95NZNHEdndo!akt#d#)k7?n1kt5ql{2?(1`UDVD6oH`hxcw`8H4HU@S*^AG2J z7k2kfIul$k!?5vl?0p6(cu|9ge9oZGr@88rzSp3hdY_oX(B`XQ&LvE#24G6CM7=-y zt3LGO2iVt;LS}-TR?va(%I}yXZ>pqDMd$fmCz(Dh?JC^V<<u~wJ;3)iefKs`1&2tk zjY_Sus}BBx%653ZPhaS6A9X2LXDRKk!$}G<_$H=*lfYS>ms-sL5<S#DZk<Ai1R&+* zivs9sk`N7A7-();V)g8`s2z@wUHym80|H<2)_v=R{1y;rx)W~tH|<jY_r0`n<t<Vx zQ0dsRM7T|8AO?F^^Ucp^|5d?WnHZcX3;0yT^9^r|A8fM1KFi&fO^j_(pXM;>r>^aJ z5=t!s_5Fg5h9W~^q;h5;5lvEYPuNc)=oc>_E!#7QwEL*``CGrP-K^?eiZd3_S_t^L zzEsi*SJVl**k<Z~Hpu#V@JcW9P}hp4Mauu@T{H89(~l>Bgopr06u@tj<J2GQ-oN6f zoT5VAM_$u`M8Nb*4vFsu@n{wdW2(R5oZZd&zqo6r$`iJG4#GJBBuJuvfqr=DLHl4E z&#~Xmfy_*q#zVKiaRe4~h0H&?i=1{3eVeug76MLTN|)|#az@l~(@+5;50?BmP&EOJ zwC7ljm`?tL68XJ`#1?AF)6wK(hKMlMInO&4EWI_IUNK0(kJUYcM7DebLmpu4JYy{9 z4?Y}fZpZ`4trZzU=i79{9<0&ej8q6i#MgGzRBK|Da~WdDVM=p>awSYdteqnVtiQ(C z|27DFUOEzRogDo78<e)NdMpb}Q}Mc$0O>0am)kaooq`z6e3C8MM}4nz5kZzB%cTHF zVheDv9Aq@J*1c%Q>Q|J)hBLm@TRTP+yRUPva16R$Ni+cSVx?&&9$<N1*wHor93Hqk zKHZx8Np8#BB?>Id2kI&dyM%>bPCeUYxoDNnQYDyXxPu!uIaDr7mCumjuTR>eYNy4i zB_KK8+EI?b&AG_%&AOR}Qu{8cPl$yaNr-j!o`eAQR#Z&RdNb%mw(uJV&hZi5Re$;^ z2Wb2Sm6zXHwBG|Ii_aC}hBFsbat-Bjd|yHVmWOgm9AfsQe!~{IQE!+0m&83A#spxi zJ*yMr5byg?No|K`RG@AgC$EQ`!p)MmW+=NJtiKPHFdPVNEMwR(>YQ%hN!K;eHpv_T z4rdjpr$;q8*5q-vcr#xsMPN2`-{iT4>=L%-&%9om2&^(RGP`6EssUvmJB~SQ_D8=0 zvlW$H0y*5nksN8u-CEMQ!m-?2m$*%kdYt*G9Iogoj_KK=TBHyOWAZwuTnsIkj*K&L z93ym!6+%K-S76BGM6V<ccEdaun-aZ;&X6V)=9I7%?&V##6CZ#I2ntmlkB>AmaGw#R zf1ow|_+OW<3RLpHkrnpZ=2C*xYR=WAqo)g0>FP?5N7)iU#3EZVPF>h@pI6Y`b#7Tx z@@pd0d>iZ_<h}Vjw0CAsNb-X7;R`N@E+|fAcx6afo&1nMTA1ed_3`q~AIY|Am}f+- zUXi6H4e4Fjcz_$a5JGDFGT)f432jJ-RZOOFLc}t}*jv}w{6Bph^-wT3t11T}-b4kC z&T~+Q)_XpXtX@IgGJ|h%Pw0N-%vHmGxcx`$OxG1jSG))HRS=eaYpo;!zgNP>Cd(1I zR2B!QY%gw)pe9B9MmJo%)oQcHU;CQo`1|mK{7Vk3Gil8Fj9xu}09|2Z_gZYO1kHU{ zk1o(uaz2Km=H@XscOnfCceNC8S+UuUrwP;!L6ZPE{2v*kK~y1t#$xQO_W2iGU$(SL zQtoDWEPv_NKDRS^V?y$8M)-vs#2bmTNFzkP+^GYvRG&hgc1PdN`|AMxn_qRRK0`V9 z0p|s|G!RX@4}DjoA9wuUH7~WWs|RT<O<RpzzdJ9wzw}<n95H%7IaH2YkC&)mHoRja z)}wD6_~2%osr{Zf(p~W|I%oV_i#*iox@mMGP?pD7Pz-J^x!B=R%rMq*mHc<yoZl}x z_Ppd_=V?_f<v_*!gJ~x?C$jdcPD73juaM$TwekI5WR`r-6}=Mj=+7sAknK4D4Gr`* z+Dkmd;o9C)&V}ZxAiTZ42*3HVDO4hMd?ZqRiu36pU1jEmT`S16{yjVD?^`HfA5nix zz!{KG*WC4G0ZR|;WC~ILtk<NgrTl7kOxl3~=tSix>;O{`cJ6yM;)(h3lK>*b@q<6f z9C_HGrXgDCu{7b>^Tja4^T)ZgGIEtEry8Fj8)sgLs#T#_V``vZ2!G7qXXh&lJZC7O zpQDSNQgPYj@yP?l`hXN&<?zr^bR48Cu)FGcjlPD{A_tN#_=HjEQRnev4Xs91xBZTl zggI0gn7fUWoxq>QjrRl;fg-YpD1KDgfYu5irbwkp8HmAq$E3-X(8}soD3#33VWNgY zt!!6SaACH*?SdYmR&C#2QmW$j*6;{?9CEsK!|Cz&^?Y^mTtN8Dg-|uwOIJFK$I-kx z1={@u!}P;nay7R_?#3c4{q%GDTM{ZkDTR#l$NPD)G0qhe%1;i&wfqtO_f0v-G-Hxg z`*Kb2gurjAKYe!p?p_9c?ZYc;5Mxl#)&*T-%^+-SK~?LBs7EJvVQ33$t>hXD**rjd z>LrCn{|wsIQ~hFC+H4R|0=P&fv1Fz4KoHHS2?ar&=!redK0m=p48Ctu5u??lj$v5` z*+eo_lAHlRsv2=ANMWK1sRkeABnJM&r~$IkD?=2>$QmFY-k^KB5D7!5Sh1U7PE|V7 z=`}S4Al`cw$;zP*6ahk0wTea`()R-4Ej@@(x=W^UWo|6hh@BX%{VQS1jdn$c3sUlD z;o8dEPO{+aGV_SM)()(-a*Ee@gGqRYxnJ!cq4X%3L^qU(8tNxCbX<1?B_i19RD_pJ zbkC2hyarXE#I&wlC4IlF9@JGJ1%cYGSLwoRjU<EB;i?)9PEpFyB`DkB$hc)`!B4i@ zIW*(9tI~lAjg<lL2r^SMX!qHYYkgJ1+Mc$WVm1F(>c>Dg-hD&yghkSYR!Bw!QY=m$ zeom4swC~Eqzk3ji#*d}n#dvm1SSelWcxiiNzT?#i3%R?KE}z5rlmoIqA5*}HNdmy5 z-iSyR_Lp)hh6WGjy$+VqgNmPjqRPE-mL^|lU5uzyb-XU|$lkF4A<%Q7zJZI2Ctp58 z&X_`aDprGlMEUNO0$VM5ZAnH)dL01Gug{&@d*fvzOv9%&#th~4tUW>gM#|o*s-H+~ z8`Hl@{Z0~U+4L;J_dL)?44GRWIEE5hKbbxBa<Qri@+hM_!!9paMXux21~?o?6IzdM z*5VQpYXNbmn|tDM_k{BDJ$(eM_XhJn=?bdfA(@VAa8-uuTXcSFgx{OsD_{;PKbjq> zx54#4FvT(E%aKFJ2JeiIq-pCzJ$^Omrn6>l;v?3^g9Kl;ts)>s1fu*Cn`K>AO{L13 ztv?7B11}z@<BX&hh$_F4P$}Aqu*M(ERMOf*1&|KMTo#AS3>#9yIbmsF`szWHDyK$8 z%)N@k!^Y6t2f`Bt{>T82BFhB%)=K_y=<8bFYgnd>IQuv!jN(fb)>C2JNz|wqkl%@y zUU5c_LTv;CQdEJ~$37phKkwKI+7(dsg;c)#C4w`b6J~qJB@5fqqT&%Q!GfoIEr53* zgDtsOJ8V4(C}6N}Ro~P5?7o+W2Z&kTW|@M73`#zL4Dw5b&#jm!!^m;y?mVf8VJy!U zi1T&j$vZ+2cM3yv3<mSXoL6WBD32=AiFDq`qzaP<z%Hl(-)MHQ$@oaaaC%01EitYJ zyg+PlM4=XF4I$`>0PDYL`M>S+13KUP#}uFB=hgsoL2?ArfrxPyZr{D7x%Ljk%hQv0 zz>21iNW)N8EpjX85aAWnqe66`p<*P?h+nGreIKrlJ|GbQqBuw+j}Jks5R6Zx--3B2 z(JPJ!9lCfygB53MBD`k@dTV^Dw~Dc*v<ePAL=%o-^%9-2FUJm1Jkmja&g|fkp*k?^ z`)KAKGPtmIa>UU|yMoohyYSrmLkHrgoeYM+dvD?SXW`+#0nirvp#n)z3s)-EcuH%) zJ6M}rBX3ObM9eOG>^cToptr`0m0@QE?i;t~hh?FrahwMtk}vW*7`P8M4(NtN?uk8` z?G>R!_2W(eaJFPfW&1VF$TMf&yjebakLn`}ILOOWvqNH{cjiDDXWlO7>*4(LIF`T^ z)Gg}>06YwY6>UG7-Jpl_7=J@CjNqm}*Rza-@I3^+yO_iTXCYMiF``Keyra*O2vMXs zfAK!K6dd9l)dHPBXGxzu5MMDl5>9hQxVd^vUH`0Byphbzu#XqRD3F0#6i<|m>|QV` z*5e_X$79KGpEf^Bn*Jep330POmr@B}%hVxK<aVwq$4rfcrMsW3%^146aOQQ^SWo+Y z68e$W@2@`{iL+s4GyW+bsIvXbe8Lb3Z8jImrUY7GIP5s3N$8p*UtA`FmKFC6#W6V! zI?+|e<vX~OgkJ(Up;du?1CyL&?(Ce7%nCVvTJy%gjn(5|<8kKj=DQXuQXO&+R_LV% zAbTOQRj_()UV1>;@dZZMBv6{sBHR6>%i<Kf?y&S%0>L~Z^DQ#lJGSGJ&T7ZcaBX9w zFpV6CrPN9zsmI{b064A8i)-b6;fA!)v{jPYsq4{2<$l?}hyXjYjc@e5qutj-)h@`% z-7Is*CWPdr*J%dD<h^K^o`#}*^bvvebW7v==fmtKBG1!SMkMXp0au^qMSe^YEPjeC zQvT?l<8ima$aNv)IO^lG&L7u|^AAx}7-xzbc;-jIibl3oEXD|Jbr~H!Z8dGYmdi3- z!6_Jx+B#I5pMgx=uuQ3vGE;RAN;=yzz+56I1HQuXugXPQ?19==tOnCwZRy+MCp2R- zMt)Xf^w%y`P6tb;)}1tX<AnDaH%_>EHcuf5LnY|CRmHGp2o1Hwoa_ugO2Qz<GQ~rv zT`>I8zvjeaO*Gop>{xKBiC(Ux@Y`#qK@%V4l#Nx?ZM6v89~(xNdt!C*ae!}I;ZNRR zUp_s0cJo=Df!)Zcj-*78=I3Ym_+vA!nou+09QYsE9i;@Vn$r_I$gn!tyY3v&X~^>J zw{pR*(uWP<@yGw8CB9u5R5<o6^Zd?xnZkRi$Ef2#{zUP8+BcX(N&nAlj=SrJPgEOT zGXh6wHLh1J<I3uw^_R7{8}Vg-D#gE2w9F2<x<LN!pU2C=u8*}yE9d^cpk39vXVs7m zH%S?8!VArgQVH8n5A5?Edr7k6`(#L;=}oVgZ7+{qnU<{+Gi_{OnQ!|jzuhTI;0h$Q zl6koZvR|8M(tL*O3=p_5Pa^wor3iM0lLZ;q&Oq%$hxnkQi+kV&RM&)C7#i9??pbCg zx$R$+Rl>_o5hNV6Kll>>9wy1n@bcy{ed$AhO1A1gV%2mZc|a=br+3)Q_+0veusr!w zB|U?;K;%fBR`tozmIdAg3jdUYFLF2k3|nrv(ULvhawf=Yitn(fKt<_gMO<L^jy<qs zl5$o;4RDgIA#N2mDf7ol#e)Gx0P<I|iDz+SdiGxm1pDjl3k>;3dRZo3?x`>vO&Qw$ zHA)#*$a#C?Non@~fK#u+JTqz`qg$Cd6;G}3wxp5A&dNexRG$cpjjdVxEj7+s6^^OU z`lgAz={X}ARWlDpFMTP*)_VY(-iEo4WEc14oB`~K!MB!)Lm0#rvLEcaS~MAcK~Al? zTycssUl|lvkrpEf@%ODXjA83j(o~)T(TimP6C;v!WT^}`VS{VAeW3W8-#SBpR44`S z@XHPs+~^a;cL7DHG6tPMTXtm*EidaU2I80HjcX6K?OCxMtl84cv&_0mEmGK~SSb%v z@s<#hY2Nuq?<h5vFP3CUbO}IBU}n};RTSi}ayqH2uzC@nJz1ss`&5peoQ*617^Ms} z1>}x+W^`FHH#x$vDk6I1kM_$4VUVT@ML5(a_1nyF5roZ?BPAm|^l37}0&kxry#H$L zAGfIVp^{0g%2maxkPga!E*yF%N6y~s4$2v*jysE08<9W`j;MGlQm~<cx}wC&+~aU} z>k;2RM*cqQ#4ql8dy3#_iK6cU*AnpRL`Nmj&fITtmU7)Q`)TEwu)zlZ6{4%6fjC5^ zh-`FyLE)T_Uqy(WF>N*0{B)enD)O7SvoqwpQ6W)Mj%-TGTno<92G|I*?F0boaCRw? z9b0Lx%AB)pJ4H^eZ3=&_>PH6HDZ6>q)&w8Q30AhMxJurlItzr_K$LXnIH4l%4Tq<R zH7d~}WKX#gw_QmJnscxxAauv3o#LUNfjycr|Gh@#!;~j29f%*EnCo`?I2&SV3}?Ib zg_4M&hi5T1+^3%_sNuuZy#s|qLh|ebsDjAnA*4dL6$}}J`WWFUpUJfo7~_~%v6B&v zB%k+;Qs$oyaY~DyZ1K3&hId@DT#7LHR1x_qifpF4WbOWj?yy?c9$wz_seEq)1q>l= z;a3r4+Ox((*QEK^;{!<v&wfV^VPyF{dH%~v^MsEIBs~SNEZgP!M3Ug^i?<ZA@V<%C z?0L>AQ8omCug!J^iqRt)bO*p3wZ;s!hGiT*gY9y3F2^+>xZe`;G2m9naI*+IS$OT$ ztr|aN!PC;AkCf9`^73jVNk854lx(cpni_mxeL*1eI8H+Zw|zz%CI<!S-&9e{vT35q z?cZ(%wJV9$?F|J+3{jgF9CcK)I0zqk@<<IGu=i@xx-krXP&|e$?#z~%<o7R2k%owV zg=5)<jYV>wEz!<V>mu#@>ZP#a^?}M#%?hOPRR1)QDFQi`G@UN{lC+(*)=TuG@oEA; zrlbspkCttWR-GNI8bkr<AfGw0Ff?GO{;iLF{SN7wPK4z|Hnj^!#uMv<nXiAUswLyd zPdEM~W?x8}v%FhBo-MsUyWZX%KxrzdwXVm{lOwq1)17nwOK0zVP|X3n>WCR)*V0?( zprZ|d=<7^VhmWdm0x?w}LKf}i16fJ63M!mXa%#b9pu}9e=_5;DJng8rUj^jY0&!Ev zGH*|3fkY<VN?r0s)w$iG^LIDz36q^``EW<Bs;oxIb2pQ*H7kD=ieYdJpde_B>go2y zc`+jFvI@L|xC;6bI?d~|nGTO&m-ef?P37^guUTr>P{Yha8~CMtG~o8x4Woc!8JujX zl;cppJf-3>9ID=u&m$U+z?!CKXP^GzeTs>%7|TEZr|jz=72J6keG0O#!sCNlHvn;C zC?r742Pkd|NXl6za+$x(NUm41|L1keNrZd>MFhJJV7Gx{cuk&{=HyYnm??j^R{By# z)vNXi3U3vtN2G!AuWPCX6^5GKQmcr+RxPn=<dw5I74Wc6)w&-?-n&yoXDEB<?WZ=W zk_MYZ^izO+Gk+tDz43@H@{@@CK?Gb2f^Pt1h8SqJ2b{a;>l_s0p)@J{>_7uawwcsn zRC+fFmGG8`{Esg(vWX{>L@RWpUzFYDMN5kXbhi!BgdGQD_Ay7&&i}Q1ct9SI=_R2} z-@Yr2mcG&UY>|k(p@UwuMf0L%{-cXXf5%;wc=JJeb#}yvNs%7^c8B?j*sK#iKvFpV zHqUwxm-(${nJ6vstyx}I_3J@2R2SV)tZD}pZUAEK%&}AwqlTZ?Il`AGuh%?JUj%5^ zJ9N^j27h~HN{^7F0f*qt2S@!IDG{Ge+kZWLk^<l2%aED)rvn73y%G|820pGWOJw9+ z;Z(7|8hlav+a7Cj|A)z{xWuowH6B&OLWSxJr`12MR%ltj)S9bCv6FPlc2E!}=OL%~ z^^C07&vd1UPflHFX@%XNvvfU_Jj;=mUL?^tjh}yV?hJZMS3Lexh@E~!(q7n9NnWzr zxMdaO3$Ng&N`L-}Q$Jb-ium9KpDd9OJ>!;4*($<JJ5_kr#JLUCj@!uubPfF6@x_4d znl%Nv{7;#radUN+N(h$s!l#+oj5t*TWJmbHNVZ<0cc>o5^$tWiH_pZTthwNMk`L|9 zz1o|dNAG@Rl>RW@AjTE{tO9Jvvz1T0fybTCTv$4}5jk9|I=VL)8>s#}@JJ^j8mWf& zy*&McxI?<Ie)`zwJ8s`&Njr?=wqq|k3s0YdfV*x8faRd4x0d_|pjHqtVa%c+igc~j z5}Tg*a-`ws&HuyEd55$4zHK~-h=>(il?oDKkD^wUSg}W~mMW^Xsx@nW6A{FyRjbsd z_THr$8fsN(t(MlPU9&||O@H3^IG%r>=db&@j{CaK^ZZ;`M6<~W>AT70H^i0;aNcfI zA;I7=7?JH?XR`5m=t?k}$2iQqw=GYTG01N)a&q%<e%jkCsN|NKq85?xUimXj$L6`? zkv`&?CA-d3MaA8`YuzEf44-~H#S?;~=n|$6tv?Zeg$H&=w+4OS)&c~75B=!$FJY@m z(fTIX>Rqdt(|}1i9+u+ay*Bczn1Fl3)0}wtK<fn|0@u$#_Uw81+m-@Idg-4ZdGB8J zNqlo~!eyq%&goQ6NsB+zcMCYAiq-LdiZCBu%|GDQ`S&gOq9$S3bwnibzXOMW$d;RI z4Vr~6#+9kr^LK%8*@ts3I^S87ubrkn98Q|e`=%Gm#AK=Oe-M#=&u3<Y=>r~j!gKA} zk|rag35-(abG#pG1{C7_!7<W;ypgL301d%om=hBw4}J>olNo2_Lg2(bOlu@ehksIq zViF1TBruN;Fm@-0GKk_o&1muj*F`If+xa0s4PL<WTPihq57R}$tIZH*xH)NYlA?K* zBL3!0bOo@EHHHJ+_VmQh7bmYwUINtBl9>-x73KnUmyZ<Yup&SQfB&?3OEBNLM4W%A zK+K?X7xkpgKde1WEm6HK*C~>dXG`y7g8d}Ydu~wVJd#r#$TfMQhorDOM84vFAFODB zIcFU@nveJ>cD^~dqpN=lC75CiLa2i(y>!q}0^e*?q660OqJzT?Y7HEc#8R+G*A}mA z!t&Z6Wu#a5@Rgo1fuD5Fa>@Xsj3=8D_=(-=Pm_k;hO@+BF8;_739J92&j+r)-@Kr@ z-ep6934D{0$o+6FV-Wv%FH&c>UG48D?TE=g?-ramPLpiAlV9j>c4#5LW`2Nn`VqtX zTPNFH{T^TXoQ!iAE>Zl_95L7RcWwdO@$B)(j6VgPPci4c0vGh;@cr{59e(e>iIRd} zsGdYgZpnFJA$dCGWtIss_^<EU)bH&vB1m(j9d$e*=+jl|n*V?6CD$KEOAR}|9;8<& zQ<l}8<P+Y)^6@p*##7K;ejJJ2>$whSJb`cJ!0}TL3ksK8%RpoZ&Hb@Q-Dk%gTveLN zmFY=vfZa5l@}z{6<sA5jG2@5;!++IGCtrcMx?cR+-G9HMa3?p)=c~6jVjVVT%FBv~ zH|5Jtt|=Y8Ay0JuOUC8}{eE{`63sDse*O#h@6SI3NCya@p(~URhC5@T87?UWoWNal z;@HJZ18}lFi-qx*Rh}H4j2nQ!bXXCm{l%e|aZ&lo9tK<YjGtfim~IJScQegXqlQQ) zMuO1s92S@(g-{L;%Q96n1K%?a&&i5H#xK2*C3-e|7L#PLR~!%R8t)BdDu!`+-){B# z+!pwUYu6q_gfIzlaMzES1pZh%`orzx)Eo8JbP2*5{glswm=#$@TMDFRp<dG3W<|WD z^}!8&p(Gmz{N=ppps)X6fk4Sv03_y4=H~}_I~Ry-S&SwS2vOB6b8G#YIp<8L!UdpF zz(l72sgTgZxqzuVzo(3AXaT@%=1?aD&FpLLh434?7lhQN>re)Q{HeBM1d|5Ol1@Fj zf<F433@zzm%g<hp|K*BUCPEAV%b*5a1J6o|uHz>M07&y9geJ$k7?*nIze{V<Mi5Pu zr8J=<5_j+0^Y#2Jb%3yB1EBrejc^U#&C<w+0O8^f*1TI4Wtj)gBsy{OMrG@_oFA-i zR|X^N`mf|}!yXR|CO1tv=I(&F8+h@_bNRWuuU3Vl?{%;=<nHzS<$BCsC>JV(!x#S3 z;5(p{u!kcg%vHi3_oE74{9KS7*nmaJN7^k9U;oD!Fr80E13H;P|7?z1-^~jglNSpw zq>8gufrP{C-|+vQztqKthj0jiZ+(px$UkYtM&{uOtOS1iavtu&|EBjiyvPJ$qj9#~ zx{xpQ5{Py$!q>0npZ|Ps1`V`d;9kCV^y@3`U&v&h9qIVLh-iU-=e~D&03sZHgpj09 z3jlhksz2-Ee-#K?cErmXkOrI($G!kC?ZXE#x&FsGxd_=&g3^$s01Q0bbOv^qR@Pz| zvlE70-Yx5xgUyoN!|FTl=UKgLJ*-LezUkljHhD^#$sesiS^P*Sk|r!HtX&5Q?S<h6 zGEbN2#dIsFKYr~-PyWy?aXNW9`7~8LvD@7D8@<%s)tRhz_aSWCX}5|ztb%vAa?pXT zmebE0(9kVtGX0?u<>G8FZ6`?R_R!fCTcdjdo4(``8u8>hL%`L|4PKV6+1h0<ZtDoH zrkBY!0xn)=H%pg~Jn&;Xuh*%4f6d2m1N1x<9%$PAFawmpAbOaoyr?~V_s5Tx|6b*$ zJiAsk{B!!l7lFQAJ66O#G_E_rhdI^eX1!2JhuRf2w!<?XN5oTfZ~}+M@pM;@SXs~! zrtqs!oiOqH;nEcyD6B5*E|N8TFMZcP?KtgDH=>qyW`FPYahmg2L~;9vp64r8xVT{8 zfe#yCje%-;Nay_q;W(4rApn9%z8m_$^?BpJ`h<w~H`KrTX7OA6hv$*#E8EaG>PLRB z|KvP-G<a-o?AW5q_1Vkd5lrlW^&?su9#OY<@VI>(O4xf|--A^vOsd%9YY>_i?_R(u zI`R(QK?gwS2P_By+UQs(%B|^evtm=+I9Z-34c0&tOeCl%kcI6cv>J9K=nI|jQU7iY zI`H0T56deC+#G)-p~OxOvXHXG)Aoj4fbj3f;25-`OoP1`o!yQ_Sc$&_Xd|N**Jw-N z;Q%-R%K9JwdbF`$ID=r!3weOpEZnmrn5GwcL2=VXM}^PE$_PfXSmJ_sW`$5#_^<UC zDxILEue>ODB0_`Y_@W8GpBC^~$p;x3-9VJjOG7hQ#CoHp8{Y-990Xk}71E!DL!p40 zEO`8e5FAL9X}WFKMx+z;Gvi>j<njI#E5q;3s$L-gN`27aV*8(6;y^ZA=d6%MMet!` zEL~(A%TGKlkR*-4C4wg6nL#lhI>bPDn<#fr#l}c+iiQTa=#eOV=tPLd$u1o$uznJi zEAL7(fs>Yx-Gt&<wVnced>FLiGXi6c`;wtc$ro5x!5N&Aa!P|GATb5{^KA$>DdPGw z*RxarsWACZP$F+<>bHzo7MC!e4aCAVhARdFE!l9vO(C4!@24+qZycbFbls>a;##RD zX&&Izv^Q<=*$(w4ooAlhtgC}p+jWCk(t<us{bx>s|HcZypTjjmM8Ou}hjRZBY|%Es zaBnvU8#;+_jG5+D)~A}u0COc73;?7+IFbwD>&$$p!nzzR^`p&^<sj3_1D@1wpdXuQ zq7ueb@dW3_5s`Vqs{CAGD>Fm61Wp>yI`-9D&=aoQKrnj1N3#_gIn$3$;9KhmcRToa z_C4AOoSS|MtuU)(r2sG+ZWO0@{QD-W1?+4Vc}SCR)|lmeE4M8UE&w%Rm=0$qkkUjl z*A?O2n@Fdbr0=w>SEhqnPc-BNbL`Trl09-@IM&SAwA9Idr2mB-hpL%w7z@uWjsiQs zU`|VM<`K0$O_2KOy4>-+*(Xm3$@)uQV7danaVj!w<*OG0=jD<B$=dCDXtZA{1bM>q zPcqc((4rpjsLD*JMFBGbr&cK-Jd}6R@zgl2P}HLEn!ZK6N7ys5Ji5k6TZ6~3@&zEA zV7`=4%0(R1^ce1djVM1Vp1TJ>+lYzT6zcJS=ba*W4B?lBRlpW{Un=q@JS5D8GtQig zX<n7`ox*5NZqpwWnZJU!x$80u8r0GRK3+~-^+1ENLQFoEAX9U`el83yztES3J8q@f zhLp%<#Kih#xWWLvV(>BgEC!3xkNP-Uj!(h43Z-c_X-5|2)XYsG;JzP!SxB^<YhzP@ z^_ht9aA_KERMh9<id(kKzU7ChdCmLjQhoWLrOI7WK&;Dc!&8w!12*O=f$irn&*aJ= zja5enWpsj70C;f5ZGrW{;^txav+0;aOSHq6%C^HSH8=R9GlW50nr~mBswWP87vc3H z){JSX%1FK-<1FOatJ?mP3gK33f}sFx7Vg-o&Ae1=@{`o;Q@$wXQGZJSyl+joT`rIc zjd-34X01B{=HKv?=Qyg4^RJBg>9fi!nw?cGe5-<`_;JYtG!S4*D`5vcC@>a^w^zpR zhzGmSCvjAJ(i}WxOvq@IcfoCVKAaD2>UXaN_#}1aP)nK%8<^9oXasYa<pI40!Fz)h z(QJS{k)$v2Y?HUpCx$L<rEu9FNC&rSnQT&QT4N^+&=Znng2|<`$YE}(soyUu@q|yS z+721w*tD9zm)+4d^kNc~&Ofo$zx>its0RI~P0p^VO+JriBMj!;ihKP99$YODs1KiY zi*E8vqf^03rnbiXB)L=zTu=>4t~DM8=QJZ)BVNJxV1VyuR*x7Af0W%a3-fguDr8l& zVvEc?OD&)|$UJnGF6wHfrMp*OSWfxe@E+FQ!hq`>E{l^W$YBtTP=j;4ssU@g0;E)R z8w#90??~8Uz553N!HwJbNr=LVS^<TnAh{Rz)LiF&27tCvOZF=`x+;NLuzGSXKc+7Z z!dk@aa%;q1;B6>e7Zy`3;W`*~55oTDsMjyiyi>X<R`*L+>z_9q$KBUrv!h)ajdL}b zdpleX;gy|E{<pp9i^wu;+1!mKQt|*N_v+;=ct!53+o9@ETw_o3XZUorXQOp@swzWw zXy-oKRO(#BV5)JFm$fOUWMZh9E>(-tkMy0UjaPX{C)k@0BJ0%n^1kY&*D6wxfD4E> ze>tsV8F}JU3<r2Uc9^NZ*~ONocHPvWQ#&{Jl}ZQEtH_tFp3(V@v?amcFrP+{G8Nn& z)AW4jUE%Z=jzX(dlr37F$=Q<j`vOD^qY8x=b=>L{zD0?Vyy+C~e0U2zc01Ci={2~h z_Yl}kD_9|D1lO+-*vaW~*<y`JD5SJCLylWm+S?9${p`cBpDUZ>#o!saedg!39G>Ln z{nrF9IA|M@5>8H@htGc=jJs7#<4k+`$8#TEQRy(;;PAOc8Y7@hzsU5(p#A{7lkqv+ zc_c-m#2C}sjDJ;o&Kmi!yNf|o@A>f6M0lF9RRN!9p5*(x@8DkQS>OuzqirFl^4_fZ zK;OQ~7(28-spl;6ZNft|OUlj9YF_k3?{7gWM&`#4R>owOW12i)(O6V=JuHuQc?Vjm zTC8lsSv-8XUBh;ii0ZaMlhWZiXVeD}$as7hTs$m>d17>49iB1Q0|HJoalf7_gA4Kb zEB{3l4v!Q~!@I?w3VZwXk0R%CyZ$VVo8GZbd)PkCE!yG$mp>P}ST_`%Hd=R{fA$%_ z=rM-OW3xUNLT|udKCEn=#Z&b>o4w#+m(6i3MfL4xdWq+7@q{8tsiN&ek%rJ$4LbES z7Tx~AlOCs!1O7@uWUYN`<IVogUTtkW^%$Ayf_Gk?oa%BUyl%gt27k`y{#1WPtee&B za;5u2A6RO2wVloLuy-QYOZ`J9GQ8fo{6$>7Q%dUSG32fLo&XP%8e_ER6Nsp5V36R! z)xbGCKc&2$FVlG`84gF)xH40<J_9vjrJ)JIOrm3kGoqh~gEegBOp}%m^X;ui!?L0M zd<3p@gwgzzb9l7c)9Fi0?{Kf+#b@(0jo&h$1-Su^wqJ!fyy1O+q#UXiIEUw<%w__r zJx||PcJnSalk*-L!%bnLnTq9%IpOzl#=V@ZU+-OV{+IWRk8h#z_9)DDS{l>|ah^Sz znA>Htm|+qnWlsY%CpMl3Ns2$EJ(vS%4xK$zVN3m3?S?*$TgK)tVtY*9{GFjqotFMF z-#fH?8_HVI<ux7-FSsMX`<m7ATVjdw0=-2y{;=ikTwBgxxFxUso&P3`!`JMmaQI$& zlEM8Eqd)NO+f%bTW9+GuQ~&}%zi6#1{_OqsvVr4<BPGxJ+TzLUm%f;d=KZ3Frttcq z!gp+<FtAU|^7ktio!L@wK`KI=y2(s%CLvy%NG-;E90E<OUYc9`qwX!+4!^V8q!wTQ zvgSK@Vl~=*B;nDF&s*qISs1G}?sKNS-;JkVV)C~WIA)AZ;hoi+)1e>t9Twn%tK9!} zIF3V~?$atHm5Vtq9y<3hu@1hyQyu%q=IJ8s*ZeTpB~fwHl9^BNJKr|@AfmO#-+3c~ zerH6`ysKVFd=feqqwa628~Wsy#+TvzeXjIrYtb!{nknDq?|S(?AeOhMS<$#7)=hqk z?y4)D(V!}hcu8*C_rUkm4~xuzywN<%JowUlJ7?Wjc%zkAJiM-IbIBuvxwn`gb#Zj@ zPxDfc3sJBehmIWI6pv$kn<^&0ZqMjWv1xr~JcIF=3G7{AyTQV`Lbc6EI?$dQg;SRm zE84$$>0?IV>fa9XrEjQWlX1q6TORLJ-&AIeO9;G@Uj;Qf494k*<u$rg7Gu65H6GPJ zbv(GB3`8<W?A1A_?ZJ&}C-fGURaK7W{?vK@t69Ic`=|&0WAv(1c5SAe(SIM7m2SY3 zZ)7Ynh(h-cmRz!;U0!K@*bNc*BOS1vP=3qxHp$M@RP6zp@jAnsybl!I77+;WtGP47 z*Lbvc2KTsg+N`<uf+~N0$oIpxs{X1Je30dYxv1$Q&sS>!KdZ%{8Q0gNkJpA4;9hf| z8B;rm9D~7E&NWSiUpB8c-T0>y_3F|{@qhJ&zxYm(kJc|J7l0xFS(89}q10u=HGz7~ zd>TY$uSoy_BIHQPK3KBjh=%HWbdxH+Yl$QHMR=ZDqAs+0<12QZ<E}d5azJE`O0||T zu--2|QH8v243z6y(FygP92PSW=z+mM-5;}*xU3vFJGjwrX<-}s+`#v~K{*sE)R&V* z&Vi$Fa)Tg=Xo4}vC&Mv4N9$vSp~0WFHI6P2D!Qz3V_1jrAv2>-pvWlU=69vGt@PI6 zcOv~&uC8YRc)F`uk95B%J^+;}4dsN>hTYG2@y3?9H9@`%KW<k`vC8u=H*B$MFXzJ_ zXpPcbeFKip_gB{fC47AoD{z+@es;98@UGx4?%#jZzkmPzV?bvljcjzK_KghHWaof3 zIYFj0g{q~Fol+=>f}eER@dIbq$oCw)co@Cb?Rtdl%CKx%Ov+D5k+lc$m4H~bTVy#_ z|Fk5fa=r!+-Dd%x<V3IB`{E-a>w*Eu0QLPerD$wmi^9WvMqcSGoG!A(6IOjgNLuSq z9Bbtu;})~#)ekyXO%!Kbn@z4Q5U-l5tS3^d2M}6c{E#3;PhZriCfkNW!i#0Jh=5Gf zO%yF6v@9O{6Ip==lQCO^QKpI249L9D6vG9VSNmf6g8UT#+8*pycXp_@VRbgw-^u<0 z(~^Lf8aG{9rRi){ImGl_JlQIB^lu|@QZ)L!6M`nTFwWAuw&HA+qD-)7re5{^O7`CE zt8Mm=-_ZV^tIE7;FqIC%%9L1QchED5hAl&P7V4~^Hi-jB?h-xnejiNM!N`;2Nf*&; zHZ=)TH6Ctasa!U6xH=Or19+5iC%Tl<`0fScE>vqp^^V8*3(!Sms7u)t{iPI_WDQl2 zL%kig&d7;&Z%ZwH5qCctu2=Okia=$$=3W#l^2)s=Sx?oYY|pFXdw|TxOM-=3n9kL5 zLHR73a_oSKaPCc^>^d2ySE02qHRkMZM0JSA9qqldP-K{QtH-0K`~2ozpN#Vj9%RVo zSI1jVHJu<rw0Ofx9o?2gOB>v9eBmM~`e}0B#3p-H|M%C{yZt}hpt~M$CbC!YB@t^& za!HhYs$QZqX(KoFO3_mlMP4Pe7Y;9l+LXOj9A-5>dMG|uD|oLjKm?}f__X|%H(SU{ z%0yklQC(wSmvEMU(|<@{!&Z;*a$!u<N$j~sM-8!w<8{REh1eVaovxP`;Kopubo3F? z1CQZ>JI|t_!mzBg()8tr@gt-MRMUG|`>d{>kA`?b{%pN8&t)VSY8Yr=XQh7^6Bixf z9WiFCXl40Qsvf{<mpIARPIMYWezK(hSBlC==yt)=Iv41H%h@uXgNbyN)_;l0Izn6% zBz+whHepa{YBsa*jD^8ZoI;;YhPo{N8fC$_0^Oe24T>?ZG7^UU?r7VFtM{rnZOU_{ zzk=>7Jn5SA7_@t<AhKeHpufU0;m&@k52d0swDgM_lP<6vZ$8_L73B2OSC4^<i5Zi& z(v=MiZ9b-DQCvlSN9h74A?86JNsxb8WYs#?pw+Z{dc5WDIurYFIGW88d%yA&7w=J# z4fziqru12Hnj6jnSBp{}QeFBJvgJg=J`RfOW18E$3DNxY%Z%1+uiJdn5T=R3=>X+~ z%~}?*hO2`+yw6kEJwLu!*Kt#w>NI`gsFO~2io!a2z+EsD@3*5^VMCAMH9LQVbU2pI z8l81R+%@UpXBP}E7?NgRS(@oRCyJ@q%(NVB7G9=cCpp;6X7V2RvJQPSlnrIoeOa3C zH6)zXAa4|nxS4^p%J;Km8@!e1rOHKoVK}Vv><cHcWC!eN9<6Fs%%$i~e;q2U2r?z` z9SVxI^6Q1t3q~1p2!C*xn@aR}w%6bPoZorPzA!$;TMvv&lM{QUSCy&T9?psB8pYDI zy7k^+vJw_nH<3K*r%sLx(N+%n4gb{>GDyRqYZ0eEv_dOtqKhn1H{O$+7zjosHq%X6 z{SO}~{<-qpMNG8b3AKYbG$$d2iq93|^w|5ZkrWOUl>bWF+ydDj<u!&VIos<wbftBq zFDEDodh6lFhHGBr4U{RCY+)3C&Sh*UO4Zv{AHT4)%^+Lfr6Qru!l3>PzGJ}&6iL*i z$vT?+r0U!J!_bSn-ErH@Yu3h1hw^kbJVvLE?V*%4I~(BH$+q?HWiR~}d-52s4uHln zL7v5Bid4b%nwPcYzmctU3l1K;LFY$?rKHraNv^n3W>$A&k@FPF6JoF3B`?F8+|gh$ znYR{-ajw^MS*fNjzwQ)yk0;P!0AG4$-ra!sr9?Bn`NOqR%9`4!h4_*3>yfz7^{G8g z5eLhixT}2@5PZ<R2Nr;b%F?JSP`-AfDIj-xm8mypR<1kSz7VpVyK>ay8zbv3%u^&# z!^9T%dD*5)M9f*%y86Exx4!^bC?9wX{Ir5!aLCduju#NuQc%}D3~j%B)Df=NPx(1^ zp)({{ef7x|ES--H=nyV_K=HWgH*ct$KI!YcskQYdMMx&?y<MAcSwljKyT<dXu|U%E zyhK*hWY=jH`c1FTeNcvXD->2SB@E;*{GSj7SM1m$WTs(!ANAM-^^O_cD1H5rU)J3G z`Wj0*1DnlL>S3Mm{U0ymcf{t<3Aet&fE(P|RZdZo#~*|@TOEp-06D5))@Y?cQyITK zk0unQa2nfc&!}ECcD88oKr!}7M2f?ol*&ftJu|o|{MXWF1dY$NcZvk)cGIyCf~E5& zj!!)$@dIHAvLW{>u*X0D_x!qi@>k-+1oU4j8>^>=`P4^M*nbi$6U;*aeMKXA;{9C+ zV3tuhr{#y4&8)BHGx<|$cTk};i%WFAr`pEM&50yl!C7NsKjZi|p<7jgwSPJOGI(uB zHc;fwhpX6*>+l!nN1L8EE_fH+TN!I6xE6ku{ST-cA;Y$gKbav)Pp|Q$+A8ql+-^MO zwB&G<Nu+`pnR!k%A+ka*%P%ZO1|b-N8oT(sEWo3l;VZrTpIZTfN3<%ti@@<{SAmru zE%&Mb<iaDOCfA|(d-Q+|2-5oczqKci!CAEzbYS=AW)58VA;ZK!u?~C~YQF9yj-DVZ zAy#TzTX3RW8^gK8vQjF05yk0#976rQ@bBM(<oVp2M6??IQgoA7<t;4ut1w$^whELU z->?ai6aplM^c)Ez6(s=R1co^O=7eC4a~i<lPx7POXuY?pX{xoL6t)jE_(gHrY6d(5 z7+~Pnn*^196!!WsS4^i%a1D-A^5bp%DWL}1XZ<Tj`fjf#TUErCP|h~rSjj^>srGb1 zkoqb~S$^rGSmK8Ip4L?W_^m9*Te%kG5e*>va(*fnP!LQjadMpiVA@TfH|&*=%&l25 zAaY2MfF1l`<KCPq5WfV8cCfPzo|Jl0Cf!gmRM@U5-uV5bB^_}i7LAJ*cOpk3bZ&R$ z+h&7iS@Amf_*CT@n#p|s%`^*aBMnddgndJTkM?yHfgVfUr@_%O<Jtr)-ZiccV4i15 zs{6FXDGR48bwRZx0oH#mm3EL>o|XR)d*jT3_Yi*TQ99t+GB9q?V$fX;&{kFC)7yw7 z>5Me*Y7*^{P%xknC-OEez=J3a?;^nQsJ97p>UbJJIiQdOjU?s$1W8}bTcTQ$#If9Z z4TK;h6o_bj490_b^wQPhQhhEAVxp^82LVpl1B2uy26mkjy-$}qX!Z$*=x7-`fNA`@ zA6q0)N{VeT9_WdmRU;|Zh}m~P$4f*TsWbUpz8bCEgF7gGx?9LP^PTL494=NEE}7?Q zoltuQ*HWX@X8Wi_tW@c^6U8;jkqsEyl~RB#AZEUmmIu>SSchiE%d6<zZX!UO$aC5) zfbWL&>P(Q?m&>0}iLCm7V7#~;o+Jdw>KMuOEshihfXT&86lkRa6s!yY@u<*d%ih#x zqQyA@!X~c}<=&a*i0t^G%K4zc6YaVUsD}c*7aJaM@1n8}Qzxz7Pq~_$Yl?TV7hPK! z9V#YVR)708U>LliH}z@YmOJ=GX%&dv)^lQX(8*6Ba+ROG|Lo8JOxKp|CXE==2ZTeT zte`YJ3Y#3m=4mFwo9}PA52woZ#R9PPxMoCzpCQ<3Ad#nfv?TZQ;plYwhttvzXX(ku zYMt`MRlt41u0y*eeu%iQan;py(g!drPP@bS{KE>vV9jV^q1L_TLLN!;%#*QOBy+D% z@){*o09pQD)qQQB-~YAj{&mTM^WOMVQWGGX5KyT&b6JzbL;K@JV+*M{ie!<$j2neO zjs6@?2+)2+cr!fv(eXmlG}M!$TpiEp+cl~UUZluF?5JjGsuq5)#(N5TuDJ{_TG#Md zcZusl!8~J$!KTXUO}2#-QRW|}I?Eu7<oA;@V4mSy!O>qv-b+N2&a_FiJYur59i{{m z4J|!oSHQ&K5HTu2p6RAG=SRIj+@yZARj?Rf@`Z*XJ6^1US@wSNZLL1y2_~~<JSyCv ztpQ{rg%`{INal&wV+YXj44bylgP>OYypvVM1gqCjJxxte1)*UZldFjbPFgc{rqX+~ zQ21`%Zn+7S!`t6a(DUg6IN@a;g6D{39M;@)=B@C}i8 ^tzw_iu2tCm5{ajKA*8 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�o% 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Ü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�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 delta 1231775 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%0D4k)npcY0m2QK7 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Îj=%Kr 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π#gv(! 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 )rRuz1bSrAodq-$8F9 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 sC1;m%Ep|~ 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%0AGDr>kI8&uF<T;{<4QshvX9GP2W# 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%0ANbiY#zk#v*4ex)1?z1E zz9zCIC+=**?t8(1cnNkLEp4A7KRKc4c%`$#d}R3n+p^bu|3S~uQ!fTz^EEH_d^c#{ z6q_Pnnxgn1MJW>@S>hTpEzaSL(E+nX#vqi~Qk!v7XZ_Wl4n;4RBtW$IOikGh?j(Sv zE>?jqC`s|NxNM^`lC`H}PCv;<BOG0>CG$(m>74+qZ+cyn-}C9p07ryli`C9Y*2>2f z<H&6GnCyJ)zmjkw*zKr$7x&j#DV;?52n+h2+8Y=je8vzNaoVmHeaksBN>1uO6ZVBX zuzW1~^_?>xA`wAMO)T-!nahY+PXn%6Qc}!uIx~(l&sJJKl-KYQZXu=VL3YbRcH4qO zu&#PlgrT%EhVL2Jj;dIIWTy*U3-vh@Nk+n>)u8kOr@9nH<^bD)<8^Qc@oWuIz>v*) zj=28R|LH6&(i8d@a(bLjJUd5RNe0{P<yfFR92vwdc_=<5cgrjrY<Ni_oK2U)_Dw!) z-;8zhbEbqr6k7xq9)pL{r7t%aI?H3()EQ@g$RZ0EXHVdv;q9<fSRz+CqJun&)Cgyj z)Xs~1&6lT}TECjbnViYzsANBN(tgiYAQSOnE5{CyP}$3QS$gyDK3Go;sxc)ZKP4{` z>+(m0{T_ts7lGMiV>{VS)WasSZORAX*@N)TyBE<q1Q~5ll9-(y>`tf_EwrF0doEH< zEu77^?Al}hY_<roi@&l1%E-k*y~V-XdWfQ%(@&8PhA}nmH(UkS68*2;{0@#xN95{Q z59%PpJ~(!pILjLnx%g~mH(mKr#s6wzEAJyoBGN{$z%!=F1?l_>QzdM9g#!+k*;o<m zibdL5?M9eIKFtq#brA^r59d{8%K5!50+R#5>QP3od{fn|!<jDNMY4<0Fu0@)T|_cv z_X$cW)s_!WXyAjFT~Tu^O|N_pt}utcxZ-sd%%}c=55`s=vUvOL@7qk#%E8s(s)2I; zEew6n`lbNeK$*@^7QZ^9j4W#PspxX$k4(~PDHMm$@OHj>(pp2fOwKbtIp&t66#J`f zaDz5FZ_3ftM+nQuPJUG;TQE|w-o@s0Oxb0NZ-<TC+7Xr{h%)-Bdu}yKj+)=SXw%Ie zjzOtuXi)Z?ZmYJ_>b=x4zCrhXR`PekvQD7sQ<kw~eqVm+DluS*PH=}TewGHKtop-c zgVZ}~qP2E<wGQWMtrgQk)IGJ9&@rB+3LSJc!8~?Nwh7%TG6q%3B}bbv&5D@=>+4+- zTI74P=6FMac3hEGuzlH%O4q=9HBZA7)4^c~RQ(i8FX+rJJSj-cRfAezEPQ_WDKh36 zx>q5@5QJDQ;5Sjf)u2GTzd(}*v3ah$oKh&=iBr><x_UnX5usKT;}C@Pg6m?5O5tp7 z=g=JG+Dc@#JT}8i^2uNo5}W-V?7}mFLpWQ~PKnF{pQN0N(_zaLx^<?h_y=2jW%Z>+ zb+LL9Jf+>EXzGqwvT-zteUnd~Mnd+KYt*R0*Dc_~edssiun-c9efykO9+v$mrL<BV z9?5`h9y{4?506E{56UofY|bGX{c)-7%T-Lh+g^KeMEmk^S&uC|8en%~7N9IKLLcvj z;MueET5+d3W!yU3MkA`emIw!QDlK=a{OMG~+|xL94{Lbc2`9z0xTp8<p8oPZgFpB1 zmccO$q8--IsROn?%GQrAK`inGlu(5E_{ps0-pW6{G)y18S)&HvIEU1@vy7%tq2<)R zwm*ICn1_-e4lsZLA)%eu5#>~%{}$lP6wM$39bW<ExrcDd!`@r{;}84OP62UXpcV6w z9f<)^`jV4@m$#sX13(-<$HZ}W3K9U207wmZ7yr2EA+YlhunCXK*y{(#dk-C&p*zh0 zC-af?_oGWdt3XeNI8ha(hwX*{_w~n<5RNz;0PAPmye<b1k5WmKJ4d=tqR1^B*WeJt zKmqjRb-7&(%9bL>$zWI%4YXG?WGV*je!`Qc29u}=TN6Ya9nkFo;yMRxN8rxwPn|s< z)e8)EBtxZrfE7+Mnq@;}7)<aJ#V{1wpo!lgKpC{wA0GL^E)qU0LWQgAKRx*i!tM!h zQ-?;O!)Gh>@LU+-3H5UnISwq^_9*|F0c0RWTo}U+TxUtak7N6v4fqYav<#DEpLQ5N zEwUVGiy8s2L*l8A3_oGSxiC=^&xRqxc1mN#ISxq)<Y5YzA5U;^MuncB7$&eqJ)I(V z^$o^U48s*ZcB1fE%ir<Y!ZDFOxSRfHWsaO*j$Wqzxace(@fX9V|G3@Cs8D}mB-pC6 zf6Qin%-@ZJn+otC$10PdM_p`eNDQ{GV|_Vt+5PH+7|hHY44m?O*8Rongb8W;iLL(0 za61G!3Cn_=WkB4putX99Ym11dzKo|$@TwyYKe2cHMP5IW#qm?#lwlDjJLJ(6RD4SE zD?AYkv!p;Q@h^EEp=*#(v^eyLv2|^qwxztNs(xxs17My2=N=&b51GP+Ny|aFG64h? zP*ffXsE3lKfbk8$mhwb00*d9HA@{6Ju&V(_P7SB$EJk3?s&%@T3q@f<xb}wOQviuJ zCjsKHrOk3M0n*-_I3EXQ<wZGZh8=j}OgY-*KxzXS1CKfkf$2Yd$u#IW&%SCd%!S0) z3EUj3Z}=*xP@8suo%TPJnjC`h-UY&Q0Pa0V)<5J!C1ec%<swr7PS)NlXbaqh2}yf& z<orUTR`|-N=4_es;0UO!@{u_LNOCRIy%BQpT*5w@QCfw>twF+W$U!KtK7Eqg`MW&0 zi>X4w(3C0B@L`M^OfnDdQUQu*@?ED)B?5dH%GAQ`6%i^ZVUMp73wzeO;srcy`TAo0 zR3MlO&?O&Lc2eKIj0ZgbA#b~LY@U5I%E^E3NbTXou#-3>SKnf#kvd#Y?kH>g;eOK0 zg-T|O?qL8P<}w(>@gwo6!3(}aPR!L$z#k7lki}PyeO#wB6Z5xUb(iljk;&e+Ecq3J z&1E7((G_aUKPv##0D0y1XafLMmcYQ6@023QtABO@7Wn?ipMQ)7B!>VG5b}vnng=5t zEGU<|26zIMpkd2U!Ly;ypPrU)>wkYf7gH9#vUFqEoXJ<U_hw~<?>hC3v-=9K)TU3{ zO5o(tAtWMcSd78ZlDtf>c-8v?U9R@XjtBUQY13?h1EJ5v4G|i-YyUmxyZN{O*edz? zAMr(+7Y8qOyZrHX#pJg5d35UM4ZPuoT@rA?bldJNAOYHdP!I_0`-XqBf5boHr?)x= z_-!S2+N;;ZY&k4**4R9k>+_<bQ<ZF*65xg4GYgKJmK!@y}VHO9feDz1F~h=Sg6k zC;1wzw?aU>f6l&lo?8P^Ufkt*LcSm&KX9A%`BNpj3i$By_KMdOUm0UlMC}7oeZ}Py zJCg5hZ0^c|0kRhO;vD?Nr3ECMi2l+%E>XS8oItO)e5}ev@Nm7BKffjB^))s3E3fS* zfB|=9^=nI@Ni82c2ENu#&)8KmCA~OKsQ_bL>i}sDxw==)+TtD9xupD_yvD<y!0Mlr zK&7zyA9H_Bo&2a2vj1myz4_~E-`nr`H{_g|U%M~Of?7U;N$alROkT0Cd+~te>JLEe ztE|Kh>7CFM9-#OwpOGYUcT(;n>u01Y`YdJ2447(ALoh?Wz;7ZZZw!OZAP?VeB0Jc9 z!Vi2%zo3$^%y$QWm5`QX&o5{O`#ILcV0b0Sf`K+7k0bfsdp<$C-IU`7IBH0JTs%O9 z&0_HB$2?SMIu**h_f5@V7f?H_VZhH}e}dG$v2}cJS4Y(I9@S(r`u`K{3j6l95>4^! zd;ae4?-zU6>D{{?eSu-KwMv8MNQe7>`mN3&b!;9F{s)N_hYFA-_Qm-QUt0c@nBJ9} z;CBX~d%RE`UVsbv-_J8&ze@rn=DQ3Ew3qc8NVZ@e^-kiJ5NiM!1OQAIA=E020~vsX zNRFL40Dwt=U|&8BM}e^mJ4AC#PYq=wkUXefQgU4$h$EP|H-k6MRON($YmVliY6?<K zi}~Ge0+F6v$RDiM$y&89VMZfS<Q^~~&}sKvcgV`)bd2+7_r93jx5Kxb!xp(k{zi&8 zPTjolB%Uh?my^spXq@%u;IEPHQ+m^lfBt}byF>m^(gdNAW0Y2%O`6EZk-laR6mS^} ziz(1Z0|b<)o_cAylu#<KqU>H)`iBv)%T+qAHoefL%kH+NHg^wT1ha@Gk86zvt`EL~ z-Br!;Mru7}dt|ENVoj2Inm=y}ei9UL>gkr_E!7FT`y^xVGian<cJ<!)Ov;(Fh#4Y~ zfnWs4KxZ%k`WZYj4GgG)SZ2W&VDw8Z03vzn!+=#^?Afk3^PY6<Mw2$c8h<`+%+s15 zR&)4sP~B8KcB8{o{0sTkxT(}NnNBn5n?w!sV<o=)Ck=j5GzwA=za8gF)fl6wJ>@wk zWBEiPUO{6}{*GeKkjP2-f}wJ?>jl|jYFk;^7D|`SWJHdK8oc4a`PF<z@aIY$z&fL< zp~xjQ-5WsMpfX+ufweQ2t96(Gy(<r`-brW*cv;m2ygHK{z>gwV^MYtm*moj0CU)j? z!Z`H{zuBuMrQmxU$FZjpEUYtFG7Tf?F!AT0S3KhZgDLqQW|VVYO_|QgIer|*so=%{ zdwWwwrgrlt8_@CtFjH)9NP4v6l%W#T=@I)by~hI!&FncJ|7G~Z1y<s(_dRAZDn4uD zLqh8_>ZAP9-xbKR9F}Xf>HmTjl<Gv3wkUQl5U4Y0VtAU5u9r^$r9=ZtSxatX!lepD z`HN^d!iNvuHJQx|NkN4bDaK7o?xV{oaWKY32PY`6ty41sa(%JeLWPs76`X&f$vs$5 zO4wNCx<U*0%+VSY*?t-8A9b2z)C7Kr97#1$5|*kHBA;7oG7zQzIxf8Ycsy&S9S21! zRTiHNA7FniJlYC3)sGk!zStk}?CGI!Di>IV!&0?JYqV39SK^)`4~NeY9VBCa>3#a& zC;^Xq`~F+5O`GRAUZ#$4)3EeQrVS*Z#$YrWfKByAlo#n0u_*HHWOIT8pG9Id#<sd! zp+|I(oH**yT>j(O1!pBoWA9cw2^WKV${erDIkO)hroIj3ZSMMHVsV@fiep9m`SR?{ zvn$^}JR$%0-%)(@LIYuvBgN(A0v4dsK!c=QtP757K;yOOq`8Whft0cL&|dy&nN5NE zvX_ex?>+#cs-$A~&QWp3Ae9()Wol5gKJ<Hj3Hi!+lFX?>8_Gx%R9`BT!wXnRh}6tq zXv4`8jgi9ngAyJ$6~nHY3n{LlI;pD1eFV^k;l?eS>O04L*u)Iq3Yjz^)!mO^yQQ{B zmCqbgH^S1^?YV?a_2#E@V~2bSe(v=S?b}B3h-H@JMp+`NUVs$`U%>^HgM3@APsb9? z$T@`*YdG!P<Jb5(%bYx&iD?sG0t3H~C3yQ&OR`=@ygT{M&|O{-tPf;4e22HGC{TY( z<=wE_u$^m~X)FO0g1w|(5rR1$D?ElccV0I$Rxutg47rr$W;@OKP(!8P)!5|8gpbbs zqijko>`_BDJP0`j1do4BJcWazgu*Ex@==t`^#IIYHJEi=o&oIYQ^0iW%aEV5RsTU6 z&KV4to;l>Bg86*CM10!S%>DB?0ynUHVDmw<P9?kG75t{Oa;I8tkgMyerGA#qw^5|O zR?8@_<ca=z&w(5}QNR=mw)C-kmdSM`iyuUJ&JsWQRiU5ALG9csQsKF$=wnZA6!P-J z`Oyod%+sZMyS>$mt8JTHPYMdM^*Oeg7=qwt6tJDBaeGoxIxGU*<~e>U3SoQg0`&O9 z%0WtdhG3JbR65&vw8ow8=)0D_z_$l_E`vhF&9}@aV1-zidd>iE4ijH28(T}TXvdao z`a;$Brc#M>sy=bPGOr0kpUHbIp+R2bfh*6bwr``Qs+6`ZH>I8Z{r8peDX1UCE(Lzw z>9sae#zI0gryE^4bsV<Szc)+lcLc}kEkHqwigwm?!q@C!;;1^D-wN2D_j}=vF><FD z^>7OwFPuY+0eF+A-NLz#3+n7fpp*_49f#aW<dIumQmV~4d!wU*+~$bjd+`BFse-Hy zB~)nwJAJPQcr(KPGl?xzs~N=R-3oq>fG?%0rBr7|2RMqj)RyE(sk47ZV4gi6xtBkj zULFjO5*@_dmT1Fzw7kQg&sb{*6rN0ub(~AOBzV@d8U$fU?3e$^&z`y*U`iZSzU{`> z%`;u6Xc_35scYFx&S@QJD18~nKI6OlB2Zy%C7aWDR4~ZjuR#Asc*U33!z+%)t#!oV zg(M}brip1e*8M0-EUZmZ02r>oe!l6ac+up<()7Vq5g3(%oIH3>YdA<N(eSKIwOUZE zgok`+AWR+W_vK7m1l-#154~ry#{0c&&p(F{5a(w5u=NdOGi~$n3n{_8fZ2YneebVg z@y}PnW_rIl6<+jlILLi;H%QvhJ(GBQu$O?4XMoSQqU5m*fZH=n^^Ri^uhi`Q`OWcI z)^j=Qg+A;!r$(&XbtBRLCgrU7G@U5L8zRFt@6@e@K@gR2*E35@GrO=$e1j_o2*@2l zQ9Kyk4uHv)HVS|KL>bTD_Aop?j8whxfK8-b>XW>2ePDEoP$x3IXSa*Ve(lPHU+z)5 z4Q006e4^IAI`9}a4W6#QVaSu*-lUYQCf2@Z$Z<8Wvq7FS{jlL2W!~9=s`ReGY}jnH z;r0U0#;T?s$H()3_}_gMVJQvkbbnvd@cl+8!#1msmkbN*XWoM&#tgn{1AA8bh5diA z;deD1Lls<_ii7h7rKFiB^>m_48ya`uqWq6y!?d0*w0iWqIc@g%H%-{w*JMw;>E7@$ zwSU6b!msE6*suHt+rEzGjlSQIa>4nr_>;HCMqfWN!{Fvm>_1^o+8gc!ss4C_^#_;E z9P^n@Cd))dsTy*5>6i)H_;?;dx3THVgf3X7$Exq@=MPZu!P`)NqHH5aNpJii*9+6X z?{2HRYptfS>khDf-Tm+14>Gy6FMXGyM*;K!4YaWTvJ6w5!;W<PJ44}NylfRkr;kr5 zZAueh_LOYVzZex$n^?+5uHrmO96E>hV=-`Y*&0NXAKkHhn%`G>{P@XMd41r)@#X-{ zmdpXsipp_;$Kw6h#R=+s!Riiix@^c6$8V<`7!O{5)T<>mt713=YpPPQ=_0;5bL;m~ z<sr~syu`+!%03|_vx^HakRp=GHKkQ|UCZ3Zz(Bsn#y*?xDZnjaR4bBR{uJQBaGW7i zjJOZ5-4q=ViBF8{dci5mxkm0iv?jZ`pdFR3U7AC*y2x`8Imw3Vd06#d{KI|COah0d zV-p7?4t+M$Ful1}{^2P^bgpqc9E#~~QoEyQ#4(qta!pg(@J+Trg|P#va%A=%@PH4W zDGMRC|K1x;VLbqQbDeNFpf*3u{!O07U;1_eeNwKO)QtTzcnQV%-QGB50qHoAN!ZUa z?|%^ZhH(s{w)h?HJ~uE8lsx*QXY{dl<mt$jnrCIr|HsgMh9%X;VE{iMDBuFYJpx3; znS11j<zC=QP0dxgS7tUrL_^bZm!op$s?4;^78;tGnVOZBmYO-T%*@KhORpc#hx6rJ z*E!eooag@kZd(aIU6Gtt+pt}`Nd#j$hsXeH8}90bb!YG@pUeUpew?g8@Zyt4wp5P6 zWQKv`BZ)5CTUg6Shs3YdDnrvaVhonS0eWWO-7;{SW>dby;XocJ1R$kxpn&|iIG4oc zkSy+0<Z>=@IqIL}T?xEMZ9t5nq?ZO5_Zs`xRY2K;Py_We`sJKP^OTI<NOkk23;ZcX zIM|U5U3Z2q@4l`K7fEE3(%7Yk+HZ{B1aA|LiGZ-MNUJ}lRK$@@f5bAjv0}HMU@PQO zGrBkzbHRm%z$J()o(8{pvpljDA@A%`UuAr`_3^;Hp~FnXx1uX)o;l~IEI5u-Z<EL6 z)W_!;ltz=jXBZeN)^*VP=?ktUN4rtO!qla<Ly)g)Jj|BlJy<%P?aF>+=1sV~s_s^# z!b=zb;16^57Jq-@EUVIqA3JE(1bb5CWThx^ccr7B|4T~$t{nCFSu6(DaY*W;cHcH9 zSx>eaP~rKs-)<R&tkty(Ow1Mo#UGqF+b_WXRdSJbvKpsl<{Xz26r-jy`ZH&r`4ReC ztzlJ7)Rz&A%Z#3<DzK__MhmYYX}B)eSoky}l1fxDzr1e9S~#lg7dwj582b?bnb&C~ zU^6ELKm#q)we68$2=Z)5w|+fCL1WjLqWf;6M~I@`O^){Md=9;Z2hQ(wYnJkj9gKSp z{zo{+skpr3u6r412$AIBwwe9sx1k8nJ)m8{A$dHwiN_yry8kU(cdI26$xKh<=mhaZ z$*v8|X9cWv_Yc2d_)dOnu4hx@{ftD<CbH{H=)-TG!&ew;?_AV$^~UV}%PwFbWL=-O zSXe$>9Zq(wo!kr4gjlDbd3&sRk}IC}vM-oVYniYNvjz4_3`aDqjzf@;jO0k;p;fgx z-U=ebS->KfHiD>2uXB?O0rP|@XKt5`K96M6S?X+4S(wf-PKZS7NJ|$O$w+S;TDmZP zii!H73-e3^<9&d=5ziy-+<gk1#ipB%D#>pSAoOOMqE6<J$Uvet<?<-xN-G>PY1R&d zKxRi0e0ncs!$bl3sCop=k$oP)hVXlKt7cnBGR>Yav~r1?1YXghJ)S{sn9XdjBvx<p zg&mrkH(4i9u24WT1^1co%<x11D1Wl_@RZeW?(PssXlIV=`ZmzV<-^W+lQQdC5a8D$ z_RF+>TxPj|L*_l_7(f^lhL!|Zhf&TNNB?jwCk=pe{)0D4`gF}g$c_Q^GXds@ZZ|K# zCXI4jEueQTP{NkJ*Kv~EE6-U7_fhaoNzdJt(xJmSpE`1WRqy)Q*nD1N?AOP=23B_0 z7-~nZPKahtZme`=Fs{cDVDIM4&p@Y#I;WrX1s-Rr?SDFLy>ap2M0MbaY?!X^RQKpe z$#BpKIKSv|>sEJ?EKd+5H(8q_xxanqNq7~`W*^Oa;`_`y=-XBjqyjR`sxS$jw|QG( z^8AH$K{bp^9_1WUf+q&K>0*Ny`rfX-7;O7*hhkaJ0un)H2dl?C9*pI6_fhR6-^S#U zExa!EWGan)a834}cDXv!A2(53jhJcbJzqWY9Xbohg?zm*auwtA@9<eY!dRZG)z<eN zo}&-rCN3`Vgxx8_55)%dutJ~T1qpj2jdm)|1=rz>ldOWCb-cUMHuJW6=1NFc#=2u= z)LyC5IYlD#gX>*{8WVC>a&y0%sF|7ANG&||tc2Q`U)iBbr8kR|_sAaIeQvL%=6VB! z%w}#feqWsF>+CI*)%u>PZ%k_`@A4(cy*E7Ts%&Pa63^ID%7#|GRb%Og{Q7<c=Iw-6 z+Xe~W&mLDi^<KYl_+q%5)o4i&2k7`C>6U?{w5PD?z6*A~3#3f#dOBP)^0igNg0s+u z9LaWlx!|_A;C6Q61q7lcM~3(TV#|X=CpqrE``r$(U9$q?#vxjl<^kOgny}DZ!?$NU zBP>^IehQD58C-j1&JvB#kz0^m9Hr{>>`#RMRfUnaT7WdR)7uYG4U5sY7GwGsW6hMZ zc<%D;b_atOJ)|OT7%m<fp704=T$;3}C5{6?P+ZnhTItf!hNWZrW51d%fAM2%DQANi zfY|n%&JNh8yeM;PqCjKeP-;WUr9Jne**Z{%<E6{l4a+&VSj%Tp4XW;RyHTe?a3)Z{ z4w!CaFnVfSmWMIp-A=l4edU7IkMhz3E9XZ-+!Hwu@ocmH<;s^U7Z+D9{fIhp=gnoy z(nOW)o#++q2i9o&NX&snZkztCF7RL7(aQ}Vn{Rz=>HpX&cgE|hw5+TBzo6h5)Ir|r z^<+^uVW#_3L=5YUStsgh>gw&R)vnT*%Rf5zw})T8aNWZmTBR8E$}74^f3U&!sYk9j zjnM+k&fW3-)OX-hf9j_Z=so{(={UPgeQjL*R$v`*<zWLN>yMGFiubMc8)r^_8aMm= z-2U^#4=Vn((#%{Sb}pR5xbz@CY(+3XsTVDIEv_>WH{|=7^-gqcR&H%hilkVbe`C=3 z-B^r93`Hj1seY?_bUSGJR*+R9UKJHI|8ni~;@aAe_&&vowE^pUR%VxZJvZE=SBxUL zY^r8#<TZ`OFQs38HGKJfD?x4Unj5p=NdLjdD)867h?%*G<|m)e^Li$I#f`haKo72q z9$6QY7mCY<B3Wx6{T%x~{d*bv&=!_uMcwf{Y-|FiR<w9|d>_pGE85{J=3xSAft!0L z_A)~a;*e<%NtD<?7Zo7}O2S9}a|aUHC<h+QJ49A<18=^eetPx#BhIqc%yJfgdY9Hx zut$yWDrA}$d2Ii8ZQuG7*k{YO>&Fig<i8neelxnVq|b_G_Z|v~n}8?(LJp}NOs=m; zw92{uk<lKrdLBtxIh%ufha5NiMwZ{CXr@T%TT3_OC=|y>ALaCBeA|j&EQp+WIm)^1 zADqs(4lwL?>@~S@ChnijJXQWXQ}es$!KXGhuPzp(@Iy;Iw(`&RfBtUEJFnDmFM#J; zcHKqj0EMtlfiH%}Jl}i=O}rR>BHGLRN4Ud}h{yIF${P;3k~I??`-41M&uxi!pVKWY z!6(7GT^upKEC$Z#DMEn!*kVX0aFL|eg3A%x*JL&r`e^U|^FNPX`FZTT@ftViT9TKq z|JkI$cmj7*!s&TIh&*ceXOPQXAkEZ0#II>K>G)~Z7VrF4wtQ9TpLflC&Pi!@z2cYc z2>*>~<Egnf%~+_0o84oRqi<`rN)G-iJ@TvHa3tp4x>r>8d)}p!qFb9UappnBoCgTf z<WC6MgQSoK0Db2je%I~!U4Q$sP6%5B#s(>92I-5J`|5!G*o<>_q}eB6N1#~@bE;lV zD8g3IY%u?`on`J=()Kif)WwOr!yuLYEnRzVb2m{)(D}9}V&dn+DG1d0w(ltD`S@Bm z>b%r>v^dMuIhsN6j9VJN8uL^C?Y(0^H$JcaOmL?dh7II1qvn-*4G#eQ0h)c;XkCcu zwb)-qi^JvSht@v*GJdCA;L&v<4UxQ{RaKHhRW0jldeMIH`L(z|W^2>kM{diS{)SX! zr=0Q_KM^gKtTuG?lb=-da@D(nGq*3c-;@0E>GkbHUs!AZS#7QFnELzHB&k1Ap@Qa= z;9*0m{~=s_)7^j*+6w>v{`u|8mwmbtwKE1|#D_gMf{%~iUqY%%jwkuK7*`o6Nu}KB zS8y${a1@JI9{IV0hs&|RXKT#M4<@KMcl0OJ#1at*!y%F?SNe`zpv#q3$|H$bftkE` zZRl2^%0t$Fj&HOc4u;~3+;;sU6f<9I^hLJ0P4q@u4*NdlKDSGGe~MyHq`BIiO<jm} zI(w_GIIjB_u`+3B<++x2ZbLbpbk_HA>=C3q^Soy3jUCY>iIu{#f;)Z{<pnn^HR}qT zcWKp^7@15*iraS3N;-a7Drumy;VRYC(x|$)I#Lu%tL19<Z|zoLwY<Lsx?ny)w&TTD zO?t>jp=Lw%l}k~3Yc;K%y$N0mv*E2zcm2`r7<=hG8!6^oybL!zML(@FGt?7z8{&qC zO6s)%BGQNgJWR!Uv@JvVi0(&*YRo5chJ;mPbr`ic?RYGuFzv~8YT$wHQDOn9wJpX| z_ir2PmP-1cgp8Ri8Ky?OBQrz7+!gfr9??n0LDq7;EkUp&Z&w|`cRBHq(qXP^K507H z#h+T}s<QE@!0)SappApkP0AIz%wvr4GV<FY+>5_gRk)-Su?ffylWZ05iA0eh<cr}f zDT85brg8zvd+-tGuYKldL0w?}nB%kjM@rHxeUrr7W@nx}lF+ZLxJHfs`?B}+xY8+$ z`D~%iTjZHq)J(oaZGo0&MEVeERBIQ3N2H|W{#F(T)V&?p@NT37HAbMIxFq71)XUW} z=~#_SKzsKkq!Sg&PVS(XRj(Dyd}U~qYw~(A=Z<?jEWp<oT@K%?@y_4wJWLvmx=3Vs zcSk@>mHw`2&gPC{cjg}WRfWq7P@>jBUjLz#c<)q|PBw&`jv1c`x%+kQ_H9~^?avBj zlh4?@MXK8F=@}3$y2nGyiFrJ!2kzPCsjrYHMfA+}$%dS0Lp%Pfd%lY?!Dnf9rEfs+ z7U%#Fu37mdC0Je&qQBr3><N=~on)zP9j3F#6@zJ{xt@1?{wdsCx>UVr;qUx;A?NO0 z%4)ua(#^gv=4ri^Qg4iHyPOP97`Ca}C&QY@>IX83u^?GgShm74k_VmhmU9r{XYi;d zLYJQJ5^2`yy7}qwo}lBNemxW!BcdN{`>X*8h+sU;pbP^3CU9jr_rMvJwErC3GlZW1 zNebG?qiqG4w~W<cMSoePmm)b$V_mbNMzBlEj4_LsIC@rDEKky-N-G1{NQ2Mg98PR0 z+Zxg_?kAo~#AC^@RC+EkA|0z|q^&fZe8d6|(@>{Dx%@fvD2$^DE8OXolNi*X4UMAU zv)|P{!v@hQtF}`tH3b!8BW=gIzuK?VWXaO9Cnc6tBsV<J-33^o7~RhN$d!EL%WDNv zCmUU^0qkrry8!uF0z^UpP7j*S=v8f>2_BSToE4S*MoWJe>4YpC|7cS*dua<9W_$eX z7tCP=pQ{p{Pt$6`5J4LRTBLj#Ln|U8$s$?>Y${S`RC0l(Rz@cfa6V27u4$4{B39>2 zvY7|O2@}nM%7g;GW8(K5)ug8%8xv2vNz_PQb^(pGVHCfsL==Bg9?-g=BxYfsC3(yy z8U&vwk4uDME85c2$;rc&N&-_w6Bx<91ib67BPPf?-BG-K=z-k9Ad{`93oty-d|<8- zo+lwCRAQY@stLPE3VB3u#~~;uN=vL|2cq^r?*De5?1~WfL|g9E4$O`OBe#d3(ATP< zG>LkoKf70?DnFAN>uD`h-)MKbqAb_5xHc~NUF3uTs?!anp=$@~j7&TYzSLWIRZ-Fa zJz&!<NB60{p`^_{2Cn(sQCcU^xUOc@9CwRr!#W;4usbF(pXvWZou4OhYDv8CSrfSx zG6iux<dYwq+WFw&SR%Deb}~~1T@KdRZ=&V-6jdA6=B~k0RWCAfy~OW*OVj*R4152s zZSwfT9(S4}ZYlvGDAmLom^<C+L64G=I|9yA>A3A=@$DheIW8Jf#mtlA!-x07GyxO~ zM&^|bN2nQN8<h*mx*<=Lg2-51&Z2RJ;?s1Pkbd|l2by=_C%(`0TbX!ufz>Pj;e7{u zE{F#$?uy}PO<!z0QZE=s`-R~xL-sqrU9Z4YVM|4)TJzvF?}{Z;&+7&IUE0^^nK4<I z1r;xDlI4WoY!;Z;YDH4*?PAia+(KC)_Xe<4Kjzc(uOz$t%~O_YclVNwka>7#k!+^C zn$DZVxnw2EN`ESdxeOduei<C@AQJW^&-oq{mk?2xn1B5e@X%IGGGCDsPYF#piLm?( z_s$1<?A-n&(%VZ!&LZ48rk;xK0W{^>4`$r;2SgbFM&=SqPlY|V*A~E%I4s9AG2Vcf z9~-T7_57-P$1}NfP7gdE<!Mj}x`wwDK1OdByIPY+?T>ESzw>^BHZUGY=cGCjPjW<e zMwIS!bgatC%h{TavTNMMGY-0#&vb}*sSoN)NX*NhDI`8K981`3Jg?M*j#$#Qfc>0* zv->wOV%)}d;K0!Uo2rDmV=RRJfZ>ZcWc=fD=K?1Uipk7qM(ih1Q^!<lj_jAr**B}O z|MK4N_*Y@=Nsu|5c9*}i8LIdA-g`gBK(E!q4^ZAcya)2WeXT)3UhSnCMBA?*>ON*( z<=ffQ*Bs>n*0iT?3xOmeVnkh1BmUc79Os<tq@7XJt(^<w1&T;&mjmmF_wt(Pk*=%m zm*evrpGm#k*F1fV85YuFw9u}{qiqQH7CzaxM_^jL-*n;TmoCnhGw#KK=}6lg<O9(T z^(}k!ZB!XKw)DM?!nbOU@kPL%bcvQS7NjT$fzOgv-oXug7lW{N6Tz#@2@wM1OWZ7) z0nx%ti-O4_j*!)o5EeiN1rG#+M%5nOn6)!uuXQ4ZORCVoWqbI$qQAouq5G)b9w!O} zb+Y>?iO<A!#iSk6WwItHqmz*WK4z3+@_moQfAX}2@eUll3aE6>eFu*W`pZ5iz6_|e zy>nntRof`C+hsiyeAgZ+C3kMP2IN7##9h@V_o{KX>h@7so6_Q>YHad3XfpR|=o@n7 zOA#6R4ZAF?_8h6liz1j5js-zPsAt&($jg~MZ%R<2r^4tKz@w*?A{HPK@5-Ja5cR~Y z=q^5;!0v(aK?ZEJ2_KaBcG-@OD6N9Og$|cht{AF-Lm(qj#ZNjBI=9|}CG6JkWCvbk zzYWdRWR>r!a>P<6yyScw#}<lGhJlCvxW9^f<%FV4xZiVGzn7L=<*jq#-jtkBx`xGN z_|s~7uJb=xLEZhQBT?Z6PVThn9khXP6+OH|F(YF0-AJA?#oJ3I=`2!z_M9dC`?NY` za!&+O)%F;g6dyrr!;4H`B1iU$%+AxH<bFjK_md<U6WHTypYF1&2du)^clQ>fa?xG> zfHnDWL9fWLu<oM`9idNl2?n{?_lO7<T)|}6%gj%pa8aW`fF4X!;Pk1gx2#`6Tc`WR zYq%-_kM4vqOlpgV_cq#ajs2aRU0+)vAZ8ztyFX4KdqyO<suptemZ$D)OKwaWE7X}? zt$>H%Iy9C^st(?iz(pyWQ<v3K=VxUFU!7{m*6Q|n2w7jST^LV^r`J?oB&&p-9^7Yf zkxetIunWY~5~c07Wdg&7n#8&oJRSEb48)G0D1fy+y`^dh=d~c3CVW?6FfB5@LX|C0 z<r33Al!7#AbyX60E^)MqRiUN1_b*<;NJW|o8G1466JO?S+v6Hd@mmY2XjOH*7#<+J zBu!5|XMW5@CB@~qP&`HwqBYthS?P&UqX)?df<#MxQXpr)YB;A6L(N7putmwEkX!32 zvK<ta(H<qCeHc~HX#JA1psrf4u5GdRL!boByMa3JUi{vb<J;8YLz76yN~)<;$g#SS zUw_4qcQ@Wf(ZAo@VTXCLsS0_;Y^3-_+}03$EtrYvCTd}}!RRa0{8_jfSKNq8oL;2g z51}Q3oxpsMqlR`O6%?xo@>?MrXwoJZOC{BV7zgbmt12|K?D#dQ0Yj1jS{K%c44y_Y zA9l};dnzu}k=2IDCkjaW<*bK#q+pC(Df%fX$iB}}6vjnX`I2+)4unLc(C`ICmX9eq z3As4pGt_$dOK$(n+`*$*dM;>0_xm(uvzlgs&bvnchn(E47i^zXOHV-^EM2^5$))&e zQxlcz+KUm8rt1iSTXI=}KE1EHDc%!Ptj{I7t~jyu1tPKjAPF66BGpj;LvpnDp^XEj z(U`OmXjvFN)x8+pc4^25a%WeQPXOXel9rYPe>*AbF|bm^z@E0J=hlC846UY3jwAJ} z-sv5nn9LuPgS^6NQzEOw)XH4a7WYx<K6d>M!xc?&zTDTahR^R32m<Y-1K$<q$Xyp{ zDy(;{&F}g|oqtQpEo#xL!=$t-sZX@&H?V57&G7-EHn;u2^#CDPrE45h_v!ja(evF9 ztxxz*c2REE@RdgNwJ40=#-hIS6{@bDog{hmSQHKDEmd3%Fxh|DeFBVS+m{5>VVZVR zHHK?yM^YC`HOQ4Y2a6L`H|+#Od(jUUSxXWW?m(6x^TcZdRXPch(<24xbzY97zjq#v zQ#ima_=U4G!80<|H<~0YU%rX-#{cNbBDB2;@NA_;Jck?TJ5}~JdV{+Qq7Q~e(ql`n ztSAk)qcaxjPt{yeJ!?PWDcIjcwiL#uCW18;z?%6~?P<YHqc{iMCR#pr+lgS&AUbyS zF*NK>AR>n97e{Mcp=({gz2W}~42WE4+O!p{Q<b`fHCOGSdfM!`UqbFZv+OK;(K?~; znKtevs^H#Cq!cDgLZTV*6gXE$)V2uaTaQw>qwnR07pMZ#+^Q2c{*jabJIt4u;0FfJ z%^ZU~`2L)D!o6>oU};l@mDl%~l2V{_k8+;9PL(LV`|ESU)(Y7hB-E~R_^YElSt!hU za{)_NncX=n33)y?L>b<DLP}tG_#?Gr=QTOH1|$b8F8KQ58h!YU<m%d*Qtt&Q2X|qo zb0QTHAN7@Zbv%A*+b4DsWp`-DAi};-89Qn8p3*U5Kw?~(QaFwkiFxBLxJ8uF%Dpbx z5Jz*=t82Rc#x`5;#V1<gGpRS9_3D>?<$4KC>vJ0pXD^4GSx#GocZ`yG;C()cl0EUi zPAVX?xclUaY$;5NqheIDAY_H4?G3JvPo!1KAm&O6IxDCVMdIEbh<%YIvn%8Ua@EB8 zfe-EW7Ng<=vIv%66W<-QM5o?SrRQEmmb>;Y0drTSF4Br+f!>Kf8_{;d$uZk4YSA3I zNDww6eMcl%u7cj>?j4`Z{VM9Oobk5Q@;Z&gFEw4=3|pl|_Ld%AO^HrWG2f}(731U% z+3hu9@bPPELjrC1hP}UzN9)caiAlOb5;6nwGUbWY9af`C-KUU?Y^j0t5m%6_<Q#F? zU9v6x4XpR!0nhtulL=jbRK81om5{%?V1}SOCu4+@gbcZ^ZVpc8rL^%SbstNmeWLr7 zVhrYFvXGL?CSI>(QA~=eH;2&CV;ryzE)FH!<0}nNlnshi;y(rk<y)@sbyh}Xq`A`d zd`&b9Qa{9&(mgF@J#rlGq~fP0J1iZLL*H9&@Pm($;HP6@VCButU*6>uKh9bQAkFVl zvi=6=w^3lN5t#4E$VKA9IdNBt3cp8cd1S8?mv6FMo!s$Eit8t>YjMSS`-#c9a^ylN zxZ)cwRXgpbZrR;CM9U{k$UsD<ztQvKSX03|b|<e>>#DSG_1zBUmURavdKK^94N>;; zhG}<nZzR!T{h!;XV1?${HTGP+l^xE6s(<%(YIme;-Q&B61*=GsZfn3~hp#`)YWT3x z^pCs4I%~06lCA;sI^JmHzz8{B#aDA)dl%=+!MvniFn4qiI6M)fGG>uCfSm^+EX=qO zjlQ);)~2nUT{$LQ@BBDVW(#C<*8E5pZC1JU){nSIs@!NQ2?LgkNGIOwbZV=#*Wx>@ zo6)8Xf!Ujs{D^jE$Vf>{^6EDla+8kx>CZQ`zp!F76ntdIb$hr{>Ykx)TgZrB_`Or+ zMbj-&U0HWZj;NR#phdO<>vfe`DhCh~29&m~U(0;0zm1gTJ#sVVRCe!3=jl`X=qC;` zt(lzi-8;^D(S^i>0M)h%9b?Fq|AIU|ONm$AAuHVY<4jkXT#5{N>vrRP=0W<2yPY&T z_?5;$#Ec~S@qk3@evRT?*&Y|ug+a%QyyTd>7DL`gba%zpf%9V0iFF(c*7MX|=jeyM zCYFwJ&+UZdpNXS{=zaC%l7f#a>D-|KN39a{$PT}zk~#8L5dG4aQm>&>EADqNS@kEE zUNlgDi9BNqS!&>Bd^vkHgIcvVYNsqG+tDdoH%VA15??@_Jfp-~JxWD_18%d|0Fr&% zUK(DYHPFMmJbGoHKy`wJMlAC~+bY5?`;@{Uf{YQV;bYVZG|oz()j^Tu^R?<fX)XM* z#+f=43wMbd2k&hMR3KOP|H_w`{zI9jNb%Xg9qnmvkXa2|;$Ff%P1rMOu7-&RVxjxm zb^A6k4yleqf`H|=e!CW10n0z)kNlzL*HO7&c6dR)P&O%zEJIp;U6B_AYeEKZqudw( zY{EZ0r06Qg2Tn}i*u!<~{|}h>FIk#?XfL-|oLgk{hYIPPs-bp?X^Id4(5L%gZlGOc zx}FUCkp^F+>jo9zh^Vj^m4PMst29in2!Xu~VuRNIYg4AnRn7y$mFNq$_9129)>9w? zS;X}=>$On|ZPpA}PorWuB7*;>pM}ZYJ9W~I;_5DZWS9Qx${$|qdkMpTBi~mU!h9-W zfa0^GJJgPv;n*7x+&(fvS?d=(0cVn2!7n7h%kiCm9{akosRShTmo)wIKTCQg=ikrW zWY-$6gECs)Vkn|_SAHn%v@}l5+NVkCqGJsUZ$!{&bFcSORKN5aCi6n;Y=vV3K`VOP zv1Dgxf3aoJ0k;bCq{WFlMF*c{)FDF0YF50pndKcJS`niMok2hqm^6xZ@opkG`Ct6V zNcRCMBa%0ofiR$j;h58T>_Y>3J8L4vr+RvEAP5-?N5>&hU?ZfRztF+o35c+fEZ@BD z&P8;Kgw(FHN*eX(mUO0STI+^$dM_Xs=^5pCXig;ED4M!H#g@zW6H1(rnk5kBo}E%P zu=`F2y@l|cl<<LFz~1~l_dcGr;74a<G2{QpvgL^TZk`e`0iLYKc@Im0X8Kyl30~ip z##*>ZocmH2swQuqE4p;*<e#5kSxc`j2V-)!G_|KZ_#n9MC|?BS%IJYAwq_TRufZ13 z1)fKd;$({?r`>M%v=cP@s={>fNRZ=f^%}KKtGh+5TT1(*5m=z}DiT4s^{j@Y+u4QG zhV=F3st-D-fYRo%3pGZw#KEd@LuAVUzR9HVLb(i}YK-4+p#lZ;)mfy#zn?(78rV$( zY31fKj*Suwef1}aD*XJ6TM+C3uiXHB`&FU(V2h!wQADTE6qRU<r}^r}0^4%*SF0?G zUnsy{xwYeglMoFdn$5dVXf6~<p9!Y?!rVh8M>n4rKK^kpUhD}i(UPUL5A-5E9i2X4 zJR>_zOF*6LA4e)#ju=$UwHi)Rb!$}}+`kb_TGcJg&yBV!YYsvKWSpnCHt1Aghk>)Y z_Ck}Xh&t1$qN*(##2tYGf%*5K0EpWvkimP#Pn6p86h`Hmk0^h1nI$PA=+B<H5}H79 z;s%W)p{ilYZrmM1asW+PTc9%}1CE&MH8|@Snl3_O)r~z-J0_={AD%Z=y(=xhck#l@ zHvb&+h_$Ju%Zix#LW}6FFA%qM_kfl9viR4+6=#n*NWQq`pzJHe6{&^S9xFE$fSrf6 z<?3`>W!UdCtmDr%u&;VfRU4FKl0a7@5ifN>GLa$a^lI>3+=1E}V{H&J1V~RSB4mF7 z4R`^pKEPx!b*A48ZQabm;l~CtHlR`QEno|Fx~PnS7ci#QZq*D@=~~YbMeZ!bDLzS^ zMUby0VpHSMMqJBLR3tn7)YaD~=nv@$A&f@X)<gQ%b9nYWs35NbCu6Smrp5BOiA|d5 z)-5!_?bIv8^-1;MDXY^p>p8Pm=FaUC{$j119$emPXx#Vjzh7V8{e$YzbDAad(KWLI zl7s?AcUoIk6xVl6A{|<Pf`gXT4G}`^40D>3+%#j)AU@jCZ}TF-N&Vrx{xq>7v9u3I zCDWB1y~Sirdg@L9Sbm$u*E@~VI`~1RD^OKcDSNChLGq}=^1Nu~AyaaYOS6i0JFA3x zIt>ZLKN&{vFcPRHf5BE-%uDT{<|yH31A-=SpdkhQ7L{!PZ>q3TVZI%(#^s6botcv9 z&7Qp2aO9b`Kp-XCu)Tc{zoGu>`|o1ZJc^9-EkB#=__gmLTi~1p+KZDYHCk)S#bv^Z zZV2U_nP&@&A>G@52^h{k*9uEmS2y=fn1u4E5Kbw(QA1Az1k(!)B}u1XujTi;?42*X zkWS*_OnS2SeHS>7)#Sj0kGib4*Ujhde$DyrJ$`MzGqOU_2_qj)wQA}x#07A3WL4*7 z-HRJC;nnlEq&}1YAyPO^H2IIrLG+pX*Mo~PU^$}s`P;?<&3A5&dXHuQjO!><4D-(e z_}R!qM(wymXkZtb`XE8o$Z#i@NBH~#d21z34>gAKw#Y%qn62U_TZmMX#mcuAV*mv^ zm~HL&NLJ*hDn!%{Gv*vAuN78v&EzAqpnQU>pa+eat@5l^@@aB^VM`vP%7H_9VezId zLv-l1Q%x`S#vd+a`H%KqJ+V=n^_CtholTY8i9j6!ldtTg;LM9kQ2C|0!~sLHl5&*n zYsb~(oqyis{1rygLoEgInr^MGx(z#ZK&iMa{ycey=auJ{^m55?*gPf&>50YGH#UX_ z+5M?FO=@kBz7d|?ElUK?ey!H5zd*e-;YJV8s6mWPx;$hB(13ijtPvhanpwHVYvq+o zX~i)tn~?doIn6IR*A9o*XQ;Y@q*4I=)E?#Fubw3s$D>q{sy0mE{<df^y^7>n-6Hm} zIX$Fv_M|BY!GO%erP4SrOYamZsqr=Yz^myQ^IYft@3qFwdrz<b#`7?EX8zql*<j~e zCu|`}tV2anv^EF-v8-%<S>}`Q@b+iP0nh`oH=V5v-xywJ?7?l{oxm)3<J2o?Z)q9y zha-gD(Z?h^VJlz5c8vS;kO^6cBrUq*d)bp31n~hk$JY;_sJt-+0`;&F_p$N;!*gZB z`^~<UjkU_uS>QloX+Uk__ZM4o^$+e2`Dm%IcsW~YlWZjjR|J_4Xod`EhHh+Q)Mj!j zI~OjR`M^snFrfg@iM;;JrQl?H4Nnl?CEav>ONDcP^v9aOeV92=ERKrOKAq+jJP`A4 zDPJkfc<*WV?5t|f`EQIHJUC7*N7hrbF(jb=BNw*)&*CF}Z6d{2H2aC%$^4>grs}L< zdmgcO;<-se#haNQKW_J^u3a)UKr$owAc;{x@9%i}6;j`|9GL{GH+SwUsf5TWZ0Eip zlh=^=TZ4Xx%4LGh5uE-XgqyAEY9`kS5W%t^?a&V#O`5VUOi7_~V`8$9&$zj_5OzMF zWkVj)``}4q_f)6|`IYiRe$x@|>MXp|g8*Y~H&M9z^<uTkcel>G;;I!YhZ)8hFAOk} zZZ&pRxdcU1#P6Zx0ed%@Gt9p&p@n#-)|rhLzxGZC{rvr^M=kZnIhzmVq}v-3ZGhgu zZOq2gl1m@{(`oB9-=pN3No?CbnEPafNC)iLhrwNryS-)^OyGqq-VONsMw_K%esr#u z%05#eHkFdeOUyor)DBj~nJ(N*u#5lLqb}GFIX4&b^+R$d`E?mGJ9HIY^K?vji1=bD zdv1xQf-1SWj`NMaLGu+HB2iBTm<;+pZgQoUMV!2LpZMon^^TJ(9+!V#GdYd{E~e_{ z&bQqCXzMq3(ljuSgAv8p9lg$KyL~d8LiOkzyb_d${sce4L=_M}?Vm5H-u+-5ng+b8 z!0%-@e<N$E4{HgfYN}oy<WkQCMSsC2u6<)r3Z=CA<!UxC`WIV!8DWwCjHr(#)NQbO zA}CI^wb-)U{BvL(OMriu3llO#zdH8z+s5Ju@DCxqufrn8o3D$VTxW@;8^AL2ebfj? zkbFP}5GRAyQlM`aKk*T;J=&4JH2?^K1*ws>jOw%?(k9^e!vvDVBjG3<!%hHWzqxB4 zKTsonPzq<CWkK9&<NjsiB}rYkLGsY>q)|;)qnifa1&2Wbe(|^(^(ye{L|09n5jg3X z4l>C=1F{o%(83}@q@{yILGsieRn)E6SfpyrM)dj<tOuwj&cu7?ccdZlUM@NsCVhHc zHq=mVf0A63p}GZ*q_*uHA`$dQ=NHb5d|GAe!bp{~FnK;acE9-3M>;C!u2wbSz}1BS zA1Y6stdu0=jEKJzb*{o9s%Dj|**OFznalvYt%6unkE>L`uNtxmfd>};GQRuL1z<xF zJqFH~J1Y}rN7ZqSjYqu@wVAkqYmERzpio&V+9@9=G(ky+t{aP1fi{^MkObVbB%=ep zPa5K6Vs5D0Y^YO=2zMn(?R@y=8c-SHe$9T*>$B|jRf-xgbM|Yi?>Z6rSR}6IYKLwr z%i!}xq70sl1gK1$wf4Ca@w>_EJKzS|!zl3Tx@9X^O_q~W=lOATyJx;-AT=JhW{A5t zuY{(SGjt@4uj9C%e;%9H+82+e)QD$#6qavb9R+Cg`|xYC`d>E?lhV53)b;YO&m-0^ z``M#Sod}ZO3{b{~vWJ>2dXOD_!Wio*oZox?<r7X}HrfPdEP^B2i6H>c)$#WZ&7Q;* znIWVmK>ySUU=45_RS;Q=SxrLs?*GjYYDQ`xDyu*k>}V^*Z0GjC33zFF13L`Yl<%#y z|K{SoGfQrKKhUBx)~_>tW6M`spGtc=OaN^qpGX~qtAv<;rs~O$XxFgfacSqUO=x_q z#6oc5R4V>LGI}SHJSb!TtMrQzr(O3T6B$;uI~+?6rb<STMZ-cw<-U<oCKOo{?;#iQ zst}MA8RTvMSDVK%GB%b3m308rF>#~`XniEyZqhjR64R#V6BxCjkr=O}Az6_+`YUnU zxtv{@4I|0cWchiqEL5qBt;vrfYZiFpj}?0D7!teAh^MGvok~)i%8Ju0JWR!iQcR3K zW>!;~gH~gw*@j!(9d%|2(GzCZzFtUiEh)}XGsK-*wNb^MnC%sblh`i3$De|TpAy(p zHbmziK||&-o&Za3(*tD6fSTGUZEh2?piyUpAsQ2=#VS3!a>48n$hwF$eNGeeMZ8Fo z@G(NgcuXgMr`q#F*59J_4qekUp-l1w?&oE+hrTt48l43jsS_MFoqcfbIkmC5N}cgP zFukVP*L`I<n7V?attlM{5m3lxg4(R4OWyLW(*&NwR%FNe$l_okXD8&EV$e;Z>b%3L z2#ejG7?v<&yA)nZ7%n4f8Wf&{7fqL%ot4~1`*gw6#B{MwC1RsKLFX6O+Gjz_qz4kq zRAUo#L=#ftWr*<lEWEu+hK#WxYr8w$q*v?OF+;^p8soihTJJZ;X-k_P#Um~Bd{)+z zji?UFy-rT}tU_bFu+6KMy60)rs{psDQ{S~&MXP?d4}ouE!qE9{{<XNb#e12Qa_-Iu zoQGh1lPD1yAYQ9znni4QfwgLv6o$k1g^A9Kh>okvG?T>+V8t4%q_lk~u2iY!S<yN` z3WCFU_Q||vi$w!*?*R3UaP&3>x?UQmjK^q)%KR;rA@wBuF-wHMO8D=kr(?QQ18a7h zffaj+-S?Fixh|LB1jeiZQgY|-uCe1CG-O&s#0~&r4dmGGwK8jR36>jJdZ^^@&Ej~z zCmAG^+7?2i*<!Q&=&vFe;%%8kbK<b6?K0ofosx7vRjidPGx8_}dPD{|BJ=xY;^kLI zne#YEb<DP<)BEy`2?&YtEi+(wg-EBC@|uvTO+)>qn!d%Rp*1G=wS0}8x2M#U_L{g^ zAJ*J}=qo(l=7V=$C!>A7W1|~=&e5%9=N)Wim1+xpo!XYIZ|oaM*^~a_O7zPEW5xD& z7fdI;0q{*EK_9?Wfhw_xwpso6`z?ZuH3CJSUoah`4+q3-?}4bmfI5roaDiTqT2iyn zm_VeY`O3Y@uwi`AFq_*wJ8S*13hJH>T_Afev!U*AXfyWkPZ7-eMC9KLvARhjUf8pH zQXL8u<638n1zWqdGY`MdIOBm8#h$lypF2I35vWeZGyr-3XwXUQnQ!69;Mro&D&7~G zq)=US#2mM+fc9^(Ae=M`9V9036SFvPOH4moaD;g3ybb3zWwz>YUOyCHtra$#-)B)E zUn5nyb*lKn8*&c?H1}8O1+&2EL{iiR!hrhPdpGGW;-q}|?vYHTbHqBW(=!I%=&;wZ z##VQ9k^g?WKow+NOL4yRJ&HQ%-&ZizI@-mx!E)oy-llt5R58%z=ZdB072ls$4E_Qb zM(QE82BXQUr+re@@JtCT!lK~>J5J1U{MIc)r-3__ONS~SAH6IN6-*oJ3JD(ogIwIP zUtENN`aX#pNMjjctyD;ur0{*gQ4WGUWuv_x9SIcs15rv5NRwa1fwO1Ewgts9o6<>K zuR^g$R6gr#1}0)QpUFP>@sanudI`QJ+orqdi9&G<(2x*@6h1oRQ&TJLUyP#5c<#!6 zwPpQ!YxnCaqV_L{{!vQXkNmj{n$wf@@82I*q$0>i#l}Bjj6mY!;>N}uA>!#WMk%EL zW#un`Y{yc)=WHkQ*NtQeFtm->X(CcAP&zCe&7w{u*AzDDBTpK$T}s)|p_9fA<yxAu z^{aiO#eILv_lQ?G467q0)+#;m$hYwN)Crxcqdup<xgC;|t??1Q)UEIn-9_X+#Rk<W z23d%G{pKO%)jE{{4eN!@tBVb1)I7Ujv%CeVtMWYXy51|~m^@d;J|H)UUsF+&^F{>E zV^y3vw>LMl+twY_MDeeAUfb-??v}5Sxn-4o+?+DcZ!!H{SMj@<0<O84dgy2GJ$MAV zJRsMff9ILVl_`<ds2V9D?E#8g5OmD8>vh+CC7vRui&BOd&E2ymQx>t(yI%{TR`n$! zd*y=r`Lu0?{JjIajF@cMZk~^O+jQCr&N{X93Wt1*-`8vU>W%~UI8MO|-wq9|cj`xb zwzG;kQ_OuI1w*+hV$Vg8GInj%hRm1RNOeDNC@TGGuM0~^4=_}|<yA>+A2UZE!=>i; zIhh)idk}t2c<kdmn4;Y~4)zj;i_V6~d<+rG&3cN4<UdQ3gjCBwD3bO8qTO#;w%xCx z&157#efzp=Ohiif9vb{nQq*KzBS<t7JMM6dg8d6&kj0imWEN(Nte_7M*T~o_)p=cO z2_;Ka-ahuPlA_%c8L>?mQIKg?wwS-xIYirm0FBpHwlDYI`IiB0;E&Gn^WQ%rkI|%r zwNSc^M)PaF<bq@_QEZ-!WtG0^`cGLiHDny#F)r3IPO;(3Q=giujzFnmxr<UGxtO82 z^vPYcPAm~V3#eelC4A3EYiJdN&%Nr`xo4swbhkeIpb+QV(XVXv<ePu53e`08hhJ;2 zc~oMA|M%HLdZ^kOMa7y8Upah0s(+vW37T|}X5L(Nk{)|BTjyKH`Y2x={5^qPIWbT~ z=%sHle4kvsLmVEIJ@a|K$y!?&bg~L;%)4@j+}?ayiLiX{_EYs1(~Dvl>eS6t%5<eo zSjc_5&~xt}jY!wMnhNhmgE9FQw!}MH_+PnNb3{j6y{syQ9$MFFyE3KD8hQWPgDh!8 zef^%+D@%R&?@^sJ3(_+sB8K7c-)BI<s>DXK80j6gQ?wYn%=P1M9$pvjo|v&7{j(c3 zN5sBs9=z3*@E=y;U-!2Rq%gc5%~|`PCd73KAu11t>qHSFLl=xpkZKbEV)n=NQFuoc za#=|{T7#-2BnE!#a0?9UjGgrwJsClr1oGQLh5O^eepa!dfK$Yca9a!2yO4cC93krc z4l3G^Sw7vMqT1_tlj(ejgYgwu?3jPmTO6?ikL>wwZOjRirj{4}(ulVrMmz4nT~!28 z(d=}Qn^n7b2GzZpjW8r61nE<K8jv%%$1|+$&r`8F_7`SU=a_5kexVpw=#41SY|i~e z%Knh8$dafZsQYHL)NiiKbPZD|s+YY;H|!26s~PWgG)lreb^O@qgh{wm6QJ(Z<kRBk zf6YG)Vei4*tLRzaRP<h|l%yy`bo>8^(kL@>*Yj4t89mJ{WNc0#l0OgL=Q0P^kAv;% zGK-OytC$Ma5@q`?zf4y?O7JN4R&YOXN6Xk=iKV+&x5PgKCtY@!e)rUWMkPdD1^`8P z4=_qa#Skitwrw<DL{yG`=OWalRL9?BDl;#~n|&JkBdl6#9AuX(s)oRpB=71GQSOuG z)_mnZ0@;CVT-ywX9*HW6Sx@vbg=x9J#bnkS`7}}M?*f`!kT;g%p;A0c-U_Nyqe!qK zBGdrs2Xee4>WUi-Kq9J<ne``V0ZCa-B8<}fLh4j0>v4yncC#M@@KmL!uWI(P!3AE~ zP~5~U*_!GQQD7e??8tUa<PjWv3w&_T!^E@kMN$YKyqIe801jp!5TEU3@7H`ILn?Xz zr(xexRxC%;YnxaskaxpB$H*73%w8N4yV$<JG<ms+K?sOed~L@mE6(t#YvX&?Bp)D@ zI%xwrj3V8^>U`{}A<Cd#b?h#f{gD9yn51eL?Wv+LI5AZ#-`S%?tFsXGr~3VvdTqBa zKAY)n)HGB;Dv+@HB&pj&j%_ah7Ne<7X3>qV)uav`)d)iq_=OaMmQj{}Vh&+Y*?QWb z@3Pofy8lf?iOGvxMBb36a(eu4G_7XK$>BWq{^1p>*MRqR>a+5WjBZhR`y8B~%IUpW z4+6OoEG4u?K`~Ogqsm~Z5EKj>5RznvTkE|A*vSVRR;9c+Sq$(bpm2UZwr^{cqvVr@ zw>Lp!nC@EA3w(Q)yEP`o{s$_>h$UTc1a($AX}sVZ(CX@)j}A6LQD7=ufT9+LnIrGn z=gp@XJtXp<tE<}N;}G>0$mfcds^<23E|W|-%*Cq=79i2};+aUEuIEb;t+ufdAoe8l z2xRPM;e<`?{1zD$nVh&-erCca>=kEo3LYo>qrpixgcT8c37*Yq-UrfLun!~p^fL%e zPXrAF1-oO^7Kxd)-o-tGbzi8<?HD5U^eq9Bq*DeFsfVd16pC|~xbiO3O4jl&LhHbk zp>LYg>(^ZM9nTGY&IuB9yB<kN8B*G~Y53W${xbRaV)Yfat#(ZLrloh~Jc+dKQZ7Ti zkDk<G1?b-JbdcfQg|*lDmSxbojlSz-{yn4N*(TrYKFR@z+<gt`IeTqX2CN3qguA}& zX%xt81TAFLS~)UYkJ$XPB<|Va6#89ZgYrDEPSg=~3AK-!L#59lvPg6}6|xG%U>2^T z!$nt*0z6qP$bEo{1Ja>-iFjGMj0%8c?UCzY>P4G{@#aK(E%Lc>*i6zhT5>9C#Tt@l znNEFbHs1O8#geTGvvOJvY>rD>$YZIG()#<6x1elH-DJ4^B5W{ISe%PJal#F&YElTG zBJAL(F|t%~ffx*?F6rmtpwMQXdtuvCr<LWVP|bmeLR?!4%HC|{vYJf<D><ui6nBp2 zs_y&&au)3L)0NZI%O53(o4ghCSl{JMXv-2q*&&c3BDsDH&e1!L8YD`#(*=gnyVuj7 zJrfJuxMz>H++F;U0<@iBQ=v9vGhX)w3pwze>DJz`V!z~FnSZ5O;_2s|0+S0=wr6~w zTc?Xlzbrljn=comL*X7Qq)le!e8$q<f&G3P9HF7WbAfO$+T;ic)9QtxZ(ee|zVeJ4 zJ4)#D8mQrk$?UQqa#AAa7HyTDX14VhlKgnL8;>egaD)qW#5*KyDpNBk`wQfaOT!-d zUO1WFV<xT6Pf#=PrRC0JYDVeUwpoZMwhHJ|Y>{gZ;i(+RV#TGnhAT7a1wq7!vj7a@ zcmU204~866j`~20{#975<)~g#`3zf7dbxf-J-Tt27Xb%%HQN}e-`C~6g~?>*db^)j z{95~J(^=uMwkM(4q=4#vd?>G2vO}TgGg;zpK}S>Lp4`q4w2(KbKFUa>Wj8Md?)kXD z(H-|pm4|-7$_dJl>^+Ged<*wv2iC;O9}T$yUu$iCP^Y%Qvb_UyInKEYPAyTdNX-3W z^t0!@=W6+T<4dljwET0_V%%2lE6Rvd@s;EkLf+ew6)M@#1JJHJ>7_Mssnp*y%fdS) z6_vT`Os{BN>vNxCh73*WHTpgwqB?%rx0ru>_{XI%mQ3j+46;`nt$1MMbj=}g)}3rb zgNh3-rBIue>io>jm0Ax&^)b{3z_rowmBcAEH}!$5phaWcz3?6$F4J=*?-c<$Q*`vW z=i;XWd(i%gR7{!|05Jg&0VIg#bP2*;fhx{S1NtQr0Wn=e<YiLfJ0-XbiSL`Y1Euk7 zk!6qSYdDQBdOoIV&Y2WjCOFzX;whd#j(R}+j6YRmLX8jyK#38ZJUKneuDi${Q{YAZ zei+fXaNt4`B-##iAk=~LvF^@6x=>+oyK>#DdNn#?^1zdUnUA+tsc***KJA04?-S$) z>g**v_ko3isuvTLR~S@@L9vJOWflVjmiMiB)%^_w+nwt4ft!y8d|R-vb?>mFfDl%= z^oQg*0GWYV_LV(-j8q9+hteJlWW}^)EAu==ePBEPsHijMoQgI2-)Ot+%0V>$kjGuL z0uB7!?5S%^uiG`S=s>^pFeCeKO)1a7`($~tmuj6rx2fS_#JDI$02pewrRT`AJhLrG zK`YhaJ>!?vPXCP3e=JV9;W~RKKU3}g%71sOm(8j(mZ||!udVGl_d9w{f;rOO&gh#` z`n`G122VFnxl$WXfSXwKq3y8raR;rr_|i7Y^qlVn5t&)#>?BvTB_WfzUF+~j<QT|f zl#^MlZVF7cs&8b6xBhEJ8J}`vb>48*x1%1v>5>r9`DrkFzU^eexD;fffDm!Q<jvk3 zww1c+uKVg=U+R2mi_5#Ernh2w2j#hqU5q^)RM9(C-~q0BDU-B6M*SjcWrs3OFZ$NF z+THCh54N-V@(-5_Hl}$eQn79O2BMkLh4Gqnv@9OjgrECY*~rz1Mh-f7upY>^^~zjF zi+Q{}q*LM}))PKg$22kwf!#>T#>pr*gqIl`Y^H>y@1c8bP;?E{ac1nh&oOETW%Ne9 zRFe{cSGu2)!SMYD^bT``V$6_;)Q}&UC@{=M>4HKuKLUn>?e-Ik<8w60iRHENx;^nr zz565uNc<AHk*%qjA1cmDN*|`X8z&x(?v?5J=5qy$R^=i~LJsNTY#!jXUL|v_?PM(b zJs7128X5cK31o!k>5nq$njs9m`e0a6A|K3vsLSlw1j{p%hdtQ~o9thwU2hiHZ4+o7 zvvx;BW#bP+lS%;iI`A}<kRt+s45H<kuAk1+a<lNg8jj{v779FiLXin;*iu(v1}ZUw z0J5`sfy+N;Y*e^f$8BUyslR}za}5?F&fMGLjiDIjzO_d|#-fm6Clqd+0%pw=aeF2C zG2#VK{tKZ_!{jkUHT3S|z)}%kOj4c%(`*sMny^E?Ch43oMRpD#?>ivNOHnFDNa%Vt zEY$wzX%^~7q-9(EiHnV<m-ZWto4Rh-h7UIK#LLi8T_HGBdZ2>h+r!{p4v1X_-d3{; zb{CLlvkJQ@`#+m%`pbyL|72d=Kvk?$wDU8k)zKM8kjVz#1`IFaTrgVpG|><v$qVli z(N!%dqVrtEc}TV<n$*UKcL?>2l;=O+t^T5j71@JYAc!3IqZp+Zik`NzOx!Jd0r}*) z2E3TNTazN%2-Z$Rp2impa(#3SLsCYwUL3O0Y;(u|v|*)zL;S3mzY4{1$%=bC4o~Wu z3RgH4{P66gL>I8!PxXY;_yp`+e*9?!!gqI#K?V^AJzITVB8pxPz!>X*dm=QQpT<%t zIG6>%N_f8M2KM&&lNT?XgM(nb1IW5Y6mvGGN%Z71GbGp`@4w}<m(Cx%)rqQP;697V zl$bh)7@J-u_`&DS+!o7~VCIT|&WeYgJNq)a;zzDLD(}K!ry0d_viM3wy5A=rG5`rY zIC}DVHX^<4((;sfe<QMGdzClm*Uqv#Vf!KH%`0aRzv9GAWaE#R;r}T*({QN%{}0cG zF_vbSVXV#A_kE|#hOv(|BH5EDYe<?EW2wegNE-XTOGL6~t0W|;kfgrW_SNt2|Li<C z*L5D8bDi_~oY(tx-~5-w2Q&V%5w0DP#d8@|9;N&NB}edpU`XaK6)J4-R_Az;OtGj7 zT3Hqw#ZZ<chl=O6I%LpAkFFyR1QGdqD;9n^qT(t=TY2RdYPI~*RmC&REuvtaFDzrd z`QxCjYKAPOGH?`yFRInzEww6Ex{ab)WGeVbi4Vc&!vo&T#|!4*!Z9%bHca@ei0(>N z436hVkVs|`LS!8jKf}E48dL4c-{*$&7&ON&1v9$ykAHA;9s{|-`Qlr7ZD7FyWj7W> z_*3c%Os!#U!y?Z06qlG#O@PnMvmz$&xHUcZLj{^iB1q+<JL4l&t!$VU*Xp4K=jYDc zJinhBUy~pUESO;;$QR)`oN`r~=-L;SY`y8F4PBc58CWrlyJvM04o!+zC|S8yd=qhk zf(78NzyfZym-93l9r%nEC4u3$Xe-yilxxFDvNEgZW(!4U&rs*io_dnx%~iM^Rf+g| zPj)T=UefB*UqHPkPtV4-XW#Bd+^fDqFR<w?@DTvs0qX)DPTV>2j4OimtuM5>9Dlet zPr1!*g+`x*QL_Kk!RPq_h-A1y2cTbxdx41H`_C7NZQ*abPQoSw_nM9-+qK_KsU2v8 za)@*cpt~C`VMc9M0jN$j;HThE<3OGhh+6?796K}>b`f@7$6c3;T6^vwK=0HX7t!6T zmcUoYT`K%hWoqT=kr&kv5Lo^jdBG=CTmPj?-pYBu3<RmSXsE-%aG*l34ZH&EQr^oG z(7kzd{Vwc4_ogzpI=S6KmD?%s%vA-$<L#q>f#Oc6iRw_arw*I)L^YpUSGfd`35G!M zaH2{?*Pbq@)d2G4;|_r=h0&A8WuWdW9UhuGH)=6yafmwUguL}CQy28HGYQ~ee5X#G z<V^uKmY#5!hIiiQ^+ADC8PSAZ(`z;SxoD9(9IOQX046EU4rx8H*W`t1ZMleG9178J z{qODjp`2T=KL{Rs1e8{q+FG{o3(<C%zaGI~??RuQdvP>vFXFa)@=DUJ?wbfvbHm;L zO!)V#CDlbdMSZ8(B|FNcgJc9hrH!`tV7<5%f(Lv)3w@j1JkullA_<;0aLIIpznKg; zkh8e8`_ub%BH|EUBaAb7TE!#Ri-2eV_RuozFWMw?xFkfTT1RFrw^VpG<;UUkw-W}i zeb=}!3b(igFF}_*u^+AV=OGVv!v=%?S)*?=K{jSQm-M0}5UF0j5Cs&z2!9?|F4$Pd z*-*`u2raxt>_qV1os<`qz*d_TA^2IK^eosPR+j{Vu7auh-I02)*j>uAq727SEkO7f zcJt#a(P6If6u!7tUP%dR4{b{=F`?3&tGxESTpZD@gy_9%j&>xgN$y*o%Wyy`f@@&) zu<s$o=R~A4@YGd&Q!?C;e~RBFA?mUMOCmA6_+FlLVfQ;acHgZ%6XAK{VC;cg6u;N# zi^~cnn=*VHKv9j}r4Z{sYEP!oBIz535L)6>Gw&}Am!z?V^*5-Z78(Gl3LXmFi2W|? zh~N-lxe>IiE`HhC9m3NeD)qHabiV44rh3>tvw4!pm7rfa`3?{r(sZi^t^)=f)=N^O zc!c*F3({a4*#H;H8Lt&Uk7+xfZq|JRPnVUj|LuG4l^|9v0AZ;-M=-7H0mBXVvLOQi zrxn1aJ%R`BM^(2+zMTM^*eiN!gn3=lfzGj)ECC460GH!U&67FkvfF^x)<uoZqsV(Q z_|B2P$Wl8st;+fmtdgvFEE)@Q$1xDWef-fdL(>?W`~?x@*rB!~)v*9!Bk799=S*h9 zJ?s~fq!w=JKXwCx4MTf0_Ui@O9{H>FcAo3fC_7EXB^9}y(@BmHQRVvip(zpw*x%6_ zf#^cOiHXx`u(JO=$~E!je+!aI5I4+H1?dTq{}#^{!wn~BIBfm(z&e$0X4xf(Zi^Ra zmzdb??(PZ@Pdq(ibN;!eq`JkEwQPWP!}S-BUxNU%Nfl3)WdN#<*zG=qPQ@?=IJ}(F zJU}(*cqTEhGXY;xe}eyFO_mlB^u2;~X&e19BN6cA#dh2Bqu0pQhtR>c<zu7JfTk%l zApWaw#Z833gBIY5QU8rM``wN2EC9HM_Kh0RH+|V#-q{CQ*$8yX>k8gc+rDdanw|es z7I7X0d6$Upj*5AY$0`B)5*X$aGI`OO_+aYo<6-!B)}U8<`^y4@=FG)MK6MCHHX`yD zMXKz0dWq?96E1(PPRr(nPZg-~Sg4?(Bver(#NnlNd%&Y1P1Lu0uz))2TX2N}#4d{2 zaT`5&nG_xA;Zh5d+;_Qn6XAK&&0lv6I>>nV0Pd%}PGSTDtyKBlKky_ts`|f2M^j<Z z5@5;Imj>L<Bz0{q;ZH?n{6fc{fcszb^k*A3y_OAt%4t0TWA3zuy^+LTpZPB0&FPl` z`Tp){7W<sl)gRGwKD&eU7E|`N&j#Tf$qjsmpui8_Ocl;RSGQ{W0S&UVPtUI`T!E(o zW~x3I&paCbW2RvK03nn8X{!fe?MOw^S3X@&g9*v4Hl=QRH^J3Q;r)h&i&CF#44CW# zM0C;;E9ahDKm4fSi?dJiC7+4ssPjZna*L#wp)L~!++FLK`^wm=qa!bm7nCa@UcwM` zuXMz<)h^g-Jn*5ZVgkrkwm!HJarFu)wh=D(W8X|sv@rz{fA8HV*HrI*I5nyFo{N>* zw^+orwg$@!f#}sGzmP|#M$LU4UPwYe@I^;CbU7FzQxmVilX^F2T<*RN>3qCB!B_TK zA0dMD{&E?CzyBa0r+@cCi|8R2_qFWVx0+402f~MwAZH4GAS+iOLr(B7joa@XOJv&0 zh|(g(@P}JJZjGuuFAGiH7uupqx<I#|0Q3o44<Bt=q-5rOe~TsjILKK&Px{1r?gxJW zlvR*v{#G4QueYLNBHIjqYYPX@=%cmDn~x4Nsh=P&`$@>1=!&av-ymo+J5>20XuvK^ zs5R;i)ycXXi;eN^7nct=%W3up*ucWVgT>n%GypN;h09ZJ;)@;=v(yLQc8wY$U_L_C z2!$4e#?MEm6=QTRA^Ix5-L-QXGhfiw7X2-J2!j>0XampVS^Oxi;Ki9TA`<Mvt$ofB z8WhcyF1<w0;a*GEg}zBd^9Plrn?vs(BreXrw=aa&_^(H2VpX!;Wb5}$D5)yxQ97Xb zMFuyUWejbP^5T=H-Y#^h(lW4xTUVv&L#q?Xs)5d?E>=}0pInjFVhqVA3f*Tv`E*CW ze^TZ1qIph(pBJ$5>L!j!NZ>K<i^1Ve_X7oSSi{9OcMTz72s(;JzwxN34UMw^05_(~ z^v`)mb+-T@&aSpXbN(%FAx<Wv5&w#JX%GjTEzdfD4xj>g#eCZuCg_m>Udd_eLV)gO zVQ~o(C(RvT43t-epQT}FfT@w~4I#=YdgAuS`Ia;P+j~57&yG(n<Va8*QT&I@XUw7; z-xyiiEDMt_R=i%9UOB+#Jt(i1<Kad7(co&^%YasFDb%$AONbdFXIASB)tA{Fzf9(o ztQ3Q&1ZXT-8!0NGmV=Qsn!Lc3+>)wI9h3b138F5W8_>X7@kgYmLnP}I@p8e>G`Bk? zRd{ZpC1WPlBqsMDV(xOa<!L{q*mYbTPzP4qIT728_F@6AeO=e-DEk2|=akuADOs~o zkdj;<O5>G=DzIv4*Rf?=akfInXUV(B<5ch{TOpk!8J4Ervn-@UG`wv4NYpEQ(^~6P z@rWZ@>Ffm$PoMc_xMru$h(|A3RUr#kSP_51FJM;Tg yd;xbUKMP6ByshpXl<L9G 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 Wv*9$d;j*&fiuvlU_6Y<6EdLMDM0)Z7 From f2873e6d3a46847126c03ac754dd9993d32a98a5 Mon Sep 17 00:00:00 2001 From: Jared Grubb <jaredgrubb@gmail.com> Date: Sun, 29 Jan 2017 02:46:58 +0000 Subject: [PATCH 149/174] README: adjust boost::optional example The "from_json" example for boost::optional is not complete and should also handle the 'none' case. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ee358e5b..6451e2c55 100644 --- a/README.md +++ b/README.md @@ -563,7 +563,9 @@ namespace nlohmann { } static void from_json(const json& j, boost::optional<T>& opt) { - if (!j.is_null()) { + if (j.is_null()) { + opt = boost::none; + } else { opt = j.get<T>(); // same as above, but with // adl_serializer<T>::from_json } From 0164b10e102f2f8694d380554389a4a4a917f781 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sun, 29 Jan 2017 17:18:56 +0100 Subject: [PATCH 150/174] :white_check_mark: added missing tests found by mutate++ --- test/src/unit-class_parser.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index 3dfad5bd3..59ea3cefb 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -596,6 +596,32 @@ TEST_CASE("parser class") "missing or wrong low surrogate"); } + SECTION("tests found by mutate++") + { + // test case to make sure no comma preceeds the first key + CHECK_THROWS_AS(json::parser("{,\"key\": false}").parse(), std::invalid_argument); + // test case to make sure an object is properly closed + CHECK_THROWS_AS(json::parser("[{\"key\": false true]").parse(), std::invalid_argument); + + // test case to make sure the callback is properly evaluated after reading a key + { + json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed) + { + if (event == json::parse_event_t::key) + { + return false; + } + else + { + return true; + } + }; + + json x = json::parse("{\"key\": false}", cb); + CHECK(x == json::object()); + } + } + SECTION("callback function") { auto s_object = R"( From b210f2dbf41fc207a91e57359c8b2cffdba64ebf Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sun, 29 Jan 2017 21:40:37 +0100 Subject: [PATCH 151/174] :lipstick: minor refactoring --- src/json.hpp | 6 ++---- src/json.hpp.re2c | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 5fdd83d6e..d7af3a707 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3036,10 +3036,8 @@ class basic_json { return m_value.boolean; } - else - { - JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); - } + + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); } /// get a pointer to the value (object) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 068b87630..cc11457f4 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3036,10 +3036,8 @@ class basic_json { return m_value.boolean; } - else - { - JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); - } + + JSON_THROW(std::domain_error("type must be boolean, but is " + type_name())); } /// get a pointer to the value (object) From c75865d88c0176b85f3e8d073a784602323b2160 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 1 Feb 2017 15:13:21 +0100 Subject: [PATCH 152/174] :bug: fixed `-Weffc++` warnings --- src/json.hpp | 10 ++++++---- src/json.hpp.re2c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index d7af3a707..c77945a87 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -8532,10 +8532,11 @@ class basic_json return *this; } - primitive_iterator_t& operator++(int) + primitive_iterator_t operator++(int) { + auto result = *this; m_it++; - return *this; + return result; } primitive_iterator_t& operator--() @@ -8544,10 +8545,11 @@ class basic_json return *this; } - primitive_iterator_t& operator--(int) + primitive_iterator_t operator--(int) { + auto result = *this; m_it--; - return *this; + return result; } primitive_iterator_t& operator+=(difference_type n) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cc11457f4..109a4f262 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8532,10 +8532,11 @@ class basic_json return *this; } - primitive_iterator_t& operator++(int) + primitive_iterator_t operator++(int) { + auto result = *this; m_it++; - return *this; + return result; } primitive_iterator_t& operator--() @@ -8544,10 +8545,11 @@ class basic_json return *this; } - primitive_iterator_t& operator--(int) + primitive_iterator_t operator--(int) { + auto result = *this; m_it--; - return *this; + return result; } primitive_iterator_t& operator+=(difference_type n) From bf8fdac99a3e327a2a054d1d9a7eb1827d2f5c0f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 1 Feb 2017 16:41:05 +0100 Subject: [PATCH 153/174] :construction_worker: dropped Doozer.io support --- .doozer.json | 24 ------------------------ README.md | 1 - 2 files changed, 25 deletions(-) delete mode 100644 .doozer.json diff --git a/.doozer.json b/.doozer.json deleted file mode 100644 index 7dbaa5d20..000000000 --- a/.doozer.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "targets": { - "xenial-i386": { - "buildenv": "xenial-i386", - "builddeps": ["build-essential", "cmake"], - "buildcmd": ["mkdir cm", "cd cm", "cmake ..", "cmake --build .", "ctest --output-on-failure"] - }, - "xenial-amd64": { - "buildenv": "xenial-amd64", - "builddeps": ["build-essential", "cmake"], - "buildcmd": ["mkdir cm", "cd cm", "cmake ..", "cmake --build .", "ctest --output-on-failure"] - }, - "fedora24-x86_64": { - "buildenv": "fedora24-x86_64", - "builddeps": ["cmake", "make", "clang"], - "buildcmd": ["mkdir cm", "cd cm", "CXX=clang++ cmake ..", "cmake --build .", "ctest --output-on-failure"] - }, - "osx": { - "buildenv": "osx", - "builddeps": ["build-essential"], - "buildcmd": ["make check"] - } - } -} diff --git a/README.md b/README.md index 6451e2c55..6ebd30e4f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![Build Status](https://travis-ci.org/nlohmann/json.svg?branch=master)](https://travis-ci.org/nlohmann/json) [![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json) -[![Build status](https://doozer.io/badge/nlohmann/json/buildstatus/develop)](https://doozer.io/user/nlohmann/json) [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) [![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/4NEU6ZZMoM9lpIex) From 16af771277612ac56e03585b267555e4f31c7930 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 1 Feb 2017 17:34:39 +0100 Subject: [PATCH 154/174] :white_check_mark: added roundtrip test for the Big List of Naughty Strings --- README.md | 2 +- test/src/unit-testsuites.cpp | 45 +++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6ebd30e4f..5cb91abb5 100644 --- a/README.md +++ b/README.md @@ -839,7 +839,7 @@ $ make json_unit -Ctest $ ./test/json_unit "*"" =============================================================================== -All tests passed (11202052 assertions in 47 test cases) +All tests passed (11202549 assertions in 47 test cases) ``` Alternatively, you can use [CMake](https://cmake.org) and run diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 9a9de1273..62e7e37e9 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -816,13 +816,56 @@ TEST_CASE("nst's JSONTestSuite") } } +// from http://stackoverflow.com/a/25829178/266378 +std::string trim(const std::string& str) +{ + size_t first = str.find_first_not_of(' '); + if (std::string::npos == first) + { + return str; + } + size_t last = str.find_last_not_of(' '); + return str.substr(first, (last - first + 1)); +} + TEST_CASE("Big List of Naughty Strings") { // test from https://github.com/minimaxir/big-list-of-naughty-strings - SECTION("blns.json") + SECTION("parsing blns.json") { std::ifstream f("test/data/big-list-of-naughty-strings/blns.json"); json j; CHECK_NOTHROW(j << f); } + + // check if parsed strings roundtrip + // https://www.reddit.com/r/cpp/comments/5qpbie/json_form_modern_c_version_210/dd12mpq/ + SECTION("roundtripping") + { + std::ifstream f("test/data/big-list-of-naughty-strings/blns.json"); + + while (not f.eof()) + { + // read line + std::string line; + getline(f, line); + + // trim whitespace + line = trim(line); + + // remove trailing comma + line = line.substr(0, line.find_last_of(",")); + + // discard lines without at least two characters (quotes) + if (line.size() < 2) + { + continue; + } + + // check roundtrip + CAPTURE(line); + json j = json::parse(line); + CHECK(j.dump() == line); + } + } } From 5976caf032726b59e92a482c25cb34cc5946c33b Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Fri, 3 Feb 2017 18:09:55 +0100 Subject: [PATCH 155/174] :zap: improved test compilation speed #445 --- test/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Makefile b/test/Makefile index 0b235ba19..a8cbade85 100644 --- a/test/Makefile +++ b/test/Makefile @@ -71,9 +71,9 @@ json_unit: $(OBJECTS) ../src/json.hpp thirdparty/catch/catch.hpp # individual test cases ############################################################################## -test-%: src/unit-%.cpp ../src/json.hpp thirdparty/catch/catch.hpp +test-%: src/unit.o src/unit-%.o ../src/json.hpp thirdparty/catch/catch.hpp @echo "[CXXLD] $@" - @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -DCATCH_CONFIG_MAIN $< -o $@ + @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ TEST_PATTERN ?= "*" TEST_PREFIX = "" From d6afaa8e168219d2809e8842314fe3dcd759318f Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Fri, 3 Feb 2017 18:15:37 +0100 Subject: [PATCH 156/174] :memo: fixing a documentation issue #442 --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cb91abb5..43f428fc1 100644 --- a/README.md +++ b/README.md @@ -166,8 +166,14 @@ auto j2 = R"( "pi": 3.141 } )"_json; +``` -// or explicitly +Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the acutal object. + +The above example can also be expressed explicitly using `json::parse()`: + +```cpp +// parse explicitly auto j3 = json::parse("{ \"happy\": true, \"pi\": 3.141 }"); ``` From 77d6f7060208d6d3ca89d8a3850990f11ea719a0 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Fri, 3 Feb 2017 18:28:22 +0100 Subject: [PATCH 157/174] :memo: acknowledgments for #442 and #445 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 43f428fc1..1933c12ad 100644 --- a/README.md +++ b/README.md @@ -818,6 +818,9 @@ I deeply appreciate the help of the following people. - [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio. - [Jared Grubb](https://github.com/jaredgrubb) supported the implementation of user-defined types. - [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example. +- [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite. +- [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section. + Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. From 1cfdc2a7537d18e21651f6b47d25e8668a4396ca Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 4 Feb 2017 08:25:55 +0100 Subject: [PATCH 158/174] :bug: fixed test compilation --- test/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Makefile b/test/Makefile index a8cbade85..8f4e215fc 100644 --- a/test/Makefile +++ b/test/Makefile @@ -71,9 +71,9 @@ json_unit: $(OBJECTS) ../src/json.hpp thirdparty/catch/catch.hpp # individual test cases ############################################################################## -test-%: src/unit.o src/unit-%.o ../src/json.hpp thirdparty/catch/catch.hpp +test-%: src/unit-%.o src/unit.o ../src/json.hpp thirdparty/catch/catch.hpp @echo "[CXXLD] $@" - @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ + @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $< src/unit.o -o $@ TEST_PATTERN ?= "*" TEST_PREFIX = "" From 922fe693e1c73fb298b9e8dfb8aa2776c9a4e722 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 4 Feb 2017 15:30:28 +0100 Subject: [PATCH 159/174] :arrow_up: updated Catch to v1.7.0 --- test/src/unit-allocator.cpp | 50 +- test/thirdparty/catch/catch.hpp | 21572 +++++++++++++++--------------- 2 files changed, 11021 insertions(+), 10601 deletions(-) diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index ae45ac266..9fc2681f4 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -59,7 +59,7 @@ TEST_CASE("bad_alloc") bad_allocator>; // creating an object should throw - CHECK_THROWS_AS(bad_json j(bad_json::value_t::object), std::bad_alloc); + CHECK_THROWS_AS(bad_json(bad_json::value_t::object), std::bad_alloc); } } @@ -141,39 +141,27 @@ TEST_CASE("controlled bad_alloc") { next_construct_fails = false; auto t = my_json::value_t::object; - auto clean_up = [](my_json::json_value & j) - { - my_allocator_clean_up(j.object); - }; - CHECK_NOTHROW(my_json::json_value j(t); clean_up(j)); + CHECK_NOTHROW(my_allocator_clean_up(my_json::json_value(t).object)); next_construct_fails = true; - CHECK_THROWS_AS(my_json::json_value j(t), std::bad_alloc); + CHECK_THROWS_AS(my_json::json_value(t), std::bad_alloc); next_construct_fails = false; } SECTION("array") { next_construct_fails = false; auto t = my_json::value_t::array; - auto clean_up = [](my_json::json_value & j) - { - my_allocator_clean_up(j.array); - }; - CHECK_NOTHROW(my_json::json_value j(t); clean_up(j)); + CHECK_NOTHROW(my_allocator_clean_up(my_json::json_value(t).array)); next_construct_fails = true; - CHECK_THROWS_AS(my_json::json_value j(t), std::bad_alloc); + CHECK_THROWS_AS(my_json::json_value(t), std::bad_alloc); next_construct_fails = false; } SECTION("string") { next_construct_fails = false; auto t = my_json::value_t::string; - auto clean_up = [](my_json::json_value & j) - { - my_allocator_clean_up(j.string); - }; - CHECK_NOTHROW(my_json::json_value j(t); clean_up(j)); + CHECK_NOTHROW(my_allocator_clean_up(my_json::json_value(t).string)); next_construct_fails = true; - CHECK_THROWS_AS(my_json::json_value j(t), std::bad_alloc); + CHECK_THROWS_AS(my_json::json_value(t), std::bad_alloc); next_construct_fails = false; } } @@ -182,13 +170,9 @@ TEST_CASE("controlled bad_alloc") { next_construct_fails = false; my_json::string_t v("foo"); - auto clean_up = [](my_json::json_value & j) - { - my_allocator_clean_up(j.string); - }; - CHECK_NOTHROW(my_json::json_value j(v); clean_up(j)); + CHECK_NOTHROW(my_allocator_clean_up(my_json::json_value(v).string)); next_construct_fails = true; - CHECK_THROWS_AS(my_json::json_value j(v), std::bad_alloc); + CHECK_THROWS_AS(my_json::json_value(v), std::bad_alloc); next_construct_fails = false; } @@ -222,9 +206,9 @@ TEST_CASE("controlled bad_alloc") { next_construct_fails = false; std::map<std::string, std::string> v {{"foo", "bar"}}; - CHECK_NOTHROW(my_json j(v)); + CHECK_NOTHROW(my_json(v)); next_construct_fails = true; - CHECK_THROWS_AS(my_json j(v), std::bad_alloc); + CHECK_THROWS_AS(my_json(v), std::bad_alloc); next_construct_fails = false; } @@ -232,18 +216,18 @@ TEST_CASE("controlled bad_alloc") { next_construct_fails = false; std::vector<std::string> v {"foo", "bar", "baz"}; - CHECK_NOTHROW(my_json j(v)); + CHECK_NOTHROW(my_json(v)); next_construct_fails = true; - CHECK_THROWS_AS(my_json j(v), std::bad_alloc); + CHECK_THROWS_AS(my_json(v), std::bad_alloc); next_construct_fails = false; } SECTION("basic_json(const typename string_t::value_type*)") { next_construct_fails = false; - CHECK_NOTHROW(my_json v("foo")); + CHECK_NOTHROW(my_json("foo")); next_construct_fails = true; - CHECK_THROWS_AS(my_json v("foo"), std::bad_alloc); + CHECK_THROWS_AS(my_json("foo"), std::bad_alloc); next_construct_fails = false; } @@ -251,9 +235,9 @@ TEST_CASE("controlled bad_alloc") { next_construct_fails = false; std::string s("foo"); - CHECK_NOTHROW(my_json v(s)); + CHECK_NOTHROW(my_json(s)); next_construct_fails = true; - CHECK_THROWS_AS(my_json v(s), std::bad_alloc); + CHECK_THROWS_AS(my_json(s), std::bad_alloc); next_construct_fails = false; } } diff --git a/test/thirdparty/catch/catch.hpp b/test/thirdparty/catch/catch.hpp index 1d49e7382..c1ef3ed67 100644 --- a/test/thirdparty/catch/catch.hpp +++ b/test/thirdparty/catch/catch.hpp @@ -1,10568 +1,11004 @@ -/* - * Catch v1.6.0 - * Generated: 2017-01-11 16:38:09.405017 - * ---------------------------------------------------------- - * 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 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_OR_GREATER : Is C++11 supported? - -// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported? -// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro 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_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) -# endif - -#endif // __clang__ - -//////////////////////////////////////////////////////////////////////////////// -// 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 - -# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) -# 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 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 -#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_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 - -#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 -#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) -# 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_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_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 <stdexcept> -#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 endsWith( std::string const& s, std::string const& 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 ); - SourceLineInfo( SourceLineInfo const& other ); -# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS - 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; - - std::string 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 ); - -#include <ostream> - -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 - -#include <memory> -#include <vector> -#include <stdlib.h> - -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(); \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ - 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, ... ) \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } - - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ - namespace{ \ - struct TestName : ClassName{ \ - void test(); \ - }; \ - Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ - } \ - 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); - -#else - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ - static void TestName(); \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ - 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 ) \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } - - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ - namespace{ \ - struct TestCaseName : ClassName{ \ - void test(); \ - }; \ - Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ - } \ - 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); -#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 AssertionInfo - { - AssertionInfo() {} - AssertionInfo( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - std::string const& _capturedExpression, - ResultDisposition::Flags _resultDisposition ); - - std::string macroName; - SourceLineInfo lineInfo; - std::string capturedExpression; - ResultDisposition::Flags resultDisposition; - }; - - struct AssertionResultData - { - AssertionResultData() : resultType( ResultWas::Unknown ) {} - - std::string reconstructedExpression; - std::string message; - ResultWas::OfType resultType; - }; - - 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; - - 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 { - - namespace Generic { - template<typename ExpressionT> class AllOf; - template<typename ExpressionT> class AnyOf; - template<typename ExpressionT> class Not; - } - - template<typename ExpressionT> - struct Matcher : SharedImpl<IShared> - { - typedef ExpressionT ExpressionType; - - virtual ~Matcher() {} - virtual Ptr<Matcher> clone() const = 0; - virtual bool match( ExpressionT const& expr ) const = 0; - virtual std::string toString() const = 0; - - Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const; - Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const; - Generic::Not<ExpressionT> operator ! () const; - }; - - template<typename DerivedT, typename ExpressionT> - struct MatcherImpl : Matcher<ExpressionT> { - - virtual Ptr<Matcher<ExpressionT> > clone() const { - return Ptr<Matcher<ExpressionT> >( new DerivedT( static_cast<DerivedT const&>( *this ) ) ); - } - }; - - namespace Generic { - template<typename ExpressionT> - class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> { - public: - explicit Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {} - Not( Not const& other ) : m_matcher( other.m_matcher ) {} - - virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE { - return !m_matcher->match( expr ); - } - - virtual std::string toString() const CATCH_OVERRIDE { - return "not " + m_matcher->toString(); - } - private: - Ptr< Matcher<ExpressionT> > m_matcher; - }; - - template<typename ExpressionT> - class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> { - public: - - AllOf() {} - AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} - - AllOf& add( Matcher<ExpressionT> const& matcher ) { - m_matchers.push_back( matcher.clone() ); - return *this; - } - virtual bool match( ExpressionT const& expr ) const - { - for( std::size_t i = 0; i < m_matchers.size(); ++i ) - if( !m_matchers[i]->match( expr ) ) - return false; - return true; - } - virtual std::string toString() const { - std::ostringstream oss; - oss << "( "; - for( std::size_t i = 0; i < m_matchers.size(); ++i ) { - if( i != 0 ) - oss << " and "; - oss << m_matchers[i]->toString(); - } - oss << " )"; - return oss.str(); - } - - AllOf operator && ( Matcher<ExpressionT> const& other ) const { - AllOf allOfExpr( *this ); - allOfExpr.add( other ); - return allOfExpr; - } - - private: - std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; - }; - - template<typename ExpressionT> - class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> { - public: - - AnyOf() {} - AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} - - AnyOf& add( Matcher<ExpressionT> const& matcher ) { - m_matchers.push_back( matcher.clone() ); - return *this; - } - virtual bool match( ExpressionT const& expr ) const - { - for( std::size_t i = 0; i < m_matchers.size(); ++i ) - if( m_matchers[i]->match( expr ) ) - return true; - return false; - } - virtual std::string toString() const { - std::ostringstream oss; - oss << "( "; - for( std::size_t i = 0; i < m_matchers.size(); ++i ) { - if( i != 0 ) - oss << " or "; - oss << m_matchers[i]->toString(); - } - oss << " )"; - return oss.str(); - } - - AnyOf operator || ( Matcher<ExpressionT> const& other ) const { - AnyOf anyOfExpr( *this ); - anyOfExpr.add( other ); - return anyOfExpr; - } - - private: - std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; - }; - - } // namespace Generic - - template<typename ExpressionT> - Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const { - Generic::AllOf<ExpressionT> allOfExpr; - allOfExpr.add( *this ); - allOfExpr.add( other ); - return allOfExpr; - } - - template<typename ExpressionT> - Generic::AnyOf<ExpressionT> Matcher<ExpressionT>::operator || ( Matcher<ExpressionT> const& other ) const { - Generic::AnyOf<ExpressionT> anyOfExpr; - anyOfExpr.add( *this ); - anyOfExpr.add( other ); - return anyOfExpr; - } - - template<typename ExpressionT> - Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const { - return Generic::Not<ExpressionT>( *this ); - } - - namespace StdString { - - inline std::string makeString( std::string const& str ) { return str; } - inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } - - struct CasedString - { - CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) - : m_caseSensitivity( caseSensitivity ), - m_str( adjustString( str ) ) - {} - std::string adjustString( std::string const& str ) const { - return m_caseSensitivity == CaseSensitive::No - ? toLower( str ) - : str; - - } - std::string toStringSuffix() const - { - return m_caseSensitivity == CaseSensitive::No - ? " (case insensitive)" - : ""; - } - CaseSensitive::Choice m_caseSensitivity; - std::string m_str; - }; - - struct Equals : MatcherImpl<Equals, std::string> { - Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( str, caseSensitivity ) - {} - Equals( Equals const& other ) : m_data( other.m_data ){} - - virtual ~Equals(); - - virtual bool match( std::string const& expr ) const { - return m_data.m_str == m_data.adjustString( expr );; - } - virtual std::string toString() const { - return "equals: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct Contains : MatcherImpl<Contains, std::string> { - Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - Contains( Contains const& other ) : m_data( other.m_data ){} - - virtual ~Contains(); - - virtual bool match( std::string const& expr ) const { - return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos; - } - virtual std::string toString() const { - return "contains: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct StartsWith : MatcherImpl<StartsWith, std::string> { - StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - - StartsWith( StartsWith const& other ) : m_data( other.m_data ){} - - virtual ~StartsWith(); - - virtual bool match( std::string const& expr ) const { - return startsWith( m_data.adjustString( expr ), m_data.m_str ); - } - virtual std::string toString() const { - return "starts with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct EndsWith : MatcherImpl<EndsWith, std::string> { - EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - EndsWith( EndsWith const& other ) : m_data( other.m_data ){} - - virtual ~EndsWith(); - - virtual bool match( std::string const& expr ) const { - return endsWith( m_data.adjustString( expr ), m_data.m_str ); - } - virtual std::string toString() const { - return "ends with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - } // namespace StdString - } // namespace Impl - - // The following functions create the actual matcher objects. - // This allows the types to be inferred - template<typename ExpressionT> - inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) { - return Impl::Generic::Not<ExpressionT>( m ); - } - - template<typename ExpressionT> - inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2 ) { - return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ); - } - template<typename ExpressionT> - inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2, - Impl::Matcher<ExpressionT> const& m3 ) { - return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); - } - template<typename ExpressionT> - inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2 ) { - return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ); - } - template<typename ExpressionT> - inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2, - Impl::Matcher<ExpressionT> const& m3 ) { - return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); - } - - inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Equals( str, caseSensitivity ); - } - inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity ); - } - inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Contains( substr, caseSensitivity ); - } - inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity ); - } - inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { - return Impl::StdString::StartsWith( substr ); - } - inline Impl::StdString::StartsWith StartsWith( const char* substr ) { - return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); - } - inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { - return Impl::StdString::EndsWith( substr ); - } - inline Impl::StdString::EndsWith EndsWith( const char* substr ) { - return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); - } - -} // namespace Matchers - -using namespace Matchers; - -} // namespace Catch - -namespace Catch { - - struct TestFailureException{}; - - template<typename T> class ExpressionLhs; - - struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; - - struct CopyableStream { - CopyableStream() {} - CopyableStream( CopyableStream const& other ) { - oss << other.oss.str(); - } - CopyableStream& operator=( CopyableStream const& other ) { - oss.str(""); - oss << other.oss.str(); - return *this; - } - std::ostringstream oss; - }; - - class ResultBuilder { - public: - ResultBuilder( char const* macroName, - SourceLineInfo const& lineInfo, - char const* capturedExpression, - ResultDisposition::Flags resultDisposition, - char const* secondArg = "" ); - - 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; - } - - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); - - ResultBuilder& setResultType( ResultWas::OfType result ); - ResultBuilder& setResultType( bool result ); - ResultBuilder& setLhs( std::string const& lhs ); - ResultBuilder& setRhs( std::string const& rhs ); - ResultBuilder& setOp( std::string const& op ); - - void endExpression(); - - std::string reconstructExpression() const; - AssertionResult build() 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::Matcher<std::string> const& matcher ); - void handleResult( AssertionResult const& result ); - void react(); - bool shouldDebugBreak() const; - bool allowThrows() const; - - private: - AssertionInfo m_assertionInfo; - AssertionResultData m_data; - struct ExprComponents { - ExprComponents() : testFalse( false ) {} - bool testFalse; - std::string lhs, rhs, op; - } m_exprComponents; - CopyableStream m_stream; - - bool m_shouldDebugBreak; - bool m_shouldThrow; - }; - -} // 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 -#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 const& nsstring ); - std::string toString( NSObject* const& nsObject ); -#endif - -namespace Detail { - - extern const std::string unprintableString; - - 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 ) }; - }; - -#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 { - -// Wraps the LHS of an expression and captures the operator and RHS (if any) - -// wrapping them all in a ResultBuilder object -template<typename T> -class ExpressionLhs { - ExpressionLhs& operator = ( ExpressionLhs const& ); -# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS - ExpressionLhs& operator = ( ExpressionLhs && ) = delete; -# endif - -public: - ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {} -# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS - ExpressionLhs( ExpressionLhs const& ) = default; - ExpressionLhs( ExpressionLhs && ) = default; -# endif - - template<typename RhsT> - ResultBuilder& operator == ( RhsT const& rhs ) { - return captureExpression<Internal::IsEqualTo>( rhs ); - } - - template<typename RhsT> - ResultBuilder& operator != ( RhsT const& rhs ) { - return captureExpression<Internal::IsNotEqualTo>( rhs ); - } - - template<typename RhsT> - ResultBuilder& operator < ( RhsT const& rhs ) { - return captureExpression<Internal::IsLessThan>( rhs ); - } - - template<typename RhsT> - ResultBuilder& operator > ( RhsT const& rhs ) { - return captureExpression<Internal::IsGreaterThan>( rhs ); - } - - template<typename RhsT> - ResultBuilder& operator <= ( RhsT const& rhs ) { - return captureExpression<Internal::IsLessThanOrEqualTo>( rhs ); - } - - template<typename RhsT> - ResultBuilder& operator >= ( RhsT const& rhs ) { - return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs ); - } - - ResultBuilder& operator == ( bool rhs ) { - return captureExpression<Internal::IsEqualTo>( rhs ); - } - - ResultBuilder& operator != ( bool rhs ) { - return captureExpression<Internal::IsNotEqualTo>( rhs ); - } - - void endExpression() { - bool value = m_lhs ? true : false; - m_rb - .setLhs( Catch::toString( value ) ) - .setResultType( value ) - .endExpression(); - } - - // Only simple binary expressions are allowed on the LHS. - // If more complex compositions are required then place the sub expression in parentheses - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator + ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator / ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator * ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); - template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); - -private: - template<Internal::Operator Op, typename RhsT> - ResultBuilder& captureExpression( RhsT const& rhs ) { - return m_rb - .setResultType( Internal::compare<Op>( m_lhs, rhs ) ) - .setLhs( Catch::toString( m_lhs ) ) - .setRhs( Catch::toString( rhs ) ) - .setOp( Internal::OperatorTraits<Op>::getName() ); - } - -private: - ResultBuilder& m_rb; - T m_lhs; -}; - -} // 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 ); - } - -} // 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 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(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) -#define CATCH_PLATFORM_WINDOWS -#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 - #ifdef DEBUG - #if defined(__ppc64__) || defined(__ppc__) - #define CATCH_BREAK_INTO_DEBUGGER() \ - if( Catch::isDebuggerActive() ) { \ - __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \ - : : : "memory","r0","r3","r4" ); \ - } - #else - #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) {__asm__("int $3\n" : : );} - #endif - #endif - -#elif defined(_MSC_VER) - #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { __debugbreak(); } -#elif defined(__MINGW32__) - extern "C" __declspec(dllimport) void __stdcall DebugBreak(); - #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { DebugBreak(); } -#endif - -#ifndef CATCH_BREAK_INTO_DEBUGGER -#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; - }; -} - -/////////////////////////////////////////////////////////////////////////////// -// 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(); - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ - try { \ - CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - ( __catchResult <= expr ).endExpression(); \ - } \ - catch( ... ) { \ - __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ - } \ - INTERNAL_CATCH_REACT( __catchResult ) \ - } while( Catch::isTrue( false && !!(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ - INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ - if( Catch::getResultCapture().getLastResult()->succeeded() ) - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ - INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ - if( !Catch::getResultCapture().getLastResult()->succeeded() ) - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ - try { \ - expr; \ - __catchResult.captureResult( Catch::ResultWas::Ok ); \ - } \ - catch( ... ) { \ - __catchResult.useActiveException( resultDisposition ); \ - } \ - INTERNAL_CATCH_REACT( __catchResult ) \ - } while( Catch::alwaysFalse() ) - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_THROWS( expr, resultDisposition, matcher, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \ - if( __catchResult.allowThrows() ) \ - try { \ - 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( expr, exceptionType, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ - if( __catchResult.allowThrows() ) \ - try { \ - 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( messageType, resultDisposition, macroName, ... ) \ - 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( messageType, resultDisposition, macroName, 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( log, macroName ) \ - Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ - try { \ - std::string matcherAsString = (matcher).toString(); \ - __catchResult \ - .setLhs( Catch::toString( arg ) ) \ - .setRhs( matcherAsString == Catch::Detail::unprintableString ? #matcher : matcherAsString ) \ - .setOp( "matches" ) \ - .setResultType( (matcher).match( arg ) ); \ - __catchResult.captureExpression(); \ - } 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; - }; -} - -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 CATCH_PLATFORM_WINDOWS -typedef unsigned long long uint64_t; -#else -#include <stdint.h> -#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_t 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 <iterator> -#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 ) { - std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); - 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 IRegistryHub { - virtual ~IRegistryHub(); - - virtual IReporterRegistry const& getReporterRegistry() const = 0; - virtual ITestCaseRegistry const& getTestCaseRegistry() 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; - }; - - 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> - -namespace Catch { -namespace Detail { - - class Approx { - public: - explicit Approx ( double value ) - : m_epsilon( std::numeric_limits<float>::epsilon()*100 ), - m_scale( 1.0 ), - m_value( value ) - {} - - Approx( Approx const& other ) - : m_epsilon( other.m_epsilon ), - m_scale( other.m_scale ), - m_value( other.m_value ) - {} - - static Approx custom() { - return Approx( 0 ); - } - - Approx operator()( double value ) { - Approx approx( value ); - approx.epsilon( m_epsilon ); - approx.scale( m_scale ); - return approx; - } - - friend bool operator == ( double lhs, Approx const& rhs ) { - // Thanks to Richard Harris for his help refining this formula - return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) ); - } - - 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& scale( double newScale ) { - m_scale = newScale; - return *this; - } - - std::string toString() const { - std::ostringstream oss; - oss << "Approx( " << Catch::toString( m_value ) << " )"; - return oss.str(); - } - - private: - double m_epsilon; - 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_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 _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; - char storage[sizeof(T)]; - }; - -} // 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 - }; - - 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 { - - template<typename MatcherT> - struct StringHolder : MatcherImpl<MatcherT, NSString*>{ - StringHolder( NSString* substr ) : m_substr( [substr copy] ){} - StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} - StringHolder() { - arcSafeRelease( m_substr ); - } - - NSString* m_substr; - }; - - struct Equals : StringHolder<Equals> { - Equals( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str isEqualToString:m_substr]; - } - - virtual std::string toString() const { - return "equals string: " + Catch::toString( m_substr ); - } - }; - - struct Contains : StringHolder<Contains> { - Contains( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location != NSNotFound; - } - - virtual std::string toString() const { - return "contains string: " + Catch::toString( m_substr ); - } - }; - - struct StartsWith : StringHolder<StartsWith> { - StartsWith( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location == 0; - } - - virtual std::string toString() const { - return "starts with: " + Catch::toString( m_substr ); - } - }; - struct EndsWith : StringHolder<EndsWith> { - EndsWith( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location == [str length] - [m_substr length]; - } - - virtual std::string toString() const { - 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 -// #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 - -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() { - 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] ) + token.substr( m_escapeChars[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 <iostream> -#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; - }; -} - -// #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 <iostream> -#include <ctime> - -#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 ), - 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 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; - }; - - 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; } - - std::string getProcessName() const { return m_data.processName; } - - bool shouldDebugBreak() const { return m_data.shouldDebugBreak; } - - std::vector<std::string> getReporterNames() const { return m_data.reporterNames; } - - int abortAfter() const { return m_data.abortAfter; } - - TestSpec const& testSpec() const { return m_testSpec; } - - bool showHelp() const { return m_data.showHelp; } - bool showInvisibles() const { return m_data.showInvisibles; } - - // IConfig interface - virtual bool allowThrows() const { return !m_data.noThrow; } - virtual std::ostream& stream() const { return m_stream->stream(); } - virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } - virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; } - virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; } - virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; } - virtual RunTests::InWhatOrder runOrder() const { return m_data.runOrder; } - virtual unsigned int rngSeed() const { return m_data.rngSeed; } - virtual UseColour::YesOrNo useColour() const { return m_data.useColour; } - - 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> - -// 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>( ::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( 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[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> - -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 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( "Argment 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 ); - - // 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-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 ), - 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 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> -#include <assert.h> - -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, tagsAttr; - nameAttr.setInitialIndent( 2 ).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( !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 << "\"" << std::endl; - else - Catch::cout() << testCaseInfo.name << 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() ) - 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 <map> -#include <string> -#include <assert.h> -#include <vector> - -namespace Catch { -namespace TestCaseTracking { - - struct ITracker : SharedImpl<> { - virtual ~ITracker(); - - // static queries - virtual std::string name() 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( std::string const& name ) = 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 { - std::string m_name; - public: - TrackerHasName( std::string const& name ) : m_name( name ) {} - bool operator ()( Ptr<ITracker> const& tracker ) { - return tracker->name() == m_name; - } - }; - typedef std::vector<Ptr<ITracker> > Children; - std::string m_name; - TrackerContext& m_ctx; - ITracker* m_parent; - Children m_children; - CycleState m_runState; - public: - TrackerBase( std::string const& name, TrackerContext& ctx, ITracker* parent ) - : m_name( name ), - m_ctx( ctx ), - m_parent( parent ), - m_runState( NotStarted ) - {} - virtual ~TrackerBase(); - - virtual std::string name() const CATCH_OVERRIDE { - return m_name; - } - 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( std::string const& name ) CATCH_OVERRIDE { - Children::const_iterator it = std::find_if( m_children.begin(), m_children.end(), TrackerHasName( name ) ); - 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 { - public: - SectionTracker( std::string const& name, TrackerContext& ctx, ITracker* parent ) - : TrackerBase( name, ctx, parent ) - {} - virtual ~SectionTracker(); - - virtual bool isSectionTracker() const CATCH_OVERRIDE { return true; } - - static SectionTracker& acquire( TrackerContext& ctx, std::string const& name ) { - SectionTracker* section = CATCH_NULL; - - ITracker& currentTracker = ctx.currentTracker(); - if( ITracker* childTracker = currentTracker.findChild( name ) ) { - assert( childTracker ); - assert( childTracker->isSectionTracker() ); - section = static_cast<SectionTracker*>( childTracker ); - } - else { - section = new SectionTracker( name, ctx, ¤tTracker ); - currentTracker.addChild( section ); - } - if( !ctx.completedCycle() && !section->isComplete() ) { - - section->open(); - } - return *section; - } - }; - - class IndexTracker : public TrackerBase { - int m_size; - int m_index; - public: - IndexTracker( std::string const& name, TrackerContext& ctx, ITracker* parent, int size ) - : TrackerBase( name, ctx, parent ), - m_size( size ), - m_index( -1 ) - {} - virtual ~IndexTracker(); - - virtual bool isIndexTracker() const CATCH_OVERRIDE { return true; } - - static IndexTracker& acquire( TrackerContext& ctx, std::string const& name, int size ) { - IndexTracker* tracker = CATCH_NULL; - - ITracker& currentTracker = ctx.currentTracker(); - if( ITracker* childTracker = currentTracker.findChild( name ) ) { - assert( childTracker ); - assert( childTracker->isIndexTracker() ); - tracker = static_cast<IndexTracker*>( childTracker ); - } - else { - tracker = new IndexTracker( name, 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( "{root}", *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 - -// #included from: catch_fatal_condition.hpp -#define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED - -namespace Catch { - - // Report the error condition then exit the process - inline void fatal( std::string const& message, int exitCode ) { - IContext& context = Catch::getCurrentContext(); - IResultCapture* resultCapture = context.getResultCapture(); - resultCapture->handleFatalErrorCondition( message ); - - if( Catch::alwaysTrue() ) // avoids "no return" warnings - exit( exitCode ); - } - -} // namespace Catch - -#if defined ( CATCH_PLATFORM_WINDOWS ) ///////////////////////////////////////// - -namespace Catch { - - struct FatalConditionHandler { - void reset() {} - }; - -} // namespace Catch - -#else // Not Windows - assumed to be POSIX compatible ////////////////////////// - -#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 void handleSignal( int sig ) { - for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) - if( sig == signalDefs[i].id ) - fatal( signalDefs[i].name, -sig ); - fatal( "<unknown signal>", -sig ); - } - - FatalConditionHandler() : m_isSet( true ) { - for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) - signal( signalDefs[i].id, handleSignal ); - } - ~FatalConditionHandler() { - reset(); - } - void reset() { - if( m_isSet ) { - for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) - signal( signalDefs[i].id, SIG_DFL ); - m_isSet = false; - } - } - - bool m_isSet; - }; - -} // namespace Catch - -#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_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 { - m_trackerContext.startRun(); - do { - m_trackerContext.startCycle(); - m_testCaseTracker = &SectionTracker::acquire( m_trackerContext, testInfo.name ); - 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++; - } - - if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) - m_messages.clear(); - - // 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 - ) - { - std::ostringstream oss; - oss << sectionInfo.name << "@" << sectionInfo.lineInfo; - - ITracker& sectionTracker = SectionTracker::acquire( m_trackerContext, oss.str() ); - 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 - : ""; - } - - virtual const AssertionResult* getLastResult() const { - return &m_lastResult; - } - - virtual void handleFatalErrorCondition( std::string const& message ) { - ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); - resultBuilder.setResultType( ResultWas::FatalErrorCondition ); - resultBuilder << message; - resultBuilder.captureExpression(); - - 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, - "", - "", - false ) ); - m_totals.testCases.failed++; - testGroupEnded( "", 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; - 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(...) { - 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.c_str(), - m_lastAssertionInfo.lineInfo, - m_lastAssertionInfo.capturedExpression.c_str(), - 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; - }; - - 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, - std::string 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 - std::string const branchName; - unsigned int const buildNumber; - - friend std::ostream& operator << ( std::ostream& os, Version const& version ); - - private: - void operator=( Version const& ); - }; - - extern 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; - } - - 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 <iostream> -#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 == "" ) { - 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; - }; -} - -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; - } - - 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 ); - } - - private: - TestRegistry m_testCaseRegistry; - ReporterRegistry m_reporterRegistry; - ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; - }; - - // 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 <ostream> - -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: // 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 - -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 ) ///////////////////////////////////////// - -#ifndef NOMINMAX -#define NOMINMAX -#endif - -#ifdef __AFXDLL -#include <AfxWin.h> -#else -#include <windows.h> -#endif - -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() { - 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( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - std::string const& _capturedExpression, - ResultDisposition::Flags _resultDisposition ) - : macroName( _macroName ), - lineInfo( _lineInfo ), - capturedExpression( _capturedExpression ), - resultDisposition( _resultDisposition ) - {} - - 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.empty(); - } - - bool AssertionResult::hasMessage() const { - return !m_resultData.message.empty(); - } - - std::string AssertionResult::getExpression() const { - if( isFalseTest( m_info.resultDisposition ) ) - return "!" + m_info.capturedExpression; - else - return m_info.capturedExpression; - } - std::string AssertionResult::getExpressionInMacro() const { - if( m_info.macroName.empty() ) - return m_info.capturedExpression; - else - return m_info.macroName + "( " + m_info.capturedExpression + " )"; - } - - bool AssertionResult::hasExpandedExpression() const { - return hasExpression() && getExpandedExpression() != getExpression(); - } - - std::string AssertionResult::getExpandedExpression() const { - return m_resultData.reconstructedExpression; - } - - 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; - } - -} // end namespace Catch - -// #included from: catch_test_case_info.hpp -#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED - -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 - return TestCaseInfo::None; - } - inline bool isReservedTag( std::string const& tag ) { - return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !isalnum( tag[0] ); - } - inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { - if( isReservedTag( tag ) ) { - { - Colour colourGuard( Colour::Red ); - Catch::cerr() - << "Tag name [" << tag << "] not allowed.\n" - << "Tag names starting with non alpha-numeric characters are reserved\n"; - } - { - Colour colourGuard( Colour::FileName ); - Catch::cerr() << _lineInfo << std::endl; - } - exit(1); - } - } - - 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, - std::string 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; - - if( !version.branchName.empty() ) { - os << "-" << version.branchName - << "." << version.buildNumber; - } - return os; - } - - Version libraryVersion( 1, 6, 0, "", 0 ); - -} - -// #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() { - 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 -#include <windows.h> -#else -#include <sys/time.h> -#endif - -namespace Catch { - - namespace { -#ifdef CATCH_PLATFORM_WINDOWS - uint64_t getCurrentTicks() { - static uint64_t hz=0, hzo=0; - if (!hz) { - QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) ); - QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) ); - } - uint64_t t; - QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) ); - return ((t-hzo)*1000000)/hz; - } -#else - uint64_t getCurrentTicks() { - timeval t; - gettimeofday(&t,CATCH_NULL); - return static_cast<uint64_t>( t.tv_sec ) * 1000000ull + static_cast<uint64_t>( 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 - -namespace Catch { - - bool startsWith( std::string const& s, std::string const& prefix ) { - return s.size() >= prefix.size() && s.substr( 0, prefix.size() ) == prefix; - } - bool endsWith( std::string const& s, std::string const& suffix ) { - return s.size() >= suffix.size() && s.substr( s.size()-suffix.size(), suffix.size() ) == 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>( ::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 ) : ""; - } - - 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() : line( 0 ){} - SourceLineInfo::SourceLineInfo( char const* _file, std::size_t _line ) - : file( _file ), - line( _line ) - {} - SourceLineInfo::SourceLineInfo( SourceLineInfo const& other ) - : file( other.file ), - line( other.line ) - {} - bool SourceLineInfo::empty() const { - return file.empty(); - } - bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const { - return line == other.line && file == other.file; - } - bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const { - return line < other.line || ( line == other.line && file < other.file ); - } - - 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(); - } - - 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 ); - } - } - - // 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 - -#include <iostream> - -#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(_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 - extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA( const char* ); - 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 ) { - return value < ' ' - ? toString( static_cast<unsigned int>( value ) ) - : Detail::makeString( value ); -} - -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 const& 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 { - - std::string capturedExpressionWithSecondArgument( std::string const& capturedExpression, std::string const& secondArg ) { - return secondArg.empty() || secondArg == "\"\"" - ? capturedExpression - : capturedExpression + ", " + secondArg; - } - ResultBuilder::ResultBuilder( char const* macroName, - SourceLineInfo const& lineInfo, - char const* capturedExpression, - ResultDisposition::Flags resultDisposition, - char const* secondArg ) - : m_assertionInfo( macroName, lineInfo, capturedExpressionWithSecondArgument( capturedExpression, secondArg ), resultDisposition ), - m_shouldDebugBreak( false ), - m_shouldThrow( false ) - {} - - 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; - } - ResultBuilder& ResultBuilder::setLhs( std::string const& lhs ) { - m_exprComponents.lhs = lhs; - return *this; - } - ResultBuilder& ResultBuilder::setRhs( std::string const& rhs ) { - m_exprComponents.rhs = rhs; - return *this; - } - ResultBuilder& ResultBuilder::setOp( std::string const& op ) { - m_exprComponents.op = op; - return *this; - } - - void ResultBuilder::endExpression() { - m_exprComponents.testFalse = isFalseTest( m_assertionInfo.resultDisposition ); - captureExpression(); - } - - 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::Generic::AllOf<std::string>() ); - else - captureExpectedException( Matchers::Equals( expectedMessage ) ); - } - - void ResultBuilder::captureExpectedException( Matchers::Impl::Matcher<std::string> const& matcher ) { - - assert( m_exprComponents.testFalse == false ); - AssertionResultData data = m_data; - data.resultType = ResultWas::Ok; - data.reconstructedExpression = m_assertionInfo.capturedExpression; - - 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( m_shouldThrow ) - throw Catch::TestFailureException(); - } - - bool ResultBuilder::shouldDebugBreak() const { return m_shouldDebugBreak; } - bool ResultBuilder::allowThrows() const { return getCurrentContext().getConfig()->allowThrows(); } - - AssertionResult ResultBuilder::build() const - { - assert( m_data.resultType != ResultWas::Unknown ); - - AssertionResultData data = m_data; - - // Flip bool results if testFalse is set - if( m_exprComponents.testFalse ) { - if( data.resultType == ResultWas::Ok ) - data.resultType = ResultWas::ExpressionFailed; - else if( data.resultType == ResultWas::ExpressionFailed ) - data.resultType = ResultWas::Ok; - } - - data.message = m_stream.oss.str(); - data.reconstructedExpression = reconstructExpression(); - if( m_exprComponents.testFalse ) { - if( m_exprComponents.op == "" ) - data.reconstructedExpression = "!" + data.reconstructedExpression; - else - data.reconstructedExpression = "!(" + data.reconstructedExpression + ")"; - } - return AssertionResult( m_assertionInfo, data ); - } - std::string ResultBuilder::reconstructExpression() const { - if( m_exprComponents.op == "" ) - return m_exprComponents.lhs.empty() ? m_assertionInfo.capturedExpression : m_exprComponents.lhs; - else if( m_exprComponents.op == "matches" ) - return m_exprComponents.lhs + " " + m_exprComponents.rhs; - else if( m_exprComponents.op != "!" ) { - if( m_exprComponents.lhs.size() + m_exprComponents.rhs.size() < 40 && - m_exprComponents.lhs.find("\n") == std::string::npos && - m_exprComponents.rhs.find("\n") == std::string::npos ) - return m_exprComponents.lhs + " " + m_exprComponents.op + " " + m_exprComponents.rhs; - else - return m_exprComponents.lhs + "\n" + m_exprComponents.op + "\n" + m_exprComponents.rhs; - } - else - return "{can't expand - use " + m_assertionInfo.macroName + "_FALSE( " + m_assertionInfo.capturedExpression.substr(1) + " ) instead of " + m_assertionInfo.macroName + "( " + m_assertionInfo.capturedExpression + " ) for better diagnostics}"; - } - -} // end namespace Catch - -// #included from: catch_tag_alias_registry.hpp -#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED - -// #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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - static TagAliasRegistry& get(); - - private: - std::map<std::string, TagAlias> m_registry; - }; - -} // end namespace Catch - -#include <map> -#include <iostream> - -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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { - - if( !startsWith( alias, "[@" ) || !endsWith( alias, "]" ) ) { - std::ostringstream oss; - oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; - throw std::domain_error( oss.str().c_str() ); - } - if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { - std::ostringstream oss; - oss << "error: tag alias, \"" << alias << "\" already registered.\n" - << "\tFirst seen at " << find(alias)->lineInfo << "\n" - << "\tRedefined at " << lineInfo; - throw std::domain_error( oss.str().c_str() ); - } - } - - TagAliasRegistry& TagAliasRegistry::get() { - static TagAliasRegistry instance; - return instance; - - } - - ITagAliasRegistry::~ITagAliasRegistry() {} - ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } - - RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { - try { - TagAliasRegistry::get().add( alias, tag, lineInfo ); - } - catch( std::exception& ex ) { - Colour colourGuard( Colour::Red ); - Catch::cerr() << ex.what() << std::endl; - exit(1); - } - } - -} // end 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> - -namespace Catch { - - 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 ); - 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 {} - - 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 ) { - 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 ""; - } - }; - - 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 ); } - -#define INTERNAL_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' ) - 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() ) - { - // We encode control characters, which requires - // XML 1.1 - // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 - *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; - } - - XmlWriter( std::ostream& os ) - : m_tagIsOpen( false ), - m_needsNewline( false ), - m_os( &os ) - { - *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; - } - - ~XmlWriter() { - while( !m_tags.empty() ) - endElement(); - } - - XmlWriter& startElement( std::string const& name ) { - ensureTagClosed(); - newlineIfNecessary(); - stream() << 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 ) { - stream() << "/>\n"; - m_tagIsOpen = false; - } - else { - stream() << m_indent << "</" << m_tags.back() << ">\n"; - } - m_tags.pop_back(); - return *this; - } - - XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { - if( !name.empty() && !attribute.empty() ) - stream() << " " << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << "\""; - return *this; - } - - XmlWriter& writeAttribute( std::string const& name, bool attribute ) { - stream() << " " << 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 ) - stream() << m_indent; - stream() << XmlEncode( text ); - m_needsNewline = true; - } - return *this; - } - - XmlWriter& writeComment( std::string const& text ) { - ensureTagClosed(); - stream() << m_indent << "<!--" << text << "-->"; - m_needsNewline = true; - return *this; - } - - XmlWriter& writeBlankLine() { - ensureTagClosed(); - stream() << "\n"; - return *this; - } - - void setStream( std::ostream& os ) { - m_os = &os; - } - - private: - XmlWriter( XmlWriter const& ); - void operator=( XmlWriter const& ); - - std::ostream& stream() { - return *m_os; - } - - void ensureTagClosed() { - if( m_tagIsOpen ) { - stream() << ">\n"; - m_tagIsOpen = false; - } - } - - void newlineIfNecessary() { - if( m_needsNewline ) { - stream() << "\n"; - m_needsNewline = false; - } - } - - bool m_tagIsOpen; - bool m_needsNewline; - std::vector<std::string> m_tags; - std::string m_indent; - std::ostream* m_os; - }; - -} -// #included from: 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 - - -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"; - } - - 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 ); - 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", testInfo.name ); - - if ( m_config->showDurations() == ShowDurations::Always ) - m_testCaseTimer.start(); - } - - 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 ); - } - } - - virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } - - virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { - const AssertionResult& assertionResult = assertionStats.assertionResult; - - // Print any info messages in <Info> tags. - 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 ) { - 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( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) - return true; - - // Print the expression if there is one. - if( assertionResult.hasExpression() ) { - m_xml.startElement( "Expression" ) - .writeAttribute( "success", assertionResult.succeeded() ) - .writeAttribute( "type", assertionResult.getTestMacroName() ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ); - - m_xml.scopedElement( "Original" ) - .writeText( assertionResult.getExpression() ); - m_xml.scopedElement( "Expanded" ) - .writeText( assertionResult.getExpandedExpression() ); - } - - // And... Print a result applicable to each result type. - switch( assertionResult.getResultType() ) { - case ResultWas::ThrewException: - m_xml.scopedElement( "Exception" ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::FatalErrorCondition: - m_xml.scopedElement( "FatalErrorCondition" ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::Info: - m_xml.scopedElement( "Info" ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::Warning: - // Warning will already have been written - break; - case ResultWas::ExplicitFailure: - m_xml.scopedElement( "Failure" ) - .writeText( assertionResult.getMessage() ); - break; - default: - break; - } - - if( assertionResult.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() ); - - 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 { - - class JunitReporter : public CumulativeReporterBase { - public: - JunitReporter( ReporterConfig const& _config ) - : CumulativeReporterBase( _config ), - xml( _config.stream() ) - { - 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 bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { - if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) - 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", "tbd" ); // !TBD - - // 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; - }; - - INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) - -} // end namespace Catch - -// #included from: ../reporters/catch_reporter_console.hpp -#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED - -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 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; - } - - lazyPrint(); - - AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); - 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_headerPrinted ) { - if( m_config->showDurations() == ShowDurations::Always ) - stream << "Completed in " << _sectionStats.durationInSeconds << "s" << std::endl; - m_headerPrinted = false; - } - else { - if( m_config->showDurations() == ShowDurations::Always ) - stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << "s" << std::endl; - } - 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 message"; - 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.front().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 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 passOrFail ) const { - if( !passOrFail.empty() ) { - { - Colour colourGuard( colour ); - stream << " " << passOrFail; - } - stream << ":"; - } - } - - void printIssue( std::string 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 ? "" : 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 ) : ""; - 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::StdString::Equals::~Equals() {} - Matchers::Impl::StdString::Contains::~Contains() {} - Matchers::Impl::StdString::StartsWith::~StartsWith() {} - Matchers::Impl::StdString::EndsWith::~EndsWith() {} - - 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__ - -// Standard C/C++ main entry point -int main (int argc, char * argv[]) { - return Catch::Session().run( argc, argv ); -} - -#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; -} - -#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 - -#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) -#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) - -#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "CATCH_REQUIRE_THROWS" ) -#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) -#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "CATCH_REQUIRE_THROWS_WITH" ) -#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) - -#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) -#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) -#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) -#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) -#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) - -#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CATCH_CHECK_THROWS" ) -#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) -#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) -#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) - -#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) -#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) - -#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) -#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) -#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) -#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) -#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) - -#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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) - #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) - #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", 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 - -#define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) -#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) - -#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "REQUIRE_THROWS" ) -#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) -#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "REQUIRE_THROWS_WITH" ) -#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) - -#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) -#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) -#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) -#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) -#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) - -#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CHECK_THROWS" ) -#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) -#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CHECK_THROWS_WITH" ) -#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) - -#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) -#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) - -#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) -#define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) -#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) -#define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) -#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) - -#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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) - #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) - #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", 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; - -#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED - +/* + * Catch v1.7.0 + * Generated: 2017-02-01 21:32:13.239291 + * ---------------------------------------------------------- + * 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 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? +// **************** +// 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_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +# endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// 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 + +# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) +# 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 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_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_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_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 <stdexcept> +#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 ); + 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 ); + +#include <ostream> + +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 + +#include <memory> +#include <vector> +#include <stdlib.h> + +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(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ + 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, ... ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + namespace{ \ + struct TestName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ + } \ + 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); + +#else + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ + static void TestName(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ + 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 ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ + namespace{ \ + struct TestCaseName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ + } \ + 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); +#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& ); + }; + + struct AssertionInfo + { + AssertionInfo() {} + AssertionInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ); + + std::string macroName; + SourceLineInfo lineInfo; + std::string capturedExpression; + ResultDisposition::Flags resultDisposition; + }; + + 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 { + + namespace Generic { + template<typename ExpressionT> class AllOf; + template<typename ExpressionT> class AnyOf; + template<typename ExpressionT> class Not; + } + + template<typename ExpressionT> + struct Matcher : SharedImpl<IShared> + { + typedef ExpressionT ExpressionType; + + virtual ~Matcher() {} + virtual Ptr<Matcher> clone() const = 0; + virtual bool match( ExpressionT const& expr ) const = 0; + virtual std::string toString() const = 0; + + Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const; + Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const; + Generic::Not<ExpressionT> operator ! () const; + }; + + template<typename DerivedT, typename ExpressionT> + struct MatcherImpl : Matcher<ExpressionT> { + + virtual Ptr<Matcher<ExpressionT> > clone() const { + return Ptr<Matcher<ExpressionT> >( new DerivedT( static_cast<DerivedT const&>( *this ) ) ); + } + }; + + namespace Generic { + template<typename ExpressionT> + class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> { + public: + explicit Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {} + Not( Not const& other ) : m_matcher( other.m_matcher ) {} + + virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE { + return !m_matcher->match( expr ); + } + + virtual std::string toString() const CATCH_OVERRIDE { + return "not " + m_matcher->toString(); + } + private: + Ptr< Matcher<ExpressionT> > m_matcher; + }; + + template<typename ExpressionT> + class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> { + public: + + AllOf() {} + AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} + + AllOf& add( Matcher<ExpressionT> const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( !m_matchers[i]->match( expr ) ) + return false; + return true; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " and "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AllOf operator && ( Matcher<ExpressionT> const& other ) const { + AllOf allOfExpr( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + private: + std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; + }; + + template<typename ExpressionT> + class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> { + public: + + AnyOf() {} + AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} + + AnyOf& add( Matcher<ExpressionT> const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( m_matchers[i]->match( expr ) ) + return true; + return false; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " or "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AnyOf operator || ( Matcher<ExpressionT> const& other ) const { + AnyOf anyOfExpr( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + private: + std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; + }; + + } // namespace Generic + + template<typename ExpressionT> + Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const { + Generic::AllOf<ExpressionT> allOfExpr; + allOfExpr.add( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + template<typename ExpressionT> + Generic::AnyOf<ExpressionT> Matcher<ExpressionT>::operator || ( Matcher<ExpressionT> const& other ) const { + Generic::AnyOf<ExpressionT> anyOfExpr; + anyOfExpr.add( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + template<typename ExpressionT> + Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const { + return Generic::Not<ExpressionT>( *this ); + } + + namespace StdString { + + inline std::string makeString( std::string const& str ) { return str; } + inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } + + struct CasedString + { + CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_str( adjustString( str ) ) + {} + std::string adjustString( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No + ? toLower( str ) + : str; + + } + std::string toStringSuffix() const + { + return m_caseSensitivity == CaseSensitive::No + ? " (case insensitive)" + : std::string(); + } + CaseSensitive::Choice m_caseSensitivity; + std::string m_str; + }; + + struct Equals : MatcherImpl<Equals, std::string> { + Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( str, caseSensitivity ) + {} + Equals( Equals const& other ) : m_data( other.m_data ){} + + virtual ~Equals(); + + virtual bool match( std::string const& expr ) const { + return m_data.m_str == m_data.adjustString( expr );; + } + virtual std::string toString() const { + return "equals: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct Contains : MatcherImpl<Contains, std::string> { + Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + Contains( Contains const& other ) : m_data( other.m_data ){} + + virtual ~Contains(); + + virtual bool match( std::string const& expr ) const { + return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos; + } + virtual std::string toString() const { + return "contains: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct StartsWith : MatcherImpl<StartsWith, std::string> { + StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + + StartsWith( StartsWith const& other ) : m_data( other.m_data ){} + + virtual ~StartsWith(); + + virtual bool match( std::string const& expr ) const { + return startsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "starts with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct EndsWith : MatcherImpl<EndsWith, std::string> { + EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + EndsWith( EndsWith const& other ) : m_data( other.m_data ){} + + virtual ~EndsWith(); + + virtual bool match( std::string const& expr ) const { + return endsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "ends with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + } // namespace StdString + } // namespace Impl + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + template<typename ExpressionT> + inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) { + return Impl::Generic::Not<ExpressionT>( m ); + } + + template<typename ExpressionT> + inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2 ) { + return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ); + } + template<typename ExpressionT> + inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2, + Impl::Matcher<ExpressionT> const& m3 ) { + return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); + } + template<typename ExpressionT> + inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2 ) { + return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ); + } + template<typename ExpressionT> + inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2, + Impl::Matcher<ExpressionT> const& m3 ) { + return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); + } + + inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( str, caseSensitivity ); + } + inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity ); + } + inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( substr, caseSensitivity ); + } + inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity ); + } + inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { + return Impl::StdString::StartsWith( substr ); + } + inline Impl::StdString::StartsWith StartsWith( const char* substr ) { + return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); + } + inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { + return Impl::StdString::EndsWith( substr ); + } + inline Impl::StdString::EndsWith EndsWith( const char* substr ) { + return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); + } + +} // namespace Matchers + +using namespace Matchers; + +} // 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 = "" ); + + 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::Matcher<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 ); + + private: + AssertionInfo m_assertionInfo; + AssertionResultData m_data; + CopyableStream m_stream; + + bool m_shouldDebugBreak; + bool m_shouldThrow; + }; + +} // 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 +#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 const& nsstring ); + std::string toString( NSObject* const& nsObject ); +#endif + +namespace Detail { + + extern const std::string unprintableString; + + 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 ) }; + }; + +#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) {} + + template<typename RhsT> + BinaryExpression<T, Internal::IsEqualTo, RhsT const&> + operator == ( RhsT const& rhs ) const { + return captureExpression<Internal::IsEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsNotEqualTo, RhsT const&> + operator != ( RhsT const& rhs ) const { + return captureExpression<Internal::IsNotEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsLessThan, RhsT const&> + operator < ( RhsT const& rhs ) const { + return captureExpression<Internal::IsLessThan>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsGreaterThan, RhsT const&> + operator > ( RhsT const& rhs ) const { + return captureExpression<Internal::IsGreaterThan>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsLessThanOrEqualTo, RhsT const&> + operator <= ( RhsT const& rhs ) const { + return captureExpression<Internal::IsLessThanOrEqualTo>( rhs ); + } + + template<typename RhsT> + BinaryExpression<T, Internal::IsGreaterThanOrEqualTo, RhsT const&> + operator >= ( RhsT const& rhs ) const { + return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs ); + } + + BinaryExpression<T, Internal::IsEqualTo, bool> operator == ( bool rhs ) const { + return captureExpression<Internal::IsEqualTo>( rhs ); + } + + BinaryExpression<T, Internal::IsNotEqualTo, bool> operator != ( bool rhs ) const { + 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_truthy ); + } + +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 ) {} + + 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 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; + }; +} + +/////////////////////////////////////////////////////////////////////////////// +// 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(); + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + ( __catchResult <= expr ).endExpression(); \ + } \ + 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( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( !Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ + 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( expr, resultDisposition, matcher, macroName ) \ + 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( expr, exceptionType, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, 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( messageType, resultDisposition, macroName, ... ) \ + 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( messageType, resultDisposition, macroName, 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( log, macroName ) \ + Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ + 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; + }; +} + +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 CATCH_PLATFORM_WINDOWS +typedef unsigned long long uint64_t; +#else +#include <stdint.h> +#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_t 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 <iterator> +#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 ) { + std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); + 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 IRegistryHub { + virtual ~IRegistryHub(); + + virtual IReporterRegistry const& getReporterRegistry() const = 0; + virtual ITestCaseRegistry const& getTestCaseRegistry() 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; + }; + + 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_scale( 1.0 ), + m_value( value ) + {} + + Approx( Approx const& other ) + : m_epsilon( other.m_epsilon ), + m_scale( other.m_scale ), + m_value( other.m_value ) + {} + + static Approx custom() { + return Approx( 0 ); + } + + Approx operator()( double value ) { + Approx approx( value ); + approx.epsilon( m_epsilon ); + approx.scale( m_scale ); + return approx; + } + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) + 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); + return fabs( lhs_v - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs_v), fabs(rhs.m_value) ) ); + } + + 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; + } +#else + friend bool operator == ( double lhs, Approx const& rhs ) { + // Thanks to Richard Harris for his help refining this formula + return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) ); + } + + 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; + } +#endif + + Approx& epsilon( double newEpsilon ) { + m_epsilon = newEpsilon; + return *this; + } + + Approx& scale( double newScale ) { + m_scale = newScale; + return *this; + } + + std::string toString() const { + std::ostringstream oss; + oss << "Approx( " << Catch::toString( m_value ) << " )"; + return oss.str(); + } + + private: + double m_epsilon; + 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_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 _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; + char storage[sizeof(T)]; + }; + +} // 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 { + + template<typename MatcherT> + struct StringHolder : MatcherImpl<MatcherT, NSString*>{ + StringHolder( NSString* substr ) : m_substr( [substr copy] ){} + StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} + StringHolder() { + arcSafeRelease( m_substr ); + } + + NSString* m_substr; + }; + + struct Equals : StringHolder<Equals> { + Equals( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str isEqualToString:m_substr]; + } + + virtual std::string toString() const { + return "equals string: " + Catch::toString( m_substr ); + } + }; + + struct Contains : StringHolder<Contains> { + Contains( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location != NSNotFound; + } + + virtual std::string toString() const { + return "contains string: " + Catch::toString( m_substr ); + } + }; + + struct StartsWith : StringHolder<StartsWith> { + StartsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == 0; + } + + virtual std::string toString() const { + return "starts with: " + Catch::toString( m_substr ); + } + }; + struct EndsWith : StringHolder<EndsWith> { + EndsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == [str length] - [m_substr length]; + } + + virtual std::string toString() const { + 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 +// #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 + +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]-i ) + token.substr( m_escapeChars[i]+1-i ); + 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 <iostream> +#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 <iostream> +#include <ctime> + +#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 ), + 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 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; } + + std::string getProcessName() const { return m_data.processName; } + + bool shouldDebugBreak() const { return m_data.shouldDebugBreak; } + + std::vector<std::string> const& getReporterNames() const { return m_data.reporterNames; } + std::vector<std::string> const& getSectionsToRun() const CATCH_OVERRIDE { return m_data.sectionsToRun; } + + int abortAfter() const { return m_data.abortAfter; } + + TestSpec const& testSpec() const { return m_testSpec; } + + bool showHelp() const { return m_data.showHelp; } + bool showInvisibles() const { return m_data.showInvisibles; } + + // IConfig interface + virtual bool allowThrows() const { return !m_data.noThrow; } + virtual std::ostream& stream() const { return m_stream->stream(); } + virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } + virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; } + virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; } + virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; } + virtual RunTests::InWhatOrder runOrder() const { return m_data.runOrder; } + virtual unsigned int rngSeed() const { return m_data.rngSeed; } + virtual UseColour::YesOrNo useColour() const { return m_data.useColour; } + + 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> + +// 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>( ::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( 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[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> + +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( "Argment 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-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> +#include <assert.h> + +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, tagsAttr; + nameAttr.setInitialIndent( 2 ).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( !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 << '"' << std::endl; + else + Catch::cout() << testCaseInfo.name << 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() ) + 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 <map> +#include <string> +#include <assert.h> +#include <vector> +#include <iterator> + +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 + std::copy( filters.begin(), filters.end(), std::back_inserter( m_filters ) ); + } + } + void addNextFilters( std::vector<std::string> const& filters ) { + if( filters.size() > 1 ) + std::copy( filters.begin()+1, filters.end(), std::back_inserter( m_filters ) ); + } + }; + + 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 + +// #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 ) ///////////////////////////////////////// + +#define NOMINMAX +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#undef WIN32_LEAN_AND_MEAN +#undef NOMINMAX + +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; + } + + // 32k seems enough for Catch to handle stack overflow, + // but the value was found experimentally, so there is no strong guarantee + FatalConditionHandler():m_isSet(true), m_guaranteeSize(32 * 1024), m_exceptionHandlerHandle(CATCH_NULL) { + // Register as first handler in current chain + m_exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException); + // Pass in guarantee size to be filled + SetThreadStackGuarantee(&m_guaranteeSize); + } + + void reset() { + if (m_isSet) { + // Unregister handler and restore the old guarantee + RemoveVectoredExceptionHandler(m_exceptionHandlerHandle); + SetThreadStackGuarantee(&m_guaranteeSize); + m_exceptionHandlerHandle = CATCH_NULL; + m_isSet = false; + } + } + + ~FatalConditionHandler() { + reset(); + } + private: + bool m_isSet; + ULONG m_guaranteeSize; + PVOID m_exceptionHandlerHandle; + }; + +} // namespace Catch + +#else // Not Windows - assumed to be POSIX compatible ////////////////////////// + +#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 // 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_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(); + dynamic_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++; + } + + if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) + m_messages.clear(); + + // Reset working state + m_lastAssertionInfo = AssertionInfo( std::string(), 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 handleFatalErrorCondition( std::string const& message ) { + ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); + resultBuilder.setResultType( ResultWas::FatalErrorCondition ); + resultBuilder << message; + resultBuilder.captureExpression(); + + 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; + try { + m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, std::string(), 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(...) { + 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.c_str(), + m_lastAssertionInfo.lineInfo, + m_lastAssertionInfo.capturedExpression.c_str(), + 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; + }; + + 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, + std::string 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 + std::string const branchName; + unsigned int const buildNumber; + + friend std::ostream& operator << ( std::ostream& os, Version const& version ); + + private: + void operator=( Version const& ); + }; + + extern 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; + } + + 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 <iostream> +#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; + }; +} + +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; + } + + 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 ); + } + + private: + TestRegistry m_testCaseRegistry; + ReporterRegistry m_reporterRegistry; + ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; + }; + + // 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 <ostream> + +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 + +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 ) ///////////////////////////////////////// + +// #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 + +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() { + 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( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + capturedExpression( _capturedExpression ), + resultDisposition( _resultDisposition ) + {} + + 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.empty(); + } + + bool AssertionResult::hasMessage() const { + return !m_resultData.message.empty(); + } + + std::string AssertionResult::getExpression() const { + if( isFalseTest( m_info.resultDisposition ) ) + return '!' + m_info.capturedExpression; + else + return m_info.capturedExpression; + } + std::string AssertionResult::getExpressionInMacro() const { + if( m_info.macroName.empty() ) + return m_info.capturedExpression; + else + return m_info.macroName + "( " + m_info.capturedExpression + " )"; + } + + 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 + +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 && !isalnum( tag[0] ); + } + inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { + if( isReservedTag( tag ) ) { + { + Colour colourGuard( Colour::Red ); + Catch::cerr() + << "Tag name [" << tag << "] not allowed.\n" + << "Tag names starting with non alpha-numeric characters are reserved\n"; + } + { + Colour colourGuard( Colour::FileName ); + Catch::cerr() << _lineInfo << std::endl; + } + exit(1); + } + } + + 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, + std::string 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; + + if( !version.branchName.empty() ) { + os << '-' << version.branchName + << '.' << version.buildNumber; + } + return os; + } + + Version libraryVersion( 1, 7, 0, "", 0 ); + +} + +// #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() { + 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_t getCurrentTicks() { + static uint64_t hz=0, hzo=0; + if (!hz) { + QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) ); + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) ); + } + uint64_t t; + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) ); + return ((t-hzo)*1000000)/hz; + } +#else + uint64_t getCurrentTicks() { + timeval t; + gettimeofday(&t,CATCH_NULL); + return static_cast<uint64_t>( t.tv_sec ) * 1000000ull + static_cast<uint64_t>( 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> + +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; + } + bool contains( std::string const& s, char infix ) { + return s.find(infix) != std::string::npos; + } + char toLowerCh(char c) { + return static_cast<char>( ::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(); + } + + 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 ); + } + } + + // 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 + +#include <iostream> + +#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(){ + 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 + extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA( const char* ); + 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 const& 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 { + + std::string capturedExpressionWithSecondArgument( std::string const& capturedExpression, std::string const& secondArg ) { + return secondArg.empty() || secondArg == "\"\"" + ? capturedExpression + : capturedExpression + ", " + secondArg; + } + ResultBuilder::ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg ) + : m_assertionInfo( macroName, lineInfo, capturedExpressionWithSecondArgument( capturedExpression, secondArg ), resultDisposition ), + m_shouldDebugBreak( false ), + m_shouldThrow( false ) + {} + + 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::Generic::AllOf<std::string>() ); + else + captureExpectedException( Matchers::Equals( expectedMessage ) ); + } + + void ResultBuilder::captureExpectedException( Matchers::Impl::Matcher<std::string> const& matcher ) { + + assert( !isFalseTest( m_assertionInfo.resultDisposition ) ); + AssertionResultData data = m_data; + data.resultType = ResultWas::Ok; + data.reconstructedExpression = m_assertionInfo.capturedExpression; + + 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( 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 = m_assertionInfo.capturedExpression; + } + +} // end namespace Catch + +// #included from: catch_tag_alias_registry.hpp +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED + +// #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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + static TagAliasRegistry& get(); + + private: + std::map<std::string, TagAlias> m_registry; + }; + +} // end namespace Catch + +#include <map> +#include <iostream> + +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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + + if( !startsWith( alias, "[@" ) || !endsWith( alias, ']' ) ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" already registered.\n" + << "\tFirst seen at " << find(alias)->lineInfo << '\n' + << "\tRedefined at " << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + } + + TagAliasRegistry& TagAliasRegistry::get() { + static TagAliasRegistry instance; + return instance; + + } + + ITagAliasRegistry::~ITagAliasRegistry() {} + ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } + + RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + try { + TagAliasRegistry::get().add( alias, tag, lineInfo ); + } + catch( std::exception& ex ) { + Colour colourGuard( Colour::Red ); + Catch::cerr() << ex.what() << std::endl; + exit(1); + } + } + +} // end 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> + +namespace Catch { + + 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 ) { + 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 ); } + +#define INTERNAL_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' ) + 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() ) + { + // We encode control characters, which requires + // XML 1.1 + // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 + *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; + } + + XmlWriter( std::ostream& os ) + : m_tagIsOpen( false ), + m_needsNewline( false ), + m_os( &os ) + { + *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; + } + + ~XmlWriter() { + while( !m_tags.empty() ) + endElement(); + } + + XmlWriter& startElement( std::string const& name ) { + ensureTagClosed(); + newlineIfNecessary(); + stream() << 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 ) { + stream() << "/>\n"; + m_tagIsOpen = false; + } + else { + stream() << m_indent << "</" << m_tags.back() << ">\n"; + } + m_tags.pop_back(); + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { + if( !name.empty() && !attribute.empty() ) + stream() << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, bool attribute ) { + stream() << ' ' << 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 ) + stream() << m_indent; + stream() << XmlEncode( text ); + m_needsNewline = true; + } + return *this; + } + + XmlWriter& writeComment( std::string const& text ) { + ensureTagClosed(); + stream() << m_indent << "<!--" << text << "-->"; + m_needsNewline = true; + return *this; + } + + XmlWriter& writeBlankLine() { + ensureTagClosed(); + stream() << '\n'; + return *this; + } + + void setStream( std::ostream& os ) { + m_os = &os; + } + + private: + XmlWriter( XmlWriter const& ); + void operator=( XmlWriter const& ); + + std::ostream& stream() { + return *m_os; + } + + void ensureTagClosed() { + if( m_tagIsOpen ) { + stream() << ">\n"; + m_tagIsOpen = false; + } + } + + void newlineIfNecessary() { + if( m_needsNewline ) { + stream() << '\n'; + m_needsNewline = false; + } + } + + bool m_tagIsOpen; + bool m_needsNewline; + std::vector<std::string> m_tags; + std::string m_indent; + std::ostream* m_os; + }; + +} +// #included from: 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 + + +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"; + } + + 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 ); + 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", testInfo.name ); + + if ( m_config->showDurations() == ShowDurations::Always ) + m_testCaseTimer.start(); + } + + 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 ); + } + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + const AssertionResult& assertionResult = assertionStats.assertionResult; + + // Print any info messages in <Info> tags. + 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 ) { + 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( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) + return true; + + // Print the expression if there is one. + if( assertionResult.hasExpression() ) { + m_xml.startElement( "Expression" ) + .writeAttribute( "success", assertionResult.succeeded() ) + .writeAttribute( "type", assertionResult.getTestMacroName() ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ); + + m_xml.scopedElement( "Original" ) + .writeText( assertionResult.getExpression() ); + m_xml.scopedElement( "Expanded" ) + .writeText( assertionResult.getExpandedExpression() ); + } + + // And... Print a result applicable to each result type. + switch( assertionResult.getResultType() ) { + case ResultWas::ThrewException: + m_xml.scopedElement( "Exception" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::FatalErrorCondition: + m_xml.scopedElement( "FatalErrorCondition" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Info: + m_xml.scopedElement( "Info" ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Warning: + // Warning will already have been written + break; + case ResultWas::ExplicitFailure: + m_xml.scopedElement( "Failure" ) + .writeText( assertionResult.getMessage() ); + break; + default: + break; + } + + if( assertionResult.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() ); + + 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 CATCH_PLATFORM_WINDOWS + 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 CATCH_PLATFORM_WINDOWS + 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_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 bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) + 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; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_console.hpp +#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED + +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 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; + } + + lazyPrint(); + + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); + 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_headerPrinted ) { + if( m_config->showDurations() == ShowDurations::Always ) + stream << "Completed in " << _sectionStats.durationInSeconds << 's' << std::endl; + m_headerPrinted = false; + } + else { + if( m_config->showDurations() == ShowDurations::Always ) + stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << 's' << std::endl; + } + 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 message"; + 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.front().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 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 passOrFail ) const { + if( !passOrFail.empty() ) { + { + Colour colourGuard( colour ); + stream << ' ' << passOrFail; + } + stream << ':'; + } + } + + void printIssue( std::string 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::StdString::Equals::~Equals() {} + Matchers::Impl::StdString::Contains::~Contains() {} + Matchers::Impl::StdString::StartsWith::~StartsWith() {} + Matchers::Impl::StdString::EndsWith::~EndsWith() {} + + 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__ + +// Standard C/C++ main entry point +int main (int argc, char * argv[]) { + 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 + +#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) +#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) + +#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "CATCH_REQUIRE_THROWS" ) +#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) +#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "CATCH_REQUIRE_THROWS_WITH" ) +#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) + +#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) +#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) +#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) +#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) +#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) + +#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CATCH_CHECK_THROWS" ) +#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) +#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) +#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) + +#define CATCH_CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) +#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) + +#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) +#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) +#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) + +#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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) + #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) + #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", 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 + +#define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) +#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) + +#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "REQUIRE_THROWS" ) +#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) +#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "REQUIRE_THROWS_WITH" ) +#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) + +#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) +#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) +#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) +#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) +#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) + +#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CHECK_THROWS" ) +#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) +#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CHECK_THROWS_WITH" ) +#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) + +#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) +#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) + +#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) +#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) +#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) + +#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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) + #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) + #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", 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; + +#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + From d284c86dd1bb8c9e723c5834354a0329c091fe4d Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sat, 4 Feb 2017 21:00:41 +0100 Subject: [PATCH 160/174] :white_check_mark: uncommented some tests --- test/src/unit-conversions.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index fca807a0c..7db56ee03 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -972,14 +972,14 @@ TEST_CASE("value conversion") auto m5 = j5.get<std::list<std::string>>(); } - //SECTION("std::forward_list") - //{ - // auto m1 = j1.get<std::forward_list<int>>(); - // auto m2 = j2.get<std::forward_list<unsigned int>>(); - // auto m3 = j3.get<std::forward_list<double>>(); - // auto m4 = j4.get<std::forward_list<bool>>(); - // auto m5 = j5.get<std::forward_list<std::string>>(); - //} + SECTION("std::forward_list") + { + auto m1 = j1.get<std::forward_list<int>>(); + auto m2 = j2.get<std::forward_list<unsigned int>>(); + auto m3 = j3.get<std::forward_list<double>>(); + auto m4 = j4.get<std::forward_list<bool>>(); + auto m5 = j5.get<std::forward_list<std::string>>(); + } SECTION("std::vector") { From 163f8397fdc94b778eddcd2d22294e2f961d8b20 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Sun, 5 Feb 2017 17:11:26 +0100 Subject: [PATCH 161/174] :pencil2: fixed a typo #446 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1933c12ad..c1fd0d897 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ auto j2 = R"( )"_json; ``` -Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the acutal object. +Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the actual object. The above example can also be expressed explicitly using `json::parse()`: @@ -820,6 +820,7 @@ I deeply appreciate the help of the following people. - [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example. - [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite. - [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section. +- [rswanson-ihi](https://github.com/rswanson-ihi) noted a type in the README. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. From 4746a4c53622745fd1f3005cd560dcd443cc7a31 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <niels.lohmann@gmail.com> Date: Wed, 8 Feb 2017 17:56:43 +0100 Subject: [PATCH 162/174] :lipstick: minor change --- src/json.hpp | 4 ++-- src/json.hpp.re2c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index c77945a87..11c00162f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -12689,9 +12689,9 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std #endif // clean up -#undef JSON_THROW -#undef JSON_TRY #undef JSON_CATCH #undef JSON_DEPRECATED +#undef JSON_THROW +#undef JSON_TRY #endif diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 109a4f262..edc209bf5 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -11839,9 +11839,9 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std #endif // clean up -#undef JSON_THROW -#undef JSON_TRY #undef JSON_CATCH #undef JSON_DEPRECATED +#undef JSON_THROW +#undef JSON_TRY #endif From 662a9b8f3c75f51dc55b1b3887c3ac49ea76d142 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Wed, 8 Feb 2017 18:19:41 +0100 Subject: [PATCH 163/174] :pencil2: fixed more typos --- src/json.hpp | 42 +++++++++++++++++++++--------------------- src/json.hpp.re2c | 42 +++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 11c00162f..233cf8fa4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1106,7 +1106,7 @@ class basic_json /*! @brief returns version information on the library - This function returns a JSON object with infiormation about the library, + This function returns a JSON object with information about the library, including the version number and information on the platform and compiler. @return JSON object holding version information @@ -3417,7 +3417,7 @@ class basic_json /*! @brief get a reference value (implicit) - Implict reference access to the internally stored JSON value. No copies + Implicit reference access to the internally stored JSON value. No copies are made. @warning Writing data to the referee of the result yields an undefined @@ -3492,7 +3492,7 @@ class basic_json template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, typename string_t::value_type>::value -#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015 +#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value #endif , int >::type = 0 > @@ -4285,7 +4285,7 @@ class basic_json @complexity The complexity depends on the type: - objects: amortized constant - - arrays: linear in distance between pos and the end of the container + - arrays: linear in distance between @a pos and the end of the container - strings: linear in the length of the string - other types: constant @@ -5537,7 +5537,7 @@ class basic_json @throw std::domain_error if @a pos is not an iterator of *this; example: `"iterator does not fit current value"` - @complexity Constant plus linear in the distance between pos and end of + @complexity Constant plus linear in the distance between @a pos and end of the container. @liveexample{The example shows how `insert()` is used.,insert} @@ -6234,7 +6234,7 @@ class basic_json `std::setw(4)` on @a o sets the indentation level to `4` and the serialization result is the same as calling `dump(4)`. - @note During serializaion, the locale and the precision of the output + @note During serialization, the locale and the precision of the output stream @a o are changed. The original values are restored when the function returns. @@ -10624,7 +10624,7 @@ basic_json_parser_66: if (m_stream == nullptr or m_stream->eof()) { // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right + // this point. We trust the standard library to do the right // thing. See http://stackoverflow.com/q/28142011/266378 m_line_buffer.assign(m_start, m_limit); @@ -10712,7 +10712,7 @@ basic_json_parser_66: m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This can be rephrased to m_cursor - m_start - 2 > x. With the precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value + indefinitely if i is always decreased. However, observe that the value of i is strictly increasing with each iteration, as it is incremented by 1 in the iteration expression and never decremented inside the loop body. Hence, the loop condition will eventually be false which @@ -10841,12 +10841,12 @@ basic_json_parser_66: /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10859,12 +10859,12 @@ basic_json_parser_66: /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10877,12 +10877,12 @@ basic_json_parser_66: /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10925,7 +10925,7 @@ basic_json_parser_66: // maximum absolute value of the relevant integer type number_unsigned_t max; - // temporarily store the type to avoid unecessary bitfield access + // temporarily store the type to avoid unnecessary bitfield access value_t type; // look for sign @@ -11558,7 +11558,7 @@ basic_json_parser_66: if (reference_token == "-") { - // explicityly treat "-" as index beyond the end + // explicitly treat "-" as index beyond the end ptr = &ptr->operator[](ptr->m_value.array->size()); } else @@ -12065,7 +12065,7 @@ basic_json_parser_66: primitive. The original JSON value can be restored using the @ref unflatten() function. - @return an object that maps JSON pointers to primitve values + @return an object that maps JSON pointers to primitive values @note Empty objects and arrays are flattened to `null` and will not be reconstructed correctly by the @ref unflatten() function. @@ -12132,7 +12132,7 @@ basic_json_parser_66: [JSON Patch](http://jsonpatch.com) defines a JSON document structure for expressing a sequence of operations to apply to a JSON) document. With - this funcion, a JSON Patch is applied to the current JSON value by + this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. @param[in] json_patch JSON patch document @@ -12300,7 +12300,7 @@ basic_json_parser_66: JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } - // iterate and apply th eoperations + // iterate and apply the operations for (const auto& val : json_patch) { // wrapper to get a value for an operation @@ -12439,8 +12439,8 @@ basic_json_parser_66: @note Currently, only `remove`, `add`, and `replace` operations are generated. - @param[in] source JSON value to copare from - @param[in] target JSON value to copare against + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against @param[in] path helper value to create JSON pointers @return a JSON patch to convert the @a source to @a target diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index edc209bf5..c477ba229 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1106,7 +1106,7 @@ class basic_json /*! @brief returns version information on the library - This function returns a JSON object with infiormation about the library, + This function returns a JSON object with information about the library, including the version number and information on the platform and compiler. @return JSON object holding version information @@ -3417,7 +3417,7 @@ class basic_json /*! @brief get a reference value (implicit) - Implict reference access to the internally stored JSON value. No copies + Implicit reference access to the internally stored JSON value. No copies are made. @warning Writing data to the referee of the result yields an undefined @@ -3492,7 +3492,7 @@ class basic_json template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, typename string_t::value_type>::value -#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015 +#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value #endif , int >::type = 0 > @@ -4285,7 +4285,7 @@ class basic_json @complexity The complexity depends on the type: - objects: amortized constant - - arrays: linear in distance between pos and the end of the container + - arrays: linear in distance between @a pos and the end of the container - strings: linear in the length of the string - other types: constant @@ -5537,7 +5537,7 @@ class basic_json @throw std::domain_error if @a pos is not an iterator of *this; example: `"iterator does not fit current value"` - @complexity Constant plus linear in the distance between pos and end of + @complexity Constant plus linear in the distance between @a pos and end of the container. @liveexample{The example shows how `insert()` is used.,insert} @@ -6234,7 +6234,7 @@ class basic_json `std::setw(4)` on @a o sets the indentation level to `4` and the serialization result is the same as calling `dump(4)`. - @note During serializaion, the locale and the precision of the output + @note During serialization, the locale and the precision of the output stream @a o are changed. The original values are restored when the function returns. @@ -9774,7 +9774,7 @@ class basic_json if (m_stream == nullptr or m_stream->eof()) { // m_start may or may not be pointing into m_line_buffer at - // this point. We trust the standand library to do the right + // this point. We trust the standard library to do the right // thing. See http://stackoverflow.com/q/28142011/266378 m_line_buffer.assign(m_start, m_limit); @@ -9862,7 +9862,7 @@ class basic_json m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This can be rephrased to m_cursor - m_start - 2 > x. With the precondition, we x <= 0, meaning that the loop condition holds - indefinitly if i is always decreased. However, observe that the value + indefinitely if i is always decreased. However, observe that the value of i is strictly increasing with each iteration, as it is incremented by 1 in the iteration expression and never decremented inside the loop body. Hence, the loop condition will eventually be false which @@ -9991,12 +9991,12 @@ class basic_json /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10009,12 +10009,12 @@ class basic_json /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10027,12 +10027,12 @@ class basic_json /*! @brief parse floating point number - This function (and its overloads) serves to select the most approprate + This function (and its overloads) serves to select the most appropriate standard floating point number parsing function based on the type supplied via the first parameter. Set this to @a static_cast<number_float_t*>(nullptr). - @param[in,out] endptr recieves a pointer to the first character after + @param[in,out] endptr receives a pointer to the first character after the number @return the floating point number @@ -10075,7 +10075,7 @@ class basic_json // maximum absolute value of the relevant integer type number_unsigned_t max; - // temporarily store the type to avoid unecessary bitfield access + // temporarily store the type to avoid unnecessary bitfield access value_t type; // look for sign @@ -10708,7 +10708,7 @@ class basic_json if (reference_token == "-") { - // explicityly treat "-" as index beyond the end + // explicitly treat "-" as index beyond the end ptr = &ptr->operator[](ptr->m_value.array->size()); } else @@ -11215,7 +11215,7 @@ class basic_json primitive. The original JSON value can be restored using the @ref unflatten() function. - @return an object that maps JSON pointers to primitve values + @return an object that maps JSON pointers to primitive values @note Empty objects and arrays are flattened to `null` and will not be reconstructed correctly by the @ref unflatten() function. @@ -11282,7 +11282,7 @@ class basic_json [JSON Patch](http://jsonpatch.com) defines a JSON document structure for expressing a sequence of operations to apply to a JSON) document. With - this funcion, a JSON Patch is applied to the current JSON value by + this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. @param[in] json_patch JSON patch document @@ -11450,7 +11450,7 @@ class basic_json JSON_THROW(std::invalid_argument("JSON patch must be an array of objects")); } - // iterate and apply th eoperations + // iterate and apply the operations for (const auto& val : json_patch) { // wrapper to get a value for an operation @@ -11589,8 +11589,8 @@ class basic_json @note Currently, only `remove`, `add`, and `replace` operations are generated. - @param[in] source JSON value to copare from - @param[in] target JSON value to copare against + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against @param[in] path helper value to create JSON pointers @return a JSON patch to convert the @a source to @a target From 0ffa18aab8254973efb53aaa4ce805fa896e3889 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Wed, 8 Feb 2017 19:16:38 +0100 Subject: [PATCH 164/174] :memo: listing projects using the library --- README.md | 6 ++++++ doc/usages/ios.png | Bin 0 -> 208669 bytes doc/usages/macos.png | Bin 0 -> 1305068 bytes 3 files changed, 6 insertions(+) create mode 100755 doc/usages/ios.png create mode 100644 doc/usages/macos.png diff --git a/README.md b/README.md index c1fd0d897..f8f756448 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ - [Supported compilers](#supported-compilers) - [License](#license) - [Thanks](#thanks) +- [Projects using JSON for Modern C++](#projects-using-json-for-modern-c) - [Notes](#notes) - [Execute unit tests](#execute-unit-tests) @@ -826,6 +827,11 @@ I deeply appreciate the help of the following people. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. +## Projects using JSON for Modern C++ + +The library is currently used in Apple macOS Sierra and iOS 10. I am not sure what they are using the library for, but I am happy that it runs on so many devices. + + ## Notes - The code contains numerous debug **assertions** which can be switched off by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](http://en.cppreference.com/w/cpp/error/assert). In particular, note [`operator[]`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1) implements **unchecked access** for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an [assertion failure](https://github.com/nlohmann/json/issues/289) if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the [`at()` function](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726). diff --git a/doc/usages/ios.png b/doc/usages/ios.png new file mode 100755 index 0000000000000000000000000000000000000000..1d2c1b80717bc563b8880882369b179d86840611 GIT binary patch literal 208669 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%0Douss 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 literal 0 HcmV?d00001 diff --git a/doc/usages/macos.png b/doc/usages/macos.png new file mode 100644 index 0000000000000000000000000000000000000000..107b5f07fd5993ce241e2ccba0664f5b8c2084dd GIT binary patch literal 1305068 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 e3tx9u5&(VyoJs3x!1{ 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�M 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⁡5JEj$Yn4 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 ^K{(EcveNOEDWfe_1LHAMobzp1p&_#qN;?i;16R zy>mI21P|+O1{9hx{zm$7lIa_%DH4gyg>T$<;Z*@QBaiCMi(AmcoJB!$*iNV$Zq%EH z&yz6GZhs5o+U4kJ8ACUz@zNwic}0)(o){}n=RZa1=%5jl@x>M7e!E}vSy7J!+hoRk ze+SGa<yP7q^qJ+#cL>l5p>%Zs{LpR2l|X2j6`|E;%ufryjepMM1Y+!?Ce#hp&I=W) zU%1g`p8kCN(2Nn34@J%^Vi~g2{>U=A8t{era7^(`*nb;CuAA({yty>95~i*5#0gsB zPWLwal7HWd76mt<!mHwiO3STmjsn?s;y)!7htLR{|6v)e&DWbhxA02Ax?19LC^l?& zu@^x>MMc;RA(&}FCo?BY5IJ;3vq{E!&KiwcVKdz$ZvgNVXG>zi>=6MJ1a{xsDUe#$ zMx~6miBXAi59LYseW8j-z{s5AbNXz4Y-v0-sU;D5;%7J8l+Z`oqU=1DPMJnvRdk4C zIM+B)AgW|%)P7o%;qj8aiFngs^H6Bm(BM{|y(tn2?yK*C4X8i&IWBv29!!@qZRSGk zYhmL(z=5S-(3uH0M{vW#&1JXXZLCZUQr!IYMspKh<B^q9n`G8rV87iQrx+X1+<CNg z$_B=6>ebw*+q;~CtD!Szjn)!i6fAbJ^MDd(N1Mo~_!xN$uE7XH($L>8$7=okPjsa6 zY<Ehv@CTShjbnvO&Fki@2Y`6@Ls#f)2@htws<ggnyO6VafhO_dyME@!#sI+?ArA(T zAHDuVF7)5Y(7|$wi5zBTZ_3A5NFd;n80v2~rb=fuf9t$~PrprPq11XF8jAIms@S-( zs{2Wh6~nEgs`KV+PCXAj(u}Lc!-&1F%}0MP60=^;wgT2?%D?}<CB63@{plsc8$%CR zDl|5^?_gAZiXA(|<NuHxfJyKAy@F}~v+P7aCB9HWY3<Rp;@}oRr*uGlu0{Jdx>t?w z?$4Pz`E?exczr1=o>jwXX9MdL8Uo=3yM`_-Px!u03}x*;d~924_YVqVu~H6|<Ye4H z`JSJ{<a^-&Va9ju!Y|_7rRt~?7^gwM=?QuA3Bq<Jsee*`J+j|I<W>)o8c<bO+ox6& z;#?X&WW^oD?HKvv7zR>-`26y%oB9bSc)89dl2(wH3gCj#0qiZ_T^n&g8Gdgwg}5pZ zPyhfHv%57zGhMdcrVCbnyMZD(2=e-<ry+hbT1S^@X=SdW8ER}fGO>Un<~x&C5Bj9q zX}=N8Jxi5hSv?Jgs)Xm#j2M=?guh}_7T$!uMk)qF=F#bmGCEGyYg{)7E_)3xQ*Ebc z+!g7O^Yh^1#cHGreZ%~CRG2RtnXvkXPvXaUCQTju^P-n`PPB?Q_Q>z!t=&<`>{*gT z36c<oU`S?^JONsrOk)y~tnN|lG9Ast!!Lw`u9F@(@K!w^9eLQ!<A+019YrXhKotE> zf^jgH?>r!-IXB?NPDictMLZv|q01B+hI1fG=5flJRt*KBf6Pk3F!;NXu~)>!HCqo$ zBXLG3lo3G41izARXv+}d<x@tBa3Bd3CFmC^JVZ!wawy|%b%0b;wa+B6G0WBT7nxIN z+Fsr2kKma(GY}=FVRYV6lD}>21mFUdvu6*^_XM;p_>`LJRPM($kfo}^oV#;eRSZxq z5_&2&7_LzgQGSw}iaE$7V<KGZe`WZg9(F;{E2FuMD9=G?tbFyzoGPl(ET}Wu=(>53 zV@;#Iu`t&MTG>*P9+@eX;d*4IZ=Zl$u>61h^o~!*9n-mX@@g_M2x?X!^fvTfBpkWg zOvSB~zi!HjR{JYE7ur)}J3?Y;&Ir4O31id}8%W8^)%X`FMTAs4KYJdzwZE}Z0=5JZ zN1AW%gFeykI%=!aBj8U?*`&~lD8D@}N)vgdnYR7#4)DF>Rz2r0Q)E_^mQkJv6poC` zGo8p}9(sfSy4!tLy`03d>(=A2c8a=&WP@-6N&e@8cwJ@DRwhtGtRP9`a#$xg0}^`g z5npw=&V`_^h%2X4;0`k&#_zo036$pKI>I<4T_H#rsa?~~;ruD>eaE-^a}7R9r9F&A z>(5p&xKHY;1J_|u{W%h^xj3J29$Y)obx^wHy$4r<a%F+goa(`#V))H}sw!URB1uNi zpYF+LpI$|DhS?oW$EtU%RNf7l$e0{dO52aG!n(nry`xLO2|Wx}7U7RB;ddQH&I?-< z8EyisvaR|YYMz4h(4Xu68^e(7Z*9c4W&L55HNGdBsVEX$u3jlb?^13*^BX-viULo1 zJ)d~FU?*`BJa)0;-9X`><5hC0Ak!4{@bCr<qI<**QlIosWUft7Mp0Z@Dd7?(QoEnH zS`kl<eIks(H>M4e3j|;BR5!>&6eta-0eFJwQwp1*khUdtm_R!IwiVBc$yJP`;)24k zdifry_kLY6P`JehCy;=%bu+Ss&7g!4<!=Zjy+Pqz!OM5ePP)r~0_%zFVB~)RilE3d z!}mV~zSpARbe{-WB+w*iHYX=!{`3)L&5x@$O(Ef>{Faf58@h}!-%lGyx82w`z{&Z! zhRBV^Cy2RvOkkXKDhnCMtb~n;G!lPbUj}6Uw#B@2XY-UPT(^<9tw_XXfnDywDJf~R z*w7T&TPM^}ci-YuuWk{ksQPdU_Lvaj<QPOGIK*C<0+ntYIIJiN5aKdHB|B0MDv9|l z_7n0qx%HY@$m{!(k_fH^RP~mh8Xm9^@UZQmU7bHDX<Zv#o8S>oArdc_5+YY96TPNo zt9QSE-&~N^QeV<NsW*aqK0+~a@h6TC-#s12#FHoeYFL2f*XgHgG0g6FC<Lf7M;^#O z(%KMAkQ!GtJI`_{aj)6fP?<e*0>&vN@aEMLKQB~FCLx80oILJNUvWRBh=$;off}y4 zg}5CNHjXyqHAhv7^N(O>MV-c)ZQmc==9YdP^;YT(E+6e-wA+(t;70TtsehybjH+Pl zGc7Gy7g_}RoStNr0BE}KSf8A*?1V?FDe0I@EIMUWyz*HW7T+(E<0L7bp!HH8*JLA? zTFr$FSKT8C=~a`F3;jx|RTmJeY#cN`cbw&y5BuWJnbz&UP|_<=cgu7%U!;BXss@*u z#uOX$3Oqwj%Kd9Pi)R7S(e3%w*YxYLw-0U5KS1S38jH}-yT!V&hK&iJ&90#>YQPgv zK$B#8KvA^P{44hHIz~>lk_Hp-T5Kr5ymtmUVr=QabQ)$xg2*`ClTi*vf63WY(!ZyK zN%1sjy(#*&XoA)N=w-Ii?BTjsYG~vNsK)>x;pX-J$5|g(QmQ<G4MXb*xCSlueV1=7 zh(&b51XmD|&DFsd>VNi>K9L>!`O^{ra=+iJOQZA)5QP*((Nq}wykS}ikpH=TrK!?4 zO7=hv$X{-P$+p2~{y-l<{|{Mj9Tiphw|grJh=3@lbeDvZ(l8>@(%miH4Fe<H-4Y|x zAsr$y(%qdycgHX=_3}IGd7pEhbN-pN*Q_;b?RC$+_x-Kwa~XH^n;@r}AQO%Jo2cp; z7;W(OGA%-f4{ff(;<Jx3@mE~Fv1Q#y&_0fqBeUH9)b=3|bMugpMB)5LTpS@`x=h%b zY2JAYfjD6dDtVD%|Knli4g18&$|?(PA9+$v@a{%(HmAVVZq)wvF5h1ER%7hKhsuAO z`d!T1_g&=H10B?pU(>djVku9SN+fR+$)x%6T1gC=9i=1{r0>!o)N;RPpEYv0zUhuj z6fWwO2W*t9?ET9d9j*<OH4HRYWU)CC`0{%wC#c~Lk)$H*f7|z}TK5fk9Ze7TwPB-M z%<)X3^X~BGr`%#(x>dR4ullNnfr<4b%XRfh8S0OvXX=ah%iP}EvR#I(X4g7MQDwbx zPXrr2`B=w(#8F=u8s2v7soVNqc4ywf=MlU6hVss7Z#eT&4XeDD@r>}J*(uB0@U3cQ zy^_!JZ*t2&fB>-i%#A!QKx5<c))cGTula3h#oyktm$>GK-6?liP{?bcTXZ3A@BgT3 zb+|cF=}vdF$zKmZn{X=X-IH>(pWx06ei=%r1if(}!n+eazsJkk=Q7X=&Kozo4ZTvW zHD%SVUWx@4DaoGnd8%H>E`XaIsplNVWs655oL3B9G#<`MdCq~@=;=Wqm@M$~1y|Qx z+GUFSCP^9gWA>r3zp<Bw=;U*Y6RwfY@Hh6gih+T@fn#1h)Am2jsGFG+V=J|*0<(G= zz-k!(Cg=V+>aaR))$h4sZ`7&-39r}%H|&vT{Y%y5HX1xPCZX(?qLJB_6&j;Yj`DHl zFH_SPh}}xCi^9P15SOG|6-T4S&qzJ5)j^d_t)ZdM%(h$r3QQyeA|;{Cq0+dW@NQ~7 zcsqI^G1odPi(C%%3QgJw;kG6ca5heGq->(+YR7^NjUQ<Z*nMYtPgxMn--#NW*H5}1 zhjzTEXvXV1kY4y=B2m+EVKpno{VjryRT|NM4_<P<4>bxlyQ@)|NE6561oa|Jln{a_ zE@y=P!Ihg;wgL7co9Fi>$8tK{ql~IFYK^i|?fGk87F5Zw?5RMdzV%Usp|ob1`r}z% zj^Wc!TdUz`9sRUj&{a@iJgN$JQO7T`!Lk;IdPk)hQ!)>k>|4g1-GTu8Xu7WWR!M(o zK|hp!8wG6!K`~i0UAGv>HoV(+wxj()B6^P)cfLaN!ES18*4l*GwJReFneKK-d|$wY zX`A9~?odXu(?)F#S42fT;2_?D{B2KLezkj4ui{ocKp%YizXjF*KyQQU+7qoD1w+hz zg%a^p#s&{w_A2!q={;i}|F&Evn)Q#n-estlu=0-NWlr!6=OCNJifeLoNvkFora2Ph z6nl~qgg#TWx+RM{R>7g4o`>9mPToW}y9=WJRoXz-mjQ^cP|Q6V)4YJmPCq`wc&%*p z1Ew<WF2J;yACEs>OPrlyoC+VlQ-ipa!vCXea;K~8xDd?+k%_`QA&FK_ghe!{&)Q`* z@Gt*8m4sw}_J`I8p%n^(s7gp={)7e)K^mPkZYTwb=j$nrl8sp$QhSQC)JpEc<5_Hj zU&tuM_B>b}@{SgfD&AZY&QSg1Lw-ANMw@cX&D4}x=!|!uV|@SKf;?TInAca&p%|15 z0w7X<9dulM1HJYW`$1;kqN@~f(5oJRLfn^hBX>_Rzv^#6P;>xh4*@!WAmPxJ8()5& z|25LlBbVT<Nc-RE&VOJD$hR;5qyK~@b;s9Q(kO+<D-pCAer4t045Q3E6x?4CEP)wN zddYFc3VA98?(Xk!Y`<NHen5X(Q$|cQy@#T6OlQb}C=QV|OaS5*1wO-|9vTgp#y9Yb z@iPk~qo5aRO3h=0Bo6TqAYmej;1^&R0=RN94*Jr0i^0U8K-XjITmQ46&5LE_O|M8> z`Ba2jDV&wEHtLHuSPZ^zHsy0bvvP-|S%~maYTnilcQr_t9ufE;>ch%4$k)a{U$(Ks zF@j?+-Dj@rb)h18q?p%}O9Ty(brvH7TBKHkwx-uG2lz`v0f>3W2VNeZc=mtYEebAs zO5{~a67R!LY)sCY<S(~KjUh8SF&ZNXI1Yn6DE=X|n1?%;Abj}nf)zKX7W@hG3qLtL zIq=3Ht2@^JAK^Mvh8}fyQo&?m$PlqSixjbN)KA~fuj`*&CK@x`8*{c6$;~%%GKw$$ zxm-_afB9vaT7n*su|D?scqhXOIX$_N6EivK$Y#;LD3UN&UkxggI>U6J5a{t+Op?UZ z>Mjz+)#fN9H?sJ!AK<cn1k{TA=aUVoHSKae2>>gPoqp(&34D(zs51c)$8~N~dp=H! zzAN}D1}d|@5BVR*SY5)WtktA6czngzr!K+Yb=|za2U%Zvsw-I=)6MUWi;-u}`(9mq zmy9=DpOXHduBV-RtV_WwHToyxtcJ0P26RKP$9ee4?;OqQ7`6cak5(LtVL7Ehqf_>2 z8zavD(`P#0;u5WE*ir_dueY2pBDwe3Gg=f@<dN`Y00_Rvg+Vf-x<D6qe8(xkp8r!! z{)t@r=g0@k!Fk=$e@c1gaA1jr5cTNuWHI|6!`zHw0r~A%qxOnStjg?edVOtt!$AM^ zmcO414#M?Q-bMAc17kw^p$M=mwxhZOQ<Lq1dWnFzxSZ&$c5hz_-Q`Jwcr5bnKZJ}a zvh5D@?1UaAQ9Rbeh8;PI6cnm|bNvi}Mq3z4QpWQW&VNUuB2ajbCm(vx4-k!9Ni0<7 zn$`ApKkdT=az8i_iL&T}E(O5<=gLAKVOiamV2|>Nu%d+s_Coadzf>~|`js`P>yyjb zN{qBvi{=>_KDVt+wmNBiJ0B&>1>G_kk?)E6HUFQoDaWFq{8>JA<bQP|&}e&S@?#SC z#z}Vq00~!I`MIDPOzLHm-%JERzZQB}%mhfm)=6?)UjhUL&z9K03Xt|wIr)TwBTC{R z)Zysk|NUzHF8kAgQT5vc>tl0x48AWIb?hFS=ka~Wmo7>Ui`HF!NUS)k-<a?F#{+!@ z`_H(Zv4ivLja2o=Ra|bW3d4$73eg!{rMl0kB|;~*&QJ+~8_VF}pGrOdp|RZD(yqy( zP#G440Q56iEh^qjt~a(l2@h`}4T{L7SCYZjCm;8jSo9c=WxFI>l`?=h|JfBP_X)Hh z_Ge3}NceOD05k@lzOMYg;3UWY>xNg}vcFIyKPFCTN$zELe^1o%!<tB;T&0Ke*AxGp zEt=4~m3{}s5~8lpMI_2%*#zANI#UXTVbblu1OW9Q0_+T`0^^C|MrHmKe}zbbYGO1Z z+g3iGunw0L*@H8)vpH662y72*n~snV;iL3L`@47VB79mj3rpmvNp~5VpSk76UvEPp zsE0qpugTm3%XaSD{`wL0;UPpp6F^A#cmgKSc?+<_7?2G@r?sLmyH}6^;05b{pAP>i zHCa&v)jiCtN*0PShn=m~s(cj@9trYd`g3NQh0T_+K~pRAPLM>k7Zlhzk)(ikO}1m; zwY}$T60uV;XW=YKF{C9YBlGQ}=IGGpHwOMtd(ehcrEwiqw)b1Cbcq5#3;t3tUKW@z z<CNgJ)pX!tarBS!)R@w|5nhrQ$oxIV7Pe>FJ@p_}XT%+3E0e2AjIx{MRjaqNs*kJ~ zA&#g!#RwZ{n=k%w*zQ-N?$_W|E0GSMQtdFb39ZJMjA5?!#G<afq#DD-|Iq!L_*J5o zKU&0F{mOLvn#ypNN67_awQQ1i?aWaGS~k+9DSM-lq*f+UK35(zq}~ewV!$DBQxbEh z1JVk1b=M_Ys_lNBGeeb3+QO|~o6f9Soh@72_o*34m~phvQQ`A_Oveg|U#tv_H6)ST z@1dg|sEk;y_YG?}b9|QwqaGj>NoPN4m47m$%(ZuhnG(iaqG??Xqtb8C7|;~DD_6JP z16#l`;YrzLl2?-2?^hH80}WC_^D0??k-{hA^8g-xAC`Mi$}SiH#9Ub*9x8S>x*cBP zu<bNiw_dk_k#(|S7T%#K=Rv@--r(Li^0?9MY&lXqtV~WmW$!P$UMb5~9zlTn&A2~$ zWf*aI=s2JQeep5_VYm8?Fgh;#V5b9>-Q*NM8F;g|;cRcXa0)@Q)gN!Focv!!N3U1! zTJiOGyS8ek#0!tYs9{-DgB(9%MD?3{0qV=Y-m!%<smp5fdFa}Ce@P@7=E>GrueY`~ zn@PUCDDlI0@n81pda^Kwwi*dMaIjqBW!@ou?@P`qK>1xsz2hMB&gW(&q*9-!($|9Q z@CF>&<TyH^DfiX*OW@G4unlq(*e0<~H~8^yw9Mys$qqb+C8E7d#LJCj1<q|)dw~0( zbMx?*S)e-E2o7i;DN#;n^yiA5foZukcL531(dwW3WCTxKIQP4x{AWwx7`248=&N`e z)pBH`1t$33T;<5CPE-p2>VUn9eLzi1IZvEY>1jm7be`lYAL}op)?c)7fRBWm?umgj z-TRk4s$cCmZl;a`fanR=Qe9$<qse;Lp{$ugYg6Vb+?*41rOsa{e5tlNgZ}Mva2&#O z?#wZ{Q#%OvJI|*l4v!}G-kQZ<Uau_667tz~ph67FtSpLGXd<GtD$hk%=9&o6YR0J~ zXY971)hgC}4Ef$K(CxQ(T+uZjq>wQk-MO3D)g|(JhpZq4dXH;>G42IfN4ERZj>Vg& zB08yGic?hN5w=mt>VSZEhu{k~`^O1msOKRDC47tL83TtZG~HqCRsSNsl7KfipWGcV z`<Yz_d-K$^r1FF{RKbow*jFyr*#cx7_mpqP(43mT^MdrL4f5^BC4`RPRi*TfDmQPl z=h_0952NB8m(>*UUSY<oCkX<Sg`e!@`aaj6m%B5*^WTl@cAPhkL#*XG-#j!@9!NyX z6@Rvd&^GcbkzDoCXzO{Jgj3qe44k}B>$kut{9fZ-vL3AhVi;HNfD`LR+Q}6$T8Cfu zKF!OgK&+<j$X@qio=;UeMuGb6NbiXw6W4F*!uv!f`JOD4idvjqX<kwk&KtXeLHgCn zdRajaM-9cdvA1dCf5pyY$0s^|H)QE1mvQLR2~5T7CWfX8*H74th{cLG7x4u7HQGhg z?ktxPs@=8d&8pQa;2i2yhOij@&6iD}5i+!D)&88oF&aogcksYh%xRx~*&UCy7@XRW z5tU5beX84$^MDfTFB~e`gpgQpIfU^+e#a}<f7^nq2yVnXO*N%nbinNI<9mHB`sm57 z7knDCfMv{25UtAHYhBhvXj*oK987q|pr;N?)}O~moW&#lKBtxhwxiO5C05_lXaP|G zT5&R3yx$5*Plib{m~3geMnJfGR6Vd)bfY_i!8(sG2h=0=*gwp(oU^k-ZK~OZrh9W< zM_{@jFTM;9f5U6#6oXuwkS*vsNm#N-qI9=8eSXpE6B$Rn$PC(oEJTXFs2(&ds#UM` zzc1JiJb#%_7I`ZO`M##Lx9)YZJYN*8O^p`Omhh!0j~vhBhneA&*kB57M^JERj_^kw zyG4I8O=tSkmta;X^@(xUNXFP?SliSCxaiXR+SW^;DYD@k*MPX2DSn#bYA(v7*=UM% z)$7JZ?0gMNiPftdoEH?>9M@~qtt@+`z{!mLdL$IZVcbC$H-?g-Hxq^Yl*ZOCX$wut z(_`u|<^S6tMmufMeqK1xRywGDFkfhrE|H5myIoX~xX3)|4|O}up&)Cw%qina+nC|~ z^TFrPu;H&q{64+MaG#kf<E_>!J9Cfh+Zi?+|HbDX&%bSE%2T@DZXnh`Fl7+gswh#n z2SKu508P8S+yyagZ#3|^(J~<9^MSRs4sECvm_VvP{aEL_t}b$2;6D7?plBA<-i;=* z&f$4k0(1C#hH6&r)6>VeaV4_5+&;MY)Et*t|3Lg~XAFZ!Tr&QBGZH{yv@9M5B<C0{ z<9Rs@XdxzaoE5=XOSzQ(ru0vXm6njs_Tp1THH>qk`wF_aHpp}d&~9HQk)#tvv%Z<H zL@CDYjhM6jlc}?lK(?@>c6BBhgo)|fp+>UM1Lu){lfRBa3sZR94;^i21B2dR+2;TM zEPw$m#n0%<2xX}V9>u^elq>-e0_vD~e!cofyU$@-DU8ET9pT2zyF~O4KLHvXB+GA} zyq%Uv+jQggqk5sHtH)-#nnHYUROGqISs+0!$GiDRAoDDmD;m^*+8Otwi174Tf*ZvF z%<lT7CKHj;nMuFYrSr-F_qj))-7%-2d4bs8gGM<<3VHf;`2`66)`#Ob2@ObJr}*fC z*KMdllIKV^Mi_}N{Xhr;dtWaP1giE;zvZi7HW%h|LDW7u?~8ZK6m2D6TSAJUt8x5a z#1Dq&caoD7f!8yS@d=!)aNHU|s|y^i>sjERM$3Aoe)rb!bDXW_%F|?6|DJflhu`BV zexwj1mfO(qvM$N8(1a@xc}&cN4T2+?%dDZ)kW_1#Uv^%~|EG6Cx2nop_0LEx#eR8g zjuqw|4)Ps5dE2e=#%hx=KkL9)FUQT^ZP|Xn&Q1qZHxIXuru7BN{<bTJ#!=PGT=*J& zDYdfrQPK0)PVX^P7*EGT{5e>$AZHfNR_S|WKJ$k0_7<sDpzo<!>i<%|=`3`u1lB(p z$ERsKD|+2Hg@T-#v2GD8t7yG+jJ^ZM9-Ss4x^xd{4^pT=JYNu?2Nf<%Ewk;&)uZgo z)86#e81CJ_`DE8{ghF*xY*f;*hKS)E3yb&!DZ7fjW*v;P>q?NI(>LL~B_8M?syY}H z@899GZt1dZcS=$Dnz!f+PWuE$%7cA^=pF{Y+2o3J1+&JGrefGdM;hP^dgDzb`UF>t z(+r>|o9C@ikNH;>FoE${WBf6kIkKd(+of~SykwWWWN9vAVu7a-Jq!448vIe|F4Y0l zFi$qLNgS)jX`bAUG<gmRoBw~Z`GLVfJosX(cXc4_c<}+K;(vQ;I$vdUzu4k#{ck*; zS~U1%xfyqHaq)h!$<d(3^Jva=IQ{+oVw<mfjqP-?=~iD{XE-5c@XgUY?gL{5f3C`i zvQn>}MfV|CtFfCcH{BUZ>x_QG5xg^;f&1`F{PYh-4`7-)Cfx@TJ-0<)?0Vz8F@CU* zp#<-5J1Hi1HkjS~UT5vMXCplC``tEV!~Xy!Y7VH#vwb$H@T;=w7@v6oNpj4F^Y=<k z8F!Kb*e>0z#fdM)wrdwZ?>0o^#(;&`Q<cPF9H4DY4Tb3N9j&}ql~le967R`2;ic~z zSj|!{Ndp9HGu;}#`snk~lMU4YOaZm~{KqGz^%fia#56IqfT@K~i-;5z@>><6UBH6+ z1*!~gZ`45f%8&u5D}a}QJ^ega_}5d%q?)4&gUXZ3C)N*?5$~qV>z4pxCn{1Z>$``o zU@k=`JKSZ+1=73Wm!R{?y);Z5r6Oj_-zlAUd#KR0!$?9pRGtn~lMJ&i+%(?5vARf_ z8+ffhb<|(j>*8@fIEEU~G1i<YZH5n?n&qzXT9n9nJiRcTEOif@z&Pc7Ks))?+UVvv zq-yn`Pf~uPp(Yr4ve!Tgk;I0O{?-Z_#0|*)p_eUiA{%JNeH9h-Di+2C2siGmcehR9 zqob*$cK7;>CQOOd<Np!l_=DB|XQQtMjkex3#G-G6&v(-A?5+)lS6uiy)lZyH9Tau{ z^;*1l2?P}lDLb@$os$TWb79w;YtTVQn)JxZD3>(JR2ykjI_#buX>jgI{D7WStuH(3 zuTU{u4%Rf>Ths1sL&Zwyo^>!vFeu*V8GJjg8_A)5@kY4XM>zHOjtY5^<FJ}dXDO1J z&jItzVU~BvMEdybqU{7)iOOdy8X&b#|8j5IM1;c%x~SiK-QCI*m<k$>r4E<qU?lU; z>D4_1c_)&z%{>U4Ffa;ghh{@5<n@o_?E<XanNVOsth~w9=As$u27w@!vK-Eu4qtDn zs*0E1rH1N84KX(yE@v-SC>;wz2Gh2wQ)U6Lhw};uy+mW6j3g2|D<FkllS9-GHub$t z?>1Qx#G)IyLOsBFS85JqE}7Bqn-Kf-HzwG$FU0{0-~<P3@wvy$7i{z)9B*qR^qlD< z-^#Ln^xp0Mm5@|~0<TXREYA}S3yLHwOZc6|Vb2Frdd(pgAg8_cT>=j}k6F7N54_Ez z5Njgq_NBk=TO29Uxxd%Mlv-;GrkKoX%5*XuOLsC!zy4Xd;Msdv$B&xK$McHm_y~R- zCjbn5X<3teUCE&%q>u6Xs#b@dVQC?<TdXk+#@73RuBL<A)HIs7esVdwrc$&Kk9K3c zB(1G_k3MEp3aF3NP{prNeR%^h_;yJ{J^(ND+~)wyVkTh^qc~RqlN+iRwiU+`moaa} zN#_7dfY+QvY|LFRPcUC<RYB}6e&#}J(@p!pF9CuZpazq-@J7doommAlVn@tjeQ{MT zMs#_xN@C6EvxKJ$1rJRpbo*SF>_T)4kPj86=A>1(U$|4+&SSp6R*J2aLTS;IHRD<o zg0&F-vAkPT)EdE84;Wy~Ivf;oxQ#rU=r4)Nvn%}7>k8?<5s0s5fF1cLd3eJ?P<Tw> z(J7``IYWXa7$lDoyo_!(DSjmwSQW4(8kUD!P}Yu=z|{Li9LjFjUo%kqPZ7nbq|Kol z*G{*5tW>y9f%)|fW`L#yq<AM}%v~aSJ^5BU;vBWGm#_tPy`lesk;BMBSwnVyS@B?& zo${X8W-QSQQBX$lod`V84S)=evfWj-yTXdLB=GFZw-q!6PY{314?X&?YjQ;)uAX~` zwCdmZk|u_@e=(@ZbL-@z{c=f1fNr1mpU7B8ym#bwWmG(^aAz1Nvg{xKz_*K$KxoMZ zteL$kNwc7{R&qN~*0AWlg@Kw3b=yKQ%tFZ-Eti+n>|)CaEG-@pGYS1*cdnd}4MT!G zOCiB}hs8S6yUQIB>+TlHu??3G5$+;6%NtZgdwxQD-7U0Zk6k|ujN-e-N4iTptwp-a z<tVycDLCatxhp%N2S;UF?%3{pul@x**n46HUS3^wt4K;pzC^u#`xa+XMNLgj^^$~? z7EwkUQwZ?=Kc-@EUcPG;t+V9+E&5pK>0a~lagnctpo-js>75JWPqV9D&^CL}>m+x( zp%-ng$VahLb^jWx+hR`N#3XWj0n(W9CI-#D-&qC@x@xjGvkd09Q4NF~!_v5(Dv+g| z?Iy`wC)!_Kk<99T9_n+sYzOuCI!+}z-%QCeUZ$O0>PVD6E=wKLwbE7Ry3|H}fp6oE z_cMkwPHfo$&*v*#G~3w+hK=KT>%VQR>d36aJb6&x>SpJ-m&9oLseP#WDtNcO`DuJH zuX5Zq@hyjRkT55cFnJ57-ivPI*Y{+_01w`}rnXomuDr0yNaUjiSz@Lf52*d01|tf$ zD}q2}W6lAoqTQQG?i1lQ0}uz+9hOL~MJ*jO_FcW~M(itRGJ$}z9s^S9*ur43VXbFR z?lxllE(tIC&-ye9*beZ%8r;)~2nhP?QlS-DK~*>OC(=X8|F*Fgg)Yv^d(X%7VEId5 zk>kQ`QAunw8!92sZWloil`7_#Z))R$wEegh<5HL>zl~lYvf^HEQO2@7fF$oj_*6B# ztR3{ZNkEi-_!7w;62G^8cM72v^WZS7McWeW9n}vniBjk$bzR8&fD^b{m(RbVcyq}a zxJ+D}I;)M-OF>pr(poxOY?5NrhKhPhyLt?@N?RBGS0>t34Vd6b5?6nSl<LPOTzj1l zT{&ERTQEhZG~nW$S?R+`W&U}{OERcVH;hz5h~(qu-9pEuDDZmWnHWHYlXTHFR`Ql| z{7a`s|7T-rrcYMoPMqGC?bYUTt?Uc+_TsyNa84O9L}RVV{;9aR(EYI=O+>46lRlyZ zI{hlQI=diwuwbjkn&*(Kq`)zk{n>Lb^Q~jNKW8f%7Yjf$Vqh%(vL%CmpR(a<CwKW3 zXfI#T_?5}a_A{Rs&^4E*e+QI_am)+;DC9+vZX5|Z@%q{%#3<X?CZ>Vi-I|7*2&Ln8 zUfc7iL)_orKdfXgtMV5|M^fK`wYs-4>0kRZyu~Xnr3ubqH~Z?IJQ8DpG^@NMmr*JA z-(Ti>Kr8+fI#N7;F!EH+gzN9@-e>|w*+>QJq!snr5=9O|D#aE@nLQSl=gba%*=BkO zTJc4mgN!3SU<@Nw>P$X){~eQn8Tfvth5-_(&GkFPDJ%z0%qaauD#{-H1L#Xqh%1IV zI>a};#~D)nxdwc_rA^eOcQYcGZIqV+pAFfQ$MkWSO>A+I-Oi-#e*k#@0Jr1dTaW(p z=Q4>{p6f3HxhE4Wo1*|XHJ5{cx0?7n)47>tCnih%S)_FVk$uS*C8R8yV}TL*b~U(1 z+MGR{wh#6Ueif<K5GiQlukupv164)tj6Bihb4C@kVZ!u7&dX9x6*o-3gb_j>(Rj6$ zUJAas9CzibDFKnR;(ynDZhe=2i>be*Hr0Nuxa^r8OGo#NeK#~HHWM2UizWFTi{=Oe zJ6$FT%coem#GiEXuU<ZVos`4G#z`0aMKUoby`eA{6HxJYZ$y}Lza82>zITf(@gDyg zQSMh!-hCaKcef!M$wSXzGMae9Wz5dXQF@D^<-Lo!i%z@QA5~9sq*Am*rcBLf1nAV{ zw3YSCDexiKSiDb-cpJu6r|@0F_i!%Bvcl509ZJmhu}MuL19$p)cgt1^mT3zY6|kkJ z=Y!P$VlM%j1DIR3@38qbgBBqEjUCbm@1;(oCCG9;2%~_vwY@RbKOEoETBsC;6^a9{ z2WXScy?fr|V3BIw$~{K#f&6^2Py<Ae(N9Dl&+ywhb#JU)BiuMaYiNL}-~EZK5a?xC zV2FPRmim2{i=}DR;r0=Hd)WC?>m8Qc6Y^lc)p@wXpsWn77gxr`v{CS4i1i?t%b1>( zkpc!;pvdC3$s@KBcMH)RP;!hcG=CL_S}q<IrG0?@W+LbBRnjwtW?yv-Dk#o4r1}B9 zIW2hKu5h&Xuh93_!-gM#{tB44j-GG0vhz$E-9z%`hsKFEbc=7|+T>6rW;Z5hXJ?5d zlj=>JS-5NS|LpGv&-;r4s}FfI`a3Owk&`e;K%K|21G_#e{`M@IWasX=Cljg9J}ylB zWA{c0c2!m5<H$DSjrT1(F1T!?Y5#@_W}>r<5Tf;xMC86pZ`+JxZftHSx5pT9r+5Iq zPTZ-FId)m0Vuq6DxI`k2Hva;na{XE~bvq31p=(ccgGTJu)MeHrl%3cWs0-kfMauz1 z<#C$jh@bsCUp16>IB;^De@w~r<*sFSWQdd)IeY$$ub`&|Vv_hfbAG=|4?kT)mwY|D z{V`)ZDQh)~`Wf^Zx}?$s49v)R*$B{S!<5ML9f;qvumK+xq-Cetjt8N#)HQ3)`Fl!= zE@0k;7&V(8PPvsQ%J#T!=Umk{*_>Rdva4l5uX~;eydENCf5RC0jRP%6BzI)?ar+9# znr__x$<AvW@vAMDg39&5LETQp?MBIj0c*^AOshq^xp|5Z2Jnv0_&4KiAik3A6k~|x z_12piiYX1uqkgIwGg<!`CSt}PS_4zD1=n%W&V!CN&7|gEqvrrtwvf4J#!qBT5`#`~ zA0jo-RjY|yeN4=E+6p3X$28BQ^x-Z%lA@zXHcQo(6G|h_gH=%SB#~C=TKUUYRK<Pq z|1cHzDk%)bL<`P=-ic!2SJ_gTx2jgsssVgEfAE!Ml>=MQ?QCw#C0g4Y+qjaXEyr<v z$v3;RGDp`d=+zjvE$bOv{#zjPi8E)En>}c7kM=!J!pK6Sbh-*HvkFM)-Szx_1Xq%T zXI+gQ*=OP<jJOS^`3M-mw|n%2TiJEB8HU*yEzFPCC?cR-*3IM0ttJ8N?rMkKx?_tF z*5CJUe0{P0M}wW~TKcpyo@gjSKmN<j++{$9w%ce{X19X@hvM|!Q0e1`O9JSAl>~Ta z{OH}=J<o#HrsQ&wvrb<lkzMh1+g5s)>X+EjBAM^w0()?7s!rn7kc%%#QozeP=|e(Q zbw)h(<}ox=6{GLf?^79)y`J^Y-dPj{q!<)l5x?E~^Bi=V*-CP?8~g&RtCl^!UcGBy z2=JE&>HTlaTYn1lVI3H;1r+J?O{iurr?r>~^54IwwF7~y0FxsxWz^xAD$GH<rkpR` zPEabYI?aDwpjCYS0WLPd-!D{pkk!=#Q>{RtInJxw?`ljG5;gnaq0N+!@z|~6_fN%3 z>UmlOGkdipj3X0-FHNB%>yo)xTLh0e9yLkt50LaGR1K7`4CV>k!WBj5yJw8XKZU%& zCrX@_^rM5Q3>DiYnR+=q`<qjsp;oE>mkWrMNZj`N(DRX(FK}!4S@`NVpjdxW-S3bC z(KeTHTV4T`;~ovdyf>Y)wd<!zAol#*t-234zp1RK|L{JcCx=e4%wPFpYgL>46}cle zoZ8Y!+t~3DDHaU4liP3o5wKZNHuJagy(EMqN6G6gY0jXQ<M+6&D>mnLLR?Tg1rjGq z_92eP3Lqxl(|R#%nGVcQ@#vGX!L5gl)szH98Gs&Xe<Ndwsrxx!%BsSPcvr7aYVg?X z^jUBKU!_qkL7P7V4o6f;L5-Z;zmhlK3e`ESa!b*~ZP6uOzu$2z2;Vi<RDC#VP_<2{ zp;fs+oHw7}jw#dx5M^$a9~13*+M53TM4NMs!*`)7-hDY%wMqv@(QVe6LaU#IC<0Bo zJ5C%79P?ursPt#vH-rR~9gxNlKkz=P@$UJ<O%CvpZUY?pd+e<C)#5ubKo}+hw6NY& zF)P#cK4l*PT*^KHd-jBB9AX0MS27>n`G|OxSj-v;8UL(&yd3%_{HAzNyt51a{tfh= z)aIyl7WBfeC7!exBMRAn6h<6T&7;J;K>La7umUCEkT3}M4>7rKREO*zhy{d}tfSZ& zQWSo^WTH<Nrc?><rls;Oc1s%%pLCkFzgwRM2vzCH?SrbE?=Hp@IIP>RNFt?P^bh95 zEk2lGJwrvpC4oY0OK3K>)bPln_YpvWZ>|I~7`cZ=C&YcqUYm4aFZ%fox4`GWrk<v7 za!Hewl%F}5tE3zg3Ds_C1eO4CkqK?W!03s<zIOI<a`v+UH0fipKm0zEvy5PEuoR&6 zlW>;12wD2nIj={7DSw}9w|i&>PQ(dhu+%f0){*w3gy+fJ)_waRUfnU-AS{bTDTF*i z$;l>yB^Og*@mSkW4{&jxX*iyd6|XfsL+Mt%&rho^=A`YiKkw8w_I7FRdKk{rskeiK z%bp7(n(F})#r;L^cZ8($;O%3xWwIBbUF2=!=_09dT-DT-ov&%t-_|wmMVNIt0Nn^9 zr7|RL`zf+~xVb38;zu`Uk9dl(a8u;|5i|HJ=w`?(9J<P=SN+a|0qCIx5gipA3%pOQ zW3lVatYKUNi>8-hj)(|gevPR>d+x(14XO`7)%I)yyeuV@#mKb9W4ID{w6j^|azPO) zd1lw=|FnZ|^A>$E8`+Utm>;0xQlZ`Lr`b*b5G#ImPv?j;XG?7@1mx?vl3oT^Ib4k4 z-;U*48f@>e*8Vh4U=H73R(lE<xM$q=>8MYDC%hnnMZhT0v>`Me=osvxwFkf^UC&36 z=vm#&k!Rud2F)TFbt<^ixm<GOzcET05-(0lh)&HR-j}mz8;tV=bhZ}v5@8Aa$iLzP z(3fF&@G#e%Jw%=zeRwO?y0x&4+BN-*SQU#z5jmev!)Q~Ef?xfO77g`GiZx9%!Ha2u z!zR#}UzqMK;bo^yB*?K)xoCysG12r|41dN&k<n3$#AsTuZaYP-Ny5ds&W}{01b}tB z=(JoLopno|fepmljUS4nb;i{GT;+25aC#nqI>T6KPrxYVWfn<;5MzeT3e$sbs*9Tu zRvk2qaLZ>2zY~|yq$5v~&+98NaorQFpT__0Rj+ah$ZJkFe|4<@9?*(*yqX#op1YHs z3%?K`3U(NpPrKIK&pZLukIi>)sWetO#k!}no-dL04{3Urc4;?$h(;1hTF2x4+e2n> zP<;$-h+GG|XZk!IJ6aL?oaag<mx6WDze!9QA9i*#`1}PX+BMemG@eokvYw4i04;qN z?^lU;zjk_1>TS99HF@84Ew{esWbf`p{Htr>+I2ujdrvdK#QFKw)$DaC>ZvQmox||+ z=6tHrJO2kup>21!`evvp@l0K%3+2#c4hD0s!BMBXCyNOqWPT(6KTZXVC(*guF34sb zNUq^74w3Ci&Mar_61qGQ!zqy?5Yw0fzNOt%e|3B}vP2`Cdho2K`zmnA+B&`O-+M)- z_xLKm)M(r}1)~$JnLlQ~2A+zMgTo4;il49&xl>E<RGBs-<RWdz#~Li>)w9}y+qOTj zFn9GIC&e#-@l_P2Kg+(WbEx5Oz>TG^3??9-R;%if%1=E`#k+_xMub+Lct`A#c(0Fw z2b>p{Njw%R_y*q$1U5#v5nrU7Bp_%*A1o@&DnGg1?+kp&<<2Hs`Rv$NwiuORQovj} z?YcFsW|6OREoufG`$^NFk;?=DHGdM2J;F@5Wli|jr(3scYK%#7E@E0)UZg6sbUM-# zVU7%ll3OC)D|!}S7~wv0uOvFZ?L8LDCTqkzZMo=GDJ0hV^*8KlL1XZzRdPwxO2ry^ z*57EU`lM_J$Yjccb0zCeBuph=lXVG=LHZKAzr<=epZUck`C3z^^e*sYy7_m8L(K8T z$ujqh7VnDzdS(Vr21zG2=rwr@q1sZvbHd5Dc~gBJLeN=0Dv~>7glEuygL>+KTw>DU zfK%-EC>e<OIPDAyisgB_-3EV>*VXr&ZN~i_7IQf0$I3D&s9}Nun5|%(;oV>5jsk!+ zeQT({s8(lQ?+X}vu?MrgZ3GQpn_aTK{<g-Lp#7%u4vS{L<~aw!zmjUrr+kfdMr?<( zAjx<UyH~e940oHN(2SdI1BUF8XWg`^c`>m3kwY+ariLL_75BCr_+A5diV+#aWC!Wi zj=Dc#8FIU<<wFA9CRfh}@2d^iiH9w^X%kN&H6Py1o+oHye8<=r(>|qyadA;wX1uqo zpr5M2*&1Qct^M+{{OtjVJOwATLRQNJJ9_ZYx+D1xnHbN*P0F)=c0bxDsMY=_XTPu6 z65(zxsT+)1AAezjEsBsra#Ag627a9z&n2^SS!0t<B4nC60^9a4=es_LZPb`yz@+O~ zarTmd3lAIuKv`iGRn$^-=nHVBzWdXE5XTua1sQ@t-*Cfaq~-geXwM|u3X&tx&hgo& z3Uy7LD8jTw4sQ-fGw8&j3b!co((P)eM2PI6-%w*>R4p6@{|3Mn$0_Dz!vEHH!rI<F z58K;eAiAlJ$zixT>#;$^Y-Fobn1bGRwC}v`me2_FIpbk{<7Q071s3QdS$(I*6x|1= z1}O}Qqb49}lr6RMJKa1W25j3TSc&a^b^65F>mG6Z983Vll*V3@=Z}_1v6#4ww;<(n z%M7Z|Y1~M~6Rv(?byO7bPzJM+)%}lv)bC)nCOeo-+?~gFzuXqP=AEF>rOIhP<^a92 z2tRRRP#l3{%q;N3goOK`>YYp1560t!O@AdO3$Q6q*k%?=EZs9Lx)|?m#hx1neLE`Y z9vZ}>GHONx>fH_}^$*T?j2-5_Y!~dX{E+6t;~vY%LR9G;>MSFHVu6i^TYI#-jNQ%o z$vwJdIM4dfHtt~_Xiu(9_Ah(~5k0VeUbLp!F*#p*nQ^f)fvq&1FK>%FmDOTAq-00~ z1>hC#ffshPCDg7QNBnf$+6n4wZ^+@W0yw)1e@|4|w^%1pNheCW*EKZ{-&l^ZSWDx; z*Dyi<qbA417)=|_-Ly>i{5p=w{yXdjW_U~WGtqJ-hzo%tM83pJDp*!ow4Xe!DSzWZ zkK?*+fA`X}|G{?`T*5NOr5j0}S`b;Q-aM-c?9~$gl*FDPOYI5S{c{(wgfY1Wyw(9a zF<xPwxJ#sJsFiRkr5J2S)H?1k5YSCt^v^?<lt>yLm$NM_z)MgXQ*S~74Z@lxZC`!+ zbDe=E58(XwPR8J)3qhmM5nv5nO9B5*%^`PmF_?TbGjurwhi=EIE8{%M^9>N%mH1*s za~m$-VF^s8sz57!WDb5I1d;D5fp6b)8AC#@TP4l3LNXMZ>)i=#K2~P^p8I9ooNzC9 zc&?!Xze1^?2(%A>0MV~FjE(Y6)K##jA>`z6yP_Yyl`xa9dq+U3Fgf*i)m3ndsX7LC ziC9-$PQiRk()2t468F)H%?!`bFxuipiUT0VZCA5*pp4@;Yf%47MY$;C+becog!^Fy zA^&YD+!bRzbbBUHp!)Q@jbB-!w@nyvvB%#+d9_<IBhaKWmW}a%g;1Y>m&&PfO+MRe zxBXDnbOLscd8ZbuI<=L3M+>|-t*eLfNEJ_(#jPWBmceXzY)|v;(J}}=xlQ&buvk5a z{6;p{J~{eNzOy?0|Hxd_X&#(gAA29{f=jD%i+xAo?1Z^&5m&oCZW7I>)sl%{s`Fj# za3pd~TjhT!x5+C~IC*}q#0&VC0-mYmchfI)6O*vT>X?%$q6<pw%i_TT(2d{+7?TcL zW+@1aJnJ|x^HZlSVt2_m^iFdd+E{44lo<zKDB!0~ybMtjRs-fe8$XWHcwG`9hDx7l zw6|Lyrh!-%%w0aRtV?D6XfnFhOQn&PkY)F}m2(?CjK(z~5PbSC3ZPWlW{Ke#B2U{U zOr7e{g{WQHv$&5!5IW<DTuHxP6TVZ(7Sc;Ui9!JE7nwSL;}fdPw&<S7Ut^r^&;_u= za9x*NU^CL%H%MR7Qu~<tK-4{ZiS*ti|0`~L;m<&CQc_JbyNCgaR^gI=qEqLaa!;53 zwTrT8w!3O5;@6Ch1?qo(aN0B&RVDkwc%yRT({(ni0zvu}Z4^6qH(MQl^Olr5`LwHc z2=@7AB>-oK)?&$<c$3(IlGFQ*2M5KT8bgZ5jfh>1&%K_9!Xqrt)(8vxxc-IhJVW2t zUM`hXJ*&Q>gxkbTNNlq#j5lm^GOFB^<BN6gFP`EKa@VS_Cx>4${E4FP79IL?Q}swV z`dNVaA6@ZwYuuuZu=3XGU3<s<X~qzROSG&OJE8PF2Q-qJ2mQ0{%PMKnS(?LRxphp| z2aB)_fFA9F9ipHCVuVo^?d^vbe6F>U>jRXbW2VlYn^U6ejUc4P*$K<et|?d)P_*)& z&oWi_M%vYA<qtcAEI=f(ezwAD=WxwUFOV+faVN01=L7i_J!+th;_{>pJkk6zqK(s6 zRwB2>=)}{Q4~a#31eeLE!?dqnu~I`nV?=QgFr~#w*tiE3n62<Y<Jt9=2?efM8l&5i zm0)s^Q^sS$<$REhy46JRG18=X$4;-wAq#o2-ph`uEQYo;tg!%|OUMP4@wT|apC1#? zWD5ol&$RJWV$Qx*#Up41(*h|z>hZMXk2!30gY*X@@nn_I{FS&0`M!((JM101v7z*I zzuMmUYXWD3nTDj4ThC-wY~BjQ*7pRH_OgsqS}r1J8${;vsXUV=Fc_qy@i&aNILA+r zjt2P`I`xHzA=etieW<wei<2|h*lk@1wlXs{bPx|*N-!`hCcC+H2vA>#9x3Gyh5SAt zG(mL|;2e`2TU!vK#y7uUbP>aBR^_eul|L~~eRe5D0%xhhP$e%I$<rx%x1Jm=_QB)v z)J2ne<5xqgtU9mj-!*qUMB7%S4aV^Vk?$5=qdEHs-Do>}QTBSy()nBsvGAuBsu2qf z2?DAl`V3jPj{FvVV`TAGQ7~aA>dQ7-Da<irBfij!%hG*Rb&DO~gB%wXyJH|<&onfb z6G8}j*2`kGKq+NaVB5v1;KE!gSmZ|Wef5oEObj&1ib*;$0W>DCkUfEp#aCzhcMKzX zuU7C!NsehlBXDepXsEO}QV6-1?UCX6)$|K^qPV!@ZKB6}mNtfroxum8uIz;`zSlPu ziQ}Kx4DXkRM_K9f2s^4V8WhdR2<iasV?y%G`0VG;Fv^&c4?V>t3HzWQ6+g<5D12N+ zN)bxEl6F45bYS=2C#?59g4IMRfLFJkRS*BV*6xvFw&dUR=xci>F65`GcM>${+C!;t zZD`3$lS{zFq;hG9)5J5)`8cTJs-gj}POBoq7c8&zL1d%~BT6Zs?EqK?qh9q}s+m?y zQ8%u#+?!~ri5!)?A_`8Rh=?{b45L79_7Tvx$;7`L%joCAxv13w`-sBqMRDnz&{Tu) zEAUhfO5w*llRXeS+2(8ETCp|E%+tLXlI>F(lSL(`M>KuHeIx;-gW<K*g&R6E<XC41 z97fJ!cagALojux?t0|6&#}dZ!ql^OTqYeq6%<5^US?-Xn=-Vf+C4(gXnm^SizNtO~ zDL*py^-Y>-`=Jzkl@oudozUVI*~Y@|fd72Ylfxxx=I_wCu;6B!Y`=n^=JLiQ3LNX~ ziT%&hVkd3<HFmb!WpDSamNfJ&$$3)b&O65U{+DFfM?dYyUs!N&aRXljR}vG-qf{<# z?<4X*)pEQC3ME`G&O;QiQr!s-N>?8kSn+m{5V?)+deAHy9gfKr)oA@cYG3~;g00h@ zJq9ho6EtUbtpr+jpX#!9&S>Iu@9aVldNji;nmK#I1RaL;zrXIyYTIGG)LHZy;v~KD zl-V~`{rn+)Z}h-8KHlR+2X`(8jZ0JBJ0jL1*-yrM{6)JS)wg@YG_hVp+3aM|yIq$( z#LmLg0sK>!1G90yBNTMzcPaVjRKfroyp#sof$@^|C=FSFWapW1Uyh-I69o?3M)2Qr z@A{yo?>g^;|A@iY-faCSK6kiCs`ew37`(odP%_`TWnu)8>AF;D_NE-iVo&L?RJxE_ zCmQov@iv*3Vxm2KtKx??yt9g{yQWWH$3Ua;?qU9hk@ieC7pO<HZ5XQ?vV-&YZt~D= znle{q>6UhCsJn$P?M>#tYO{CQPDUt_43Vr(+ds#a{C}UEZ{|PQu?Blfs<D0AltXA3 zJDrF6=W#!#&LLCKE~4v32t<zysT6B*!j|;3UYIhRaAEG!iUe%r!OXcuUKi0mBA~QQ zs(Q2}Mh8CjxEwtHfS~92w&~AHFd}ZCJY@arIy6OX|A6aXXz|$(`gV~mb&fZ^)nwYW zzDTJfonaNZvZ+6j25Hdu(^G#?YCx<UJqUJ3gcZHxrlwxsHz~|k@R;M7R(&v?(Hd1t zk7*9iAx3Gs=!h;+bzGZhXs69K<kN@`M)rBn40s_rA#{qH#Pc7u<LuW}cMJN+H)(&X z#bcgcX0}_#tQ~6tNq*n?y6*@s(#iK&yHY{Zez?p5uxji3abZW}Wx!R=MI49z0y>ty zXE}}oT{;Te+kE4R(<*@80B1Hxj>r9hTi*e5l2_~s8#k;XFcG$IkouC}mi^;m^IBh~ zx$33st*fq?{JqPQjJ%&)+4qm{OiY0si<Qlso#&pMh*`{QlFo!BXCe|IQ+|mdYr-8a zEqOaWO2{Krfi~WCf;>cn7z_UwjE_8JMOtB~WiO9|8GlbJT1;9w&3#;0N7*V{{CP)| z8$9*+{3C0}B$7DI9&er{+4{J~_fO`R{Fk{cUy5V3-xMm9DE~c7`hL}65Q@N;Va&qc zS>_s~960dS@`R45J2`Q#|C-r&h_o{Wt0Tt+c3H8a*Imf0$wM4p2}>jd*pAPFW-zH~ zl>N_fcCQ$6X+bY44Z>=Z-BeZ4G$+tPMr`+hRhf%%hXr-JTCyTrlHx(PfPa!Hep@RP z<V-)Fu_}-cSfb}YZ*Q3Nf6b_V`j_XM-zQ<Cy+RtKGy*(7`TXm*I#e&md{4B@dA`r_ zdCNvQ$zro^u?+yPaJHXz=%n!RKe5UWyXAOkxh<bMb}~a<v{TsCi4k9r-Mkh32KvfY z22hW<)W0w<>L*%V$n?uub;Cbi8v`)e?0=C%@v1>0ED%Bjg9JKVL=Dl=4BjN0f8@2J z)jc}aD+Nhx`4%Ks)-|NK^aUw3fl}&@sL>WQVcgSku0#<tFgN{dBnUo@PMJYBP%#^x z@LS!HwJ3#M!Kbu;0L29J(IE?F>2_<c`e~QOc&%eklZq}+21_i~_cAC=Ffux(6^YmB zmxn#n$!TjEc0d`-Cz}-XrCTF>wf_s^jh>#kM29Z>@Y}naE*{_7jiR~ccyoyPc4yAX z32!m~q3IHG))k@T-@C5C(tnDP*{u{rC8f1vhz4`=&d8qR%$6I!Vbf~lxi9upetP0G zpbj@mSrJlyvpcn5G%sqj+vfc{=x3#WZi(fuD&Wi<KFiD6DMLE{HWWq>sq$!AC7|L8 z(|Bo|M!Ajqov(T@v1p0{`ihrumTnp_g)aLreAD?DfRUmJH~km|<;ZR#fZ9HNji9Ba zXl))gtfPNPyJ7<>$D@dVM5Wk3x&_>(DP6S~N4jT9E~zh1@6uHcAZOd`E}?K12h2zl zR((91^k6Y+=Un#Lz+ehxN_!;g@UykO5T?j-8@q%*nM-7=5AWiF(%YF_xW&u=N%U;u ztFzU(v~$@_4eZ_Ih)NmBmn^)NYne&!YLZ3Zf$Z|D;jcU;h)B_JDSE|lSiex%rzLgP zNKr+1a^21mUiP?IeX-~y&NcL=i2mbUZoyPfO@<JfmM_Wy*BW}iQm8E%OHt*INk$%z z#}z4Yhk`ETtc1(-xJLXp>!QfPAR2sHtP9ZkICRzZO^#Lers&Y~FKmnJ28-m)Vr6^y zGhB{hH1GaRDWS`ZhHNS03)K)A1e8B@_5IfH+^Do%09SYl3?~>l1R?nD;$Pc?<neXK zY$s?4bKxi7``=xe|GEG*;UaG;KtIz34&qdb@)=kM1K-B-QIAF3gvzq^z3Z0Pc1u5a zo#jgW_jB@*@XKlCJc&irDEGlkd&2ep8Z|_vP!zW64`dL(I9e-707hzwQ@ozZ+l$+B zzj=ifI!-38+80Yj&nO$4sKzKeSgOWoxj!#ub^l!4zFD}$TomWHt5BnEM8ibhpo8V< zCER0Y_mpTT4ErHz9RJ!GjMW(7)pK$Cpc5Z4HTGo-zyT}|Goi)u*-M%7QDF%H*#jF4 z%n0|TAVWu25Gb|T>412#=388)Zi`_$mkAq(_Ik5hk;77)foQbsE14rYO_rk=jtIGw zzBrCAoIQe$ZbQ<Zr#0^)!;$dT!S0>amg$biAUbQKfRGi<`nHFy;_ALS-B$aX*Z!Z2 z%LbMt>ZmBEBfWp%PZ0_~+&ih|5%Z}=!rD*Ln4uLkL8|GC&(LPe9_{M9=I=0FL$Fh? zbUc#(yI5AXl^uB3ZF1T~^hYLe>R0@>RMMU{cjTN-Q6&w>lMd=A*mv6H-hm`u^Bz-j zG4mIPQyz5S3qQPzc4MGri$=x^LYIvY`M+Ax+9}4}$6@p%vAw&B!xYwv`XM@&BSS_q z?q4yKUJscj;PE-fcGZVTT1|5VmG7PTtq94sRpVddv2Obh^26q{cn-d<QuED_6UDy4 zD?#lf$yC{&t+>Mh*4r|n<P3-#&yTVB=f%7}diYUf$TI$4G~mUjgJ9YW9RA1U1cNT~ zQ<)mDbll3P9{99(pVOHaA*T;CoanV069|g^c8RC%(Y&NRqJNgnJL*6VsHzdXh|j{* zHkaC?x;~<=U&U|0S5w~ObA1w4^;y^$n9#(7<!JG=k072>DuN)XjKf!pX)y445jSWf zO^sc0n+b`u&Wqrk$2425|N4ua9I*wydVC|W+KzqE?hG14m*ikWJ!WGTu4hvcR(@8$ z;c#bl`q}dG=(Y(6A;e=p_>x>bq7kxlb0wBGknTh@5Z3Pw%>J++{R~88Vk8;#b1%%` zN4HpeWT`w;w04GZw?Sr6A>IU_JeRo^r+R4rjSqje-YIGCELJMjF#4Uu<F>gzMb8{e z$}y306%!$~+R{0#CB4&T((U;W_y)(7vy^^*u2r(CQ(8VAVA~B!EdtU}IDQ+iPAMYY zp<gjMGHje@)ChlDTg@HF4}6Viev~}FN{SnC!F(D(;}cGplHhmU>snhv&Fa6YyI6o5 zp9UUa6_V+|nE96wbsmV;V<z&SM3#NthgubpNtf%^Gk%r1n1r}Ssh{lqe{7vqSXA-f z?L`SuI;26mL%K&mq`SLIx@%wrq*GG5r5U6flx}Isp}TV!n3<RNIp@63bN=Vt?TdZ0 zFZM6iTHnta1yH*5ZXe{r`!CoXU*jzjHNJMBWd43Wk|~F|)C|hy(+?86|4wkD%Em_} ziKeM)EI1lv#{0{ZWP6iv#u}dIavKxdGJm|rqIX&M*1)09c0-y@!+aA=7>|DWQ($r+ zoi?;5Fv9CFZe1#5S2Ag^R2>K;_CE^NJhW%zgiWY(^*s0CQQK-BZo6~PzXv@Ej?S%5 z?1ZL^r_;udQ*%15{7O(@q$_+owBJOb(+KbkQ$C)>8v1P!qgv_0>H5M|{2MgTR#9l4 z%Ektg@!5XS!&qlNcP<C?<BXcUTg@{Ke;9ql^E2n6_<_YW3e;9YM?rGGlJE!<J|cT> z-z(W~_mgnMvIYc@e;=<_)V3vDix~|?&Smd5v{X^N*a<T1irOiM5)J>8zA)_dJ)67x z0&JFG3jV4me)aV$-bQX9$zjeZDYO<&%=N8#Gj6qu0<L%}An78|^`)4@q``Ed7Am7# zYg~BUL_DT9d?k>5iq40bCi@IA$|xXr4}0<0wB}rAy@b1?yI@l2Saa6sVmVWEp6C@8 z&9B%}ilJO~`sg{vSkpfG)=Lr@1}=roLJkxyEGfEUrc+Ci*$C#ihJ4XdIMbRDf3l#G zO6K)?zwip)cGV(B2Lfz`&UymfcK(V=Tyza+T*<LpOjb3syk*$@$lu`4c-WA9x^Qv1 zMoqHoH@Lw_d%6tpbl%0MckhX~#nnJDz4f0KC}~XkMVM%hA4<WTtnkMmi#68Jol@`Z zN9*T_^E?Pv@`qwK)3Arpa*dqXgjCueU}dAWMHy1|=DDlRA;@C3V@$~gy5C}y+OBOi zlkMwycY>mQnxWlMhfhbyzIyxKh8gp^!->lt)#q##YD)3l7I7I+P~j009OoWHJtQoU zL#8-)T0wF9InG8MSb_wTKlj+Qk?vbJdhQI<^7_p=Efu|F5oWS60y4T9f1Id62whTQ zd;ZYPN80b(8@|MjI{a^e1J550yeR+uVQJx%RstM&be&m`X|0>o3ebHNBl4H1Ts1~- z$|s#eyzWllV}C!yj>>qRE)l$bvYZ+4Zs;|rSZ(NGJ#j4jhUS&iLkZ)Pokl|<ddPQM zSs5Q_DiYiR;BkOg`Bc8L@~VOfh2zRSF+b7NbZLwKryhtAXb$NPLIFKb56naIBm!R| ze9qUYPL`XLKxAZOC?GN4Gc2EzfA~(2ZWGW-v-8_#mo@U|bgC>UTgVkh(0Q52X|?sk zzd8$<x?nhLV+w%8TBtE1sW#~lgl;DSLIoTbP^<L7IKfEx{r_9e`aDrEo-M?^fg$%W ztq*5muXWR}BWk()!EKdSys$R8!4BjnCp6CaDfs5+rA+5At^;LF@>#9}4NkL2L7r(r zyD<9@S<d81AD@WwsEI#E>xotHup~8f+V0Aae3CWV)x#^8Mt&%tGVE})23|K0K7vur zvW!1*9=Ox{ohmcYb!hx`JxdoBw(77&^&2&EfYNRrl0^@sX5_*_SONc*80s8CwCLHN z%eHCyg6Au?L-80=Rl3N`rx0i~-|oy7Fze@8IQa>Z4{=uj5g5clRCDLVC)QGXs~5$S ziE&HsP$@9POf+y4u@@63F^rf|n?^8bOzs~n3FQwb^MC&imwL-Aq+*D12sLlPcgBX9 z?jE7-5_cd+L;nWraLhJg--6mU3g2;t$(=U`Fy)E4zCNR9=Xc3&0iDOa$l#QItWg>8 zuQt(s-7UMK-D9nVG)-kguROr0Gs|w7tzS#$6$CzhE{X47F`E~Pz&O4{IkbWS$N*0l zd`>LSHFd!wR~s$)WvD@7;$+Ju&c<KRi!U~PxK}_wa%}eb{W$!74fILT8{L$7mr1fe zD)I~kk>m;{`(6g>n5=CbyGZ<PQBQILs0aj*h_$}=LlLf&tG3|5=9T$bJs~w!wT(Eh zbEApr?7#gz#3A#jnj#3p_l20wVV}LaT}D;~MI=s&iJx7#`>oP7NE*N!UO?Iw@ka0P zy5XnU$IB?U)%eOK34djdXYRS3ndbyxG87=+T1?;9mx-Ch)vz+!W(BWajVF0zbYb2f z++;C8(p>OArbR#l-GQXdO$2E#^2F!{@VFp;$7!=naMMAzj$pfK3?_pOD-A*ya<`2_ z*HV3zcsBNH@<tsjmKiqWZi<~?bBR69`%HJZZyv8#nkyZzpr*I+7R!J+w(#GB2tvF@ zN(x4IBQ?Bb+wk{S_;Q6;K<fL*(CDdm*v_D#!;VVkArjd2yg6q%lMpv`0y4i^yrBFV z!d2x@xo>Ba1ssrDY5ag8S(E-xay*YE_%qM&LmpzG`<2GeW;TkJzazKZw?q7=W3`A= z(lo!Pj!w@fXdSfc=nIKImj#kZ7fPRZnEn-HUwG$A;aCF-%(F2$3ip11tzr%H2KQWF z@$PSv?j+=cBb@(OFm9X+|DjQ((~*_mxpZK+8r`PBVgh(}9u01TBK?;)!yqPIdr5ks z-UUqoO%I<k(jMm#52xy2!~1*m=dfpVozLIg+OGc4b~EHzVc4sN6%h)NyfqT#aA8-F z{LY?;uHCeifhE$B*P1L7-t&uj4)m}gC4sX}2{W_#v+x)Zx+un30S{bLSTQd@RGkU( zTo%jzw|D;br+uJmzu7`l_q9^7`6{)v6E@7mVLRb&x1I)-o$3PNH7Qbk(sVP-ATJv+ zT454M0wl6DTNr6lU{vTAViq=y+Yf#cG9%Xw&l?2sKW5T2<Eu3~`na)s-Fi!=d4}}# z+Fd>;E~a5j2;v_NAIeYUk#<Y?*J?YZo5DOH*A~09`P<&NX;g@1aP`_R<RUzvX;zY5 zm<QuDK^WGt*d#`LiaotuN|VASMsuDyDJr+(JJj=zutgM>`}_U)N|S2UEe_9iEUGuw z4t)O!OaOnPd3!@l(ySlU86!xH9WmuB{;t&u$L}w~%*w1qx@l;cbFlv(=h1bwx#wS+ z(*-wkkbkpLy)|0q;dvxfv?Yv^d$a`vL(cnC9+Ltqn36mkPM-b^!vHngQ+e-Ix9vwP z08WV-NFsAy=T6ZhC<OnS_>HyO6$d_QB#F1yBQSsS(wTnb#+M=Z=4rc|8`S?`5pc0B zl#f28TZsJUQ@u8ltwluF1~0=LY)$8M>c%lNYw7QKmgCU-_NYIMFE*KVz!IC)Ku_{1 zZ+`oVBK%xV?&0rlu%@QBh5((lq6Yxn(`AgT@~Gi|9sRkB{-CU2ah&^sPB{UsfT?kb zrl#i)MvaAlUAB3gI!iDHU$XbF%cZJZ%K(L3ZISd$LsX?hQ2cwT@QvT;!jQIO+gkzn zej@T7$K;IPy<TAVLj2^{MT(O~7orI6-^a54UOed#Z+Wjl3wk+fffbAyM0ELnjrbM- z?z$ky0uNkdVSy*AjoWzjo4%x(Hf%OgnD%WpQJT(fHc^>wZ#GezUT-$hn7-O-dJi&* zT8#3m88#Ez5@0Y@x>`(o@@6viyjskEx@7?cvGMWoUG%^o?=haJgx%ghQHlHUL?Ljf zM2S9uB5`SOl0gRc^vEOb>52;N(O0avCE`g}AOHK|$u*!?;wZx52q59s?t;Y3Itq&u zr`f1@^U9uolJ6Z;+amAeP!KI<{G4U;Ky=Ki*P?7_xSFueRwjWz6v&XLKb2vIgZL+d zj#M;6&XtTTT)T4^ZaySSr`2%XPO_E1NbMb$U{4?O_k-s!vAhgfu8Y&7<PT{bam(5h zF{38;mamM1s-M*^l7qd~Uphq&OQb~%kJFCrY@-9|XdZxuCIhTRdAnrkMfM6lcgGc} zulB3jilBSKv-uBfQ>+sv{^DF9ZDg@{Nu+V@ml2$N%Xx&>*oKm95f~8_#Ag`1g#2pU z=0lyQ&KxY#cK5QAx6Y3Y_$a@_$&y>V!f&wDl$Qg)#)XlSj<(&_d&&R^a-m|N6K)zd zkN0VSZn;tS-6VA21|oc)!H2#(H~i{Gt~=ERw<Ya5=_-p(+KVj;4m`Zw1YWcAW~wO! zrCSeomA+{ejKDJcT8^$VRHE3`{wIU_OCYM<ast)^=c%X&J4VIUOTs7c%hd=;hWESS zF|?nl45Fdj?r<d!zrOgH?NZp4K3JfV=8(B(^`k2FQ+>&l3;XVsdK4Nr+vDB-;m0&Y z`&?&14X;$Zx`|YLP<KJgYSb?A!cYOamqy!rqYs_godc<`DcI+~M`BAirc@%++Ui}{ z`I3UiK^lMZdhcjPnsrBjmaUP+I!x)C@@osY!!omg*?N*dBnu~`DnW0sw{~}XC)$CC zaG30ze=f1L%8f`QI>KVo`|^`pxHcvSx>di4Mb7shU4IjAJ^(q3P|bdqhluZ06&Pbz z_}ZdSdA2G?ApUg#({jQVA>Tso!~#r*EH)OjOE@Mp`TqEsL-=_h+DQbks2XN|%^6!W zq-q|-W*eD1YXS+COq2XVw`+iM^rOh5FLp}7jZe3ZP6A1LQ-fh91DTQL#y@8fHKV5X zSFema`F44F=w_pbN5ST+2Q&PMYr<x7@u@Sy=^~S+DIeY!0RHtuD{2I9ctog^&Va%- z{fv7)MJ^CgIKYwn<RK&C{~9)=d`x43)RSy^_AM1N&FO-uhSVsL9`Z|Uz6#Yc%=Yh6 z3THtXg1g-5H@_e(O6%`3##o8;OGD)MsS93Pk9Trj4I4OI$>gK42^{BT?`*9yX!cDQ zmu#_7zJ)C3IqZ9(w%vZ5O-&|zg*m!SYGC;0Rmx10b0NZ8cF`Ser#ErU=72j-iPiW| z&C#b(s!DA&9XQJnK+tm@t9w7+)szhnjfo1MAb^DzDok(OR{m6%A$<9V0r>tC(d;kX zkkvicML>6oPHDxk7!51I@onZ6$tZAvU3yYi7i_RN=X=X`B?HrS@X=Ks3~vAEpbsv+ zL?8Qx=alMdN?MK+ZNX_4yKHCwVFgq>>Z>^9nV(^oUPxV%h?N8VX>1Z(6PZvjffe`2 zV-~QbKWI+<%Na62HuG(WcPD^r$|7($s#FP_I75}6@&b8p+9`7;Mnm|LaQB~h_bgRg zs~cP5qKM3xLRJfb7XT?@f=0NJ_WKo+)crCe;U(rV!`{4bcNd>u5>UPVR|46uaL(P$ zDaWyYfn3%)k&V%UfmP)x;gtIC9FIhq(wym|hOQe6H#&)TIDr`_4d`7ta!Xuh$=uW& z6u!Q%e@A6_F-R^PF8TUXV)sn@%ppjeK^HBD*qGyGOy4|O-9KUAlBdM-FT@=tZN{YD zvcMDPLcQtw%qYwKsyp5_sVxdCd6;-)c!}elx`-6KT3B0IILo1~#Ixp8$o0~Z)O-Lt zv8Lqv8&!5&aciGypE|VJfLz-|^_1@-bH$0IS)xKw-#p;LAdd>WRet-7{b3v4{_ruT zna4ZN#(&$)7wVj@ly@){L4t3U^hFMxmAb_PJGJ2MWL(v*iM=a7iCy|<JLJQ?=?l?? z@0*b)5!F{%B)17s1G$E&+5CtPBfTa~o=@bt^eg$JDAN!T#EPFh&+CB)6?j8J*r|M- zbK&OMpKNlj))&{r>0-cGmKe&J`|m~L;U9y)-{jIY)$t#cLnqsU>MRkS%&AmntX=<y z1&~B}-d2V9!$St$5{R09y<%~!ePKn(QbGS(e#UMDr>!itR!&pY##>cDMdjms`|V$? zR&tyi^YJ#TNRH_FbiNN}xQ8Ff&2g?b%HbZjLb)Xha6wprZaPM&i1I)ouhoIa;p$gs zmMtVu9K4cv-JZD1B?0Ec`3`nB71Fj1j`vrC4|{mK&7!|d;U&Mpp3TcehqV$sU@_4_ z4F@@{>0^2^KHm~<Lx<Sg0)u#_2!;!gEZf(mV!L_Q2Y{bC{rIO-#3JNu{ca51=^w{6 zjv=JZfkcl6LL;Yu@N=pmQP|?sxro-|f0};zXCa`Icn%@gaO7$@+T>8tHSaA4(~$V| z#;293MaoE%`GkvuPbPL<m;SZx5n5f<Fty<VgvxE&8~5_z@OW8b23^<(*=7|~z{D~B z@XD*tqn@SLB8M6tDWf%L+xL~(6XFgVJL_svvpY}iYGXM;@w<_@X5W{m?ge#IeI2~= zi1IUOxy@pHp(LV8UyQ?jo3^pJrRsDAPX^I0U*63y+6c$MGmQifqhF}KzEKe?phs9p zcs3FKu=@#4Yhinr7KDK-#f>N3M#|M%M!eDTN}p3X+i<mVD9Kh*P@MfwA_-Ajixyq+ zGqAK-+fhr~^4#Usl6q#NEjUNWRgghlQG(SdIaDn}iQFpjJj!}taCEEY(FQq(OGKxV z_q}SeX^(OU!f4g*qb_$<(((C$uHNd}wo^F_1w6^3^SSi;6U$o?F7%R??~9|`5ib?z zk*hrA69T(wi7x4($Dq`O)4~@qmVPSQwNGb%^644<Da{Clx6c^qBOu)2^$q!0Tr5ne zk<hI3Wg6Z?#g&VqXvX9fQ1vG?|JI@NnT=`g-HE{S)I^ey1Q@rU%%~YC!YRuQv~x?Z zffUQ8>Ry)9HI#80;Cs@XKmQ&{?aFn(P{lFeW;s<<hoHX=9HDnrNO|k27?5aJdQaD+ zIJ&c4$`3)`f|hBwzw=;{!Rf~Mwn#(uqRqrDcE$DMi|ft5E(Rg3n?npKB)|Dp+FH*I zwk3g92U-trF01b!$8r`c$I@DrBtQ%<E^QaaYfAQ&=;t7&apTkt%d$a*5`1<Ibh&|d z<jY{|h$)~!s9p>!w^Oa2qN)bSpz0^qj2Ee}VqV*D_rNDj^dfz6%bqdcx-7+7kaf|& z3taBq<MH=sx1iSba7|6utpErG<AaQH@)3=-y?Cna-9VbOR7BiEe|PquldQCu(F9H- zYwkx)U7V3XDKg$FT7zHBygXe^orXBv#VDq$VRL+C#_BC;PmSk-WMP-5FcMfn&94cx zncMX1-Bbgyop7bZDRjs;xznj4&cE5tIxE!;vbPs#151Df`JhghtD3;SfM7=4i@hGM zT~~3X=C~f*mXGm}CxS}=af>oBCfkLfiDoD6I<k6&XJwncOC#?q#Sh|ALeoI<;cAPX z;e@>h>nlCog#z@R?<~&(e#Xm&j%9ui*qf2+W~J_pDzLhKOR$XyPT&CTFD+^K@s&yz zyAnA_Ue5GXuw;n419s1=?E>GsvgyINFr-z{s2h9@ws7~4Ho5un`BX5(CSS9HoGv9* z_fbf*vjRAN=j#T(b8R+DfFKABQp^2Tdw=%TWqSalV31V4;O^SdW5>p&4K18uoIX}2 zjnYiV__aQB*QXl`RMVK$s)zviYmzEiTTqv}k9eLIQ+q&Hlc9*m$cPP>oC9urgDI|Y zhY|W##Ea8bvfC_@4GmytpBDALc_dzH6{{WfDw7eS|B{qDMybztY;;iy!Fz-+--2UR z;(Yp(bl)Ib@*B4~stUIMVR5@=)KI;T8EYb{0OOGR-37LP5gekVetkJQmLWQy_Gcp~ zYe?$W0ed8flFLQ3t{j=^?T1+WYf`HCZuuz_qh-wYAc4D6J|Wb<<Yl_{+hzV;UyxmO zr^cfsE4l|EhC@^x2W^f=74YHkg$ObP-%zmjFqgOPPP~neWSaBul*QiwS<Jgj53`nW zscy@xsiM2cTSsfnqILGxkXa=|?pG8iptsi%ny4ObBX<o^tw&X_yNQHlzL-WIj$^r@ z9$QmE7-F{x2PofyAhv;+nVbF;l<5AKDM#mH_0wvK(Qs%w%knqL9|QMGTaTa7E<T1m zym<IKRFT^SKa?pIS!R?`Z;r@uH_vuj|E;G;lhhd6Rw|y+*FfnZd3X`lX>csrd6wZ3 zjk5IB+I)5S4LskdvN4wdw^M7HDjz04Pm(oU=nJ0n!F_pKN;OG;2QP!Wl4rqN!4%@l zN`oe_hPlojb|AidzSv~Stg0cmGnljR&aZ3k{hA-QCWLgaWN*YCPLViW0cUhg3&~$d z)3k5FvO4e3>MrNgI~!NviW&Kdn9oo=10HP6(cB!_g?;|b_254z#1^Yfl54gaRYCDs zIb-yWS6Y0JvI;&c*z_{n=hf#CPm+CiX%4`*GRm~7nTeLj4EdESA7yp2%2D;4F(7^5 z1&?7cGiwZu1k$`4hp(hh#yQ^9o{N*lo<T1!o??I8Qmpu8y9K#M1ueH#4qKy3MB~{7 zBlK|bC|L|7Rmz<25jy1M>+^T=OP96q-ZNn>epJZgO#<pQ&B`@eE3JSXgzBnKj$7$; zKOmCdgnWzA`A*fply`6e6}dm?Pqilz=$b(zN|tzp{ZxxRl|j(J7l*MNahGXP=yYUO zuc_n2Tz(3GTY#}Aq;OzZqY+16&{5q$_KB@rHT)QBogzfl!U8)wl=KNm&vx-Oi=+xJ z0Y+w1B~sk=;C+yu+b1|5AXM%0T^!_?v<4KLa`f+xW(h$x^x;HpQ|#VREV>0BCQkgH zjwX_wT0ZX&!s=!(XOt-?xF}rvM|A6CyVG8{r>fkz0{8wnPb~A_1V(Eu57qOBVqqr% zT+9e8_##UK>zIbaQSYX*3g2ShHv!wNV<Fex-=1mkNE~((?Z(lWI0oPwdIC~nEld^8 zSkcGp^i;#CASSXyvwx8R22qfz)6a@O2d@>VTcp{NE_q$i0JJo?Z0r<IT^&9Zl$v=- z%w<PYt%ZN6FDNsRs3YHn5{X#!Kfc+r)cYMeq<~`FI(m+ma03XrcvT+OzuW9b_Zx}o zd6!Xni+2(4a+R8Iy|7vslYjef_l!dMp#(S)Fc@;aI-dDKfeHJM(2L&W@biERF_owy z1U8`ACE2ULNpPZn@06`f;rkZj4nLguJK<E9(G<AaxWqZ}(Btb%JZ)D2EcYEW?6VZR zJfLP?aNt*EXH#uB5$g7C-mF>5Kqpff5FaQ!*~sJ2F8Dbdk$sE%LST&lRq!X#Unv){ zdhIfz@Os(L5?Uf0DGIp5y`_Qge=lb_8Vu$<%kagPm|CYn1}XmPynMXRDbBunYaoq( zd&pY9=5Y}e7FGTL*0>hD+DVxjwu9jO4mZJ*TKLoAl7#WO?L1q=C@QrK&qY_AZ~<8! z4vR;LVI;iPp<r}#U+(cu+$c1y$=6r^=n*b7FCS$VGPb+9$IR}Sev@9S<%i<d2Auyw z7rrsFg}eJxv-1J7q#V9yKNd*}lA0j$BKcO41Gb8%#}<i;IK{oBI(}E>x3*EdUc!T9 zFI_n7eubg#<Sl(oW*;J(a<ZuTPLx7HNt#i$AJXRYYjm17&iS3V<Oh~8lyMLVWOI0V z<Z3eGC-dcsi8mW;AzJgQf6K!#x=8bBwL`m_uHdPOdUmHk$$ABGmD-P1FlD{pi6YwV z-(~s*py^~n_ALprZRZGZ5&a?(M9?y6VE=^o@rmGsCboIB+%5?D@q^3N-J>&DI#Rtb z1A!A<gq%0#>z`AtH&fJ26`K^wo?&`o@wA;vWi7!lnTS=@&if~_8_o@4JTANu;k8-y ztCqI#PRkg~$WcA=gFj~1j%y=%ETz_x;}We(1iY^)Vr7sYYOAv-2Ce0AfV1d~OE5sv z_$ytb9gn`Ut357)o@rY8cUwmEjS9rlaaRdW$a>d|;Kg_k%U17nv5fC*68Y_afj4Tt z)pqFh1h9NMo)nwq?}-bDXcRWl7x?ih*dNk1f9F&eFM$WjicF_Uc@BQw#su(bXl`4s zoBoN}Y8V}Rm5Q@z;JH6satRm~Pv4MswgO%=;v>H*Q(VN&zGA$lNojaXl18YMo<zW? zG#ZVjmV7M9^unp+B_U0cE0TxeM-{CmnN-)$t5rfDj_fN`F0U}=B=-OgqkbzgX(BUB zplR3R@5gVA0aZQ9!JVy#-?q(DW=&JfKAh45y`HvV9S&xlUyW1M51wp2Ts8?y{6@B* zxl99Z{MT~33A09rn`$|~=Cp|zuM|L@#A6YFa|HDanNa8)fA#y;<6kJPmj?arZ9o-~ zw^6ucsaDgJ3y2CY!PCU0emz5QkL|nU*-6@GH{*Uppw#bsR-;@qV2{_{oj`KMi@Gva z8U{kdoa%yx=_;<Q!}8ns`VKz2Nv|6(-6OZ(D*Rd%;nC~M!N#Se8iHT`=-8dWjJEA* z87Fd+6jF}_$uof-sz=Ktf1xFgh{(n`tmXQRR%jBP*6P~r+X;%#tz7`#%V7{RujQ02 zxEZQ)Y<b$u2c|4XAf^Jq5uF*`rU~p)?;kVSOqEKc%bv=fa6<}%dyTX7YTLlE$^i>5 z7V3*amH7-N?>24Ud*fW<`)<>yG~LNLpB85P4PN{yPeH@=N(6~Gn|b(>Bx8=nPI(?c zbSkL(uYWcXk6fDeoh$O|yc9<QSo8G+jUY6u_UYG*w#_<<IM9~yUuDf6=yR7{+JkE& z$OdB(5tak~fjTPqNH*3DN6!8F)migx^?iBmKVQf9+)u4*ya~N!z~R2LfeMP<jo%XW z?5`lHV~QEST{oSv?S3WXd|pQkUvifxx>t$}w)&8kWnJ4++r(#dsJ6I|HVOsnu=Gdr zK#>IwrKFz+fcepWK6m>PvbBMCd`kk5$!U9L1HXj9z`36;$;j)?&a)-8=X)dGHT6OH zEzKs%?5~UK%~tZ}9{jh~^cF?%#Mam9jQts19p3BXaX<cb8ekB;zVecS|D1`~26lAw z-nxsM%Lm74sHg^-3_UoVmLa}9ynX5cAn>mL-La!d>0A;akaNfzJGTGPNB{Q&l0>|q zEFGyW>wPsIE%CApN#44x@J(rXd}+$+J7&P{R~yBc)Le=KqA6=XTU(I_!>^5?$s~vH zsEsOP#(u36Q3E+TB8txid3ux4a^Leh1C4v`Us~Y$YfI<cz6MH@aQJq_<-qYrKguts zRoQUf`B}u~_<s+Ke{J1Fk*?~&cWw{G0DYgzqro+O)pe81=Z8}!WtQ>>IDhFTUt9tj zLMHto<j|u?mYHhKaf`I8uP9jpNoQ7SMjyy01|BH*-%=T$eTzdE;3hB)wh%7$@OE+t zQWjmPp|8o{6=K3&<f3mY&j5pV5P}D<g61(;KNi9MN;YW-IZ@30wH|8kVkdMr<HkxY zLwTgaSRJv)X@lju&xAe<OLBn62EZ!44ZE*3fcx@IG=e)CR`ge?c@(G@@LX6TD4Tjg z?7_5JSBuCDZJXHjbVw0Gk@SMU%6#OAD&4$|*F7J*`<$diq`Qu&Uu9Ap?X6-r@Ib%+ z@@E~TJMjPz{or#T4&`v;oiB`&w-K3Jh{Txd(ui<EjpPlX2DZiK#*hTkh0)DCj_zQ) zNXR`S5gOCQo^*-<DId7_stk!)#~6*j!-n2k>{JHkX}-C_Cgqo1;3Q=}jY5HcX|8kz zyM}e5BKxLoF`HH8AfJ^<=RcCA4><f{E;hx48rcjR(L_Kq_`7E$cHfH1*4^2GKZN7_ zOpoNDN<LvOyF%E&T~jt)eL|J_3TCJ>UahoZQ&{FW-+)5lF`MPd7b>Seo}SUEs`j-r zOe5a6Q^tujkElV8b_6DZP_(f%TKYY6;4JT7us(e&6Rt>tUby9Ua^;IHhJBJyeqrFC zP7smkxnY|f&P9O6P2$uN0I&Sm)zQylB2=1kAefsjMh(EUfHd38XVY7s)J-gVD2)|| zZ*=JA4%ptt83%}RscXfH?<-CmS5W-v*VTM%zQ>nRXdCp{b?9#>Nq@8%cA|iOM;_c! zfa5`XLd3F6B>a^x#{>BjX>sZExMIMlKE83M(N&+Hje1MQU4jywrtti+k`hF|$)nM& zNxnR?_6t~pfy<30QWQ@z>hP_M0ALA;;d{MFi2C>4Yd_|=knz{nwqM07YZcznO0A_G zK`N26JEI+JY@l?n&s{!q0TcL*Qe7TNp*x-Xik!7YMNiRcN~cC`^`w_qEhA}VY#x-L zMW@46d?9WQqlYG+@4C71Gdq?_`<<|P@j+>12aZkfnA=eO`$*$ii$?K^RPpqtv>E52 zm0wu?Z!(OL8*5_()g{$4)7SOzEn(;=>hChrTvb*3L9D}Nlp)Iczh$dhbuJ&PZpI5Z z8G2RDxqpeHOL-Drm~_qJ8|q6_pU*<HVz6B4a0LVPY?xbmoE`!A5|THC+&Y}0^!=9= z**`f5p#fUx1}M6{sI7Vhw;#KbPxNl*InrE0yQ<&k=LEZdSHCkd+t&RVCc=g&l)YMd zOZXn;8?=YgQ}B!!u#Ds@!Zl7}5CfLs+)UOY2Ye<zt+`8Eukug5oW_Q@1xYC{<76Fs zxtAQh=vSbA!vmAnSswm3WN@7B;(0D}HELJj9juL+0GVZB9YyjXn9~i+^&i6{%PUVo zDZ!+kIu1kto%Y%|V=z%xDJ*le*2q9Q5s<Xcc%`$Jezh#dB%(llF7e`J4cwt4=qace zEn1?)TK%WlDpFK)7GO&BdsyZ+spo#^w?3==?MQZY6IbsWa-uBMshvAhjiU#lWq<|Q zGsc<?6VL{?n>^=A%QrKJrNciqqheTlS-mOz`cbm`$R;zaw0Q(NeVr)oXU`=!`Q(?x z1>VsWbgJ)Dvqxflas^n%Rn2S$=7K$+FfCo>4;KfI<JmmP=L^KIlST)grs8K<_?REa z=R8U=Xk-NMX!P!Uvis~myw<Hw2S^n1itMU1Zjo$s+6nH(a1;S^7HjBF%{KNW3mK>h zJT0WmG8@;sq<U>w#oUT+djj|qswR;+Le~P#Hvk>&iKrev!fo-F37LAnlvP8oZ6Dnc zNd)zjfc|+Rf=|mm^$j0)MWt=YW2`J6zTeVl!o%ULK+pZ>wB}9V|8I}jsC|OJ(wWaB zySXB?9oL7m((R8~xVh&>(oep98sB19(MFv#jqA@XFBl)24lT#{NSbaF=1NfWUfhId zvlSK<75khHeKoXRJFH1RrZ^~<#ov9S5AEi#3wPWJRt%$`dH2M+a)~EyHtjv|%2l1b zzwo51#d=3Kr6!YBdUa3*62w4Lx%{-J=jfoF0G2`J4$V^*Tbs~LZ{>C6!!!|JLMkc- z>rJi@3{nl<+pHrB`Uhri#78+|34cBWTqfc*vE_WL+1!`h=WUC>^hiQ~Q~_eQ9THTV zfBdu9L)kwNRmRLJsdm7OY%^(gT495d);RUL5`wau6$bCjF0@-(9CN&Ax^j}fy#gCl z8}+a4YGPicWwZpJ;0=MQB02?MscFewo=&?D2)Totd!|LW+e{AVm#dk*b(2;R^|yfd zDB^xQpCgUNtVZA~uBb0qWVJ4x$oRqSKnR_l-gVO0sJ$Jju{a7%Ks~mt1Ds+i)7Lxs zOfM4$B`>e%`2bYEJceRYy%T>$!0nbKE~sXDF0l4qJibWoGGn;6<8*~;?l_P6%fFV> zf~a~HR^0#{7Y5e=o5wY_vMpkvy}_$1{aj5P`U+%QK$#iKcwr?vrt?c7)y@FSJ1w>! z%?ZaWxKnO;ew<^+EhYt+=W<u-FU&CZj3T)`3k+Qd%4PK{-3NT$Fl@V0JSK>LbQ;CD z%Wg3tjln7vUOzd8sE@dY81G?<bZWzzvtD@fAPQVnV4m4dE8Ql7E|&Sr)<KSax=YXA z5U^S;PwV>90`g|pZ%N^9zt)X-PzZIWj8ngCJA3Ku%b#o3cn7)1hLfOd^H=#g^`mY? zrjM;uZ2Nu{%Nw?8bYlySR?Nmf?7p|cK}(2{f~S9V*bWy0PU)>2ZRLubHG%8BX3(*h zyJG<-iXvk)8Gk`a5bgO-ewp&QpyMVFCeK{%YR+HJuG2SAA3`5zyUbQqc~!{0DcUl` zzm7RrCf9-exrqYT56{fI;B+0K<&sSDw}&+p-oyFWf`Jx)uli3g6tWY`)TtmveRqBY zn;=jLQyT(kqsrcp-Lu2+4ldpff#v~8yA9p+Zx39)zuDiN^^20SMNd@A52R@NY9o0C zo(COP)oN)F|L%6%lqU9oPFG#T6LXgpq}CY8?gp+zd%F~W@nEXZ0iAqrIqc}ZN*k+M zvubu4`Nu>d==>2NV<rQ#>RD+H%BV)1`D<33FE%5TXS^-^jPb0}w|>QagYH(nKmFNa zH#+0Gkh&PWx`)X*r6>d0xjF14E~QEcJ5tmAC>G}qIOEA+Rezs72y|%=E7MIB`5WZ8 z1AV(D<eGZA;xn4%S}1ml0%;fQVpw~ZY;WpUy&d!RFT+jG^;xp4No6Pw8Z@8Z;aT>- zBauMV{dHpgHeh+?!l>lb8I=*<Kc^4|7V2B<>u3hh3mZPZT>%L~JIVZPw1Q=44zH!e z$bO4Zgy{)lg0_8Wj)VXe*sgv;Y>v)Z(1nDySJ#jO<V^-T1o8c%n-;M*y>RwJZ)JY% zbE8<UOxs;c5XExt0@b%okV&>={nt~~+o8`k6mhkqiI)9W3h_Q#J3jQE<;cL`ZSDLD zSE&<k)c8e}l^1*WPOs1GL30RjJ<)ogh$X$vqkB5P{0b$wbydQewtJ}Zvw1Zc^R1c# z*Q}R8{GZBCHYkZl;cqrBnMD!$k8c%n`Q<=ox%I7%ok+DTXzbGSMZk{s!_LqOV2h;~ z{=5`Af~s~>enQWxC_rlG|BShI<#zd>4>Rdhr3k9*Gi_R8?~_Zw7r@!zaNsVD_mdwn ztj^ZY*;Tb-)}eFm=QC+;L6$4X_l>b@K!mq4{UOFTjuuHa4zU=xEyhxBB+WXv1#cbf ze1eR!EXU}>V3#NrZndAtk!znO-CVKKfJ4%@XW|(ssgEUQ!sLw2#C`1Bq{T(86Zh;` z^i~7E-hkr{3V~F9;{#|ECucF7U#<^u%akoNo2kEcKUg*!FZ;XBU9#kTA5sMdk@!d@ z^^RKap-YKV*3e;&#)nTWd>RC3_6#rZqW~M^Cs?7r^7E22ed>fWv4{a<KB$O;=d*Xi zZ4wwtG`Qrpd9a1Uk@+`0{(Ma;{}+8D6$9}=9hEl-FK*l|(VvpjW>+<L58ar2Uv#aX z4jtiU-VR1&m!^~9GM|)eC9Jr)OgZJ?u_qFKDWe^h5ha7Ht5|<qcc<+Z^DoM4^Vr-9 z6(dvsvSyv=O6rp=#oGtq$X;}vUtG<USk2<pe&{V)y2?z+)afe9$sa2BFm)@#YF|GY z`Qylcr0dG9bQi`$@nrH=GUNF8Uei)CUhjTvPm}z!|Kn{ClIa~np<mBk8#RP+{a6Dz zi+G_XGlLzFfF?7Naf1BxsFpHz&Vj*Z{FhO{Z+7SMg4L%6`Ep;OhFwE3*#kOAJW?r? zG!~oO=NQ^DIRVx5i;jZYbv~ABi&P}#sPCY%M(E`ebNdwK_|bu6OFkCH?k>DbWT9jj zt@A0qxM8r)svq|VA$wX9L=x9r{PxIsX_(&Fb3~gNhcR`Ci#=?Y1JxA9&AWIKyVGjM z9Pftz8h;+EJOAslnzIsquKVdk&-``tX7r`Ob`K_TN9DM|&lI+3rvteOZM`&?D+7n| z*^hL8pK1_gSMLcep*yvTvlEzCe+yho=tc!ZdeZpMo;*<j`KuRyFlzDGgH3DM660ZO zhe>fgDiIPoCZ?gf{T3Adm0V^+#9(AA+)k<ZzG_zf?GfRp<CgRz#@<30(~|3}&pC3L zUGN*$xt%@eYOB69FCq01gt-R`Xc%L1pHL~aY?-?}b{j6QB*J947UNgD`atz^qRc$i z%C6nv4TY^fnP*AT(9dcX$-2ju^r9v)7TjNoz*VUuN+iG))Qz}TLC)wlq1^BI(tLMR z<zkS1Lz2G5{7wex5me=8AyVt+;PBKhv&VjL>HVnTH~Qm_=8ura1r@*jk6h$E5|$Dq zh9-V_84t7t^}qe%Z{H(2cXU-Jy3|Q_vh)q%E-!HmS0mv?m5LZA1<W*weRmwqb9nF) zy0}d2b@qWq?%ZcWMuZ?BZu-x0Ng|GS!U4%COBckXjB{dSJ?e*!yP`Xu-r49U6uO+n zkeEwonMp*cSZ!xAy`%oIWxNKTD}cC}pEm@oU!u8Af2p8^9z;&f&)`YU+zhy7k0#5Z zOLy~Q!({CJl&?qiF+J@s^7<JzENKAKBzCwvJ)azUo(yds`TI`5jdn>oi(dvQNnePV zs@0_k?|n6yC75fy?DEC-jy(eg%EWRJSfT>G8FoLY9zh7vq|7drik1AjM=)muL}ZfB z=DN)3a;o)n>(^G!y&MpqNx}YxU1iGg@Kt7>RJDsp2?f6l>E9Pys8JK^MKc6pF$-Ev z`EzNeWw`2tX?i%=t!tcUapF4g_dJG(>wTFS<dYwJ?3RBB^qTeT_D{_DN1ZxpQk?p0 z(<MVD$=Jp14_}+%^NHrS3_I#VdsM}U>m&CIKe@QYdsBFwa=-iEWuz_HYDLC12z$Ou z9;H*4M;u{U&0=W$hM1M5Y~3xf^CQoO-9Y>3{;W>~wDOhnM_ONU8-frU68=YR(Y)9n zM-|5bO$dTSz)~ZKHw7E9|C~v2p4mp+vs4SQYl%v{Xn-3~FwB2How^YSPwZz_OVIQk z$q-`W(|%t1zci){kdij^LHLlKZQnfwlVze|X5w5VTee>Rjx2ikFj3=>0^Rc;1k{>A zDZnMnQ`PI5vl!~g_U$K3aMJB5SpECU@(!kQF;M~`k-GZEDQ*52r=UG<;!w+WWpBD4 zZ-2Wl%I}{Wk_umqrrV%E%?sA6G(~66dNz^8&rLpQ=|Vzr8AimA<sAXN=8V#xxnl!t zpIzyk)cPFLWM<8KngQ1KoClKAh_}?o@jkKQy0+ChBijDa+lixI!VhjPo3tanyhYUd zLUQY^drqB&y+@jsEyH%W+PsD~FXrz`ui#M{SA7Tgyud#|3n7UB_#<!PmWEX_z|Pe6 z%LP=Kp#_QN3ZUcWd#)?-&f=b!^k~>1tWp3=CF=W@e$}f@OMGWjSz9|`iS;6d+~ux< zgdU#ghou30)5!lOc^T=R(b5ad-A<)#^xaNv0eG=Z^b2A57ehwzG%7ZfdK1Sja*8w_ z@453hNgo<1taZQ)`}?+I%v0|uNmyq?hwK(YWIay;D+?H={Qa>+0)az`^rN@jo#&|o zF&^XD+3|)ocY#I|f?KX>g=!0PqO`soe#VBYK=ejm=LmnccPk|b-&Nuo8;@f`=@^`K z(C`Ov%HohbdTb6@g+)W&QBq1<W-d70=#=Hy3<|ll+Sky6t`mCg^z4JKzkJF5Uzx%G z5yzgcB{sm3$Zh_41x__|Zy1G6qE;|sD}<Re2hWrIBy2$VSD%6uoxgn9(iv;8YP(Du z%P=)f+gx-?zx-c9O5bD|vO_+mk!Mc7^=P95ulKT7rl>dD9n>A*o#*6!Zc{+iLr(vD zGOlf=#QMXCRzs#2g{W-$=8hf2LVPcPMJqTT);2e!mGFgouEKwcSW~zW>DN|s{JMkX z^XA*Uj2ZuIMP!@fX_MdZ=yH?7&%0pV1a63SPt%`k*|z2eF9#qx9oJXA+oCqu{@d0v zbHo;{7&0YgUGM0V2M@tq3BwA=v?-$YYj8yOy>`mm3!*@AqVHoawJvwu`UQ=8b6~oG z)c&0q>(PI;VAhunX6>gl!X1MIm$8d&N-p%Y!5>!5$*xu;XVq8oXLYG$ZRMhjNOjh; z=+wT;Ia9ICpV4frOQ^LAM^yh{CbXSOel81{wI*LdT^>xWn6-x8u=3iW<y+pjQ=n?? zWy^QRG~Erwic3}>XvnBaN|vqO+j2ixtg|iEJ-*1Z7-+$2=1wV`T1*`@BWKi`G6tb= zOZR&#-SueBeEL@*>J|%{c=L9f)s}IthnMVCKEqF<<Lvhw26_=U9V-lB)(eCg!+~$1 zMQoY_3~EcZyrlwX@|xm6NY|OcOu@ELy&{bY<BY{pyLDWrMrk?!N#pwXi_>c@NYWe8 zWc*bOMFDn20ef3;^&H*o;im1PWjMwsdn$_V{ha|$S9I<k*;0>+GSj5u3!Q6g0@y<i z>#WVyxB;*4nKGGBLH4Q{Q%`Ce1qn$($dQ{bD08vXk|pmsWW5!Pcy0v`T%e?)|5>P_ zJm5;cJaluYWdoagsAudnw9QhtGsxs3oc?KBtfKPlN(CeQ)8nWvqQ%w8|J`5wLEroe zQUg7(qGUfXMKUZcC%)9w&zw#k`(yf0xKgzVy@okwFfQ~khoO!F@JY&Dbxe|eKs3>d zT}NuY;#>z9)ozDMSL&ikA%aSKw8HSerUrba`E%@#EWH}cU%SuNt5%OmyUgEQzvSdz zNBsCqM*3iv`oUneSQIA5)pj1Aw+s;cg6wU<ng&F4shhaiA$v))o>{j-#$O}xSY8?| zt+;ANe_Pq*Jv*Z){e3GW-xYAXQ~z6u!>GmmsSX}lx~HX>Ot4#eCi3qZDrJ09l@6ds z>FG5{D@`XDx{1)s;!ias>7c+h$39IItc-%o^)33S>U`{FB1S(7`DEWyF-G|$x41wq z7j-_`wDq384Y|*{V$3ADZCZ-1vF0MGMBaTb02AW2B-r`tg!Ino3|7%_xcT7XPk;lO zQjtUM9eu#oCL)RF?o<%X18bDP6z4<LhV^<jjMzRiJnAA@sE*Q~YnQ*|S$91|8ArSg zdlyxD<|Al`wBvGqc)SH$ZXxt2IMibFlCm|xm7GGa7qx}8?vLd9-{g2#%vs<(0W#9j zTjXnE{eI1}93agvg|2qI2nr=6mJPoU@jhm5%d8?vhS$!`-fA{%_N{NbtzzW&2?a1Y zDO-&n39Hlwc}6sTj2Izjn?I*vAv+0!Zug)KrX14@{T3>V1T$k<zxM0tb?0G<Bmr?w zlvVf>h<{$A_rQzaCftAN@N%sS2{@6^y%Pb3?JvMm-2)7Uu_x2h`#RdNRz<z;p2fb` zk)PX+j61L>Q-2n>7Z=drVXuI4@IQQ+pm`aMHxW`e26W2$k~y1}&Ip6>Wu=np8m}+- zw`zM>T3ws<S9PCdgd94`JT~}vPTs{4ae#X6K+Yud?TTe9YI@~$h<Q@$!*$^8B2*ED zlfGRh!+d1%YA%r<-$UJZzOUUgChI#6@@3m`*AW+U5^iAP;-Xq|GJ#Vf%VRqF3SWLR zQCD{jRtGkwHHYz6UK{gVb)hM%9Nhzk`q$IQXyk{3Z1eevp$Y-%=r32h;I3TsVS|g% z)b<vD3x=@hOo2yNLV!$+Ke-?MBo#7Km8Xv&B!^Qi@t}y8p{|YNn7~ANB<PXvi;ESn zEBgK$KJQu{t21Ltq}<s4)H<!dYL~XDteIA10YYr@h<5RvE!#Q*hm(eBaj}Zs+r|Dp zwqx`6Hhl|QQg;fLkUiF{bL6-dW1W;KEG{}AxX&}o;Ri^0=*e!BDDT*O{m(VUL4FgI zkoA5`_*Pr}XYP%&X@sV6)JR237pDaDBl+&1NX|2ueDM81KeOQG%@m278bt0XaSq~$ zZ1c(qc++{5LOR&`GdQkToPyB%$-u(1N<<WyRqOd-*|vxEYF2Ue<tn^kbwWfLJEs^s zlTK;T`Fj^s&_j7@nkSNVQTevST0*YR)Xh{bFGnCtDFe(rrkS&NI`u~xzG3=cr3ktZ zCr<z^t_6y8-(_fXrxrFdFXxwyr||xoz%(4aa`_>&2=Z;M?(Z~k9te{$B1s%@Z~8&4 zmpO#A`?=YgrNx?)k!!rhcn^rXcHIU>5@-k+SPs1wKgYWVghy<G1QF`VuE;|9c=fhV zk9{z;O*!LRzy;`&B3ssfZnjnub*_-^uRUFX_eZW%c@ij~4&QSepVQ^ip18QUuRXb9 zzUX2;C$F1bA+<fuE6r#|EiTy2PD@wFe~&mHS!0||`AAxK80bC|r7=wBFdk;1$qtyv z{w40KWiPPo#X?7Ic*({l_2E6sXLbBIR9RlS_fib|;}dWYL_|kI!ZWP(_>ly1-0s`X zo?~2Ask-QOe_*%P?u}yVO}H^n|NCgZDom$J7mZ!77E8BUAD_dlTO4}3XclHOmX6l* zbfr}1bvR=_lFayfYaljEHufDF0QuxuXZ}0X9CmZ~+sL&myrrBN3YsXkj?S#>?bIPU z$W-BQ#Wa;zq;qkCq2;>@Q6_#?pI|>Id9nC6Dh@xlC0OJimbwypiCe;#h4Hc=BB~td zI0we(s8I9Yo@JMs`YY}zgN}yr&>$+xkN(#36lrpY?K1q}Pc15{qo3M3ffnmf`D2vd z1oNndayL^(&|o(*cQ?kQNdSk|=Rd{|nsp3nIu{tk78b}^ZPVpl#G%o+sZ(JcTU{uv zE3pQmmT@@i)_NG}_iwDY^dC)=;W;kFAVzD7#9Z6N-~6<~A;ybz%zMX<#nP#qTviwc z`}*69olq0^ra;zzpF+OwI}q*VlK}mzf{D@nEzUcJ&_uqiKbd?L^H53G1%LCBmVVy> zf0WCqww;QNe3EyO+JOBXJ9y;b5PNiNgYYxwWF(;~n^%3H;5>nF?cDY@)}X%Bmog99 zg%Mu8+Xr>^7#wRTqcP^$g2H<(#u%<?mtSpL7K51+Fl_`J;Nb1v2V@Z6`{HJbgu)u! zi|kJa6e%QXMyOiN{#oDtk;R>RM$D#kn{^^*ebj(WhTmha0J~*Rix|*co>E!LPFoJr z7W$Fd4fVSi*&#E>yN(8YDd`S|Q|F*;4!KiE(8WDU8BMaT<Tzb}`PT`OJzNEed8B!E zNly-S90tn38t=fw+Xa_a>Si8ftxOqu$D1VxlwHC%YLB&&ac&t9gAWIJTg7e{t&M%5 zaP|e#B{6wQsb1_l&&vb}H+!_G&bZqINj=0)_ssX2|9V4MsA%zUsqj!lWe1S7M?RLh zdOv*-IySZiN@t58W0#S?T@RHcGp`0Kg%L(!7Iw_1psj|S?c_fWlS|?A-QhY5pH0zz z-{T7T3U2WA2%)DmR7*xTu=(BbxH9Lgbf+7a(ZM_?H-V*&i7?I)vD&<{Dz**s=nob_ zZtgs$WrP??cL{9^z5CA8p8!n(BL9+K4u&q}>v!0S<4*#HBq9as@sL!%zsW6s+Xj3A z!GP^Zz@5N;b(Bs#l>yokU%qd!O^|tG7TWVMhNAVBTSgR(kSE0d*X$|y7VSW(A8RLH zzL%QygUs}kPE<Ku13v_-8&p!UoDr~Dp|J?ICD?9bI{>ww>;1d?Bj2OB9NKAanfPV% zUmFO<rS*qh8f6BGF(!AgTqc=hPaS8N3ARN4AvPx@>@poGnxBnlOS03V7Q`@spo)01 zcJ7!)uGHaV!6)uAaB_*2J8Qn^-}mxYPcucwoak$XB!TLlI9pt1nI_(MRCLrKD?}v; zl21tF*kq9vbuBQwAwfx5Fd#x2vBU=iCVvzcGP1!u)MR^H3`om}A188}zU?1WecYg^ zHe-B#?fECz1^K^~{QHa!K*ky)MZ1YO1`@wJ#M~jz$&pNi#F}l%82mfvDFND=*+x$- zedfdJw|0Y!LjdUf)8q+mkJ0JDA775{^bP&-L}l4Snra%F95O0ol*j`90?!N-8FGia z+XsC$bvv4f;ns{ahuhspHWviXcpCR!gdFbgFIP_eT3?_{`QiK)y-^!!*NI=dS+2GS z5Jfg1=UwTax{%C4A=_b|X}LN~W-i{o7rT{C^+MSWNPUY%<@0k&n$xi8xQ-X41kAYA zpLlmwC`=)ZUV`#h95JAmi$a8g+*od}r2OEQPe9?S?|h?@Jv+{2VKqp*9$~E&e`rfB zz^4!Ct9)t&-(5f|MI!8B^b7j}vo7&H-GKKvIa^!Xf9^I`t**Hj#}K~>*gna)#BT^A zY-MI4Fro*+v-Zgq%;8Uq{mT00>uhh{_@J7#wu+1bni7*2!xDoU2B)KMkb)%FGJ*+c zwbz4eBLH|nS(xd0!P<iX!Ay$ppNK|f>l*J!`}NeFX}m^ke=#HP`d(fmO9Utt-gf^- zg7j>_O)VmjFP4NGC!NEfC{S><W0M-^-lMgwuZ!yJ(hVFLD7pH$NsV_O`qYhgAJwY2 zb06Ot+26&`1Af+jTK9ME^PhrKA^D@D|Ha!|Ma2<y+rlJ-5F}`DcZc9khv3?{21$UB zpuvI!Xe0!83)*OKcWnsn?$Wq5Zb4cu-@W6EbM77g^IwluHR@s4+H=WXbIoCFIGd!T z<ObW*1>f1*dlK(4H#a9h?CkGj9?~rz|MTB)aEag{Fr{yN=McE~yawZz0Oz;{Xnk=R zU?_g4^mi8n*#1H`(;38lxg25JSoBVnVzs*ROf?lzC~&s-GP^@E%bVxOSb*#K-{rzu zv+Z-`=|i|$YX90auRg~>(;?e^YDH9=m5Sl6w)+5dQA@&{E{vMlYve^=%}Wp?E$o$U zWh=FtlNsq7Ef3unWq(;?SA}+PmhSFvTwj$=-|%_d-Cy=sDhOPzN0M}V{Xi-*F^QSc zQa<MI;C4_#RsvgJfg<9K57E$HKvli?X}=cVv7f~tuoBtXi-f{V3+)c`o+9<all!wd zEnb<Wx!j5q{v@UbRGE;Jrp1c9xS9(7{mACSU)CgC*Rj!y@B0F{KCsvO+u_0@Z)Q*t zx~iJZwPaHynlg9To}uq^MlXq62Vl?qe(0eh23C2Y8%?t1vF8u<<FUh@zD?5pnI?z` z<{o^En%+}uNX_1Xo!5Tyf<;B7YGZy(v()8>QUU+wl|t9>0#vf}#vAcpH$MkLh3@%L z180@>9ZLP&%e<c8`X+nJjPC6(QeguU6A*QUlEUcXa-DI@sN(l;)g-GKjzDR1c-9sE zoGE$cnmLn5;hkZ_{y`fwM)N@2xHf2aA~yrdb^7uaXtUef?K($T;5@5giEUl7G{!fS zq~Se{nDx`SlLX4roU?~rRx#`&h#@qA5`Q-K><d_E+ZlkY(jo9?y31o&4&^4KCo!B; z9cFR*mp`B3hoHT#wVy1_U%i2cUe5fI^3J>B*U^5)fiHkpqRz5Bq#`e?Z!|4Ho*b?q zu5~9!X7ch3F*w1ZgdMGdRH{E^_k^4W!khUGvyZ%l%(XGqG1PaR8~NX>W?242ua+da z1c;Pp3y=E`yoeKpeyfz>QIOUH&EC6BBW=!GCqwo9=WY>IHZCC@JBwFGfgfBRL{m?L z*#`SB7Sw1Wc1k3ql{1W`OMUtw>T}rhYhSox)4JW&mG2Rn^B0?s792qV`=G@T&!K_H zMwJQTe;0a7Mg>S_%3X_jT9__YD!W3%pTAzn0)_T3C{rpHLh-y^i-xTGAg<WdhfF)2 zyE85}^Qp|Sbl#(H?cZ2b7r<_K`&_l#Wo$PegNYs>QPObqC3_WxbM8jeh#vO7KsT}M zgCvi_g_7BlI&$mRkXF7r#X%v>n<+?8eX~_&IsAK=d;bcdz5%7&>*w;>7a;d0*~_&* zzAd{+>E*q2M1fPMCl-GW8xrc^_J?l%(!pq2jQqN*!L4>@`K=IUw<f&!lsn!Au}3b) z$+4a52sg$>L#toc_o7)KhDYKxW_=2(tncD>Mg#uRvXqx3U8TXb-5)K)kx$%Lv`#WJ z*LEZxx$G-4=9DMdj^-kd3~6pdkpUmdDF{2#wJXgPi0NEPak+FnXYkFQLPc%PH4k6B zY>R$Kf|`@sqwR^ysTN|pwvzQY`0vAr&I80D9$|5KAQ`a2dVJa>`7c3K@yg$?;19l9 z5mU`C`8`1KCOO+Z<|DYUR`=fve<ru%<77_Lv|-Hrp!|k}r0#^RM}QeB-`P*iXF=3M z#lOn+l>_!Y_<{vR|FO!Q<wP|M7;yvoW<V9sZg~%r{BdFnqqY$MXurZQ5lB!{fk(5y zLo+Bn^}g&MSGc@Ige?Ww&PIV<G5I@9Y9|)O6QX}tG}fU%TgrROu}ufWL*XG+L(e(y zs{~FvPPoH_Kt>Xx1MS1@(}FNTss;$PrJwCyHiOm0N<}H;ie}5Oto(hM>t`w=kJkAw zEOOApi0AByULC5xpU@bIc|sSB!Y?j|l*!*Fb;qJ8i=b>*7Hu&NDd$wOv3?MZ8$Po_ z#-BouhR+)l^;U)r>R-jlBn*{QlcNB8jiQBya=WDuhFs3yFQ2^Lk6WZV?n$b=TTA&$ zuz>3@;}8v$s%mPF3oaH*_>M;Y@be4OSYogvQr0>DnV<fPlessDp+a@xO70SlA?S6{ z+bBa<wkHtyjoEz#zL%{m!}05?jzflih=Ml3iX9zLJIiD?oO@K$(dHmM_QbC~oIQC6 z;7RrtN}&prx!oy?(gww3#Aneqh*y5Nw{DLVX~3E*T;(S0F3f*xs2pN94R3FKx&L6% zjix$?w(w=mB8@&{040a_5#wS+KRKV^-&=2_YBEM4RK4{z1z$%0T8>yJYU+zGHBB9w zH^Ibp7Y<z^#`d0y9D!&CuATEGHXx9C?u5nE5cs~l=jFnmdmR!R3xhb|ZtW4>%Y>b( z1xfssnba3Qs1_u3&mVj+39~seO5a>S-Xp;M5N4F_B+(5pUeA&EN(mF;^oY);S%dKj zr<XMBzZ@DM5QC_FJH&M>QkX>4CuUC?7nXO^m;9teAijM{-c2JO)E2lit>!|<#$+dd zMG3LfQ{^D2whNK`YA*NiHjFiClSrE4CmSDb`I4DN4qAGFbChp>{snX!3~nF+9CVtC zl$)?Ek&LL#w|eL}ok{3aZRYAwko9YNB%58$GO7OoB5yq|XI8=1V==Wl#2MaP^SdMd z4fv@&RF+rMu=da+XTLjW9SR%?%06Cg*PJgm=d%~xS1qiSv>p?I`z!Q3=s;LSOb_tf z-OlLNy}j109sx=s+?jk=DHVx2kH<WP3!5HlBz7aYH%G&PKa$sYP$<Dz5cKP^J_=_a z0?*{B{eEMz)NGe;?c#45dG838cp^MY=rjmP&t=}mP62?8j^<3Td57M+!9-P?#-Vhx z<ei)ckHYnJpM~Js86416`PvRd-&_(>>JC>fVDm>q<R+H7y<^b+4o8JA&=mz3Z-aVK zuGZUsy)U<GqsgJd1=q{F3Hl|Cvn8I*)J9num2FT|h9Qz2XTK`h@tFvPP1}pKxv8e; zLZ>lRk$s91z!JRa@d2HvHKgvxF$lDEVHf~y&lI%{EMH3Fc+}Gvy!2?PMKSy)qdE>f zvAeGEXv`8qK?IQq>21I*YK;ojQkNZHJJyPoJ)G3AEvcqK86&e>h0%O*LZd#QMGY!* zCaFV`94~V|Y1GEw+-YndM<iP>EH~&>?se;&g~=6SI}!8PAts;=W={&XEL8JoMISJh z8k~ZYphb<d_TPS+FCg}B2U;Hl=jSZu)%s-~l_{b#@RKBNU_-KV-l<V%pT3Yj)fxyN zA#^CFb$`>RtelO6%OEKVx7{i60tPzIEmOFN<Whq9brxSa&(&mwOXYKPe0Zb&rnA{s z+dU#U8fNuBtrlgBbG&I`%_8Rma_r;l7n1*&lV?coGbtr{l;-=Y=WGvmbW`5*k|zBl z!CE)__genZ7WGj;Bj^}JZGCYUxli{H2qxzbMOtKn-2CHCcVps<EF;+V_f;2s+PR=Q z?Z~^YjOL&@wyisKyiH8ZahX^LYEa)rQ44zP$JwmWdmGjml;a{i<6>cYlcrE}U_pMl zgEeElLkf-<@`Cqm^U;DnWFVa<08EO#7S>ZZ5o#A?#(l=Dm9hV|?-rk<P&@%Y`foRS zBMp78{dLJKE+3+6STj~hXx!30HB4r41P#!pPxTa^WmHBKNk(D+IWb_?R`}N2pmN0z zGK&7Q8E%`7U9^bIC7dN47b^ehx8Yg7Vf;Ge{qa-V<i(wv)qr;d9v>d32f1kTtcMWY z1mMRJyiRw$r;G{wS=3xyr!vAnoFo?Ig^b(>W%X{|#Kr^w+mQn>z(NE{2d?`Tlr!7n z+N_vAA+@;f7anrJ7z5x|jNRt*v84tb^;OiNU!wN6oIQf>{zq*5A8c8y<Egd<#rN5R z)^PI(g)?_<=`R;4H|NL_vxS%IBdrZK^S?N3_hA8LCZ2~8{h}+}^=^)S*@^d8xDVdp zXvtGY!S(5J0BM`gMhkLc?H)3gpOA2XXZDDIZSAE{%`HFcxc7(v1MtH=Xszq{q36gN zpFbm4XyXF3B2V!;xEb~Jm4pm8;Uh>2*}>O)Wg&$cfI&ev2sJ%t&L?$4JsITJy4A(v z%;EEWbI=-PK2B6cTd{V>){Uq+X!~ya-+%=*;Qx;JKjFYBxT`TCCg(&S;ubsF?Ub7& zi>q#NJY~!Z>*|v~oPRbH__C=;dGtQ>+KGWQk<rK?7QV&0M`zL(RYv7HGyr>gFFpC& z&R!woFXbA96)G~S;!BFm-#0$#B>WFs7i1HFT*IHbSnZ6|YLx=l<UWK)TlZ|)pzRyX zd`4=aiwCN43a8pvz<NSmu^A(NbI{fenGB(if>_el4VyWr!%(c~m2H$5GHjdgt`{tZ zq~`x552rGAk|Og^9rsgc==b=au-}CO;v9Daty?0Mn<lyz<A&_aSX5;OG^o%wr|i%f zlkZqkv}ZMNbH2ece}9j<FO$v+w0fK|{Dg`euyFNvSs~pc|1Ip^e!!m%`jX^@j9vhH zA^JXO9jCHWvt$Y%u(`kq2P|CRL&<_Mkgp+k4|3Za>CZVjk#8k?FGM^3ievPLP1I;2 z6k-ji2Eb8VmXT0G(C^f~f&U~||LvT*vYi8^|3z~5T2RKAxE}@Sk?W0ACfu?R1PRmi zQ^qt1`d?LH&H7+E{UjNqnG9Gk2_cKM4$7N)-_W=yz6bvFT2RLUwTN1M)xb~uq~yeM z0Vke-I1$SZU}V0ZsO*w{x%NfN_G7oBc|R<cQgzH)H$1~^Rv!7TtPd7@l`DqiSK<dh z!8cyC7_#r0U;^TfVd@Dt#>6^WUCl+ixWOMKsDe1{>4ny`=yfoegT`>(32%rkW&>{^ z2M?mNT;u=4$^P%G@f*%@i-onZJWcw9*^iLjx9DQ#<(y&xaA^|;DS-!JGOl_WTP0H< z??f~`s!eIiXM(L@p9@aW#gAG<9tj><>~Z8m=!qZc6v<u(0o@%GuKojLU@v5YF_Q!@ zT)>K_^Nsk^H=j&H$xm_L@G5E2A};(tzb1SE`X9@v5<^DylTP_kg9a{|Vj)aZHkr}? zjYj`j`QsYWMJvdls*F`gH2GRi;A_Mw?!<S=T&E~O`h92HCGfBPVng~BvHf_%%Tv2` zlYpOgdp$d+>(=6X6KYgyHHbBgYEM!R`YXoeFz_Pkf1CA?v0yeR@hW(n;Nk&Y@VCbC z7h<-nj}Z&d$u~psy$vkpAR*F=@jSdII?|8r8_^iR)*V+2Bng94;lE}9Jl$xq>%A~^ z^?S1J^0+6rhKn9AM*QFT`2WTnIiBhP|M-xV(R;^))2(ly$fffPlG6`gvYaOk+Eqhd zt8+`zXOhoe*;D+mZCvZ9h<mUhhb0zZl^pPcY%z`S`gL&1rV{?lRkha3;{RudZg0rt z0Va*lr%+FTeg%|5^~3O4(aX!6KEGSv3->}qZ{t6_(4_`_RR8uw3@ECTqXzX~G_?fr zQfD%+J}0sOeUmPfy(X{#^(|Pqzhr(0reYRDWFznuV)6f{l|R)Ko<cCyvl@Y4{1T#_ zUPFJoxYP4&>J=lgBP}(ze^};gIKO1Wh5Z$q(AF66uu)iuZu$*!K)qoLBvu%yK|T2z zKc~OPxx~s+sNO5*c4RNC%2Ys%?Yw6fJ@HQ^<5b~K;mYzEC2CL?wF{hNz=9*V_ceW{ zP~U|iHOSjyBds%NNtbO>3>mS_=k?RV&HMJ=3(=s(<Y%`_5TW~j3LgKpCoS=tx@aF2 zQeI~BZp}(AnN=6Eb-de@ArL4&_uQ+A_Gmo$NcNVQaP7rpPIgw%N*772^59BHPOwm| zLl>s|duAKkIfwB3GTB?-N86!aHfq*OrH(pr#<Bt<VM)9e#&&uoyvetvoV#j$2o(4c z#cN#WP*QHvp@2QCmoz$!#i3tQs#o$s;Wj9mE9q~5EOw}l6cRakZ@a&2VSQLd#k?{G z(rIlywm?}fi6*+GkEj3VKR)&hK*w(&gL%7D%tiDJzU^)Fb*0A^RWZkgB68j?SkZ_l zXDxBxyY1XGU@`uOq}KhOb1B=@T-EBL+{DAVq;q0jCz(*PN2dTJid=0uB{Qyd=&*L{ zb?sm`)5qH}(Qd4-c;f<x8H|GXkQ3|mc=i|AOZ8j~B*RSSL*-#&#kG1RItrzRyf6o9 z3sCQZg%Q~n3^-~F>V)xSfepX;k0(V%*c6x)rt6?zx$O${odF1JFD~b5iNy*>Qu}?Y zWA&=^<w}ob7r>3Rz5ibrc^k<M!XfE-&kCXV!}7t`H0|F}9*=Y7wbQDR;^&BRnM21k z6ueJI!$sbp-LH;%@nevXV+x<m=kXM|b-1yjxzBIy9Ww2l-Z2kpNpqMYl>4y}Os|n1 zF`DKb;oEW|E?!9V(E<Ns-^$uf4xWYT%pZ)X?wZ^jLna-oDoUOEfCrtbdu`WSg;Z6T zTv;9=nq~DTYftg>X})WmI$K+fB#;QFGZmr2x#3zs)7FV;;8n||-{*1Wd$Mor{9h{z z%ySkBRAdLi(QjDj=$tq|k7u%Y{6exbNr=d!JMeFjiXYToOxL@}ywl#iQQ~ku>nJo& zMz^j~yxA$(HW@K?j7df3N>Pk-eIc|FFNJ#ZSQj`pKbXMU_wC{FHo02vM2+oLL5l63 zx=<FbR!W%}B<^#x?XY>OKL>c#FJ0^TA9rMTJA>;gq2Y*-xY<iSTBfX{u4J4GD1D*@ zNcOaCi}zk{7o8+IG)L2t{5a`*s@fw+n$yhmq^R9sS`$Qr{~OoaXMW+bs-Fb=0=NJ= zJcm66gdBGNkT{*mFc?v2kQ_Ve<aHh3wLuFgU=@8I!nQD1W{E74S(RVsU6B_k#*7Po zArg#(&0O^Pb%}mU>1<_f6}69p+SjSlkj!N-00%lfW_mr~P{@%n|1GIOme6}r+%BVY z_!9+EP9xniQz+iJ4mPq<ww`eN*!tSGP{D3|KD^@cLfCew1qw{qb6ih$27h5AnfyaA z$x(uOd4GCSwA(rIV}uP)bn-j8NCab%nODdMukHNliW_9MaySwQ5J$5rSJ{@D)3|4` z+fu7}zEpJ@?z(3KN>nouPPiPNq3JqKHAFFlx~HpO4dDPZl6Y^1r{Z$`R<)9YyybSA z6%B{#Up#EGUH9Zh@`t{01Q7`$=?k&F5fxIN-+8>fFO;V534G;BGhHrQzMxR}iy&Am z-LRbJZCvLWYRAh}M)2&jt=ZzEhIh3o=GVb{9Gfc0I1i1?0Chj1)5Bd&_9>|3VIo1t zQRWvQ^EHV5FRC4Rf8L;2Uo`mZPt{PSAzvsR>wTHRSE^}CTS7kP#%sG(z4gGeN~v9* zyVF9Q<o9(X{s?+sPkB~Wo7pkVOb)2VDceBK59!uGyP?g|RPzd|!ND;N7Pnh&arZ$f zim8&o<v^qB8gxnD+^oCN%pq5+{Mz4cZ6n>8hT=_a7fLT#ZXjbQ!9sUf>@JLLA|*OU zo60@olam4LefNv#2)-Xlq?yIn$4jp4`+HnerAYruHmLif8(g&9H*WUJ2g4XZZbRnM zrB{hrxSA){?ScVqmnfOrd%>v3>1rAUG|&x!Gl(ZXWl3TfbUWIyo7_jIwl8t;hB*Xn z{nndqD7XpA=?C~-)p*fdPmDOrGj|^DId6MN4$$ts%cqwh<C5ZFW4r<d4!1nsf>{bT z6QNRgE3sYa;leTI=cC6e%S8%T6A7_xjd53<!!LI@1Z-46;*I5pK$?hb(5yb1^LF8A zc^EK0mjaVQtvtaovCwpm*yg?9s??MnE_|E2WMiWpS$jy;@~8jnCC%Q+Qm7dpr2PuN zq@p*$FCi{k;P}$2a0aHf(`?H&oJ0kDadC}=aypyM$n!qtrc+B>rDO_zjJ~!ruJd}_ zpXkqA&|9EB5!I!?h9H1;T&d>M+Pq)Q3^_{`IwB^)Fx-8$C?z@+!P)>_15nCB;={5E zuak$^b>WQchXp5x=|@mo`&3~r{N%A?hrIWztzV6aPg605mN4n$Tsod`GHP|{#=5tZ zaJrN9BQ74r$kaga$)!uGV0DT{JQI+PhnUWui;CP7QFKM;7$EM%yqB}f78}Qc;EU(X z28p4Br>JtL2OxAHx6ci6Dl6dRZO&<_;<e6qziy9t4W&hYvFN2EXG8n;))YrXfgd&= zm^x52anF@*Fd30eh%o*i`#jTUh<imUrIWXp?*<xRH?2~u2!XGIAu<A@>~r<^qR03O z7%tO)QJG6cArI9e(#Q)KKIPy0CY40rp-f>@J4lO`qK6nRPZC-0H_bED+?huzVwoX( zpjFs*{%hD6xM4AKw7SzZ+N<n?ZgfvQOohP_nI#C*OAGpqBp=rpk5x)>q`Zt62R(wn zReo5`O?3aFU-kPgRHw8!q2V0IJNL|N`eZlUz?Su6*)tbvA$uN><C?6`%?V>@YRn~> zG4xnJO%fMo&Hu2^N6EWS?H^K(+0qj_p4e3B@GdbF-eAcx>y+HoCX|8)HB8KZn>~*F z6fNboEVH~uJ3aw;GqMtRvA=43vvV@Xw3BBN_WCusp1xXWt3v-<kxU8W^d{P9qnrx8 z0EioRRL}|HM#<$CXaV{>Q5r7X-*;Y$@702wNWX8-T!niN$$=(HmyAhcVZ5O^V>=wj zD6Uobgnb<|%Fp^N{k|5uSw!#DuFmVYq&yrSv@MH3Jg5nS(?aYk`pIXxcgBAKg_GmM ztVBdW`k!BSyf01evT(7C#N-#f^l|SCXR_YBN>y%nKH8uZfOni&35oe}e%ToFK(~z& zuPYm#8}MU-+KMJmH~*3RIID9An(F4X&_;lbB+XlA?U<leEo`VlbiViqt&l7-8jv=E zqiMgY@usncmdu=(#*3mdoNy*CZi!C3@M~`iEo}@r>~+7<CY-GnSAaYBHRDCqxFaEL z!Tx;_ES5Fu#zeqtNNM`83nPqh)0Vud?yxBH-@k@R0d0=R!k-R3!nk{g5|J}dq&K9! z4jqx@7DD&0?_&Q3#XL$f&;kQ>!{NhbX1iw-Q8x~=q~^CzWpXx)LwI?106K2HM=ow> zQ^p6xwb7NhUJ3FIIn8vtWMvg?sKcLtC6P~50@x=N7|y7_$g}2B2Rp3k++fKL&mt6w zxXk~X=(yuNjW*`mu-zZedRVHlQtFzxJy{8UYW+C0eX1`#1DG~CV2L=dQ#&lzs{p7( zop41Q775BNAm)Il$2d;~CaR~_OID)}ACGFgxl+sB;pFZJ60V@#kyK0w^1;6PX)^Lg zs)avR%F|?HZsS^JqjoQs>Mv7y8~b1o9x1mGfjU@5+6z|EbiOk7?30)D5<@z$YF&b( zdG=G!JChEg@~Q7~MvD*@M)7E>lhxz+4YEdix4>*273Wvx5-M^4#WdMp_4xf~=jW<o zMsK^mFp3DJ`zZE)aVeayIVqO~kUx*Xd6~IqN!*P-)0ol)7_#qn<Dm!&s_elk!FYD_ zz=PzRu$m!>l;Ax8QV>OuZRzY4uYUK)f7=wDnY#1auAn-5?z4jK(6EE1!Z{0{=sgtR zrxt<WpcCnPQkxZZG#zA%{tzd8HKc`ld^g~B4Zli>!fL(u*QR>t<TOE<OpM}s^Z4Sq zimg5t<yT2v5HP0k`(rHAt;hW1h*?;)^cxy6Q%3RZ^=KpfENW0#v5^!ffDX#mgH6jL zR%f^T%7F@9ckW_%g$35Ugm#0YTCK*)N=JcJ-w3IlO;`7%+p5?XK`|pT5mvz#wSkvr zbDH&zA5o$|j6ebwCrie^)E|cPi!W>)ahN(y3XnT1$Lp3Rq$+7IrP5<FRzE_$zl+&F zx4eyFo10)?@DrRIFoj?v-%}~UtK=W;L0;g5joY)vk~c{V9MRkRFr?Pw{!77^?m{&6 z_z_K@_nP?GV0)`x7~t$eF&DY+EDk(PL5_jdFUpD$a)`}|RPUCJP!TrCA3xuHML-;D zdjid7TrAt-vSInB#PebqY&^6HiX$=MvFR2%c-L1KU!MZ4{uX??tVD)&AW+1h?cna4 zn~e+7_U$^R<<oJO&ym!g*HQDUtDiSk6!-qRa$tTCRO3+&wW5SLXd@Den1>oubs`!b z8Y_dfk><S10p7k5N1%sBt7i$`-PeJJiViz2IFA;LE<Wd5)ENMc_iWmWDkTWOzi>r` zODNBysM@mmO#m-TG%Cl^{w?km)uT*&vlux<x<2KoRq`tK7G*V~+6X$O&S2_hlS5Ld zPoRT^5KS8GfO?SPR@8={=+d8FK-s_xTRS?IAW~-}HMV_0rblWg>9qC|udjF)QSOi| zGfw$8`*G(O6b|M~HC#dOs2F`VLu{J)sVZuxczD)sy<_;$DFV3MLG7UK8hHmUQ{M;W zj`0`RwC7Pby^xy-;ZDN38usaeGhESGPd4iw;^8gm>{4f;+IhS*sX)|B+vFAkjv0HO zNbjs)i1eXMU*qkY=l$+fiLN*{_4+*gdcZ*fbdo=KSA^;iTj|qPoL7Fsk0MP+iKSG} z`&L?UL>xc%Dtn`1$05t2W3+fFM7_Cx?jZBV4w^p*vTMX0_xB<6({!8}M>f?eP-}H4 zD|yunQP}f+qK1b1(0>s3N42(RtQor9V0Kc2bj#rY&Aqc2gCV$!hV~oKen#IRSbF>G z4c*b%g1~lFzqSyU9D7VrF*3e|{)Ig2PhccK9En}AWPXU|#@3&BR16a;c8ILxujCoF zxC%i)AE8;g4p~~HfAA_%mq9M5=XlpFeEkr7^%WA;?x-Q>S5k`GkT(b>c;R73H!e%! zET9$nVDt_#ai4UQE^-^ORh6*eqi02O>2T6-|Anq9@;+n10s)qgfExHaRpua3ttap2 zEC%=%xI}FWU={?&xH1nvrjec+)m&(G1T2aI%ws=|9lv2>QqzFGYxLIidaU;+4INxh z`s_TqNXtKYX_*wcs4?Nuhs%G5z)Z;^dc37eGqHV6&|QN<ph|<fFYOp`uF)}J;XUWZ zXEI=I?0YD?0}6N4cJl_6awq~wEdVVe<*FThnvte-WK$^Zr7vxa$7irbYK<2+SKwXg zR;H~0T~*r2kBTeJ|9|#ZfS-%qogw5M>GuEc@_r@8?J8R>xq$u7fEckjsnG4NF^<VJ zb$#)u9jo5?x=Uz?061cr)IQUrD9X$$@`EYa#KZY?fSy+dk!HF-1=E5$bA+pc2Yp&Q zmd01HoSgKatx~!1vwy!<UFG$cTHS)V;d^o|yCtGMjlfoFo~q1bK0~^}{rplYLUZ)$ zFgI;D#jbs3lsd<1MhUgc3Y9lYh&Am5XYp!aJ?!z%hn4!won0fnO63A#Yqh?Yn9ozf zlWui7xy>g3y>6-0_6Q4N^Z)LUAk0NN95n%nL(=(ne=hiW-FEjX?S9KspmBtsn^7E5 zv9Xjx={tlkT;C>}j=&A|m?venlzgM2a^vZVUYDm=O?H$ZMJrX>^daG2vCx+NVUk0w zhPN0(Eglj?9@{&Oztb#1Ht7ERP&jo^<LR7V!x5OYoUEoY-WXl`b&PY>TS9}?Uqr{} zH6^;_Z>?E5qItv7guFj_cf?82r2sg0!h4ik0tL%E;%9U^8dDJU=bmnLF%y9Z-Ct4C z7IvE-1D_8iXiympZH3J2z?5DN6=4VWNJ{TEdy)<|YXleS&lMmrsv0+p-a-ka8f;Ru zW76jL?ne&ncW$-4@+uJB%eX=?rDa@+i=k(q)MU{l)J^_UU~~If#8l0Y0(;X`eX;Xl z1dDe;#Jf4Fh0H%56_?t58sK98e%wFIOkHl|;Hz{M<i3vM8bS$f;JjcOXpHS-Fw00v z-MxauFSOkx)|f{bckI><jHld71K+lgP|9dZ(eS1BbhCRyXIVQ=h<S1fQ&W=DN95=_ z*ifUQUszs^PN!w;X4O?CrK+HJdE%kondsp%hh9q3hUX+uyU4S=`;DSl_>1HN<sgb= zT<fWSEI8EaoTRTyDZl*JtW0@gN&{4LNEQ|x7_l-mX9rH?t8ec-^y}M<)H_b+i|_p8 z#B2h|u1kJNWFEdeRKM}Z8n#xQFHbG#p<#-)YYW|3gQcq}YV!V`{Pp`4f6-td8+P^; zn)$Q=wW#*fS_;i(7=5)Y7!7kAbx^nlmAuFn`iAvl<k?&{FS?8RQ9+SZRDqQEo&Dij zZHM0MMd~mhpga+C?ev9E`gcD5(qio0+}L=`;#N-a;<c;GZdoczoC;a0YJm~e@lnH_ zX-TNaT_gU;j|H0WwuX;n%pE-v@jT(dnp$lR-BM~$O9TeOJQcRtCN91a%%gWHGTc`1 zeogMpujIY6Njx#fnm?<Pzun@L$8SAq?RF;wU{`!LXnUWN$piq)$X99n2bdH;#<Ycq zP-7x7KE=dBal;zB-TY_609RFoyX}(d>6M)<x5~KG0J*kxak!j#gKKB80dv@!93{#t z7a5+Hmpx2M!~D`?XT{s`YnVe^P4%fvw^ghZ_omi2QCQPt{{N1pjsTjKjyeh=z!lD> zzh^rAbgGBjsLAhqf7uoyH%>kEUlj$7PTM`=c}4}{P8OcX2|TpsZzPfj3bE=i4kqN> zV%6e*nZ8x;jHdj3PK}9Y4#dzQHG{3{4vX(=N#+UoAzK3de&d+bH`E!%4aTe9*aa(M z-SU|!Aum1Si!3$|DCiT(032g5R}qaPh}Wf|xqx~Dcqr+fY8OuFj}&yu@V}D>bN&IE zc~9r+@z1K;1ZldhALQRGD}sIg8B^4?*TMC-W8D$Ck*028V1_K~!QUg+&gG)8ec*u9 zV}Q&@HP}#_=pak5$<RNuBk>2zU%y9U^|v}Nhir6k+<MZ%pV9vL585H=qB>=HeM$=9 z-!u?Hk8C$Zy5qF#3+32|-vWvNHZa_$!Ch?dS`^(l<JR^kpiPk6ui@IOsR6g;+_KNp z$YDwVT%{#NjKEJreL=5m7^d?T8!*Ny8ic13!gb9lepKp>469LqFudLilGXGR9-T4j zo+pj#zO%tLxrqb5TxBex)lqO2;Y|$@v>guZaZbfFAZ>1F{)U<nENR**6Xp?Zz@LxE zuG4x)<@-2z$~UC;fy+)mRma=ZdafMn(r5r@mm<pe0otHJF!8CPSz(~O&e|HO@j`Ui z@~FonP;bgs!YOVdfpQwHU$X(y6gTv_Cj~*51^U>Q<~j5mLwe`I=hfZ2x8VvcvhdW{ z0-R57Gnw>_ia)m}`ec484@L{P<J#<~j>-Frp!T#BWu7U~dR34yi6#J*ZM|*OF_*~v z+f)2k5&l#Ayg3%1t^tM8aIYib*VOeY@o`f3tpiBc<!w`~GacBEo$aEkWYX8S$)oKw zwJyY4FdH|U2Quj3W6$HDq#K$V$;@3{l-;Z6;gQpTczlYI(2LD*S7K7s{AXbSm_`&E z%XWYgfQjy-6yk)wiz4Bo$is**9H1i5y?CA_xRV@-_d<b1Q_<l)wtMHbn}hge)vO*Z zrJxBiEi#fSh!A66z(#aru#OzS&$1IEDidcwf^%-7R$lH);}`_wF-&HC&7Xi)<>Q4A z^=I(|vzRAr_*H4dNybW<4g{3xGgm>(w+YZCzOIJB@@%{WP&ZC~gpwIr;Y%Gm(*qL; zV4v(TO08!O?g*RF+&Sy$qCN7|jQ1EER_*La3FNtn<9PI+U(pLWI>g@RR=ug-dkfa@ z5F-qo)ZUuYGEMj(3lseyzhVNS?bsKe)B1~Oxb+`8x$x_F$vG;(cP7}UGRc&=j7uof z&Lg({>BZw2*m`0%&p*}|MDYHc$Wsuf9DDlU3fQLa6U)5*Y~3MT37SNep48(rh+}Mk z9zlOF7h!}itgr`25k{7+e(;G6eC_%Sx3v>BV(pZwZEKOsFR~4mw0Ht>#{Rv!=|6yQ z!+6DLf>7(7(1nL1&>51(fBB`q&)YjTkAg~WSbNnm!5O=B+$Rd0&NHTQ61o0Nwz*n< z!;RK}u~Gs}<7Ox4u6v5)#OwoZpgmR8<b%QemyL?)+VA>9Yv*O7U}>7GtE_4J!e6Bu z4hX43{tb3n`o`0zagFW9CUcdn#u@&}Av3naN<C+Bm<DXU(zxb9h-7|zWyNYE6#CEo ziOg;`$NYzU8EGWru2|oHci{Zza1bd(dhXeNCus?%;YZ!D)qZPIzveACFq7--hK9d6 zPJi>kDz```zCk>wd84H<tcJqhUcP8Q_(4O5h(RWtD>%sVl(>Q-QPRtt(Sq7HT2eh9 zPIl`Y`8|KhR<ly>ySzcHp>aJ;{Pm&Samk+$#7c<30kI?+Uj&30JsP8XVuCQ#m&nVG z`O=-}ZT|Jc=#a`V0nxkUvIgo?gP%O@G_+Y+rp&10T_{F}rpgg;JysK%oCj%AWQR0L zAk;R1S)<<z@UvDE^=SPz(dz7f33<A*1_eKA@D^a+Uk$NV;ed|?(z@C$JJ!Ae+q#j9 z);KcAkXwc@Y};0XSyx$Pig0&-7Iu#CXV1h7<l$$}9z9Ox0*crPftx(&xz#1P12*lQ zZK!L}A;isf+Ijgk{&$`ESG6{t7;ffm;`Px-v64h%P^>^;65i?cmFG^GkfdWK0lxE` zmPC872^dZ5r6v<ggSZ#Wq3+okr$%n@e%-Ho$yM1%5#$#N+Gs|Q(m*}1G!Eh+SFPZf z`2y>t2p$%{gQ|Ndy+<;+T}G7?tr7WtU(t?R>j&4<21w3IKcf;9@h9#^culMJVTIHX z#Txr~)-BN^uvC~Z*)gCL?Fwct9$*GTjKl^_{4b4l&jey)4eosmui+^A$9<F-eF@+g zbVKD9?a6=~31Xl*Nc>!e+rnnFLH~MoXecrD$LYJ9j}L>|e9YiMbvt>Ra=koc8!ILV z^YxAPYJ3?|cl1uzl{wryQ*0SjkpN7Lvx?h2aPfS9=<4J|>|2`_E&rX4<Td8%vlDR2 z`2!s)O4{R4mh?c%>DuRl!+7%CQNr*`;C1}oYdyM+OxMv!<X3k5uDZvKH<kDSe%6f{ zKa}%dAjn)Q4cFd6KRIdc1CPYHI`L`6cuD{#lb#Zo`kWxH#E(J)&o@8N)cPiL^@|OB zv%PT)(Q?JkIj3bq4eVz{B{2}X8$hlqB6h-1M7SNeZ!4=*hy1#IF?5e|qvcR8#qtKP zc(!ve=*L+s#`nWF4rH%Y>|b3plq<J>J{`Z?CpMO-oP+Y>v9_`?Ckf#7O#sZHS|)6< z7eLN;Vu|i284Kdz<PAPKe>_=r<V|-On*`Vs0a6A?4P^<S_A$VSvXmn*!@p0sWl3Vo z#w|PJ(`|hvZ42OAz$+jkgrfq5@S3@p{VvwdV2ASP4n-{+J{s>Yi)7mRJ%=9LIsHrD zDy8O}Zr#Yw2!K66_r7fWxxn9@NIN-o7ljDivuH_*rI_n-{ke1=Zu%?hEc5j$S7t2b zXCw84$$~)FN8V|+j!A+`wz%h8=aPE>I?qysNt?&wj7kl@qZ;ipd9CU$M8d1G@^GT2 z7<f$HTzXvB;+r?Y&b+%Iz;Lep4nKOIZ67ZH(A+>I()tihCl{xO9B~+Zo^rcyl51tq zvQ3Z$YJdz4Uu`b=)ekR7x=2L}A@Z-PZpGod0RseQ930dM)<Tl_HQoohocjvhqMI`o zXy0LF)2-jUy8gVvdQ)DYM6Ksf#z!%3ACa&8lV>r2zZw$#Y#dO5*~-6h_~wN;6hIQ= zI4xFjX6VHId-~-eZVudYs|2GrN#P<Ce@Q~6o1}|@Q|yzuRQzuL8}K0KJkp8xyt)&G z_>d#ujoj&qP+koa%`DZVq`JINVD78ojxh})ltK1*sfGijT`)(4KmVlq5k<_lFKKcJ zr!f!1L!{!i{dEAMJgz{DQ!>9df~NAWZI3Jcurg)byrZ{gQZ{B*V(=bSO<v=IcNnzX z5e;4h$@1&MeOu%wsP4(+p<>cL=(i7<W1WAAC4R{X#o99Cf^6Szac9&KS5Gi6Dt&!3 zg~}LMBfJId@1&C1qW=zezmSDMG3W}Aoo7+`&q;a!;hL1#RXg9p==sRI?tUWZ1I?U& zO%gt*#oRxD|I4@lF9p<#|I?T%N|EMClzxM8MNoB90$9I0fY)oBcRrL1Tuh3bm7&UT z4XOsRDlJrS?4g<!+~%mDuCWPDD>gsXvSQ@K%(sav%<+%MIOdY>-+`qPb<caZ_lfpJ z?=xuf=FjhbsXtepCDzqqu~+`mm_SQ1+i<zVxy@E<slQm#94l($8}mQgHjs~`)uyH2 zSULw-<hLoST37ImtyBJyFobz1Wg5$it5Y~wvBy#hZP{vS+3nF21=&VgE5v$Q<1G_f za;C?3@&D$lf=ZbOea@ydJvM_K!U;1tZ!0soyQ-6=E=uN9oz9?mHq$+@nx+-AG7~g) zFVQ#eaIS1=gkCr%2vQGQ;=2?cRNXnKC>!venaN??bJ1QE=OJHQV2wsY2FKyt^~Pnc z^gy^R?YF2^!H?P3rAo{!j7@-Zy!Ga)9d;U5g(a}mg?7RyRS;>s%@&P&Hehr5etS>7 z@B_Ud?lXD+Lzn0NYLT_1ePBz6T&itcr1upxg$wXm`b8HA)yFry)Ub9X&)~K!HU!Y7 z0JNH}Z<H86bIirM#i4(rGX;NEk>ju%%GfLgn>ns>eEDbN@PXKZr%hO`mLx_Xjhp+W ztho5r<$(3g!6}-%-{Yz9C4BW7$;Ps=sZu(-lNLFe9V`XU1j0UiyHZ}-dH}=aP`d8a z=g#o75Wl@>Ju0e(7Y<U&<KnNHcv2=&6v_V*hT*bY8YQ=eB46QSM-JUHK=C$4IM>Lb z=o*JouK7JC(y&(RIp_m_UI^C7B-DBqdqH&m5AU`~vLPi%iQ4*{J^F!#!zp<+t9QZt zFQF~5IZSmLZ1h=S1o3za<*=edDb=FR9zK|N9>2;r8$@EN7H!rQmeuJ8O0ffd8=qJA ztpM1Z$xL{XyJ<>GkVU_TBj2*X&K#;}EVG@gg6kvqCnTq(L1W@5!xc)-82SjPFVX#n zm%g2&!{w0&kk6}cDP+C&(Ub(waK6Hq@~mj1bm8CxF{F5=RoVck<X9@XMjk<8$V_!r z4rDn5BHd*#p=p?Gx-E%tW9|+pzw6ol?+jS}JFiTq9~)*;A-&Wxgb4k2gCnG1?5lkm zWXf}R_6u6tcWHk4K{*V=0JVOp?;QplRc(O8?sG{&pag2!b+_7hn&iM*i@sxL2xu7K zl#mf_XA@L%IsC-Rb67NI=q`6B_0=idsX4z}S-Yr$J0?7n9>4d|8J>mQ-47(yT75*) z=UghBSX|xBlv54>2Y{(rc2<dC2>7C#S+ML3RcQ5j&_tK~^+r;ga;Mk#=slcMCngX5 zVLe2X-$m;>k0zC_NMYD$1g-NBu9Quw@YmZS2s@RC)5zaCme0m86s7B_8T#%QC5_S~ zH_!TvJ$e2Q)J=O^95R_tbz{@<!~6DwM*hHnjBs5S1mq@i^MN^G0lG8bTz2gx_gRab zIU$#0gQhZR2VhTX;=%LyVZ6;I$-%%FH_%J{d%rd+5)AU6fGhcF80ZYl$mAl~<&5T! zKH5L^>>6bvRnZ|Gmt*gP>gt<jck<0gb-yxCe`<V_O@FDSa1R<xvh3Ep-@z&;i3kj? zBzYarp^8HH82xTVMUP$3By}-#83(!LIcgw$FzT)OfdmTu$-8N?%#b?dD|4pda1+0q z^(uaKV?p0Tkb&d>Pl;-i+c#!19m|1kdQ(ZnwtEjEjCzLYo*=eFj$Z%TE(zoj6^N90 zS#QK5==(QI3~Pz^Oln@kZJBH#HYN5)W+{Z`t9;~^g}L3SuJ%|-KHsp#lHz?n<1E-X zrGz>=)9r)qwI_0*<sJB#sT|v>h(ua(P(5pLFxX@M3-e7FC7hImt~n%2SmYQf(x13V z^@E8rft8^!*ewE;Px;FCQ*^ji;Bg$>jGLr~PJRe_j4F#dMx_5Gl4HT>peJVmY8t&{ zpC`G69KgX@9W&?3XcPKbE;BSfh@w7RL^AhSf`L0?&Zvw0y`Hd90%ZFGH3;J;&0-~{ zd3v*6J*r3Tt3=l%_^ovoQvQ8~M|DC)P*K2nt8+*J6iMSE`Pg5c7$=Ts9g=fGItyCo zWI_zJkxF-KHIQy^<nJ|g(y*lDNVc40`;U)hId}#d2Y6B>6@bESVF5I;<7xt|zka$L z8X#c|zW__L?4D5dIpDxH<>w>^p1&yWakl68#c$KCI{1d>9fla(;B1JAx9!OA6TnF7 zZ*a6XPl<70b;u20VQPAgIztmrToq|N-bZ`vUma>Cw|x5PXpn9?`dMhbD2g)zKpy}5 z0`q+_)5Xj@>isrYV1VPlm~8*2vFn_z<{k6s`V6z;t3MaNafaEm6>WSb-)U^~M*H)$ z&s2|9N*;ge!f=<}iHxTUFsF|lk`!zT!8Y|xjms=K8<8u|N+VcJKG5lvX8_?yP>5PJ zeb~HaOtcY79_k$@yyV`(dgUm}nbM?zUojuNKjG~C%IO*FC3BA6yLrmL0#(-001Mog z2){O~T(aN@nD;~7)M%LRQ2e-ss%V^~`H!RkWr9!FB$uZ|ZHwoZTEN2M+t|VV#W#Hx zbJ}Tf!R_XZ6JWlnYKixhLKABl*YOydN!7H&Wb*)v&I4#<+{<6lAu%4uYTT+Yj@qek z$DHK=xpc&ma#})AZNGM44yV05Xg5IBfTRkNudNKa&9m(rQ5^1Z{fKN>UT5jiq{ojS z9;8742v;v0^S;{Xr~|bp0z?7K8eJ1Y&Anx*!zbX%=l-)OG?j<%-&$)k`L;1v%XX6H zUY`voS6`goffJapCgD7f+fC2kOka6^iFl%zR#pk=Au;u54S#weox~Kai}cf`ALsyi zCyqL*-hmboNN(cye482oTO6hFrQU-dNCPY>{WuBcdtwBj5jE`M%4b1?UMri|f(z*^ z3@5&YkS4;_gcF>CmrYpWvO(9nh^>6F$CdhbE%yvmnH|_BHaEjyv>2^cq_%EJ6$Q&D zdXgDbb<9aiVyH3a5ELu-IDQ~DyAB0~0W?L>B$A(cgmwyLHD5R-y*%PmNsEGvzsu>a z>G$VtMLm0GI@8G<04keg8fG<20$4O8zG(RVo{MuTUabjWdeUQX<kX(<V5%R`a^JW> z%TK6$-Z5fxP1H_Q)Ql`TPmkEb$I)`U{2Lml*gss3cVBg<cj~9m{p|~9PnDx%Qsg8Z znwPMZ)uGIR@8|dfPjJ_nFK0RAkSYt*wR%w`w2qXZOT_)DKQ?`Lc6%3^H=89@j!FYw z@_j`zJZ{}(Xniqg(Q}QLi|IEU{FTIi%#@axJPY`7Xx)v&HTC-#6?I`T^7n+3eDLFp z&!$(TS{!O&iTAC_6sRo9J1_PxYtYQ@Hn?awOEsRV9$`JWqrpxxg|d{TGC^Ij^r#?= zx!R6#Oaop?;uE3~*(j)PPQ?Gj7Kx|VO_8;yZ7$e(tDQUxrb-1%Eh)j|HB<3HNOK=f zB2gG!Vt3NojNbE*`zzUJl{Uj47g=0G{lBU*^Tn}kOlTtmF5TnrrLVvlc>(yXi|4l% zza%bh3NZ0XKizo3xkMA@+0sfeE}NyI7Jgm6{!pr`<1ool4)A^>jx=m;cwZvaV=@(y zquh63@h9AUj$e%y%lnyqA1kHOy(GipPOXnB73ibsENV!{W)c^#AL{#=Rn6od`uP39 zReW8OecGHk>bT@=n5n#L&trylV-$2r&zW#|hF#vZI6jFcTgdzqQ$eN_;v)K<8hyD` zNn!CTSHd(jJ<t&Q$1k+|UE;$>(hUYo)XVknyyk9^J_Sh^&cd|Bg=_m~H*8p0iAmDQ z3m`qp9&40yV$E-yL0lmFC*BP&f#1&$?YB8X0EY=aLP&WG2=!;52K0X7_0;|XeW?Ii z+`>Jct%uN@r&U)4Y9pjUlOgo}h@mub6QA=)^taN@P(y*UHQw|h+%qUDMvHNdQv;Q- zhw|->Zb#}W+*bYMqvlDAWZQ=xJg6DX8DR*L_dUPLyOY%A3ag#2nb>lEq+__0ofUgd zg_=U9%D=u}(UrMFS1CvMu{r6P*M4gjIu!5zY4=dwzIga{wrpqKoE!A6BxfhJ9<rr) zR|bmD{u{L8e0a7wh!EWeEYG>`im47;c`PeSsLqt<!;Sk>D<x2PZALy(!G>`J3HRXL z3V}If<^f5PP;t|dK|4~XBrwxO;N#(g-)=5h(MMj(C34mQIxZTNsuDR~F_|*J`;}WO z%48vz!$Aj1bVodWSfy-ff0^24L0FzO8R10Tv1oAVu0c={`TuqlORqg&9bS@4#IU3+ z5SVnm`0Yd_5UV`-_h}6LpLfNETIMzvPz+mN{9CGEXAkS=EoTiSx00gS?r~g+<|p=z zUvA>0zR9tTxk)Oh$ltYr7izxK!2?tKVd0Jfj;omLzuiypivLg_`^}oaZYRq=f7m~I z2MzKPDo*OxD$&C4u-h?ymgaKF!d!>D{(|=M-*uQg0qv`ie`k^_8z0bG)V3`47Dsk! zdcrXzgL`Yo+A+y?Ux8+{(%7kHAYRDceX5HNDXGVV&zT<ucjzw1CaiV^E}7KxQr-Q( zQ%=btkI8t@-#1axzg&-HEKA+Mp<rEv{oyj%P>U%*n!NT=oM~3N*QLBltu|1d8qa?5 zDyaa#F>T=}hojt!6W@SlEbYj2q=p;^etPSi^6Yy&++KOb{0>3K+)>`+T)MG8m5CBp zf54$ta!=jFR`F`$VRHO6p27iaob~zC?zN|JDNgqSD=X_equ&hl(KkrMyd94xrPbUe z-SO2=_*V?(-3i>1>R+~d-zSiEwtd(IQvPfMVL_^=RhO4$YssYeYgIDRArQKl9UvWF zHso}}zU>xEUT=x<A<_T2BvZL->V(L#9?eY8f^Ns!1qwBbY~dnZNfmfgY0UPu1Ok$i zeWL4}D~JwT;K~!-RTSQPDTl4e`ITS;q^hlPg60G)>QObDP1jA){0;b)V;NCOF55r> z_`;hV=X++*tI?l-uCl##A6#{xaqw>%Q?yYgYa<M!Qi}kLU!FsnzF}r7>k7?{F?YxB zBo(LzYXGU-v{8l+PVkG}x2hQB?!omh5QsZA6t+#XnWCRMk{z_S^cVOtE3{q6#i`C$ z2V}q5%>Ltgce<*QEBG{l=XXZ_L)}-=0dSBH$GdzngqtC+FeKkdLsBg=crbx7-CW@U zaF=)LnxY$SF%HM&kDLKBelg9x2z@zR=(_=~C;m!m1yV39tmgeZeVYU%G_sfSQrFu7 z&NJL2fxBP{l%=1((UYLekoLcX8^d{@Vy2?i=GZ-KB01~7j8cghHN|JO&XC!<`VQ0V zw#59TY=C^HS!pcq!JX+tA6wV1#gCTik2iness5a?F$}Ei=1VHe)Zgnr+<p^G!i61@ z4Qz6}g|Rj8Z`OZNt%<S618J}?qW~R(A3(M`jwa5||1uagL4}$y3NxppDIxAlA?MkQ zzkICq9o^<S>)i_XTu_TA=}^L@39)1H!}D)ea~PQ3pC`q-|M@GvDVjtQA}c~iyG-U) z1I5hErRvJm7oRb29R?D$<f+;|Bmzw9Nib9XlMCRIM89}aOpi9VMwa!ndE*91&2DR{ z??O_kK{7X=v3H{FW8)E(AY;-E4i&4s*D8p}3(#Lm(CY67N~`(TVL^WkKUTc8;7f-L zxeY3q)fmJ*ci`XTGVZO8&CBSirUXpbNyNpRfp$k4UxE5&g6-)k`nuzV?z<TRz0Ph7 zon%wKG2(YhD1iTbTHk~C-uu4-^S}Qw5?YuVIo6Pc$(lU%AUEO#rvkJbP_2q518f-b zT>1!M`2Kyk9_2O5_xTpORHfNBcFMbhcN6OmW$K}Rb7vXS9QzBhna|z(3W6Z1pay|E z?=C&$)IG%Ei7c=A%EvJN)?%-p_>Sy@cSEKNd;bhmv_9*WG-AtklQ_2oX?r2`Zs(d| zX18s?RG>`irHfR{BQjwdnDK1m7;|gtqKZcS*DPjmga`w3%eneh!DUnJ7~p@Abrw8v zwc*yr3dM^QFBI1ncNyGW3X}qEf#U8Im{JN9cbCE4-3NCm?(Xg|1H;TmzT_nD$;tf- zcCvS#{j7VfYYFo}3ru7`EgF3kk~?lX{pyb?9cs9?cLsf75mqCFJu$c^5bdFn(nzeH zK{%alqOPCM3!U@4kxs&lfE^k(2pOrlq}PlQfM~PzLr58wx`ItsC4kYjrf}qhA@Ux; z$mwUG04>FsM@oLof<<ujr=ysh`M$F0B5)DE^AQyOgEO>zf-r)0XU+eeK!lBRD{0TB z@@#>ntsh&Kav@hVsR$(7Mkg^%<vE&)d`FDEEj$MprLFQ;^+I7`ze5}-e0cubTsF8% zqsA_+m{=qM?}a?6ghU{MwORUgHK&x}nX#C55L6ZoEMeSeKet-Cpy3?$t>je|dV3Gt z%)ofT)ZUWp-%@lzF*jz4jvbL0Z<ybvDZa8m=YX<?g1>J{o}(Y!aYg~Sw~7CEzy`u= zfJAVVm3A8^709n#>}de?!m&hm>O2hOo9la3PEmyNi;Lv^mCKOfyWO-+?q}zx2<G77 zhv@pacxU@!O;P`t1JGJ_{%22X_VF9%1yLii?BgW@SBr4$E3=LQ?;12d6sBwQbK9n2 zIrvAl><niP57<9>C}xigx`14&+K9b<j=K5lR}q}ouT8MM%4h=(3UbE7CPllMBE4lK zjCIG)-{`b$THv+_*E-&~?(X(hrxw*NCF?Vx4a@%iy8BkvcB&9&tK2*Dt91zCxcvKF zBGQHYB}|+nEwyLiSW~t~NJunq^P~1Dwy-Tnko>-+0W_J1HhbTO)%bw(`ZnEocN~l- z&Fj{FWJT`c(D=oj<x~xNiKWDo15eXgeHRx=*_=ukTIe$Ce{PJY4(wr9;LQ6@*!ud} zFfu=VS}6Gx*#5>NZF7v%uN}b}{u-f;Y?>v%h-AvabZ7b2s9s599^t_;2L7JugH_;( z;;@*jv84L~IQ&goZ<kk6?#h2K#B8qPVJ%#_B6+mbL3{4TG{hqOoP=-w)OB-Kxm}D1 z2m{`wF?hUK$rd8`lIb6M@ww>FJP<l4jx<#qY_qZ~I?AnKKwR__pdpuO(l<_MkrK@? z(YuQ{jf9+`tqwpkhS8#2#{qsKzZP&U<16cT;0EGRF7!GF5d#J>M!cAvZM5GmZMF~P z=hafQt<7$DUVt4D?P5PG!bbwachlN>!M<;wrGE1E;<bO`V-3ksIIW7ZZMc`q4*aJs zWrEu?<9K+{nV^k-Yl^~}L@_fELP+m7NE0~jPD93ZkwVb7VG~(e&ZbsyhI=q<PXzcK zJsDFZk;0j5I`cl^tZ3@FrhAARs?h?u4dzk3x?=oz?2FJ*^HWLQ>2an$&VP4u#~b<^ zEn@%hlD+E9yp7J|#sI(#<#@r&G`TRmbVn~oS(ksLo1OAO{Mb$ys_8$~(|7d>j)ZCa zHYT{6{$%Md&SrCo3)=n<C^^^HT6bQP4su-&dm#e(E!Yx)f`u*+)kWc7k$6H7wKml9 z#yvze|ECGj)&h?SRmG?7SQ(2Uu<xt(f1!FWQSio+4cd!u31l_&@Q}FFk(nY4M)0D( zKAkEzEN=%fnw*v7NBJqij{oDl29~^VH~7o<_;zRww@f7Q*E;_E(ECH!%^BJ4)_0hs zs1i~XMA*R8_MLZB#_{97Nq`;poq~xT4o|_AFr=mxKFNmA+JLip@|8vp*kAW9<h?aV z=u9Rxj$iK%NTjU&5_DKrKAM7X)mJ2k_A1mV=bst6n7i+0%doJQT6T!Ohq<(!G#nh- z!qQ$2BE?B|9LGia>!}y)CL{k#GF*OIHWx0{P<zO3d1Gw5dm{LA)Ve9cBhqU*|0z{F zU_kHd`$P7OfWg*Mi<)ly(8WgE3g4T7=jrWvEtX=oYv~17=Q?D5t`}{Pi05YQ;C7T} z`poC7<?*qnFnKMfmOVh9CJz7oQ$K%kQ(U#{A4Jk=t;-kvN(<cGZ}(LZaRTD&@tMyn z%HD~jnZZE&->A+NpA7ZLT|yxs{%S(AxS=HNL6G%#G#R8kbn>?!L=YbyRZS4pwWl(j zX!_!{S3aG~)7!8et`JH@p|OHe746;LI#k}Z7uz_$JKQ+`WYe+0vWTeQhb&P0T27ku zh4|!k#;<^1kcdrj^f`wxyHx18Kw55TbP?6HEz0nN{JyDSyF3Z3_4EDs7CWOWE(Kp8 zkKXR)GJgS1;_e`}V(&_}JpXkR7z9+>jH%;Hv?WLf|K0!1Y?8<tT|c$>rD0V<FY64P z_H}x@wQ-u`fHv>Ks>b9_KbV8|!#j3IUro%LmyH6<^$k4@$A?J(38$lZtq)bC$)1ac z4$j_$3A<?r{8#-Z*;jJwuT6Cs00J@E7BBneM*yYK0tP2T5v3A)R#s&6x0jc1`h{68 z`Z<dtft?>B^4aap(lIG{3;=9bXbzkSVQ@3XoJGu~?NZz$%C!VY-&ENq*SU-Fx16d+ z6pbck;hfQ%(X{C<mm#xI5xr6#0HxRQ?k%QsXE}6xY5UU`+@0lFhz{t;<-W<d$;QeX zi~%<i40P9QT)k^S4Qkg7+xc~d)#qvstMM2mCWlZ}_AgGuoUNlZ1!Hvf3d>|A-u)J{ zas%3jxt;kbD|SBt-QcEIGbk_JlNxYEYH)6mZ!QmGzW;^uwdSY|?Z*;QFuas3A!gbD zS>baQqh6rp9k)60*aJ2elHve&`9j!V`22{?I)@C8{NjvY)-bfFKEvlpQMk^Ovah>6 z^a8mg-U~@F>30@LWkG(=7@4`CsINgY1t9gZ5eO@|UVwnI-#6I7Q4Ea>(oTmOs{9Pq zQrYK3WNq|%^l-i94*<sXi7fx7{@U3f@~}t&4q?^2n>c|A^>wj^6FcQdskkW*(MKYZ zJ|2M}Lix?2=HR6O+Z3#X?i>TyH}OMgomN%T>-t?C@4LK_TAGYszN%4F!&o*dqu5b% z-tl*8ZILl1RRS?T56BUblcwyr7~lP=uPav9ju@6!u5{PFbSgD9?FDqF%#fz78ey2Q zD{RiV4+*;9J5@83W$#O<Te7{T^O>f1>VRh{SkW*drA}?GczJk>){Pf?KkJ-<PJwwO zH2=$8xrp+!^VR((XRR;Cz~2aOQCp#6sn0xPW)TBy75m2aVcnbfG#$0y-n4z@u@OjC z7o3ktesr8|%TiGH(N%ZouJ~%l0entsS8C60`QkZ2pzX2yX*LcCMY(`RTd$SG6rBe+ z?*?tLlQVqS!M}!^>8pUMB3o+Do)ckrk|RiX#QH~@xk{WUxa#bY@t;^o!+Gw)@pgKP zO6W8ekQ5)@CMZd-pG+yO7nLJ1rE}e-GrejOP#{Q)5i}|4x-<|xY8MHMt#^n6dRsfW ziN@+X(c+gs6jjDC8_i0aBzA>na4gCXd{nI;IW|;yVsGD};YOi!GZVH`NL@(`PKe2D zPTDAvp&`G&ec$2|H|%*AgqlA$R_XHkP&-)@ebVKGhg?ugDNxT<_!g=Cdg7#r3;oc{ zKd@fJ5iiS{<_zUtoYO%wx&DnZ)~*#fK`-q`M15T*8?{ll^QK;h*+8WGcY~mgdHFlf z=PElYClQ49lVCD958tHFoEH$sDC$I7DDg|uC)<WOK7@<oN%_r0A5(%NQH$+1{q?1i zC!zH31J0N>QM)*1=h#W&up)2f?icuXNu4u#=a7gSu=CTKY9<aI^Zb<3u!YIeinFFu zjqmwIJON&a@TdgjY#YB&9PQpMz{u(-1)F!lF(jl>f$>2j><rjd1|&2TP95`6tpmHK zHV}QD(=mdpBM_*kV7qIBw*d~Wvr_y8d=t7k3{T9;`Y|t;b4g`8(+*1VkP0@#NHz8R zLGnTSy7vcn`gD>yl_Tk1L6Ba^pTAUJkolxWbX2xL<qU;A4A3@Cgp`|^df}{S8NDVz zx42|7GRd@cl@_B+F?=tR60F<UZTxO`sN-hV(?Dxvos#5w;VQ%@*J5!ZV>odh!4z)) zlZ9(V<saw~S_$8rSHDKaY?giN4nKPcL~EiNCX|3&Q^Hd7oZu?NLGDS)4Zv3=Ky#z6 z&Z1`eqL0bUpTAS;DUpjSgrU7HY`(G-%LWLfulnbmjOjjArNGFQ*jniEmlQ@MrHs_d zTQw1Nt*Uaus_C?-w<8Rw`QM*t>=OnvUO++CNdB9LbL<1~sVl&JiBVr9iS``vGRVVu zL<b+t@Dn~eI0?A8JB+wXERFYOaQ2&%aHA`;Gm)H$H^{HokDs}sl$_kgE|M&a%49LB ztl-qEBON|)B<q8!MaQ6~!;fQ7pmx_^mfZKgX@BeG@P2#q!9w`CCtl9-N8-xWa5{U{ zs+iOYZ+?iIME6<+@Y0ayRJMCr$-77eq;<0!XM1JA`CjHpM#&OIDZ>AY!?A>(a)l|~ zB>3KB1h(QlE8Ws*Qi!SS_jh+7j%59e+1N3Qtzh9pQb6xf{P3*vEXt8K{x_zlQFoIe z0I(6~2p;sgSl20iM15NOfWsTNYUxCXpcb8XZ_Cp^PNh}Tqp%02a>XAU%H;CU6g|?* zyy5T_b!9j++2uo-jZh<5F;(L^Mas0!3H16R1@RsW{$VPK!wVyF0$3NUoO~0)ma!~K z#WB9Ob2hVQciLLIzIQS#&bvR_NxG1HB7rW1(+{~jnkX8o%Ul`#N0XJz9@Vp;sw|rt z1e1x&0{qL9i`xDl7C^FkBc~keo)*TpF*dh+gdSbqi_rGbSP8E`^tM^}^T1IzK`s{> zXig`pYAybsA{$N=%$9zq5y(_Q_kbUCAGtX20Ca&H(-+vh`|$4NbcRrw-Q-+P<afF# zWBcPK#zdNS9GQS$cx28b-*1|lf`W^TN^DD<e7I_U;KY9<#i{e%O$ngUdHOntBh1_$ z^6R%2_M(NG=}|DZCb~Zic5-QkRmw`6>5k*Hht^&iQN+sJ-T5iTjDk8$I95)aB`L>9 z_?XfJi2A+linB`|X1s8X{ne^M>^%{*#I2m)py%XsaBh_rWL204l5}MkOeUVc6FP@` zu*thON5qxIMasZMdQ1HrUw;rulNKSN{}Yek_zP1Ar{s>;arl)R<#qK$SNQI^ioj5O z1sAH8!1_YYKv4wN_a5SDkkk22zS@-OiIty<SQTW~+Z&twapToPee$y=M#*jj<>OzR zP8nogYG0+!mM3E2S2Kk14~Rn;VzqyKSJ<|Ze%I=9fC@?gK0Aa8=Y$&rS*iQ=5tjzC zh370cL%UF0L>X>*mJ?RqCSFKu%a6SCqda4&a=j&?q5L2u&AbLN!9$dim7ub?5IR|A z=yBA%(unea7s&}Q$0N9qrBpSJ$H?os1amj5t=YS;QVA{vXg`O}%OlAcyTP$5%xj6~ z5baO}qp2YeCXJ=*N<zuBUSU^Ku%ZK<IQIp>h36Tiao#os_ixBO))9+EzYgAK4GJGy z!m=ND@h6;KZ|lo5FZrbCgtR3VCDbP7p9HnEDmzzs&zQ$1ad(%aSrWSeYf$sCNz&0W zK>K^3XxK@WvK4G}u0I1WLj^}cf$uNCZ*KT{Oz+Hs%&AhSHn`U*MQ#yLfKcjWK!jg= z@|-&$bjtpZtq+G}F%UcyhL&if6v;u*brpey_A}O&33uUdY!=V!15MX!<<To(8$qlW z=c}K`dsTZmBxlZ~`=6kvOGOb5E0lXEr+(#Q^D#Qk&Nq3CJhLp6QsSX>DOA2tB_4wl zD$i>ax3a8@5lT;x4K1Tos5F}$Gr4bhxkBPbno@|n2Tg0w)2B(AasN7<P=0HA(%G$e z?)KN!3p;j3^@_&=#ZeSU?AYR7(;mtBwY5G!Qi~ffra6;{#bajhcF?hw!)gF~1!`iA zggVN~T~;=iksJXrPBYZnao{w9$b4<}mHRk$`KTC6yk=cf9R{xg#pE2zVarS>f-EP> z(Na!pGA)ygYTNqa^1H9T8B-0Z+qv_<#05^Q0DQ*)yyhOP1~x5VLlU98kwiY;svBHB z-CpZ?_{|5!&P>Kc-RLxpt&8(uSz|gOWt&9TO@=L^f2`rly;@UDF%w08&XrEv71#Y| z(aNI=g6!dzpWWkCJaA*<M_%14GxHN#NYMciAIfil=Lkx_dRiGpIW4q(YzFpp)3mMc z&31+zMn(;ELhQIpM-w7>UHVqVa<6AgGu_H-wSptzab#h<7uWJGTh|&ER?#ze*7SP8 zFl3FmW1F#fZ1~-qBLvF&Z%Xo}-H}}=ySR*-CymihZB0#ett2eQns<CGvXCd`U+|Ut z2P~1#6TU2oT^r-#Ht3Sqr>Z$T@x*#l#JlP9#az*a2wp9GT{a*IPzE>{QB}%KtSftJ zN(}6HS{1V1NLS4Qvg9NT53p3Zx3>QoKeuJdp{6X$BVDC4K1qx%H@p}Y-;F$0;FK^S zgaS61_htBFb<}hda2|iDyn6GODo)&rkx*IM+iEr;8!(osI=-UV_Tv7O8<cG1{7e_J zFz8##5g`I)r_aCzWCFZ%Czf8|vP}{RO$$T-)(+D5{Rk?2mwFBtk;ya`27BQk$@PiP z<Aq!~g=o+5mxb7p_T@spjX&L$LPD2$82J^CFFLn*k%(%&;JZQiM+=T?>QTLpIb`-! z@09MX_P&OT0WwVg)Dqg-FWO16-e}Bxnr>8o`_G(`knGf;esNx(h$hiWrsErX0=4uL z&7#3a>2bc1hx0)m_9r%B_az*$cN4Q;)a^B2499857fWKl(;@;khPIJOhjMr&5+{dH z|Ez$#SSA>L@pw(WYgG5q%kp@38>`b-<n<d1LgL@eXuF8%^Nwb_9y?i22wISM?;bir z5q9!OEtgO<nq5@HPSY4qqtLhcD!stfSVBL9_zLjTzM?9fH83kJ=RL#u5q>IIPGrut zx!gVTe5J|nruF^tv|GZ+1P7VUecO4=<`=s!s9yICRiiy0JMtZzVTmXvQa`81dA9B` z3fwpBU;aibEtX_%hqE{YF?b}dVcwrCyF<V5KSx2MFO_AY?<o!Q&D;_xhS&v#3yh6Q zq<-cpViKk|4*l*k-F+iy=mp2L^Ywso>3@#!SB86h!+%zz@zHw|5f`NpoiGfM-fIbW zGWvZ2G?O>UjyVUmmyBL%aQ$`fDUn5EPHTJ#2yEDjFF!xpny8s4Q$^h|BkM`?eNt&t z`Yk3oPKG>@Qafbl0>@<#6_kl;%cy~(V!?MuO_eW5lCA6{{E<4)49*-9T({KAT%4Aq z$ywN+^p4Vf#afw!69x2b=09Nxfb@@Xgwb;Hh+dJ)$&+)1re06$z{WqSm>_a)1cnpu z)<|<>uZm2cg+Q_ws5HB(+6n=B#k#-k81UIi#=)r>p5A69Kem0Qh&!^sGY&)VUy%!k z;3)RVr7EYNqAc+^H;e5Z(maj5bz!*WgOh1IeEldi7+Lhuapbq{d9n{%Idk?h+dFOg zj%#N3L9gSAozNb!nbx-YNea561U1DZY%n>EQLcmBBoJp#&wNiIRa(a&(1n)`bJYp5 zZd?^FJ}q}$RfmV(PWyxUNxxnD0q-b)ITrge<L;7^CQb+8@{5)*7*+z1sIRK;)D+Q^ zUxmPv(F0qdKwE~hr096srbYsZ)zU7Zw{7rNZyC($Dm|axa1y;uO<=r%b9LIun+Itv z3BEtilRilQ5GiU*lcSM?h{1JFBm*sTTaf73n-JPOx?p}JW%N3hsb68gm7Vn7yfuFH zc1##43~k|8iX2xUf$RG)VFKJ=VFB+IC%Cx&KLFqF36J+z+tYgQbJ^F{vNH8bog(!? z6^;Yj@^jCL_bt?dwdYRuR2{%}{}8I!ldFhnkLO8lMw0NRhGVn1<M}9DCKBC5B&G;; zc;waaR7%^7#o#r-2pGABw+mn^=FW!fMKwz^nfSHw(bOwP{&XB2EkND&=k*m$0kt#Y z+%Pi7ozWHpm|A`mWze;sskqj5^eOj+m7AG!uC_(l_e^Lv5P$?nr>fT2Ewfx+ZSyW? z101D6p%B>AXq|-tMrG}%1Y7d$-O(wt^H|;$`a;wo#<=9YQzp*gBF@R!oOf?#w7#3v zFoshD+2rP}8J&JLMlhWP3zV`5OdNToYyrgvOj){7{yRWM?9+C^+7v2Vyh1}VI~!Jt z6$3sCv*0u>Csnb=qflf*RVstHV2Ljplfn?UqsU3_RaC5!7bd)tj7EGTCG${rQ{=ym zNl__f)IhMc1$p(L#!Zvk8lkGn>nUliOA^gN+n*yA2c8M^&M*5DZTL8KjMCOy{4fU> zf)PS1HCd@4pt>yQCzQYSce1IU<D--K5K@!vANA+i)gmKUzUfwz8LZs3Ci1-c7{A`! z#sYs))tVr>Y;e>{JbxO=igPEd6_EK-BD^o)N;3Yf!k{`Bw^b4l-QzI0f!Sv=QmV-> zGEx@}qHCDw)!Bv!-e>UcrtTCDr7oQ>;2_Bw5(`uX^9}Z&k=|n7mt4>M_7%2ql#sLS zQ(W)!d^C#oSXM%2K_2p=tTwizO>+5b-<SwjCL=@{JN;4*X9}1anFZNb{(608b)D81 z1SK7N#Bwyti7|az*6ua!Vjv7tj!;vb)4R>5sPHjXk*X_zR_yG;0@U`nr+a4pjXNH) zL1m)ee5rCm`;M)W(3DQ)o<DRLt>jb+6XG;|LAL`=a66g!E>#hcGa<^U@_q^Gc_H9L zR?^K6Y?t~7nQ^Q;xkw32-$$SiT+Zd--;~RE0HgVCaR2oj<-@4dJ4a@E@3UjG{OMfo zTHm4JM@-(Z(W_eFl3gmlQ^}3+eQ0{Dmn<Af@sinzV*Tr3o1KnU%N~PA|1t~7^5W_3 z!*kf5K;Qzr?cFS4J#%cV@AJv`=V~Hx-*ni`!bk?1s;>*^&BsOn1H%WlZsvXd!owQp zY#)wlG=X!ZL8BYyh_rys<qNgmJi5UR0)04a4DXT$%Fddt6R13WPXi={LJSivE>BEH zEcB^9>VS^Rc1)!m;_xEBlEb?29O<3CpcyT1cP=i5Ya>B9eBR@T=^aNAc`yIuTC03+ z<nTGrjcHAF%g&MDCAsjb1$vaRto}!=9P=Tn%qvI0)(|+==AH+x{0nyX2HXot@{5b| znXBlJjwheAhni~LYm8=VVSBvr0oKwkb0RQH5ecS;o?dm1={xu%M)Upt3P+cAf7$yZ zfU!5xBI#>$q>{aE{f)2T!%*P)KhoV}RO2wzOVuaGm?ZWQWlO)><t4mn?`Pia$vQ_m zc!D-|ydX9s4~KX}bXXHYV)~lR7w*jEP`jDC5CSewelGGW95QsN<?FG<VD-H}%~p^3 z#s?yyVc+0bVW4DQ%d4;3#S*sJh;x9w1Hz~eMDg*^sNH)VSNJM9%1Ah4`BTP9Sd5hC zN~-)detnqM&q{R(T3t@@4qXC;OMV8;yX<uQ&AS1_mZ3}FlRZk=vKppcjz~T11MRqh zv;iE}jDk4!%x@2XFO}oMSZeKLn5(t_7D&4+9ychwpJ>0lbfBs2gw<Y01I%$ZwVSVv ze<0AykuZ5V=QOf1eF|2mUkehkVkt8LZTcGRter<0gdM*U8B^xXDq4FO3x=MHsM18x z;^Y*&$6hHspHB7xGzchUK87Vx14Z{?37>lR8j{;~0<bUjSmNiaSw#oKhhlL46ay=C zDib&bGiWc?{qm@Q&#&Dm&Z}qclaE0aN$L1owkQ*1%eJs-7=6i7{i{Q@>8PrGcn&zv znzNd?3cN{_+xSTn4>mz!MQOqL0nZ4gv){gk4I=sC$RnvV@u72EFKgz{EBn4^?ADG* zUD8{NK2t6>_kTwa@!l0DGZJ%<kFG>BIIrFqAcg)tYFgeB1pMvK6X9M!Ky(lrDjj8W zlN3FAQk8K+?V{zBSX2G{c6~}o&VIM>=ZeyLPxRJc%AZ43xr)p0CFA4*`Olnj6xCI- zL`!U@lWE}_St3ZF4Td<(8u4enA4KB}R=^T5#BK}37eqc9U#nj4x1y-+&Z%wj9LalP zHpAvkdK0>%@l<d9$Dq1zp9o!k<a7b4Vm9Pt)c%@ke`Y*#6_w<03N}cfQUy4I-llv9 zuqqgDs9|w|I4II8I&fPw9!<4@?}+|YKbiDDnRd@|Pv2l*q1Z$&4{Zp1NM>ZOaWNa` z4A1}wh~OE!X|h~jc0J^8)U2J&I0nbYBDfvRVKg=0UOxE8=jnPK;2eTq45n+pMF!oe zj6cKGPYf5pAV{c(f8C+>;0E0+Q5K*&^?*YuPNF3$%w)tE!_|Dmc<&bcd44b=+g;}O z^+f$aSS-ZZZh+;_g@UhW#9Ad7n=<RukBi1Uzry={12n+d68_J5)k-f-VF!2(Ee_X? z(^b|MhS3_>rMO+;H(=S166&_!OPdo`2iEdA)q%fChTd23ivmY>Uo2DE!{e@GWmkSR zc~4QvHyH02q60A}zb$|H*=PqlAb2Ecmj2coLRGQ(zA!N9Q}n29m0Jj>Cb0C6S~-AQ zmuO7~<GRexg$C;4$LxKvp1udM1!)>N-)xpNSS(EHkEmhn{f<H*LcXmfn5jZiC-uI_ zO5bfhksmM*$!rCmJ}xP@T)mOt=xt8ly|B)Xyl#<+`m<~jIyfKjj4YV~bcVfasm3OG z{hwJp`tUUss?N!T=0;BC%9lJ^GMmQI_Gdm$)Fj~+>*`Op(^8Swi`G?cL{Ur7vToqL zKLh1)oVIGe>c!?M8ijuF)KLuL-%es=g2czfy_&d-ch<ru4b!hQU{1#_96A)87*yks z=olu%j?>a$&dbhw&+r$pUzjk;(9bQp6ouc$0EurBaE%@b9)}K$1Qac?IS0{6@>I>6 zeP>tHf+Y`CiG6c}3EJ0U>+e>;mV$EW;%JX9qcfF>p4{Y4j>2Eh7il2a%C8<o;^cjB z<n93v-&zo_6*&3zCR!neP}cCt$(lE${M52<(LfHKbgJ=7*q4}T&HqZtdycfG9w~9z zNWoCeMR=4$Ibh7p3`2s6?EQAwJTH`JqE{PZkT<DGv)~Ov54%(4BpQPtQO9Q|h8Jon zf^>$Qg%qkR7)wj!*w1a`)QvcwcUhPX(sm%FHcY2UCsu!GkHj`l^L-eU?~3_*MlALt z9E&D3_%vTz8DL1{X=5~X?-^I@ytM(Tz|TY!c*YhMJ;aZ1NJLG#2`70rBr9}wiwZJ~ z3cTS9buN!wt*g!y&jP61S_97lBjm;bXQ+RoDyUg}(>mk0(xQOq;VGof$T8f=2>z$! zl0V@#CWC@MhQ7ZI52FmHgH{=ZY-rvv>btCV7$0jb!tWD=mv<yW^oI~)4U35IT@5-2 z>PJp|%VoeYs-z82@Vsxh+IX9b)*y0cB8dr2Zl#BPBi7KiGxi{)Tr(+T)l+0$f;(M@ zFZb$fmBILUg2drj29^9u|H&?o^mPJtx6+id*5i|dwEgO-Bgozen6_YTYT!CJq@vsm z*cI&i5x=d`2b>f5AnG1DNaN=#Q~!cR(3kys_Xy^GM<`U2Kqatx!)d+kUN(N=22YNU zJN69A9zu(Rl8PcCDy{LowQ5@97HyuDCJ=Yf6CA~+pfgbP2FrClmE7O`yM-hn_@#7d zx6?^>WNB$2?gPxMsIf-0(yC*=hO|y=G+zlcs&Cqvzxj&v9qrSNzmcwd8r6)tb^c{c zS2B%8OlaPFMlaG^Yxag)+;B7ml&F8rRr`}CUm5FL&ytTnbvNW}&R>v_=bnY}gJLI* z3K9e3tAA9TVS)2!ZKLiT9~0Rz#8`<qoiA$M14MpKuIw6_Aah6q^U#(=+>&j5OxTh) zt`byF^_Eh<W@I!Be&CszMkkc~*&}qrJoI&ylh>%wT(VBQfM<6d^}6h|;eA^jz<cBI zjfJ3>BXH6*^DhRBea7HC&551OgT-JJUBi%}rOi6Nks>Rv03-Vlb}`ux@WIA<wY|E9 ze3FG+>M^!a%bE{9Sx!PI6nG@>IK{f%%^vJ}P1Ak*2i}`laGL2;*18(J;jFNIHT5gs zRX|6G`t3evN*()RrJw&q96H=!QHxunG?9(AWp7kPxSch@h#I&zvcp8OpmqCm(M^t$ zcL0>H`fmO*L_0Ujtpl^Ag*qxRc4++I#q^tTGH5;B@#^C&5gz6FusjeL$}j%aQWaNl zYw=KJ>i(f)RiP+@eZj;f^oztMYwBtp1w~4DbO?<Zp53R3kp-I}OE&IF&z^R`%J)oC zRZN61yp~R7zLzDzt?W1VYC^QwU*lg_%ntrAog1bj-|IzBs)i8V@`;u|2Ac0`vPq~P z6%&kT;Q#jH!>mMzyXW?2`c^VzkviKFak3uU5;o>k9h{NR@_PY<TPERp)21^6zDiu* z_-7D}Lm`u!Guell)g`3Eor$H24HRvPcWbuFiS5R_Dc^$gpLZr-e6jTOm$dBXlA2FW zWP`xnmp#ixc)N2mAEVGn5-{s`do1|FFn#<eY(}w0FMJ<IotiAYUfl2g=hIL4@=*fc zG<B;Lf)_r5Sq#CrtVf@(G*aLl2AjL%ppb6^^XSumz=E^Bm7+xrHA3Ri;YbsIKM@0g zsB!JeNo5?2%E{|C@MK2O+j#Xaw_Z<BP!1tk(^xb67c71XhI~Dfm=<%Q7Ht3Hf=O^& zBu-YNri<;bm~E12fEh>K<ySnG-=CZxf94Dcl2o~=3GW|o)%q;YxY$Kd4v%}bGd1^X z474^x?wI;`3g3U;7NZ{&CRe;FM6McrOpza>jWq3p)Xkh!l@CP~bFVb#M(%GM3Czji zYq{>=cWM59_1}RLl3X6hh-Oxgt)y6Sv){CQ5|O&urW59Sk72F&*jrz0Bdu<p@xhAX z=r#YbQx5a{$uEAXZWqxShS|hl{IjSEHhKp_qkf#LK7aYHCJ_c&%=>`Bd}+7@(Rym< z(f-Y~j4L_0krsoIUZV87c5!`^Ds68>^Y36G;N(wt5o!GtL9e>ATQ74GvVzPZ_YtM> z+(zCT^l`|Axk|5aJr3Mf!cVF)%^p^Fd3Lvh*Ecg4c8ckOk0<$Q<s1q4W6j67EG8oh z;I1p)Wf|Va^j-U$PFz94?3A^a-BLL^JVeMZ{_#Lj?@Kk^Ys5L(b(BehRN|khp--RP z6iywh4TZ2R)$GgOQbXeYnSvY+gf4Z*Duv=SUV0D5ZJobO^Cxd<IOjQpFvSDIH0*PR z<e&&`@4fpRJnpz)ORA^`9V*&~gpSZ-ve>8{P$K|}Jd&el<=@c05dN5rJg)C?LED65 z*`%fXWQti*D%h+@1afRcyz_0fr-UoG2_oPT&oejp+SAS@VWD)4c!wXOS5G;;<aoUA z3FFhbVnAQ-56%}i7f&>#sghw0P`f!FhmrN=f39+y?Cf^U3q-b%+@cb-D<*DueL5`? z$-iP!emJ7?S>@BZahfJs(h<G+_Qh@^?h~rr`AYN=ejrgn_S}><Y4l#Y1XB^w3(ptw zG0pnMPEWCcdri!gaJp9f8CjOfcU#%MCKGDOCyqzM@%0L3wqsM~P)b9q?<qj?%FA|V zx$ft%pN*%lOSO#nPRR>BSyY#-qE3F~hp0~Z;gul#REGuCorkyrU^wu#GxsJ8V;@+~ zYVofhxDfUD32q5n(`4Cg)i6mY+h@VDn^lVvN79hK$VOOP3sO9yag~Y;hHshH+NiZz zD|Qz}CWMBoqUvGyyzK{`8_|znY^uDf_^c@Id(0dUh%$TrhEI|E8lEuP{H@CDwa^E- zMH&cqd0qMM((F_i^ix0-0C|YM8)$T;aCB7o8gBKlqrB{lj9|M<9~3m%=*Vtb6|)Mx zb_9+gKPm}aZ=A&lFl662Dz-Hm1WF;_w_QRWAAfpri|cmM_zC*Es&vmelw#jq+M|6+ zWF;6l%%SD+uvkV=F{$EZ>!q7F9D@Qi_&S)ADd-xTl-7&}RbGl3*tHh(Bg+IvM3zaN zZx3lNP!}YHnNK#v*4K|&UmW|iqBPVzsgc!TrA}5wstKv8S{mZM$q_s6l4P%7tVYv_ z5kWAPZ7M3-<J{V0e0p^fR5~mFd~o<MhM5BTj?eAf3P!IsJ>9fIMXRB|^1|zwG59PC z3t)j&F&+WSjeauhQMko&n=Yn%kDL~nT6BJMYRxV=geL1);EP=%BU_CgHA}U`#IlOR zO(qx+rt9Ri7sz3cFRnP+J8nxoe4g)H$i72ZLXLrey|8c;Lg9Gui2D2KZqxV~c#hZ* zkl6L6b7-7(bnif=t~M$S%UmcdBr+0w#p@lLUN@8c9TM-1)36Ln0T0gNw3s<sAg{Ad z1UScCKt<A)9tU#jCL>1o`W>C}F#A{BU&<Ia@ugUJ_mrZ*3xfpuPga@q_+PJ~=lwtT zRJM<u(f=+_j&55QP`6^&An77$_^;M#oc;BS1A{ce!pHd!Ze!AE^ogbEHty~Ra~hF` zh6`}h0I}E{fgeYtKd-9~(BRriBw~a}vh@73R7%DurfjFP2H1@3%xjtEady+7Usjt~ z2KHazEC?%5hdCx}TbwU>;k+J;1bzl4&Nj8dKzxR<bsFy{<{kW;??R?plGHKL$pnK| zf-jqu7Y#!EgFRp6(T5}Qs<=mwggdV`l6i13EM!bEEy(Qr<(U92#FAX+_VHdq7((Rt z`frZ+Btz>_p&*G1c};UZ;yf;(t!xNp7Z#QfGvr{4>c=S~x>Tb+$Ti?bXQbCoJ4nkr zbcnuz02XeEwK5GDr}^c~4Y#1o2;GSJ;af<POLPSlWY)(i{apx6wsi__zwcke!#H!r zEfRWi3<qDmlDU?LHVtej{;{u?{Lgf$J0iDzY9<OB&WNz4spB1;bRrhabucWFHptYg z-}$n}Wmks9Mw{<>o-NzEv+L21HWra=vFb)Y)1<;X#aX}guR0(QZFYGYmWp!1k10@a z$w7Mble%xtZk~nA!b8;8{@?A=)mPL<NzFMOkzGfjw11+@l~bE*bK*Tmjvs`{&cpWc zef;Z@W!vljSPgAP)3lxYM_$t+IxrsMWR!&&cr?8uQKCImfhdF&a@LaP`H~|b4}J+W zelF%cf6F1y-n6{AzY(Cz3Y1Hh3LvYscaC4BVvbX<?cpr{FQ@wYSdaCnXLlG*_>WI~ z%DrJ&L25mSVla>=WgEZ^|A|ysVVh8|<PW)hR}kAnG=Ont8f?tMusKNMK1jn)tPygC z-s*PxRrrFw%u<Px+)YGcp{Q%I7(rP~nyOnb$_+2~85scA*SDC}y1CsaAMKn<=dn2o z@WL$$`k|;SmAM63$1Ks4+mzS?L2da6VYgR}KU+k<0;iourpFk+|4^0}d|QebhwL2I zd8<srpdYk|ul>Gr`1ZZEckgk60k?&a!ZdsY*Q)p~JDza^va<-E!v{q!yg$T<2MvIQ zo-xOB>)}NARnBp%W9fnnWNPvL(SFUDP(hU}@o>T803^oNyFN#mY==juQE9(+IQrnH zwxE-az6LYPOZfl=xe4GRGqO|@A3fVeF7)Mg==t|E#@qPmC`DNSyx@K^-mKN+7@}}} zTt+nhv4T2A$Hw8Ak}l{u+L8QN7uEVX66<fVhkGs)^eH8Fc!Pmm8F+>q&==#VgWv<c zmtxswhMvR<OeA7VwhZi|b!7!|#>zOGP5&DAABKide^4I9+;i9ZNc@kCeA3*QJM-BS zAm#9TBb896;35x4Qn~u@DtYO$tq2!|Z}NPO4IZI`4%|cjwTO6GI07etE<9J6UH#+W zKG=dYw~IAcdi-X=phR}-=uN=fE#xFt{U&#N63mD2EMZ@JU?y7qGf1g#8c6?q0SRs! zcua<^e47sCAwsLw9xpF$$XFzH{F|b<{1NK9TQbUQqw{H2jcLM&X*B6W>;}-3;iU>O zsXrXjq&m;>Bp*zDWE~l=umMLF`Y|a)yO|>6+)*<qvi`4QXD47J1g7(BG+IH!Il5bQ z-^8?zJWh)}VpLkQt*uL?e0(p^Wjs-eiheP^F<KXsiQ7&f>I~;GY;|MZH9>;{ljVRM zNpdlMceUg$ro57@*9P9FnKX%o4umjQSf=_l^PH}s@u)~FAj)Fd%Xswkm;E}Zo)ihm zO=ABBKi6ImE`_eG34OCUv<AtWdx(9L?ZE(#{j`iwoOD_;sny~Y-gsxJmd?z6Ijmb` z%zcAjJLly32~#b$vloD-zKmEKn-`b?CW-mY^JbO1oy-w}_HQ(qBHgto-)&Z1FU!}2 z#%<CJntrB0I*p>BVt>YcwR0cWj=)`>T4)+2czjCZ!y42$+jW|S7xQB7sE6M~Lt+x8 zVS2pwDl%IFg^AOV1qcOHcX+JCGeiJV!!3z=n7mlkA?DsZtPt?A<BHr*=24@6LmJir zv%yYe_y!E(|AR6&d0YZpx^@Fy{Te8KPony{`b!e0aWE9D2=B`H{GxeTU1=LO_y*(j z`{v>iNEkmZt^iUim%q|0BMyW$m=HYEKe{lc`-kag2DS=Qr?%85qjfL;AOe3Y9gL|{ zw=P~U{)`UEmW+j6&Ffr?Vdg@c6*}V>%aWuW4w1ykD9ILHNVxRiPH$r|_)QhX#~Clv z{+kVTSXK4OI^L(<8E=(g+#q<uJizQZh~pMBaW-7#htgAg(}9M|g#Y{i`a%U{S4R<u zi#O04S_MmBuo)mxC>N3#p*hg7(?;l0$gKd|U`l-RpnsU3FyTxXd$jE?0tO?yyW8r| zG|!lS&-wskMnf82GhGWxoz?Jj`Q#UlP(MsX>12hu3}iDo>)blvv!odLf*TR#O4iML zx@y9U4|>VmETIPn-Ez)tvh-O#63m|*VVg5<*C{D@^>Y<a0q+y-7QZ+vezaZoH4Lz% z3Z1;RgvO({I6V|?<4^tF8!*N1WiojGpV{R6iVV!OFCx|>l1g4OOvB{n@9mWrbv`8o z=tzowu=b#^zj{7Y239)I2;YG!hz&JXB{@_o<8&x*+UA3c!G_XIcz|I*0rQ)~9pL>> zE~ciKg*pbtw=}rE$A%h0NZKC<#Xlb-2Moq5Fb2WhuKp|?h&1mgp*&Q!sSfiDxEjHb zrJh3v!PCOcq1tGOacn?xr@|S#{$wukCQ&9+G-!h_5Lkb!;C&Ifu$SpMI8?S%c#PVr zY$FO&ipI07)j?+dwE!A;c^6trCr?X&nc<)q+9!e#Hwt!+=!6gV<q0Ci>8qyUdZMw- zEmvARZX?=X$*8*{Fg@&~p*y3_JpT7=fk?n-^_KgBeAUJ^J2pFDV*F6lsl<oqe&it1 zRL?z4s8z+MnVqU%b>_Ew@pd?9pqDB!wPK`QcMiErBcyhLidh~Qu*3IeEK&O|Me2|q zuk+e<LsFQ;^jZ7Mv{a<~@no1N_!SFYy{Vz_mffJo9r${Dx4Y?5Og!qS?CykJ*zUB~ z2@AK@0$)@mxNBfn!^H16gEsF+1@B`J3@j_aFNIw0mo@&*Nx__Cl1A?i_cZ>dif>;f z_&M31!}H#Ue;?@95GIf1c5fX@qm}*PO7LRjX-~%An9z5u^^NqX9l1Lc?Igw}F5Fr3 zd1@O<q?!|;!hMIIxr{F{e<b2G<bT|aydV;-<p%k83918<TmM|^$hPDeYdx|$y4&aM zzcgjzG@e#=$bXMC8RnyWp>to0+UPA6e}B-|TQk646dmvz3ER`oGejBHopEoo;T)%A zeuzCZeAn(y(V^;>{Nz*FJp&{S`JKjT{Uv%cy%uyRD)&LZzL!Gd+&x#<Ih$LewecFz z1%Xsa1nyJ}Zv2VpivMn{bopSzny^6QG#j!hywt9w?2NgE+1wG!RP9kxq4^<5(ASWd zjT>=8>P!0^wXRS(D`;^PUNn4pbLlLH^y5<BZp9p8ss$r>4_np7Of1>@am^XNaon<^ zr9OO`o;KR=2)B!9+6Jqdbe8k`7euVVa6V}qxsGHBUH7d?<N&X3q9qx10clD^B$k|R zcH<!XYVo5IcA|Gcqm_+6jaT}mBfZfGft|@lh@&lhG|L4-j!V1Fml*rIAUAyPpEz_y zpD8C{Lw}hn;JhTJO^QCTBYV!;rP$Ld4G$*hd)>bJjctfJkTWjNvy3H??NibVw_8aM zrdJjPwn@yl>qpJksiNllHF1=D;VVPZxAPS>d*=f3^Ldnd-H6H9SPx3%-4#nZBKv?I z0xcUZBW5AOK0|pPeWA*$HV^n^y%AaWHpfqu{W9p;JD9iUVL>c)kG*$j%&t^0lBjon z459jbS2~w3Vm?`+yI_t%4Q=;2IH~>BJ_}EU>ER8Uo*0Z$`@~-)9>wx?MM_0lvjq_? zwkBjX0gqo+IdAv~<uw4{lfeygZCVc&xP2^ugoEVam8jxTc>xg_h~;@-#d|E&_}}&W zlA!9`Ae3z5J;mdyOp7Zcjt4TTuluWuUwpn-T<&cC@q9F!Fj>}iV8H*k_1T$q0c+6I z-XY=NJ~iRyl>k)Kt!vRLRw#U<Zi5cZC{fpj=IGbz>HwCL)mU8F-Yk<hn%3<18^>_G zU&to?+K`HsvrA@~DjMsujB*23&%U=jM`2h(Tt^o|$0(`IC?UtdKP7Z$=bNae>LC4} zLm!i)Jsd}Cz^~zy`@?;n;A)LJhY+x~`?Yfv;VRa^poT7=1B9$bQdGNEbbm(c@2j`$ z`aQ6!k9tDMZW4M4*Kbdh4pe-Ky_>zsLA*wiVsnF27&>6}AD5Hj%E8=%vvG03xSGy3 zWh*tt?EdO3*^!*_ng!vR+g`GPv?d9k8S;W9PB)`sM@0o<+4gc?`dP5VA%lybT3m#e z^3H@^P_?8AC4-0KX)3u^Ug84rCdwmpp87XO&EM-zWylwazzr%~c4>Nhi@9&`5qd7? z@8126<?0_)&zEK$9~Bo%ua|K))Hl~9o@sP|jkV67KSdU6Gci(qPZ0lG6h{Vp^&K3a ztZ_-+C@=t<A)e|(g<UP2`$Ko_z0cM>_wE)pVkUuRot4CIIir9pn-^m!2*m?aWz?6z z_ED94(cfia+{eq<I+a3r0{-nK!2YG?M2@u_Oq9B$mtRAHiwV~{k99#9b$p{61s~6O zD$`{fU}NSdn!{qT3hvYtrAZtSA8O6FXwJvYH-8d_{ei&F4z5#dIjq)n?-wBLhVT@8 zsxD%Fc(6>zRklo7p*FTg9P#7^_wGbAK+hT0asw}Nr_ReC+(5P|%iBYinv4c}gsA=J z79?5SW!i<ZBw7(6adC~ASJ0veO>rx@QKTxwub)V#VhM|m1p5ROey~&c*7K#P*E_ED zdpm0QrTI_Gt&5(MVKi?RqRkzEhIx5Nd5qifE1dhSq2ZU)tbQYa((yi?#IyA+6btNk zwUj0XYfSR%2hqiG0suoa92+N_y=V)Kk}F(`2k#RkhL2crpm`T3(agV1ynSUrjv>%L zYg_p)d%tAT73Zkn>Vfgd#yVyhYH>P^<>nQ}47}_9+7mQfVaf)`h;EPs-3K<G^TLh7 z7S2&;<`qma;H=+i+Cu@O#IRyif?_!J*It=9P@J>_Rhui3rygPCW}X3rBa2|`K>5oQ z-n?~CN5O+F{!k*uy)1&bz*bkPCvT*3dM7AkH!c{VsohTJWgTD2Q?qg7((64qf;{Ic zcfBwgCU;{oK}uwPTb*^?B^yHlD<GcT#}ysQ1@$1Q4Bg!^la)1iS65K7E0zkj5?3+| z9BVG2GQVfUvttglHRaIXLjTG@zk9gq!ecXl>*CU3T)=Q^`Y<}kQ?JkarAtST;TRZ8 zb;>F4oYA3Wl@9_ZVS>)+=ek^FJfe2DZzNQ}>2#C0hpZZ#m=+Xze%q%-76Xir>{8ax z-(J^d(_G$g{GhRyVh^Qc_s5e*UfMj>I8?TO8fMSDh{tmZB<EckmKNK4{aRCXF2RKJ zD;354F2TUI+>y(s%Js3I<B+{^no32fTkv?T^SCzj2NpQeq8}j<zD$<#BCvFCJTM+? z5RWCZ+A1FtwSfHv4XHbS6#Hw3zo07hNn5Gw9Ls^Bs2Xv!Pi9nIjYvEH#PD~xp5=uL z;FYkLyz&E~FVi@r{@IuilG`02p|)aydK5G>qP-g)ZB2=*@sF_n@s~nAz(O`;@iON1 zC)&5~j)8-4;p(TpGRK!}HRPveERJnc6HEm1wxvzMXo-~6=#t&C7Pf-Pb4xQg@_~j; zW$nxJH&g3BgGFlmL%XtSQQ)k_-j8ky&)oL-s2tHvW{+*;sxVOD2!!)K(T4Kcg2;;9 z>`l(Iw{Gror;F^_T6t<5Ves?k1N8pxTp6>!{NIhXxP%d6FKeds7a7UzXvs$7H~G6w z@3$|9@<-ys-7htiq_XTkU<5=7Oac+#oSpA>Avc)rnLwnp$6>F&eXLq*-ffJP63Wz4 z_+I`5L1Y2j#~~JShkt4r8u|yrKQ<F2?LO9caDTsf-M2r*Z8RdhTc=Q9!Dy>|y+C3i z6P!P+CPLUJGF@05a7SjhS_BCz++{HsMi+N>-64Uj*-*({Zz??v{qE)*1xz}!KW+9n zqk)aC*3eoI(vUTCJvpf9lN7+ZoU}AU=-2F&Ucqqh?Li|8Jc8@<`}oR^uAAac!jot$ z`^oPhGWib0XQ@DZ!WfcGaq&s86RhUWooMrY-XoLK5V2s-2~`yL?zj`<0m~7xfSBs# zMwL58=;O9L$+s!}e+@yiBkISdhIqCM%DK^l^hg?d%`&2V@isQ(aj1w{AMb+zqlAwi zJX{ZC5<WS@%0U10MC78wd?s%tczo_(O}CLaBn_CMRAi37bfr!a2tP($xh!R)yHwfS z=hmOXBRGIi)e@wZ;pEa1AGU&$lASQh=<z4Dm{IhXs1wo~IZosUL&N*)jVl2wX^-2r z)jiEOO2?BTu@PQ(L=#C-+vcDjwWjDx@vx(JSCBGUD<uB{qQ?Q-rQ0KQMaHwgd6kUA zrp&BoHS|}L^#$WBT_peNNHiPt>zAt6Ao@R=9$hpWF80dT@RJ`t8#6pSoH7hjf7Y-$ z|Ex74o4&gcZJIzmj`&vlTR+_)WJirvKLbzhNTV&u#;ZoPwYG{6Y@3>P8{h$q-$3u+ zc*p?$o-j0K@1)_B;S^GLfWGFN<BR>m+XCX-f?d9<U$j8-5AQv@T!8;U5Q*K_$im#s z>o2-=CKC@`AONqpBkDlW;eb&0(Sr@2-XK2BV(<ffWCuV!wgyBW@=}2!!2NY*L27hx zW1630r2A=eKc!cYj)^imffKcF3YBTpLS}Oi=`Y<_z>OW=d&YU~oPOME-{gR4?}VAn z^NHGnHOEn+oywSaymkGN<WTdS(!G~@l#AWK1yDS76JAJ4g~e)GO&YIbI>11vmg$Yc zFW_Uh>mFysEBtlo{@Z59gI*lD?&@!@J@7dp&=(HH@xu>!`?oO?FrHuO2!<-qosO@C zh3`MDk_wOpYii*QX5W>m)bopZP5!#6MUC!H9YAo9l@i<UWJP~BE?Nsi(rs#QdU~zt zc6U+g%S086p320dC3Z_Deo)TcIrD%rn4}1sj$#byb<rqsd7jREQV*qZ_+HZm^Jw50 z<#7C;{8%@Dhv}zjo>qxF0<#~_{!cRtJXsPA&UJ8jT0bzxwYuc^Nu};{8`5X;#UzRH zpg3*+8QGmb3mZr*?Y+A1QKP=aJ+@UA%c^QPBbT`;X{3J3!)aN1e*yB#y@d?l;SMm9 zSJ|m5b`jG6-<k$UhV#`dnZV69BSu)%{arL;{}E3D7m8r~e{G9eYBBD)!d|)DzEybP zp)TLeyyyv_%OFtHkymua?^m3DcsuK1YM1)D4*TlP2Sx&wR><52aqW`zx97OKo5vf& zsr(!g_#Mr4R6ijBkPjmx+UQxACxe{tB}`?vbpM*QQZv0}9XsaSD^KgP4oz7vi>Gom zFovNsnE6OJnZ#j}&jd&V?NO-)ZWjd#Rm(wlmv1~6@GQ)o6Z7HAm5{}1zzZ$-%@-aR zCpSEdQsBQn$ZixMGWKb`U@hN+%W#H9K&+$ncM@i2q1nRm*vo$Gagl%_0j9yUh>>d{ z?sYU-wXKxQbH8>m*LBS6%{VI7n%dtP|BtM<j*2RJ`^8lR1f-;M2<Z|~8U{qVB&1Wi zrJE6@yBkL7?gkkU>5}d)5s-!%n3;3=-e0`$d+*w7?REY;`<%U>bN2J>Piz!-kK)9M z!Ejtc&zjPN7_YT$UdG`K9b?gTidsc6iguFnk3$uIC8TR}9%~ESeX+DoePc)y<!4i7 za*1%D`t;r<kmuLq5WdZ0Fg%4Gz6D3%#n)@Nvwtfr7B~Il%3`^&T_hUu69fBM>ZRY% zS=T|<u7-qwy;q8A;9q~y4y=D=9L9!_VGg<@P%&rQBrdTd&0V2}C>Nw~h)?Vj`}X5) zK0{G7&1x7n{YoS?@B-WTrP=CvBCUI$XEXSkO^<vMX7v@%jX+abU9zmRtM*FHw7VP+ z{d}Y^i}ali>wsZvU|??Oxj24X&({Dke><n&6SA>f*08(F5AFxOz9||GBgKXEsg=|w zRTuBdEvD<y7<CYg@(uHB@pC=ZCa<)5NkUCAQ-G9KDJXNdbd80L&YOa>B;!eg31J)r zO6)6MxFX|!@vpkZdt@^C!_yDGx4TURkNil2aWRABWy)<9H<mApP+xa;7d5N*Bq!<L z{$(+y$B6t?Ol|yfw40mR#C+#g5%<-knL87D5l?z8t9Hql7(oYJi97(^<CMR~AIx?# zO8mknf}ZTvg9;Lv*FEWQ02Jdvci(b#`kywstzif+(I<1!Y`r9w?{TI-oc%-ze?9A# z$)6`+ux0BzU=mnnDLbt1<apEAcRiqW$WKlg`h@M1+QP>JFe6}jGl<y|a%uIpIHh>+ zdS_O>)@)A36gDzSXiEA*xlH3*@B%hW1<K4-+2#LzkmCUrGVf#*`r)h3iU>OEZ%6SS zj-0v;<e%o|<X^|9nf&jT=>$Tn+3iIN<4fcThYL6;6uknOhD@!VVv69`Iun_A^;F`D zffd&>3nJ#6M6U|4i~AE!mHTl=U(Q`I+4piic{(lgOT)EI*0fRe&g^lT-YcnGbJok1 zT{stH2A34~Qg~Yl)yfc0C1r_n6Ub(-AG1ek$Bz5Uq|mP3J<^X8#RW0@)yG0cbF8Kt zBgZ?J16<U(nrB*&lOmQX7CjNx7!@~H?#c_IKkG<~A)F&28z=&pxSXL0AmtftH8w|Q z6?>OgV6pSe1DnYQQup3pcxO#0h1(wTvCL%k&NA}>B3hID!NV6Ps#>zcy7CS*Z-b2` zDYyfbF+aL8JAL*ZQX{N{UWo^P_BscrIWV8@$i&aLMOQrJs6_i#A?Q%SpCu5}ABB6q zo|k<kq=jmu18tQ1{2cF<Z^Q~jZ%Cd$YQEv|>rHb%QrEg1969M=XT0$7HCA84I9cA) zdqV$c@sbacdDSJRAy4=-_MH(l2{hUd*D+K=sxlmqUJFyD;VBV6r$8L30DRa(Kd?<~ zQMI`&6cT=kvHuKnZo$(>u?7<JZ%;C{HSQq%@Bc|s5_WxK{AnA^7uZlA>w@~4Lg#$K z7@+pIhBoh6v@>#P%NnG*bbfQH4ON~Du6}77fcya9PNPHW-H~NN7xDa$<Er2xta~Fj zp#YW7ii<Fs@w-*YH_WfYtpwYMTifjoB4eFyB0l1z-=WyW3!xD@dae9-q)`nm{_p8e zu<koQI#B7I%5erspy6u`z4}}gO)2RMZq<szG<tc_%|A(=GR|!fzq>R^p|Gs(!M2+d zqLtD~KF?qm9|N`FItl!pABTOh%lg|ihg_+wmIy#c4UIP@<s2v_Oa#7>H~|8Q`@*?j z)Qs293Cr!Lq{cZ;eD}#Z4*kw+C>=qGe%lR_EhP#tm<6IzOf>E+2v$8_?LSH|6E)(c zj1t`(VECDHO$Rk%XSs1;D<wp}cx2ovuh=TYoEo|8!iAQ{?HR(!B_taJohW~GKQG5% z134O!ck!W&xf5>^l<p-Z7@y&>;0{9BZ=W4{Sz}U3J~d-_G_=Pom6YGwnx1^NAOgHp zNdDf9gD#J}wC|!7u1M=raLd&sN$`E#Z}92{T*cLLR?$YIG(BbgHMvKY2^!aBct3nP zk7uOVGR^i1p!qT=n=*SCSpT~BK<Rp5HU+hp7g9QGe-}3IiG=+7vU5T^IKza!{Pb$s zVf_z+2HQIY>b^_wq|G~FCw_6^9f3}H<e-<bw%JtQi_u`WET=_hIkGxPESNkYpaifz zwXf13to(7_=RF7=k~^$zJ8PnhZ}>7ef3raFMTH|g4x|RiDj(S89GZ`{T?-6)TB3Qu zk0~a=W>pTxf^fEN==5?pI(N(g;{_%-ldoED4CJ1&w9kF5JpqA&+`pB5$cFfdBEHwV zAKO)p|6-J6kN*Bzk@I9Q5;enL6LF6u9gOag6xTdUw7g14?LRp8ReS*nMzNJ)&-6MW zzDZ0s$G_Q@x3r$sBB7cAy^CYvDW(4+7n+Iw)GDT|>{n>%crT8cqmMqE!l~Aoxhv$z zhnP!K(Z#;if;h`^eP}ZOoAZoT`G2P1>aHR1Ks(!%R6p_*xssr)uq+DTMe#e{^**=a zC$3#}ud4fI&}28WRy-{2S_0k93fXDJqlK;`*tK0uBm)VFf{y+Yo{#ITIPS;Hl`qZ= zs;qhm`*f?eUPuQQ5Q2B&s<cUdJ~xO1zcDxS4$F>@%yaU64|!XY#kHweiPbHtfaAfL z-nY*Ep4FO-z9ir!%Y}4;^slMtj3oR&JrhC!itzy=yyC7J&V{P<EGZD#!_`h$*VV8_ zgZ--WG_7#GfIZDPsa5^cMg7!AsFOnt)%0VD)o&ii(e0mQarJQ?>ZbT}V6wEqgXXgE zW}1=>dH3HR3U^x!MZE9yICgf=mA_XS&v@*vd3o&3iJyDcE;GfQA{<o;Z`@I5J`egA zYco-HV-v;BkBe<C$QcBM>gX&Lvqe^`pA3w|L6o{MTin*I+8gO6DDzNwFa1dH7LM;F zI5(>38F}31l$FZj%d9gps9z2XQl2bkL-Nv1_QDkghN|{*cA;%iVYm5BzGzM&DXJ(R zqgbr{Cth*alf!dTEqi;tHjh-6&7$12>(eBz|613hwb+FBtwW=t*w*I;z$1=6xs`)0 zGG;%4XG&;=Rv^MSfD)=}{hcQ-TOHzRy^*ACahnN~@rVKUsPv_~|GQ2Y!3NhP3j1&2 z?7qFMC3UfKxx?T2G>xt(JOr!Rs0!E2!p`>+hE?NbS(=FqV`C0#S9MxaQ|C*+;?(Et zIz0cbd#IHOySAEuINv8MgJ2)LPxP~Zsb`|MJx$yWbD^jQZun$|OOn)h1>0v;J%{=^ zI0amfi+Pput&_^K90!pj_SNJ~x6KaJ#`GPs(u@jv9HI&@${%n`jyS#e`DqMXnu~Zd zP{g!v+^{Qzh=>IN(OnmRU-})E=-wbe=Gm#mzXD8xmB0fnlM`IEQu5e52X(2uL^w&Y zV9as>r(U2MK|v3RyB^8yAg_fe-~665)10Oqu({yzMhhpa2i=XvKv4{c9oM-WeNL`o z&Rt;MG!*cAIv0O@cBr#{^%Y%i*ZQke{lm<2l%<a1>h`jaHF}V_D8OX<#r#Uzd#4`c z-^<LvdZ$L?d8Z6dWK<NTgmYsW;P=7}RGzV)gx=eCJC4fYRYEm#F+__2d~rFsVx5A$ zArFMxzB!!i=n*CRR(Z}3J+55n_cn1H(Vd;C{c_?l{PGJgxt7tIdl-9H%pZw&Q@{Fz zy~Y76=$W3#?uoR77~=%$R-Xh1F7#w5l5gGO`3>hf7^4$X&aQ;n%i{ab2glb1Pd%SL zf)7Mo;3X)h&b(1by7U$2!T%|CJ?89R9r*g&n}n;=eiw{g71Ov0@5`jXa}Hx`Xvw!a z>l{;_6znFqhN!Mt=ftktxpzYZhVa^km1kRtS0<17_ps2&>*~G-!Jv?1l092@m9t5% z1TS?=#orGa76l{K*1x!ZNLnWu?iFz#P~M-lrU9rdxL!k5^-`)(f^ZrM5_pGn{OS5U zqlQUs<)n2Sv2h=z)DXBD*3hb4!}*8x5Qx&9fqF-dm``-OdffCdZS%!p=e(A8x!9Y2 z(vFODsEAq`I82R%X%Q1Z*;fvrkLD|;tfc-PfG&Tuy-VARRoM8{j!3z<l??o+^6b~h z^qyyzc3YGV?xoPa+4MXuO9lFUAkx`z>H^ej+n(iPk3N~C`>cZV1KqAxn?!hO*GDdp zk}*NW0QDefOOEzV)5Z>Dyp-}&_kY7Cuo=AtL59ihHrL7zX}V;M@1A~n&xp>~@Fw{3 z=HMxsGhHADDMjW=SKgGVLD8%ND~}M0mWDR9Z<VJe%1%<3RoIOhrK|=jA3(|6lQIft zj!yZ#%-X{wqE_GAzbMnK*>z?^Gn`EQM3&Ral^?zS|Fi)5T2nGEs1nSqjwvNveum#+ z6dB1%uv6UDr*oI2&5BF}Hxfs1WbvM=89ieNoMa*fl-_@Dx3K?B?YF}$fQU%Du;B~% zJPh|h@zf#@RjlzcZ!?{eExj3?Q64u5*LrC60r@%Z81}<$&i0)~uY5_lx{qg0Y>-@s zFTzabO)<M2Il=i5d1D=`k5qEk*g80k^`zo?w77b{$aDEOI<IqzcCkPEqeI6w3ty`V zZRE#Y+7%P}jUHBxjl2^+N2*+C`~nXQj3t+Y5g8>;yD<`>LhQN_iFd;Y<@<we+VEmU zbeiF4O6`><omZ8^!CzTOwDjM|H3^Mvoev-DVCStr#sx=`lD~2?=%$vltEpG0*@)Q~ zB|w<loqoMDkV1nRS_K~GHINl)b{dB5n+c$WlGmBp>{NjqhpI?c><YOF@XXNT<(h{Y zQo>H>HIj|MO4b5)3jt3o6aU|tWYK)B*<>KraQZ)ioBn2&6$8G%i>*Lbkc>=7l}V?r z&161Lo|sqYd&Pl74}O*yZD*31gO8-fM;)@d*`J%<jf=f@6f_L~X-ptm?vmP4$@UBz zy;2919NsD(%8O{)A=<d<H%uzrDZO>?U5$AgZ6=cuc)ChiYmSQZ(PUZ$AHB-!NB?OR zit$GGP<8PkO9voxKVA3kPazr2A{@MmTaqccBU+cA{k3SIYlSN4Rs^)ljMW2@$?S2k zgRhvIb+Eguco<DqY*@^x<(%Q5MNaVw&9}et7qKyP+eki49mvV0T%Dvd9NiFb;;&Un z?V<xLi~)fLVh7>~v@nv~c&;M3(X-o$y))w2BmlDXmEvGEtQo+&Us>UM)>7xS={mIs zvqih6TYGdTodz2{fmO1Ks_c(;G`z8fi8WjKpk^7a@Q++GA<bPe`uCI(c#))0d;< zyh-@h?$&F`{aP){rVXxnL72CusRS+Lifs#sJ#X<;i1UEqd0e2lYq^!)RxS$P!<%oZ zbRMnMC_uF+r_NW`fBa5&{7niAmMlh}xR3a+4Rc`S0$PNwr1;2#cKgmf&c_$9@0?Ve zqoUHx**W48aLP*N))!v~jNjeIY*&;}4Roe-sQm^22c+JpAlu&XlIwOQ2*i^jPB@q| zt@s6Cn}AR<p=kyoqjw(~e2KR&PgSgC+ua+2&p&c#2f6M_+~fZ9kvV`X%T)pUah2zO zqjC*bx7H0f&}dWa-03-hwfX3ndGEY9HE$SQr~qSVc9=_c|INdN=i0<v0*FJdzP=20 z8yxmF<8y%h5V~nhv~3`j;>BgfF*E+bF4o^0eq$c;Ukxz$-~3K7?_XgW5ar!i^Q?Mt zVyl9mq`zCdHN~8{)d+XEO6}MlorioMSB@EUdyp+pVB7n=h1u2v^SuX<s(MS<u&I|1 zzBqeur^H|qi6n8X`@WbjfLlj92l>8PBsjK}5gmR#m~I(|Z-JT<?ad;-NJxZ)Aq96g zwvf!Z5L7}gqz1|qG$J&&5zu*iAK2a`WcKy>0n9u3#k|=*h_8#t#fqPTt0t7jpx=PC z2^;U}|J#tKM&_lcCWce?a}+0P(m03Ar!`vAdot7~@3}hUn}`MY=-`Bu^hf3dURl{9 z1l#@!Ke99dt11u!ve<WAsPUfl7!-6{cf3L-TyI`@f0q~S8gW?yHC$erQ=Q<)yNOWx z0vt-<U-JEe5<!BTtjeArCGZk;D284O?}Bnkcu(;Vdi4msA&4yc)KX3az&U_OXsn<S z3;uq^;w~T0Y2n8d#g(wA{$}ASn8Q<WDH@Oh4yganZSaI^NZze{`Z56rOM}Y(y5Uy& zkM$2zV=HS5AL-ZxAH{mOCsb0%WtJ9V3mf9DIciF<5ZozG2^jRZsBN01qO?DpVJt4- zC;PxmI5K7%H~4UF2+<V#&=_V$w4Ku&+o&eqxo{QO0)>xI7=m$Es=AuE(_Bm@LS{IA zA{6``?09k^4}w5@jjC~_ElVMn8%~H7e&LZg!fv)psKj{pH<^f?VXsIqBbt;7f~z+8 ziISV>zqL9NgU=h}i+(ZdCU2MHtxU`g_phaW8U}eQJF!LwElqsSXH79~Gqj_=RWGtU zI~U-ZAeRV|%+lHZe30MS18zxJ4$NTQyIaYz&iBE-w_Rk0oBb!KUkOFPk2XNhjx_Wk zUP7VBJ~mfs&|5Uwe+F(@t(xz%I6XX*@Ci*k0TXxteL36_DJ#hIPRw0>I=W0qp8nI- zJx%m}3n`on^nIVzp!5`&H(Q|g{+|^+@lH(de-GT|-21>79Ez%8JQ>xcH&mrwC>p~* zR$#o_=m9CI>4Ci3%SZ2U`oP6|et+V43)--b1Jizo_jUJx7dN`t;LseUMbVf)rnZSt zkK;?Pn{dRzN2UL~tqUe0)FYNEun=FD%+I@=8+`rn^EbN>bs$`X?GQ{BebS(|pB5W? z1Fb9@7*2#t6TQae?tQo!!|ujk=DMfK4+4lC{Yb&o|BBWBT*0C-y|-x$ytl%`-&K_3 zw6hxfZ~v6fuh7?0e}-=Tq9U1{&@SZsU^H<J6Jl?hdv;7BvbU><iKfz>YMr;^T%bO7 z4KDP4wSkLPzzaoCY!jk-#&Pf){&$EXdv*1VYUbX&$Vgor5!#@i2Td^Brq!W4Qu%g4 z`=q%nb#g;s&+xWy--U3F_#~gAiLqzu9%6d|$yf!;C5<X4z97_R&a*Ff`}u!Ci9+(= z^64t=Ch`5)qxw~E@_Z55rqVt{Qv5qym;O6)8aK_2k@z?y@c>GDvWOa9Ih+^r6*cbl z1(@PORy7LKj0?2s7o>SYG9h)CuE=n>C9l?QI{K}67@TGvT89>B$R>M>?j739$WDa( zrj+8sKdNmFZ+%K9hmvcZr@kPpsr=92$4sJErycFs(1b^Xw(9y2yD$K}u)$QSX!rcT z5%8XoFXHgjU9JyJli=x(O{k+L=sM-8bp%~Y*5?OgA=?9&!a$a^v(IL9Uq>HH^pAnP zWWDLP(5dP5o{cf0<60M+?h;lvDN^L5(?^eizZU2)ILWr_M^gs#Kgi$se|f#_Xr~sQ z{k+>@il83(7{wzoAK#(7%`C|NoNBvv>6equH4$Ws{vT6!&Vy@$o0zC&C|uS^<e{(Z zos%QDCXQk8q@?iPQI3Q;kh<6v)uBVLZ(+N4vd0VGU;MYoB;u}1F)}~+k(4H)SAf5E zxIe%Dl$KAIUF0)ToQYq8(?2T)e>vetVYRs4LD(zcL9eINmU8A2KbUayVQrfQ$)iRk zSZ*kEz5o{9Qw(sGiE1m!F&Gi#EwZ^RDVHKRtDYW`x`-k2pKpsMbPDc}|Kc8x(*lL_ zpO}?J6JOLOLRdXwtR#0g7=asv4^!v!x&OJC^X8w3pTt#N3C_0>6;jxl%R;=u0|Ih& z_+kYa4-%G^!D^FJHPYT&xkmZJosE7+k6&aPB*X;xXAFjbHJq!S-glCipK|||-j{14 z2EG6f4Et>jF^6z?PCOws<Ig(`!AvzL$B>lkwudjakeolOn={T)!amcw!EA_Up`+{n zKguv9*AIu#hfXRKiO01I9Ru&Yd#Ur^IWu1{y|wVHPK(^P#*Fz)q$O70_hRyv6rX$X zE?8?M)qnkQEG)9UskqW+S-GArBWPqP<{$R#hm*o!2RJw#bik8_e4@ZsT5#MA<Tp5G z9Rp-&Qhk;WYkA1j)kCt;lMeLE9X8r%1u}CXC*XsYFz6Oi8A<yJ+D%RA>XI1dGE?VF z<Fl-}1zo_*f$EdVbXXPOYRUscz0yms8p`;hmDz;JL{{;SIpE}jrn_ey&lw!vcnz=3 zkONPoAu5Fwy&q1`Qy;KITzcsyoN3JLJS0dBSxMp8Ex;7X76(MZJ6+C=5%y^JrO<QR zKk>>RP0E{Fj}2caq%Kv10d1r`*&VLXiZSp6a87`rqcH`1)|m|Ib&H(ZUueB=NY&vs zF}>i_OO9?Y_AvzTc7TmNz!89B2DiNvDmkMyeEbD>TPY58o4lrMlwUz&Vk>6zT2?g^ z0NBo5XD$$wr5o1H!SPmUTv3#oA2>hMa*}zTAG|dW0sn%SV6`JNOT#Zg`d_l1jGBo6 z#c**V$ULu&gb`;>8P8;~vQ9E}Gts1S8r<wR<iUt~%hsUH;m7X71~sa|Ppet$L;1e@ zF=P}Cc%wBi(5LZW(eVEnC1-kdJre=UqcxrUjdLV!x98tN)q)BVO2#)70j%r2{$nhE zVAMa6Xa|-*z$~gBGBHM_Fl<|Sn(@__E>pTKa%k=E>3U-Df*Hrx!Lb2i4PNI69%bd_ z+W=jxt3xKQ<GcDdT!|kJV4vD&k0mszXSo)mA;EK~V&{mN;(&~qBGcw%R+2sCGmXRs zf}8JU@UW|m*C-3of-TwPjc?K=dMCW#xFa42#^bVNcJ&Z_NZqAG`|b6U#cJMTT>)od zxugoMVr9(o^*@h98}_0uZb=9;Dh#NeOTYB%l9xAouh$W1YLKl8Wp!rbPDb-oh+=-C z!u&>sytGvY?lz661M?(scivU{y%RrNEzikacZYBsU2j~(U45<MOM4POGs`<6Fy*to znH^tRI7ar0MbJhkg)KPHsN*Ds`BL7DF~F0aFOckf-Bl{t6gz!fC(M5f2nVqa_hHm# zNF@Xn{7eZm{j^CBF{Exun&9bF1Q-v7gC!0O!E!aO%kS2IhD9S3x;ep;pBi>$7}BB? zm7m_*HFtR#(1^NS93(rSDypd5qor|qE;-CH&Oa+XNZo<cRS18L3w&BF0U9%!b{gd6 zuSKK>3lFcT+*d<4_HOnc7|a-nXVO|tJc7k$lCcU-Mtt1n@2mZGm8Od?Mcw`JVim@i zhwENJZXOc@4-><(KOkcN9z;PhRTcbsz2ZZqV*8q-QeL>)UK>GP(RDW&t@R^kq+yNg zw9a}c-2t7He6W96p3Z9}%YP+34t|%@mb*p6P^F4-N(0GVD>gISz<b4UbrM>$93cNc zQ@vY6Kv%p%byDmyH!aUulAG+ucatP3rj~k_X*tW77KRVkD>s%KSt#RarV&co(Kvd^ zbE`C(YY$ipY<(BstB467(&KE61M!t|He#7r|Ee=8HfsE#R$0Wc^aX&$cbf6qc|>)U z4*rT@PnFwqVrGUx)FvuS<P#P<Hv750o%*INnLkqX{<G8ncmQ@xHDkR&yfOTz#w#`v z1d)xj7iA46kT`|V5C>#4-Z+g!N)9k<L(+8j69y<f^PgswD9_D+6MbC8l-=1$fM>~@ zu)R*U-QO6KX|=_1&w)d=!<*J*egMIDl`g4N8XQtkZm7)4g7{FOn1|b`lGf3@`&-s% z#EpkAMbhKsiJ~E-?m{AFi!X;b<rTKPCBay3J*=y46I0Yn?^)Jw5Vwf|i!0P8H}`C= zbh>Si5^?4NH?g4kg81vYk%(R}W%+6f#ca2i<9j-nusa((sRBslwVLYDR{It5DO7zS z6wc-RU<aeI0P}q@{0aKJTt)1D_INE1wVv#O4lm9-t`oYEs|vzVnXFZaO>ZakN{u#+ zeTRfT&NDNHfARb_5fAR2zGJq@gXHGI_e!UW<|+jc(9+1;ZiqF?q~}fJ=u<lFk#die z<Fi&A;Q$SX4XVpaopQb6qU8}ePUWY0+@?R?<DT!;QS6pRXk_53+kn6{v!&y#y*3Ie zLLV-~JWl`G2%dU0QB`*~qiKR^`EJ+TV~p>|A{?j-j2N|jX3LsA9sI(tK!N$kW<Q%f z@+udk<uht(FEzY8H^s~z4Tws5+)Z5!XMcBpb`e855K|Awgfrq5v<BYvGl)Lj$uJn| zOB-)2Hail#n7+Ug8dPwPU+^wq%x5J37lzQLxSSu{cnPWKS*!z{<@?lIpz-u0C^gIn zNAg&Q@9Qj=Z-<1(VVj-A?ursV7K4&DhsOTjt%AZX&r3y6!y5@e?BQH%HXwx-abDvc zhc=MLgQd`or}<f+5o_$}HfhXSL}5*$Wc|SWU{^(?-*xbo-<~3d4sJIcN5uRIueO%+ z?m6g3!uwF?%ZzcsM58yq-E#RY!G3PND(-(>2Fy&t|F|J{R>gD=beYGh3He*wCXyfI zYl;&~yE#y`?QeH*IzNUrWhWD~O0u;w=hG%0k$!kmM^6xQ@jyW#Qv3zpIljWchoLnY z?*7_VMvQa>vngKsKq#_UFNUfTiWRCwsEhVSHo<yW!eE(v)AJuzt-(f89rwNlH`{v+ z;`2*bkw?KuG8Ul+WA>}VhRKwT5j<OvG*5lWs|9)0U)fsaJ63+D;Wj^?Y5F3|WqVsS zh8VpjWmTP=5gYl9uOqDTwIBHVI~tm0z}R8u@dIu-i<#N=56{8st+!K*71DM3{=*+g zL+Z^A=)jCgg+_u!5GtmUX;8+)pg#??j`^vpS6%xUd_f1v2lEw94oL9HL-w-@{bw_H z&2$q>W^9Je$3}DXGze=CPQ#b)AMN~|4%ZkRW1IYCm^2I;dqDVK(NyvAF~k{~0`^&G z(odc)(*7UJu~CFNRGp4Y!nGUbc=6FU;1*7UwVh{=U#DgBvMhJ;q@0SGrgtJm@lI~X z;O}_LjY=p1Gd|aA7hX2?<!96i!==y-zKFN3d!3jb6mCYAuQFLs;9;o8*31Xlz0C`` z`;C@svoMbm|7k>wGG)%8kPy!+q1hbO_d1iIC`j-f)6(s+20|iLB2?5zM&dvK;ff&O zKa$>mQoXlzYL-ENk7j6PCXX9H=(?T5L;z@%FA}~gTzpTjZ+V4Ov7!pJ#0q5ADBfjF z0ro-pDJeH#?I2I^ZqB4vrHK{NK=4TIFo0*W(^gb@qQhn3`{^Zbz5$xHaR%2t(1&;7 zv!9q-W{u^fgOo?4wwTg_pn6KjoO|>x*!AZtQP?%hg^TJUKWkiBoCLpPtmhhx`w!VT zSe~m0%zfp$2lVGbelxb{ENR3KwvUPq#r@U2R+1?}jX!y$i@kh~$e3rF{hwP!^b>M@ zSa8rUnAg$#;l^^aBQv_%ppn(^hkrA=+OU~(dt)SxtB{OK_uXg)-vZ2fG+j<5gEuan z+n@jfL7po#`JQjvO%=#Zox%Wm9^<xGhIQsLuOVop-Flbblq(EHj=DRlo#KNbU!ahe zlT)kh9)-~0JC3{aK~Nzm7|xh28Q}fedL-3uwoFq~=W{|Bsd*pJGQ--`(f!W)noW~! z+~SRz!rg!*TFb@Np4)v@Xlk)pStg2{)G5A1;*-#f<UMoOe$X!u=Xi2AP*(eN;)j;k zz!D*C^_e0YUH*<yB;W<&RsQonaXtpOBw+f^xfl}s`sT&>9342yC9gr9f99q1LZxEG z@Yk0V-c@kp6Y?X&ShRt=`s=NP(9rs}nv2VstUDh{dLEyy=v~;I_Ta)wCFOl9h<yB7 ztSX<D?r7lY0aZQvA2)LfjHYoHZg!a!w{~nn%e50Qx=@*S@-eK(+4%}l=b}7$ygeX5 zzoL3ys#RL9QJ#PF!oN9?$#B<taGelWRBo!`&oD_DhFvQyLECFU^o-?Hp*09UYf5g} z{+U7ye$9vbkB@YMg9q#a07uuIE&et(O$}kgYo*yRAs!p#4q_G^Vpp^M0&Jo=-%&4g z;?B@`>PoyKe$%*^es~T>C-Fr(v9vH-U3kAsD9sTXh<>;mhwxUof(q#h5;F1X?D}pH z`KYve2T{V5mm=oNfBi=xO%&%SsAstg$Qm2qW94^s^2|D@r$fgDB)CbvpwV~(-<o=- zs<qU*4_R5L%$17;pB$rD>1zw%ga|{wmxC|{^7W37_hQ)fYx{ptrdfBlc|Xk!6(K&V z%8ekqt%3F9prh0e%7*Qq%a{{_WSZQT!Ir>LjGw(g4=>zoF`^6Q<*G;JY5W7N2fM1S z?@5=~#-Q))tG+U`cT}VWR>1Tq89Q{V$rB&zD=Q-kY(vTX`~&6On?+i+pl?S62xtwL zpzcc+K}H$J36zxX5`5#yy*(pnFosN5SoH@RJz!MQ6HIUQfoZ_8YKm98;uBI~)%2J+ z4O<9V+xcNiG0x!Z@$X*u&jr$&SA114kAGl?qqg_&knO=2+tnwq3&GZP+4Q$JP?ABP z#phR)JC>Sxzr2kf<*XfTKVHymZE2h-CnKwhlbUHZKSB(OXe|N_yPigPsgH#!f1Hd1 zF)<IMP`Ws?okVk$xPEF`kqs@))APCz5|!`U7?o9MU+HiFB;n~#{hWas&(dFBP>`Sj zAL8b8)_q`Mp#UdsFUD!KK`yAl#P@5xe;EeR9+HtkbO>AtVLr$;xY@12K61k!Ejk|$ zQ?@9u!>$~LL%0qwXf(IGLup$-<y}9bS3L9s)t_(7BWFYkC7h(>xl$|%kv9p4tL`5^ zn+TvS=yp~M(AA(;ud(w|{q)ijk7Vb5@ZEHuAdkB53!ULgz1NT?@_2{?^a{R`{T3>0 zmM45s)dXya7#x(Hf4UP-cc7RR4t9}x3wD&e5TD!F?w|>{@Yp%s@jWj53e%lV&ASvY z2cvlAwbN8CH(upkt_-Mqlz)(lu*z9*#)gYiF9ezfBI5=j*Lo{vfDwOi$sm{+;B-ei z!^`Lwlxl%3+0yc~m>KW{#)sfPQE!~7UNu?4p<0nUY0GAo63d7UZwK4H{&e<L22-!A z?k~o1Ny?qHks!#%pL+omv>J0t7^uPneM>-`pIcg4+F9;z^ZMHS+Q7Q~)1@@<usoP- z{K8#M2@AiFO(|Aw6=fxB&zxsCv|qEFFw0#|ZW~ME7EK?84~drntEIWFVt{Pmrf3Se z#wgYL3Pi}mu+(P@sd25dhg)zxle=Llb$EvjTkt)8u;Fx_o=7arMEKzExCKsNwY@!p zSfEmngg;#64cTUOezAkI#g3~~Q5;6ZNNso3tD)zkH24d|y$`5?L|M`#03lj?_3g+D z#8l}vls}NG0Cbz6foa47gaO!?x=c6%-<ib8<R$N%dd03xndt)s`=DOmlduJIU!L#< zD_`gRQfP4W{=~zM&B^y9eBqNXPsD<!uXDtLuWxn4LZI(S#KLD^o*^@e?Ke!OTo(&* zzW7lK$w)62NM6)JF7lcUA~|9PU9Pi`-35ePRw*BH;}W%Vv*6(1ROCvRpT|SrV6CD9 zPdK21+$0F$vivu;p7}vtk2+GG+{4?Ze6=xrhMZLLE!uhTSi#IYU5ZYAk^7LPZ$na( z({(oj_jdx@Wt;84ZvF~R?2B@7W+pRyr<d4f06z8mGtZBGQVByldU>pI-sPdCow~z6 z?RTtx8<dXxK8+O6<t;OlNr(JUu5n1s83tDryc_~jWeRtvvHTib#sjku>m=@L%piM^ z9OdFMwW!-TiF;A^{1f~ui6;UT4q=|xL9A8hMp8;x_+HyzIp^B0%cI<73tR4H+e5PR zhGvJJL_hcaTp<<p_bNlnXuI_9r$*&`-_jJF7@?8B(C!SM2ottG80L#(JqG5YJ+(aR znXiK}VycYylYuU;mO{GXRIdI8UEFke?8avA8a)MGB<+lz3v|!1n2`qo%@Qm3LVi%s zA%9iA!!tz{#NCrFndB8|7s!M9YStt{t%9<<a!qQ+az0OjD0)HiKAbkM6LVG{3D3yr z@H$5_oEN<?8h$LXN<+_3Ue}ZDc~Ud&u<5WvNNMl(wJXSs(B8B(Jax4}J)OsdH6|D( zUlRPvz%;<&TbGDOarauWHzrw-a+25%hiON4{JHK;LeXpKTxs8e%>JTiCOCa@VYYz* zr5I*W6K=6W*zxHvJ@+C(RC`E#t>aJMt~a$g$e>&9Vij?siF**Jc_9Ozf1cxzm3iYI z)0{Sq^;A{)#h7*Lb~S_EfH5~6eZTKj4@o-QR=}fjE)(`uC^9vmg;KioIW0?ug-eym z51rslWXV<gsVGAsM&L&K84=aGccW*-<nI?Y3R=9MgFKs3ol4LKTG51-Kf7Pocc1KF zKM6$a^oN4|eqT;^%3vBa`hO3+MDMsu?!V;FGM^YGdBv8~`v^--sHa%}v#8%@qdV0; zs^iV5)r5lU(B7>?f;ZQx@u#}y;BM)OHH^WRt$*l5yKRj8D7^mml!~1OAJB_l{t?qE z9wRqsbow56waYWzGO1WBxtFhPm0_(hT95?E_#6E=xBpZzgI=Q_IY}pF>H<D_<$EG# za5l=Fb+IMxelHjFozIr3o$`qE>iY7uh;dSB(!bbxh80fe^o{7MklpOUL010*gCx2s zZ)%$0eesj<1LtHzA<ghr4Uvd=)VM|v!@_H^b!5hCT9co3sgax?9bYRoxbC2*-7cj? z-$SzaQy?#WW1<@>xW&qPii4e0?%#LzPL9fDjv`|>ZQxT#goo8YsFHxw*t@Xe<FD%A z_a)$qu&yAqOv#|`Wx}-eMMkoLR{pr*D+0@j6fRSHW@fQZpU9T4&mLV;h?UuVbH1cK zSx!vmJ9T1;Fa?{a4VB3M0Htg#Y{spcoK@YWKb#r<)u)=he%*d6ZkItF;Z<BvmDyle z<5bj`n4Gn0kS3{lEO+<jAND<dG6pf249jR*FGYqG9pe@hFhM>u`dLSp&sG3k+4sYp z*VBbXqh(_h&K2}Q+0i-`3rC@az>bRm2)m{@75+kGXGyz)AFO*fTlvy)ek_IRRFYR% z>O$!l@S*ogYci31o4xmB_0`KX?QiEYEL>IqcgQ#cG#dAFu-cvSAW}vvW2S$xe<!r} zJ^HUt<n~|3M}jmiKMm_jn<(2-ovNF<mDamUBWO)*^*EaSesG($7zg_}_GXs;OU<yU zF<;cka7sye-dI#BaqcZ%o;oS~=-HQgZBgxp#{vrjH27k{i76F#aM`7QRQ#GQu1ox= z^!Pq)>IMTT$g$Yo;UKh)TWHsAPh$76lh?@R!7B(6&BcS~Sxw0;>u_~*#PH`99rAfb zvY(`X7usq)mjx6FHdn_tC;e(j4BZ;-6sqP>Ueyz^V3tO`Q5CjamIQI$1*!Y&rXe}g za7#9Zn|3YWk^UozMVp3t8|AFS=nKeaBQ{R<D0nUZ`)dWk8w27UrH=1rDd=gO%fFAt zxa6$O#z0aZL)S8iys+UJ+&wuQ-16E3xqNy*0%K!Eye9S4VQ6`xil%4`ePpXwtZxaR zhe6G(kw+Y}S~poJfUKA)UU%87^GieWJ9n)vHGh4MN_UUTz&kn^uHdNL9SM)Lo88eE zfTbF9GjB*LaXP&tFFuNxp%AF)>ng6D7dfOA)y+@$k&&tdJ|VUTZ2nctaDJ3?9D&3H zUQCbM{bDbn9+6{XfbJ0QbX?YZ%gPV;Un^UTza^16883=9W-;Vz*Kd@Vd*%_AZn3pK zPde~!fk^g?dZ^bg83km4w2SOGV}LVL^A&P**np9*<%Bb#^ZKB})-+{*5APM<Fw~e` zDSuY7u1j-e01gp@2ewn#iMjLCrnZ9GjI&P-l!R*FYQdQTYU{o?V(rc{FIo6mgOMo+ z3Mx{1$g@ZOsaZ=z9QQvvjx1WeDQOvPq{M#<Cx0HQl-<koTic6W^Gn><xPAZGsZ}?T z$a9R9FCKbBZDP6AUV!fkbr&)SF&!C-kL7;l{R{ZqdRtC7>KL$XBG~=*=mF3+oE|q5 zu5#dL_L@#?mACfFj@tlnrPeHP{H(OxuT1B0Wm**6?1`nGCt3~BP!u~LaQ1|5f77kX z?FcVOkgG#K9M*TKbjHlCS^s^-<(HqCGdH?ySzi1)lBb3)PVNs_b~1~W@oq8mKB>^s z={10f-`sg<+azLYW8c82<Zk}s6-2U@@u7yI4zrc$rbK*O>id*(pso{n-sUHoD{ego zb3Y6CWjR(0$LGF|quWUsu5vF+<V+aS!^j?zS(tqK*m2YEmPF4hwWE`%)>0xT`tqO4 zSi(26E2)b@iCqPW(}`RNvB$II9#~3!jfrmSmj{5!`x53s*tuq|Paz?Yv|~mG_3>D> znpzpEhZaA1otS(3%l8nnycN0NXw|#AB!D664aD4UBk^qMSI!~R2`2z(2>4LKGzkvQ z$od_#Kr)oFH^E#h=Mw5c@jRimHbwqkjhFiI8~Se*cU&RW2M;J1If9)3<LGDY2|9`b zcp3{~+6Rzv+{QsY7=nk%Ri#EJGKF5ycL)4xmZlr%tRZ@riFZRHKYP<%>8-?UMS8?< z+aJoXbam&z8|o!FZJDC49L5dpEZJ${I_SoTyq~0+_V}4er}V)BOh>RFA&0*R^NkD* zuLhOQlS9ctUbVS5r1QW5+nTnMH`dq{DWp_kXRR<Wzv{cK*0{*U=c5$wfaRs}(R7d+ zm3PI(=8{IbXH2&~l$^h2Z&FbrWJG5PeM5z`e*RM#3)1E0(fu`rAh=5cKK*B0#rsWn zlYJ%jv@4Ep;;(K7LyEX*HZG1G(J3|~iQ4D!{D5fRvUul`Hhi7*W&1f^*IZ)V3Gr99 z9Tc~oz;OFO^Hf2<qx6cG3w#!t*s-PdxZ8G11<Sv8#O~^RLf2PJI9Qpy2Q2a1)On~r zZiAH}>G_lViZ=mh-0gv{a52zvtjKcEkX~3)YT0(xByECMd<J48`A?jRqeza0grSt( z&Q=-m>*0;~CHr^#&yR>E8^vv11h}zv&hFc;y285dii8+H0-Ny8*5TOPt-+PFDfaH9 z;+x>N4-O^3kZAb<qWsT9R<JttcDQSPz38EnXAWd~c?z`^d`UcUDAO~y4W~d#Nzq#_ zXA0z?D+@A+*}4FgKCZ%q7X*o<kl|nVxsVk~6e<ogUT}Rb$J0mxjeTEgu$1%iGn-)$ ze-PeTkr-0`I?e9$vM2^4$y#Eno$>Y4cAv6gxZv$DOx7kA8(5_sPM&#vLn@5+n9Ycq zVNZ9SWQ0-&?O9}2x#a#`|NF=}V42cfonX3NKO-7zVlg*WM~)>e?y@`5#W}wPyoIf% zgw3rm^2zTTzCAk0NLB<mPcs}m&HUpPFwWN!MXXO27rt>wJA-hXZC^W{Cp+o$^@I?( zg1%9P>YjXibfj!c1Bo|EU(J0eIG-Kgi&G}(?C1kOu=;|d-oAIJ57DsbJZ}|NpiR1l z79Z%l^FCl{fO5egVJ<J#tLz^xWGiM%{5I_(T-A6#wh#}=FOcw~_EBqv|9ZZMy_|B7 z^wVowE(S_4hCP{%G|tx-m?T6*?};%mi0U3G$-E`PWKpGls`H%JV)`S|be<37RJ?Is z>OPm|43L5yoC6ZJYXLW={DP-rRf~?bCdZb`dfz-IK|3c|`se6jm01a!0ce?~$*ON! z8lYDP`c1%biX_Gxxk7N_0V^~3e+B<+uH-IJKaKdrZEn=+AB&lGA4m))XHRnO0yHms z=V5Ck-KL7uZGS->TGmbeOed405_O6RanTPpJ!L8OTPJt<zfaDuQY49cgYCV1(*m^m zwB-k};=@F@Q*b(}Jw38tpLFg=?6w>zo<Dt*Uoz_!GRO_g7E}NE@Cm(9x%0+(r~b~- zr%Ju(bzmADPvn4X`8p}r?mSSi1NoWq?VG`yZ~1eTuFPjND~gn~<b%+!D*U__s^2E= zitH4vi2DSwVsZ$Mjf4h!eSfwxVtmywQ{VI5#v!g}A0WB)jGXlqU$ozD0_adUmpT!X z=L-pJruaJtH@D`yYr23F(EcjF>g*kXfGTy$e)!Z7d{DGW%5n59sK9M}g(A@3jP^9d z{toG|`Z`Y3<_aSZD$6%<J1aFbBQzisvoSilw)&ZyU^D^X?B6>Ke1hKO@4t(DT6`Z! zm7F-Hh)Cs2;3$&oG~UiHVX{`-MZx&4z$<%9K9R$?W+6;8BzwfdSQr!h&`;fCrCx!r za8>9^%CjxtGM>4L6_Cl(paPAg3e*eZI5s|#bLJ8{Q}U)#SRN|aNhIY`+ER<<Cws`Z zLDUFFcadNDAmR0SQk~0|t&j2hnPf`tN&c{J>wu|#5$)7(08BXDVRH`){KJRyi<L9} z&mg1)|0Vz=u+u3u7)<3z$=$=q`g{t(wp^)e`Q>w>Kmc%H1u&Wk&))>Cg?e~KkS%M7 z>{idWzaB*B+tDbQaJhGE!lS%vgD_eSXUYcDImlyi+-MS_CT~VO*zgUu6oQgHk&`$; z1^VV)ItkS$i9(m|(-vAlJGt~*$ctJ+`H#U?-oFImY-eZUHRm^wv>Q3zn{430Ry45M zdfrm!@y~-1{h@}id@Z;TE@FG8EC{B)_2gYS25k2M(!3eOAR07?NoE2ncJ=+2d<@Zk zqq!AIN|J4nJJm2tVsM7TDb)!&Vk6U{SM+1p3rWTP&&B4(*5l4Ja$A3(qeuG{JJ~wR zuh4M=*$;l<6-yQbOq~SV?bKR#FSPhGU#j)rj5g_krj7IVz4KW5PTLgwjYM1E!brg) zM5grxd$|m)qK}`~9dty+aQaVN7w5AL-Jf~O&*{NHn9s;(-nP_YMpgyCBTyDQ-i*D} zn}Teu%w7irS}5kTda%`Y%<1R!cj<%Tei&KoC|h8_m`i(Gq#Jjxs|@wBgm$wrcIGZG zVwb%!bG~6!>-*l$7dZhd0iW9Aef%2v-pB#(aXKzk=BFFMk-D18`-V_q!H6p*IQPdz zH|ZmlVNzJ;?4gk2AO5-O_v>&HP`)CSnm~7QUyd*tIP&DhLGXJ{Vcc1!H9>i8gI_@f zfY0b|_eqlNRqt1A>v_wCE%8_JX8q+)pVbj<(j$^t)I$#qxrRKO439h0Cu5cgExNvD zGM1y=v@8(slV1*mDW=2IPtMCRk9P1czB}8ceZpAB&s$IHFC$D-HyFCT$<bB}|B{Ej zN8}fa-}%wqV<F^A3ftaR#>n}j46G3WO&i$l6FgbqGG6rs<MH6kGtEE_1CtJdG6m~2 ztBncf8sl=>oRlJgOjqmF1AbKr?em60;(J0`8))o3ctg&oP{UN7_-`Qt;Y*RJ4#7bV z^m^ZY>O|_}0gexQ=fX#h^g&&=3l`N7gD_XlAGSsMRw+0$cSCRdF{&3h;vw#7Ef<5C zooSixcU-BMxU$|NZ%+?I82Q`VW{1@stymT(2US$9Z5&aR6WKi21fWMyzy7k=?Ci5r zxo@}EATsB@#ce2}<ofiYH>T|?nZ#eq1$n`bpphewd7AF%4=zlUQYo`sE$=Sb-GUB) zZJY&+Z0KhVE#(NOA9zC1wZ6Zx8VKmukF2tIW|M9XIK0{=#E)$K(1BbwYo3Sb@5irV zlBjOM<_$fqLW+Tby6RutQw6nMPDCF2_@(62Q11qJO;J)lZ#M=Kw)`+5##0S7g4VzC z)W563C2F`cZaCvjgG^1KHyO%$P)2aZP7(thd(Ritl^G0#<R6$VK=~guI#}lTqK>|u zD65*e!cKiw`69-j<OqJk_FNle9pc?gS?&sd=G>q7@Qm-Yyx55ODdLadc<ukDScDS3 zM*OB{e-8e4Vd9z5wS;hwAk2eDet9AnshB?uaJMFgoR+*75{7xT8{VPX7GyKIcWuoP z>h|U^irN<+#jRh&V~)*SVWjL{s;BWU3l@vw{-m^bLXNZaN3W20aq9p9S}#r{%t4K| z-}$YVfJ7zSrwjC>JGjh$t<H`&k_H9LT<X;t<t?zJ-A5PPsJqVZ6uP+z$50Z|`=4vI zq@nwP$&7zGYk=z03p2mVh%r<`6C;*2^UKZ7Txrj@-{2Cuja(oAIatKH;#y)?sZ&XY zoAU?m>X(F0DD@~40H5t1L4pn{ivdDfVd6}sR>lhB3G{RN(bz9K)T0C&Z8A>{Xf+mF zpJcIki3c-?$8l(*9OE#!q|kJUllLF<|DJtynPJ{h5<pW;e{9Mree%!l7<25w1jq2B zZF=U7!B(GPbB2B=!BA2e%F6b;d!e-K<MKcd6kcDz__fp`_sY6R2P+k;!K?QrRn2f_ zQ*c=Y=||e&`g7<@{@5cStg=um;OnoQ(sK^3>%rtY0GL8NVDd|Y7>1uf8zL28?g!Rk z@Y$<K^4}QnhVN~MU+Vp`Dj@73T1~%H-A-I5aS<Pz$t^shQ)h+w*bB4*{;lRp%bl56 zKBX_xoTNP-qzauT+G8IgIr~w=z9Q<HJAu*6lcI>xow0BzX`n2}1UIZ2DfeWS%RB2D z=#uxh3BaR`I&tDu$zz63-QCVIhH;$y-O%iK`%lOAouWKaRzm6(W~>DE*}F=-qBoio zfM%eNQ{+*qF#zYK;b(semZY_qEV9maieHg{j!mGQ&f^}(a%$ejp10n|xLt@*5kKF! zTbG~3Klqc4^EUY%YVurxXYR(ep`kwl#c4Fi&BU^j;Q2`hq}*~7vBNxIIhP)rb*5&~ zuOWtBIZwFb6z*+ut;l?eL|q`bC?^?|2hDPQ66^v)mdmTKj*j_wcm|LRCpwfHxL?kl z20*D}wD@Sa#<;I>%=W<#A`j$*NKDa-U!!!b5ZOD4KJ1OKQnFDj=p^%t@h$$XG%L~& zma%!n0{Ashsv3Yhw*2k_p@5G0_iOc;HwPW}fPQi@FwUvP!E?)*!=WuUiav<c?)-m# zOaJwMGCO??TSoKg%(9vb<z3G3=Y_~Dz;{*26k2j}?1|Z$R0ZLbdvLjw%}J_h=Qh4t zhSPPk@fTv3Y$WZ>@OHj5g@}a@2Heya7q7V!1t{@1e)X^~`Mphzgy`J->w9Xf^d0|( z95Y3|p?=}{&=3Jg4m$(Fo~Qd(U}*Fziw&l_^&@3K<Pf3M(2Jv)6sgUE1yZRq!+XB* za#4txB$)oTgQu_gl0x|g_cYbM_I6r_yNnT9jnvJ5%fTT~ln|@mB&iZ8;EN-#7Dgn2 z?k+T}dEM#0H7A>&pIiuMm1|x6^cIT6LW0up-*3M=c>9>@kD?d(jcRQUuP;|oAt}`? zLcW*AGc}<-I)v0CkaJa*fZxJXu~#5$iZ+F$1)ScVBD2Hr<jb;#T3ik?{X%iDXOL;E zNzXrvpe#W{7s96T_8BUfG01v$VI|k;iFA6a*&FM0S*xs3Z6t<wh|<dRzt_2oDe=80 zKTt!ONkgSiv6jo({9np3r5>Mood0lApWuW{SHh(zYD;lBhUk=~C732H!r|u8IWk;l z5z)f`m>X<2<j-iZF5i@)O86WT+U+zAtw_V66t%k#s?@FF#lFqs3$h@u7Us2cmU16l zJa(u=QT+DKoGQK;-ajq9*yqNyAgBw4&jixdd5_`l50<3W0J*iESifiSl<||wwfEDn zugaEo*k)mZW?}C?t-8$`67c3&SrTp+-v=|oR9*0y7<$p=ZTeRf=Rd+LzV?+0sA}hb zH2(_RP~4`H?dlZ=QAKCUcTWfSaV`yjl*c!@3XBcfZsF|{8Ej|K!dmRZsjLEialEpc zoV(ekCCWB|4IENFqq$d8K0`bDM7s28Rnyl6@gPWf>oRbl>W4K**2l+Z392HHDxAax z4|&u#fx_|H)$hKoLs#Sk4*>R(_TR|gThpdzps$)`AbXnRcZIy_Dv3l(Nj6h}>X(#0 zOrQ6I^1|u7GwpUo9BV0WA-J1=WCJ6PA`9TADOUFwl6Ki+yJ$9j^OYZ`!fb0rR0Rg5 z;aXgaRpO_Rm&fo?0b~koKuc+S#?^dGKd%ZNVwr_4<fEe9y_fGbb3A5x^zb)c;hk_S z76#(r_=!_yxGwgDLt^suvY@0nVnl5(b&<H-moFnw2tD+_$U3XAI0CLoCm}cq?jGDN z!C`O@gIloRPH+eVgS)%CLm;?AaEAnUcOPUJbe7%yzi0Q~z3a=q>eHuA)mv&^0ZjCX zNRtWO_(Bog(j}PQid?jeHQSyei8S=(M4x3?5i~PQw*y7{J<{ku(VwvwQ+DP!0EI56 z4EFD1t#Rf7G01xMEn#JnEQDFvMEH3Mi9_5YrMhkA!iM|S!?MxDv&CVR3e@EVG*eFr z;%X%Q24*WS(-h|+0dd&H9og@vle30ilhjU@!N6L*i0FB^S}IRlzUw|BJ(`Ajt%nJB zG&rqPlqUexKje8O_BA>bBj?{r?g`G3A4Ezsc)X`m062%&1apCA8m2?Si=g6s0K)MR zIATp%<+VsMUwQ2Kx|Oe`0TJ_;H8%A1pSqfZ&0$3YbETQ{lfFD_O~;rOd6P{YW*|~{ zXO7c(3}Lt3GpR1cMr1zx_JRoN4OefwbK>rL7<yd0=!ByiGV<x0;$^|RF6ZxBJblPs zJe-BQq6u|ZIDS4A`u<iE!YRCIF4TVX7`<8G<XB*?X3G8bpxkD|#es5@f^B5aN6F9# z0P_S{XZiDr;VF9Aj|(b#QRXXt!;3eCf@L!_AE&Bc?oG6o3$*rKpF&R$VZb>b#c_T3 z;n?BwI!;Dh*u|K023YW1>E*6Wck3cyic_{!9JZbX>TPq<Ba6OGiRZUeGc_<QfKOmn zR65iRF|<F7lUwqvOpOjefRzioW{VnpilB!O4TULpmn_&rhRWXxa<J0EeLU~VCO2_p z<nqtJD8hq1W)yB0BUbYDipte-l2u#!eOZk~t`_K2Qm&**&@Ffzg1PAB;S2}tjAmw0 ze<~z}CLDon(Mz!8BraiL^bfg<*r1vr06&~T`1W>aWBh<p2e{b1ely$zKbU>Vy0a=2 zMEACIw*n-~1^<7a{PVW}x97X^k^4`UIu3OuGqUt<^X8@YS!Q~*IGG=$<#y;T8KaVn zeQnD7Nau%5qG=4ef;B{Oy_JtIYt-d3KQL^jcAlxW`WwT5nIcBM19QoYzWiHrxNO4+ z<jIj|_X_JIzekR+6V=hLuTZL}ipJ=yCt<RCncqb;DE69aygRduI%|yum1S0SR#oY% z{%p6QHVVhqd~Sk3y+PA~EAQ+qOv9FQYoWHFsa^@aA5B>q+5+VGR<)Z8C%7qrm0pVF zZqU8y7KV+&J}fzSPyJ<-gm4h-rUuC^V7;885nd{PF?^@@vF$oykxw#?_bxG2&pA@W z-recERdf)CZn)sZ09OUaQN)~lxzmt<h2gm5$=3N~sl%Rt?)@An(qiMKEcB?DY&6yF zQQhAVs7_hcA0Zr^FU8;Ukh@uvNzDPSHlekem$1pvR6UpS;lwK0h!dz5#aYS4iIc$} zYNjSq?JQHL>IQKtPrLPCA6-XmdF!dd6Ibk}>YiJ%2ghAeiEO^Q#THGa6<h{&-MfM^ zBb48W&e(*vZ_E0&efkIIuU&9aNx3>gJH<!&V%yLDRd>@Zc}i5k?hn!~V{MXIuImd! zmr*}WhL2?*<JVo~!>9P^#7FwWsIl?7<5H1D(!s=LBm0fkH-Xevs$n%+cx6<W(BEy} zkDm5y)1xo^HInpXVx&voI-7=%?cOe(Xee7e=Km6mU<{EWy*}vqwK+b8O1b+FO4(>c zIIBSxwAro~8PaJsO<mLXYvKE8EAED@Q`3EIC>}N(7chu#I^ZQmP?f<RT~0Sm?D<f( zlo`ph^{w9J1ru`b8Wy4IZ3kh0gr*)u&`%!-3&yoYJ~atBBR5xq3DPRiB)H!k5(sYn zQYcIr=Bv^8LM(^b2~kat^k=Py%S#YLg`O7l?kR|v%k|OA-9u(b@i4lcr6FUh>jYh9 zA7fdJhMCJUH^E7lj|$gY-7+O_p6&uZlN-O75~!ZOmUh4ONt=@3`FDo%Na^M=poYr} zUTG$op6?4;zbPBv@8d%<c0INI7%SxL4WeZu8-i#D!yuUY^TE`ra|0pI*Av~U5=mmp zY)L>!c=94#*RD%j68iuKto{r-u<RMNUfz$BTECv|0LXeGRl@%Y4F40wlvxJ<Sa^Uz zO7)FeZ&^J&-07dno^J$vk5vXy`=Zf3>-b~wKhb1DOLr}(TOH2%w0;`da+}mYjx>B= zHO<g7c|6efS|bPNlHCP~ewpMgNxhSQ1JaZg_$^)`W@wl&Mv<Ga^wOY=RZ7_{w$iSi zJq5a1dwUcD6w&C^4<k<SjSPd(f(mRO@4jNuR*x}RLw91|mAPv6Q1kHBK4T|Jga_f! zxLfZFfFi9$yGsSZjnRq~><^leZ#OER>5*Go%0|U%9~uswwnMv+3!%RjD$4ObiaV|? zDq9={IwhgCCWV*X2NGhj`dIbZEPNCX^0L8?VnDscq`wC2Z6ZI8eYPsyL1mh;m`KEj zY)w4@#T2M1ygmm<S7O-f1}|wDgui7puY=RwAx<AAADazsa32Zar!HvHx{31=nPhe+ ziMKG0pXQmev_@>W$oE<*uXpexRW8lHD1GEkfP9(QTZ3^0Pb175z;C2L9#8q8kg7qW z2|i=Dw{)tvc92Gm&i6Q{k|xXg`qeF8MBzR)w|maZeSLd`nIvYBKz^iO0TN!9OH6L> zow-+XwJ)CD5?I}kYN5i$kxBRWI9&9pyj{i-rmAT@pe;ctKcCL{TvJXp)o@tS{R4AS z?KO)y<e}h%=jAvtTl;WAv5~M3!F~%^X`#EdG2NT0aE6tddpy53RiC<Rz||TIh={g3 znv3v)`rxCfiP2Ee+*j&YE^3Z)j8H1V9Qs!)L8R;LzA@Z!W^Zpw$@p(o@vLxZ!m7U) z6~xLN-ovBH7gn}|GK>>C1+5y%f=ryqkY4YwnVCTW`{T@OONayt%4uMJkkM2`>^=8T z==d4s^kptz^DDl=_P`X$*{aWx|H9o5KSObjM@fKZ<R~-9sKobME4G)JVrDccznd`6 zqt`6gloiv52HI;6laK#i`I(WE)E&<ZhAQ$0HLSA&?js6U537x?@0{zJa#5BR-~c{2 zgRk-dWftiNa=%vWWfV7N-LMnXs4c?AT;<?iR!GkZP_mv3K9Y#WgjpmUcO^E8@V_7a zz;Q5lU+#{>nTY6Zw@zeN^(W}<|B@uKD-XItr^3@Ms7-I_b!&YCvz%dAhOq&bvKkmA zp<ZYs>E;TD@*`W4Es7h!zfRlMn83KWrL?De+-gQ&f84X3HHG?b&?|ddP{#Yu9hOs{ z|43jf=MZ^v|K4HH*YP}*>GA3a-oH?cthWn)Gmy`Ol#1|jUSsx#VNc`tQ{^-fdZW0C z^zu5x)jdjPRTJfNvhah6IUW%)WXHoj029%@E}YRcXHpGk(}&|>8_f~k<hXYfNjb0P zOm^m3m{s{JxDM-2x9im#5w5M>_Os{4`!!1@kAt00KweeNnZXXm+^%^Ql59H+YSBpt zCA1*C$x_0Kq^&;|_uFfh#R{^9tDM=$jos49KiWvt$pBSg5wB<>soT27+$UI%vNPvj zxU5S4zWnZdhnPYF5_e3^a}UD0BYgr(xsD$n@p{T%-{GdvSS17%RrKeB6Y}UBZ*ALg zns^+NFUgo^vTq@&K$5Uvj+8=CimF2N(!KNJfCsAx;rFvcmNj4ER)8@J-TQrSgH#@Y zCO-U8ul6!Z4!PtZdTS<pqS+UV4ioeS-A&tWr?!w6OTFUA-KmpM(rwE4y&b_ZdtAo3 zOIrig!6%dhf!A_8X%>bV?m}qc8{d5fn#<|CA6x;h9qma;W+K#lk424e^6v4toVyLG z3%~chSpQ)G(8wxg0+aTC{=<>yv=U)1bvl>`G>^i9mpySpomwZ{tRCPcEVXTnndWeJ z$+*0LB%yk_k7uzh`|#f2DT$;SvB;5X107Ct5xig2eGDFP)3-**<o>Dhp(K`yp$}`j ziQ0nlXZ7f+egt$2-Sd<>T@S8RpstcKGMTK;rzfEw$rBRrPvrLMb-lxHb7x>Q?F1uv zZ!<M<dl1)U4*qd0$hUh-mvq}lG*DhQHh912k@EQ$`_ftw@ye~&H5S1iF^7YMLKu7a z?3qV~1(El1>My-K!!Uja?LX$O1=~bCqR&+k;#au^GA4{bzdZ`+vUhykW0^Q7U-4pk zrZqPfs*g*4h6vR(Q;u_JyOOaQP_~Qx^kay_EP61d9LW)HE;v(1`cpgY2y+;rd>|Kf zmW#wIJf~Az721H9g@Yx;eRC-M`MnVxE0T0XXVmv>Ut~tqn@TV)Ul8V-?O8@vn#mHp zN9%z8gy`p8FGml*;i}q{y@KH@Q)<VJ_`F8zPI1C-GrgJjY0Lk4MVu1r0F^&~I<sX& zv)345o*7gd0L1KYV9&HL%C1pe^mokD6K_CqbD{>gu6;0P?Myt!XIUK@*#62eQ{Dki zHt1Aka@YKL7xd^qQy@viOP?{1Fv6+?VtTN(t>8PV`j3=mlzTmEI}0s33O^siEfva+ zLmY#*U>8<%aM}gG@x~eR)1lzq&r;>0wnAa#{dAXgYR~g5mrFlUN<nNixH&<r8sf(y zuR$Z$ClukMtK}h<B6-`p3WdMVFjcU~O9>*TA_7_cVBClMC+QPF13sdWkDzkNuiiz! z7DuB{OlP~YU#5Z0eN+DLmT2$)Lf47leo@^njI(HF*vsp~f>z#Se46~Zb~Ha`;Z`5e zjPErf_S4zJdQd}Rg$aIZ)QejZD?GiX5CmIZMLUlZTqA$K;5K^E9MdTuEjHpeE9;^5 zX3uSBd)&wSeMG5$Yx1g^(05N@g+B#|sV2)`BpELq0CC#vjsTT5_ZBQ4bkJ4)EC|EL z7VCjvx*>J(m|BMH8oMK6VQ6n(vG{#t$L8tfHDOY34(lRK`<Wn_a{;sux8JEGt$k-F zw<??Z!dC<3i~`yxx1JeH*fG+xn68Fs-$=VB^mO&%JXxo7$+eW#*SMpq1uoEY^Vtpz zR;Hwxk&pfRJZb9$8L*b{Mf107O5_0eXqWtAX9l&JlHg1H>ybp>n;knIb`!Qx)qZv| zbxS?5qfpn|N((5(5r=EGkD2dI@R#Hn(BA>{WR=lJpt4UuLAw5sTg){Hqk9lq{)<w( z#D?Rjh@f~5_z~naNd9{GaiAmoU_*DdVMqmBb@_GwF(ZhZiA4=wJ3^_@oiAIY^QTR= z`;+Jw<i3BP``tgOo$<gQ-i>*LyO8wm(>^{Y$>8$&eSg8@YsHJ75=E7n$T8>s+8tk# zkOokzFITry_YGgHol>kT{gv1(nq(Tp&JNUnVQ8f)7+W7^w!$B;q#k!(LdZ1CN?w5X zRmR3EJTSDhV)!!*_~iiOf`N{MU-e^cK^~^pQVLHTJC<Fd(|G{SZISCQ<n2C8Lv>vq z$w6x)6;CzsbOftX^J1GdmZG4_VHL-N%0rl~s5;OjMihl_TwL(SvZ&5C4wU3}^aG_b z(z);Biu{%~W(P`f+2zlwTo139PWDmYA8l`g_=m5_NXgBkkCazli!-1FWGcQyxF*+H zoQ_GNXcAutS&9i)*A@0Nz9)$8Cx-S!z^fTw#)wyNG-8udRN^NRO1VpU%f4*$HwtJz zc?RNJhAdiX?B<6J8t*61kWXEDiMOK$U90@WmhbOZz&X^N6kXy!Z1SnCpk1H)(*Br) z<Pq&JCN3);t#A&>Sg`6alUL*h3P5MB<TpO59gwX?_r)c{JMlLEP84m~-ob0{0ncSb z7D|R-b&`Y?-=4&6%=tPO!tLfXKNmuwQnY6oH?d5EN6B)WvgIISg}cR;hP{%e|9ALz zuORTEKWHBh6B9G&`dSRWe{nOZ!sfe(nC#+2)qg3{*W8z<(ekxRDlHjb7Lu&kt{8TV z^lUE}VKgc!S`RK`K>AZB-|;<=F($V%FRKp&51Xsz{3{=z*<$Or<?=`jx2)Mf)c32N z*tCRWR%`~0y`1<9B;F)Y9(DH`x%m^GB9GhE(P8?K*dzP_g!Rg{qr1&%{i>|Jtgp61 z%~~Jhslae=&G8}i9;lr%nl`0gF<CdV4SU_#_`8IBW`uR?mAi~;^%O2%)Cnf~w_k9d zM=%^7ib|Ax>e|+V51uH6+Vo}I(<-3@0m{?c-2<}|wRL=>hqh7~;E}{h^Q)^Oqasxn z_O5d7kGbeZ?6%HEUJZTC2?rN*+*V{cuK(T<M66!-pm|+_)@dUCfWn3=Ue+Xq6lCu9 z%(|(CzURHt2D%@TdXrnX@6C-XlgT_D3%!2g6xbXlCtaRvBqv8db1J01L-}<U`xNr) zpl~)kq}@OZnn>e*gG~I-iT60r!ZjsD+r%p?&fFn^t1Py}h`UwFFzu%Pvz42;#N&*h z7WJF-Y2;f-_O6T%2E}81#9v+v^Nc#tNok)l_W2l$AT%n{`;nJBh5<9(`#uxhVD#S1 zR4{|Okv$#9l(tHk<PrMyZuNAMym%9TuiAWg4kt5x;`e@6gzzcupX#yNby=T@AC$f= z>C#JTjgv9s`qCmW`KxzjvXU(RF(eJ?=zl4d`g`xKtG-FQbkpa-eV_bT#OGS_tr1Uf zW1?Nb<5wc_C5OvQQAd_)5-*WdR)+pKZ+9)6kg=y&{%3CFTf1~d$rs{V!}t%mc*!#k zzA}n)<%vc~nG8DxpA2aPUq&9B(bn%BaqMkTuL{xHS83EiOp#kubIlhX2@oA=Hi31> zLCqBMs5jQAh36Pgvm%q5yJ7h~R*Kn%FHYU%-S)S-&7+fD!D?FsV6BQZvCiV(2dPPl zs_#j5HwjTcO~XDLSxs7dt-L9(D=JJXCWP%Gh$p4r)?g3wWHJst?OLT_GCxdRl<Bc* ziB0~}0Gjn{By;XP0`?j!^nZR4yya3$KZ|V^c>Fk2d^Ou^IDM_h`ewSU=eB5td}X(h zxlPF~ZM8t@3*tyyji|Oyxoq%sDH@>DqNQjU2>=uqh%`$I(B#M1AXpG-9iQ~^e)V{O zO$`I#UECL|-Yc1EBAuN{)UT4V(bC%9@L%Dzw3yco%k<-!M+OZ;90&%Lqe@labL4>_ zFQk@UEHc+<4d_VVZqMNy@11=T2#+~{DL!F5XlO=`Y&zKg1;mbW)H{vqR|jaMBzcnz zDct}yiFD2WK}(}#h#=i_-8-R@RTH=UFuvE0Gyam*b)$+Rk2vm8%UhE(=5_duP99RE zzVBALR;&!k&{WfNdS!z|!?Tc2N=yo}Bf0&pl&%E^G<AfboludyYVHIUNX9nkK9t|# zY}iR}r7p}qX!aV<z4~@CRLsgE)FeX>xIrBKJC)O>&YZ%}9LR|Ob7{uBNF0fG+~s&| zmz~Yb`JHIkVaxi4qRhdV2E`XnK%$T&)Z}ZY*$xGFh7X~AtjQ9zg3U)`^pp7mPUP9t z?^%`5DbS8HP&CMzg_>b;+_xz*Olnl!uo?Y?@}7C!zV-SRIDH7C990=%HJ3y}Fgso2 zP<#4#!?HMkYD*WFa*Hgd+4w>6@i4I@;mEDywKxzfa}?%F>F{Y&wyy2FfAdhIPJ_kB z=1S2@_P5<R=8mYZVAE34)9mMy?iUQbf;VUyg4ao})C}wT21@kYgEACn=brU39-H|X zJ)DOn`EUxC)R=^MH`(}qoO0*_Z)5Cp&*f8>f37WUnfh|Qzm9w)oUU9mAB_ddl}0-4 zgf;z};Px8kXDF@zT;+*lCUuFQ@pBu$(JECvUCSqVfY+xhF;AUtOjdxykA+m>uJBxe z_n5BG2&|aVy5l&uveC~~-1$59Jr}%)3aboL;$2q&vDG1XI#{&uB>jiiB6<A_dKLqa z<5^nS+S6b7GMxOG@v<>xVT6>8bolj<Uyqi?BKzd{MVjdNKHt@6Q?jDMf7u#A1D@%U zX36y+!K5T@b}W2ZD`3`3X=oJX)vA`-DZjoYjP<NdYw%O)LDRv}Cuf>VcB0?A^(#s7 zx2H5{-^Uq5)<eI12R%4*IwH(#B>o|G7Z>34B5nAi_Dxkoh+FEQa`iSyh_kf_@@z!x z55GUjHYbTx&0~$S$-oQaq!=yM8J=yT$VKl@iB5PtiMGg35mN5|M+jvXH&UTy9^1iH z^v?pB(=WzTnt6sUu?`5=My~d`(9{2z{JeksCmNtwybuadESx9&O<ViSg@8ey0!<V` z2f37_EYr2}XD`cfeSa*JV?Zyk>#EknW(&CZ(Qt_1b=-rAr*{$@(w=udQ)Epz0LR@) zS4DEx)s3+<Bn^`g*Sh6!5WYSW?#>PL^GBfoGfuYOWrYj8u#Q8(dEClIIUblcWqcc4 z3p6Pe@C-XxlFRAA=U8*@J+JZFT+D;T(knwGW*J?FRC72y^Z<@zkwXG;{kG(-74jsw zmffDl+m>@Vk@?|P2Bo5!IY9b(>IQBOr?F-JZ>#$2&JHIPzU1hN+bccd&EKJ20MfTM z<C11~_e?oVN2F!{HVHugIaw1;I$JAozKwg{jQ*P_7AK-%&*86x6l0=N8usy|Jc{G( zeii{D?|0fz$oJCkb45KZCn+!`=jEus5T2!{(P)T}4LLx7Z8xY}m0skF@?L+De?w<^ zR2`OpW3k2b!D{uiH6l<*c4X0uLw--M7$dU)wc6WmHAw%<N5}^Q`4j+0<0RPd*;wIQ zdcQ+z{MdTRD|HHQv~T%2^<pz{U^9s4Wu-e^qyJ~u_iR=^z->^!Lyypdc<%axf$qNw zq4Vi47T0On>sHBw)8?=fPtADsf4NpM59Xzxg>r$pahTueWL^<`lM9&J{qx3d$~Ztv zZ-y*=G-HV;Ze*?&nB_y>SH_}LupKD)I--(d(O8uVlrT&x3u5kPn9i%;f^5qcy=Z#j zzKiZ?AUk9DH;HI^wzK}Ht<H$2HA>{0fp6WcFB+k{<M&ED-Sr0%-KApz0YWDioV$7D zuerrn^Cu7Dm;^0Qtl?oJ54md>Rmy$AM#%vde0y<!j-B-Z`9gOwSXg^?GWIcpsT$7i z!l|JApnGMOd<pKapOyyjxXlGJs?;mFaf|f9*kXZpt*<1XIR5b?#lja$>xwVFdg4g% ze96R_rI#H|!1gdg&Q2cYjhk>ccrKT}I#*x#M&WR+X(v0_0tMrT1U(GmXu*|b*FU05 zO<!+I;=yMHfn)!on@4|_o{R?e`634gdrhs=mwpAwOn0BL?_DPh1&BU}mc@YgDiojV zAs-n~J}jd6cY91Q3)}^4M{N1v9mF&MhE=qC{KPn+!q3&qV;7kX-CIg5LBpWbYkXgz z!hz9}J12C!XVJx!DFZhKpzm6jl3W7pMeA5Q?L@sAB#yq^r8+fyNNb=_m$l#(0=TLk zGF#bD>}1d4jp0G7YeKuG^(%@$YJf6Mhv1`@J6#(pjICk^Zf5!jJg1EctEBG<{A;|F z_Jv;(G<>|8)ov^24N1sIm=^LK$u&MPpcnTa6f^@~c1<1wb%KYnbDuX3T_KswOu0)y zt&;0FMn?Lt3|$;GsWw#}tJleOzhpOPXEJvJk0!bL`5v>$x(mtPlY3DES4z#xBf6gP zTS^MYPiECCZq~|+YqU=on<>ed7WM~NWYY_s$2nI*(iJYw?p_!^q!$bs-2z-xhkZNU zuZ(YiikaOiVW#^f+77+A7#|hGHSu_T&EDfilqb}Hp<j`H0tq|+?q}ppbZU{<#{?+~ zjyxASq#UtL@)_~#uKNyEbGQ6!@2Z{p`NU<{6S|K{fn<`i>iLP3<4G-e*zDJQEO=qA zhJ&G=s~+WZtH)^^rOO<S=#%9AGH*Q4JwzWFVx}{4%zcv~rne*E&+4s4|Lc^I{3TKQ zBU>)>8p`{q^$&2C+P;mQt{?Qe@Ebl{7!xY*Dh<<~jly#sB7Sb9^Q`H`@tpId^wVMI zi3?Rju=4p?Nj8<1Mn)IBt3#E<KGr$KBTmc8n`a4{=I#&6*dKg#gcXYsigU*3Gd8Ck zVGoqP9h_vl{j<*PN;z%Aw5y^TD!)>=1Ku3e#krgsRDh8R-&65~SboaPGwSsBy(Kqi zJ)yemYqI_wZE|M)hB?1~D0ph8yF3swwnf-N;#28DSw8K}5-i_cLB7`{NwfEJ_04Ze zb+s?pqmPhKLho?kYN6{YWIIrr&^Vv{rPdz{P5Z<eYfLwf6vry5-lViaqw7}}-i~_W zXezz6Rb}^Pu)d{)HqG^|OWo|rDjH$k`t(yZO;-Z6Mx#Em`?W5bwCNiP+u9v(>o5X8 zXdX~oF0Dc_R8<$;kkc5wnbzigOCoR~;SuD13)D`CemGElNo+Le@(r;~CBmg73g)Us z9Fl71{|d4P?9ycPS&ky-;P4YJ<p?X(Pz^c~4^pON23b8OJ{^obQ&J`|t3N0vK4hOV zd7(`GN$i~9cvR_nHZHzte<n+ISmjkN3x^Ttt+jK+OH_H!HrFtynQhYN^%-F%hmVQa z>VspuZSyA(bm7{a|1?HVoDf`VP1M>+_x;^|GVLZj4vkdIudNCHy#-7XDpCLCQNADg zO*!DiHXd40Z#gHzJK3uH2sn5FPNj$DMZ0}8et6&t?tDJ|gwX&GsAyIkQ0tKVGrg!s zJ<YJSVjno9Tni1+_YUAur4L_nV_v8UW!TL_c*5=L`LX~txN<qyQ<GV#55Iwh1PeE= zTuk`p@N{muwiJNXg)G(FXD4R(EhW~l97mpa%;}Ez0izB`OE6i<yu@YGTS=mj_aGF= zkP*d#hSkRxZDK}CFl|QsPb1FI^z%Q(u)Vz$i&VMq+dAc>87k@w1WA(Up~J|4{J}pJ zLqHP5{Ek|AH&u$J>bMmRDM4IOh}hJ_g4&RT;e-=@7s0_AN4Y*u-g{5+$0_scO8yHi zTn+9PC90Lf^2XfwsIPA3RtrC`HZN~&_%yRaGo^u#o4WGw2Z8c9qx5`AD80m82xfiQ zJ^cGiO^I>6^Qf`cKaJn46&o+=i<&~9f@nn4TVOE^{Z_h{`Ad&)X(x^ie)<==Qi=aa z>HnpvUtZk3No|KW_UxOiI**!r^F{VgT3ELYgcK_nb=FipG-M|UHyAOr3HtAl2?KqZ zikeFYcN@kk{XCl{ucyH)K?|q)6&~#*9}&Hj3R?LIDzy^*{7^y}ah>RI`+NWHMIal- z(G%{a6iepBVFQRK2GTGHsq-_HmW!~hKj>|$jE6A#4kpM?TNLY38e<<<Nv@cUePsQy z)fmnN@+btcq4Wf^s$m>`F)(b|qR{8$$qqLqDfr9+T9n7B@y}spR;MD=bY#C1UDe81 zXxEP@Oiq(x;Am15r3}-~io>SU<Y1u}YO;&>`SIQeTWhmJ@z+n4QAe97#S7Xg%|E?u z^&3#*(7!q=k~v4(+GzGLJ&Ke2YKtqHVJ~Ijkt2)YlJcP;Q8jo+dfJ{7$#go%4qH;* z3h-%?=vz_4)pT-2pmPql&)tb5EM+zriY6jUmU;%Gf%VtX@4V+hu#8Kp5&imS2sMp{ zN1N1l_y~<DmT<WjdXQWqLaY2|gKZ|H!)}SOMz^-?bg@Gh%8BejN61gOAxnj^^kd;> zvA8Vustof($drq7G~yRk%H{&mt^{R~4FrrYWlZ;Imyenlx?4hzU*A}f(YZIFguP3# zMinlYte|T4@R1T+T~VnPS?L^=9BbwBeaJ#DWS$>U>MsQ;NWTGg#Ee)jnRSu*)GY-c zCQ9bUHG2hoSXSgDSX6w#DaK9Tt9VzNo%@B-V~ZDb_1zlmXnGhW&G(ymJlwo^zVQ?8 zZ!5y#i#jJv5;JlA91Wf<(3)=6J?nBiehs>G%6?mA?P$R!KR~oNU=`rnISbwtIa+#B z_Uemfs5|v)#UO0po9J4|E|NrYD>;Xq1T&CQcDMMAetC0SR6{VQ=rk)`k_eQAm>=O; z2i68hiQkhJoo=07-5C*i?1mNLkF((OL!WHQB!5oDr8;!TDnot9q?^Jdd@X73ib+OW zwr+Qyv~;8-MpzfWRL|qIlE!jyech|_No%w78RtXCs(%k9*h=X+j*QQ)gW(RlBNFCl z_v$3ALd47+9rcYf3^{oYbgVHr%qy-=^;<9Y6u94!b?D|T<4){evS=&%iiT8v_;d6j zWrjsda$o;Rs>|rEnM@)_WC``Gz7NnL8_TlZC28h<TeIQ!!+o&;AWkw0`|h^4I<GEH zG#o|XF}A1|Su9UcAAWm5X#Xo);O(kFDGXZbBU6kut%U-43e$)8l3C9+f9i^rTal69 zWB4ZbCKKInK5Jya9mULmI<iTe=NWOx>4{D>+zoS`g~C%l!!YYx3Wk@y%qEjXKvLgB zp|=*IbplVWIJN<vQ)!?-&xmuO$zvg4ald1#3=)-M<-%7ywg#$NeyJtcI}43u(F_Fa ztECmeJ3ew~wqp^R(7-A_IWgKdN0n>Ko!=*sG{t!#Z={_3@E73nYdZdMf7qAed6s#t zD<>v^Vc0c;F!I^wt+7-2^P8Mez2QvVcV0fnchg(7m2^HgJbz;e#dDK?;{Wgy#d4`R zl+L;Hk7zJAULLu;5>hX|rbCqY>?THA%u1$+rJ6g_y*cMuE^~E$+2*|NW92=ZIk(N; z(CKR38~KJg&^{KI23@ZkElO>>@<;c<0P(c0xJ0}yd|aq&hf<1^>l6Ld7dQMV^B;k= z-0XVlgo>)jhaNv^q7)lm)B4$7QwCS(AFOCVgv4XDjVq3yQ7u9PX(hQuk#W_2;0{gE zEdcnwo}U=Vhe+ndFaUWI3w>(-EikZ%#C1$q{t!mpS8FSRHz5|Xdoz@kDY?UB?}kaV zmAF5n&-JZJydRdO7-Q9;_%)MZ`rU0qD>~Ixp{6KCG{C6tCwi;;`n0x{Wrv_b*OB4Z z>VX@RBiX)eKe3#)J!d)j{)Gow0v98SyKvW56reL5VhVBUOd2YZcAib%`8v6w(PXzH zciq44i&pi)^%kj&%Tt-7E!F0!N#D*5gk62CCU;xj$F|=Dn||dA{l5Da72qhMgE?=d zu9Xd)l1^yU>Z}{>$f3{C#-%<}tyQV8PjKf|N~`Y+-7Q73$A&erSAf*g_6xi<pdU8s zxY$=+Vxv-h-0)45(u}Yo&8XOfYw6|AVo6btYz*z`0Oz%CA^G|WCj3|TK;JHGmpaPa z!V-{;2+6DK^w}8l9FMKm@F1}4QpFl^;W@vWOXKe<HC_wZk>h>A90GHGxwy*__C*y& z7n@TS@9cUkK90fNjRB6!kh#3P-&(FX0i)+aT-*dKZh;yeQp^aaN7rlxD(xbgg* z`1jrD!{onaowXk+KYClwS8R+;);b~u9(eZd-xqpC5R}E>h30KgO0Ux4E>jxa9o}v~ zX?_WF)Zn-PpX(-tumqjLGjeyqW-M(f@h!eWUSJKya9@8VUEx9C-mmC@&k;t)btlxw z2WwQyM%~1+&BIS9P9bI>freDaaG9=@L(dXbk}?E>YlPM-@o{SQKV&9E2Uz|1twfGS zOi|nqob3<}t%43=&QreD=X}VOT75g`5U*FQ`PyDx=GbV7u5fP5PGxhFRJ7*C2tXLV z(Ar_LDZly%5t)s=8m`N?AbiU)uv!+T^}Er$EL8<Q87Y4jE2V5XT;hqILI`|(nic&| zD&)WHw=fUyKT{j<U_Ix6fj`z|kuIMsERh9Wc6P@mT9YNp(Fjwv@14iw8M1?n#F;cM zX_+)oy5H#>xtLrL_VfzuB;EeQ3;>o6-ixT3)xbQP6W0nS<&CLF5~t_``wwDg%p*E} z*%MkXoI4S}96hS3-bRi9MNWo&aveCa_OXEwY$x?mPU4<{cE;UENUWr&B6f-h?E&7a z(K^eiB8kyJFM?1|+UA4V+b{1Yvb@cYDPvNWP=w#AP^KraPi>uq`&r1VoN4NMT>d`Y zXjK1rD#QwyBw>pEvMF7~`UGDPK052d?H_TPI#E#kmq1rE%S5*qr4CHlKKR0w-;eBY z_Z@xj$NP;NY3e7+*>3H&273nbpRb%Wd#^jT+gzpz1po`cxt8c?rxJYK?MSg}HazMZ z{3c4Y0Rb&USbB9vhBfOp@>Jzh3K^-<^T}a(XNf_!d2r1waHFy=1StBl$oUx=)!>Z~ z#Z&jb!UZITa$JPDP*hn!TA@&MQn<J!iJuZZe^|S9(Ur0eYvaSEUxw|5jM(QgaICQZ z!{MT7(ztz~IzPdXg~AL^Zep%PcDn4Ct0h#;`-+Bx1lEZ@AhV>7&O4gl2mAQ9+Q<3Q zs!a)$ujz@+q7jOdh4o9diu0&IAlTv<eu=N`r-Az@lQMMY-P9d&7<)z`o%>`K0F@tw zZw&}KUkn{4j@rfz?p(%Ez3ia#jmFb>n=PFCTrQcUUz*sqLdiM|*?W9J{A9Yjm?rgR zkPLDS1<9sc%xwfA=ud8@sEbf9&{zXragJJfZO6-w)_s{G9RuEE){4R)yp7}Lmm}Nf zgTLSP58bI5KnU*<0*)yLi3Dh`hqgXC;JG}7vkfe&SEVJfx}go`^6c(@DwY5BmTJcR zW5E)e`RK(wvSyUSpM$3&2Y32xj|;3Lj}Isf&m770n6Zg-p4)vD0WX$eD;I?O>6IQi zHni=~X3hB%a%9>7eA$?aSl1n?>Fr%es;3s&5FJ=$liSN}-6hI~|H|g;QN39`9_t== z%e#uVH3uv<rYI}zpbq_5mZ2L!49kkR1ECT+8pW|wkAYtvyqwg$4GPcI>NES}7J~t7 z;0=b)7j5-2*NYLdx3I{s0%KlZq(2@4XCyO8G0uc@dzqiRNNIZ2E>tLP(2?%;&+Opv zE0im&QpIWC$L_!s349XMNvj-(xavRn_5rrI5)&YQrXm}Q_lCgbvr0SNf<)37*zm;o zPlW^PaJcmsDWu;MO#I8MftSQNKd${ZU@FhG6H`B>BwSLe2a1_lATQb!3)SHRnN9MM zgjQ&j1!xGzk$s8BfgcFZi8K%+G-{P}H4=}B#x8fj<)oQ%bTladK_B++(`ViFllE`- z)ntFgy5;fC;30Vfe|jk|h>$Vjp_E&DSexdd7e8*S*#^a{7MvMBLbFz!%Wf=J)C*JO zW@P_*%tQpJb?&vu+x0ve9fglfp8a+^RI%@6)s{2F;rcDo(qaqG_yAhYcjuBIIo;7$ z2zFk+K%p^7ii;lDbGoC9QhcsygfhHk4-yV4)pFjME@X;mLS$aBK+VGKB4B1^SCfLE zYb0s!yYcA{k9r30jL0zkU=D{|-(n7I@1Xtw7}A3&k-JVe0$U@4i4294DR)qPibyRh zdpWDEONgpoKI7g$nUn>aJ{l>v>7DoK`;!sZs&boASkBt+b`Dt}5L~fz&^KpM=7PPS zK6lRas6e;c8$*bOCeSu=g#ChO;kn)yR7W0c{0&x2gZ;I2g4(ZQ0NPKNAlx&^2NiWs zn@LY=@D=0$Uh<rNzPQi9#wU8;bZRK5>|j>XGr}Vxn($nK$#c1j#us&t@!nBMD(sOu z0*tlsGS@b%5G^APU(oj=zIN88?X2!|dPq{=8&~Hdyt#G`1wz)4!QosZmtXPwZUj<B zTVI}Gq}C!8of~Gya7Gn;##OQ8&q^|<yu|VMlsqwWaH`c6@Ebl#i&(JE#|(eGid#o{ zJA<y}pq<F*J}RM@7s805Y82`hr15`VlSPB3F}`g3hjhxxJPJ7hMqEtp=WAL>KN5t6 zhz^wS@~lgV(TR+W{luf?mu;W{NKS<}L1gXX2dLT3O3Sd=v`mEG!}=#-9k>#pT+Chr z>pEnK&PB5)N!gD9!xHS%0=-W!WRV3W?5S)Dy%IAkSi&(Yl#7u&HHhmK@xX&eImxmd z!o$U=JH&<~R(r}uf%hEgJWnt+d+XbgL9C5Tss7y^BS?hDs4c*uhit{L^H)RKOpHOe zfcr2?cAXs<e)_cGfKvc`XZ^Q2Qh2$VXI}=F3;Fl&j-iR^EA_=-TA#|7;+Qb+3jsB= zf#(bK`np`uNQa?}P453OgZ-}!_K8%)_`nV>Gr{?Nw}13&Dt0~IK|JqPZwgOckY5zJ z!xAaaT#!lJqkvUcBCuYb8Z{**Nq`hWLL_@(6fI>UNvo<f?<0so`HMH4c&<8C@svh4 zqWZ#qp&*S+u!zGLN1#3*bg7J+&8a?__RS#$HIvBH&mr%w=|^t{e%I-}9@18$)~*_f zV|;`Yl)5@Y@QHAUL-qZ;%%+qgEXVGl1GMCbPpIrrCoU06_NP4-V-K!6Ru(w?^NZVK z+UNU(%i9>O2?P#%GteaqH)$mcwJ3pYRvSN)VAvjDITyWVHJv&(LoREvn=w_G@7sk$ z2?1JA=UqBN36hg;*vbHtR9)?cGJL!a!xG?=iM%0>mR;Kr2)ab*CYD_4pCqPyKZwR% zOuHlRD;`vgGK_vUq?qS^CP5L7jxAycAEy<v1zwD+7i2-eJ{Owa_5@b-SKXsDqPxzx zq_eUX2!Lb7PmDd2l1)EIcau*Zec59Ly9zxMPPQ#APt@s|Wf9{?0`|n4_@?i3(WO{T zg@&Us`3@$10<ttXb9WK*hGLg%o`FE+o_?gFxrFTJM>B@y<eyc)8$DvDZtXW-K9UVi zW8E^Yh=~$KBO=T((qGI<=dPw5g11j@1s}-YDKo0bIqwOIqe)o$vM--hahIipymQ_! z?r2|r+IU2`>9JeR{U@mnnz8d-NKfg9W{geIep<}>wK(Glfxh-~dU?fc{<10&RRF(4 zr;4#MX7(*KhMR6746Y=Mz@^roqcILY+~1H=CCPl54RV+T;Z>B#bzB<$G<og=SKWol zm#`WVEx7OMaO<VbO6dV+hy3CS(Pgn88#%-f9(r@?s59S@b{Bv4-5d*lsL+g1PW0X# zL|;t|HN-3qV8xO;)0S>z<?+owX&;W_4FM*wv+0e@crJ>~dDs{;+$)PpGGilme<su3 z58e?$OTRcPX8Q;}E2S|b3I6ncu5y^}{&PvcFC^J}R0EiZ`Qp8M=CKV+%pCTKy_s`v zf>#}Hz?cGiE(>=6vEMbOn!6<y0PH-=%uJf8lXndXmd5o+%e||ADN?7RcKBaHU@>6$ zcUA(`9`0zfZL7yak;d=vryn%tl@@K<l+3;s@Wh139X#oe5BwNC<yXVQTtPB_ES%L@ zySi}*WY4DD-f^J4BCRb%KH+NrNKcQ7i)O{|`IT5BM97iHGEHkKkTdF*MSExaBT4L^ zp;iOjE5H8$mt`5QXvmO#(ZGK(4=xz#^ZZq#x^8rVLq*lnFbDXf@1vJr9=Q4=UQ`HV z1aH&+WHa`M?F=Bj93{3<{9)W;!-vR68&^kv7R{uVh2aB&W^c=6sodxMI#z<ljhz{R z5V@WwFHq!>78ldhf&cWD><}2Zsd-(;n4-1=D^<vB9%>WDQ?_Ql1Hf$LBrjBvyj(L8 zM8kE)E&fo>P;_73W}8`%?h3rHAAXyP;UuxJ*?8x)zU?3^j(t$>!e_DeqN9Wo;zk*p zFjZT67)7GFYXWyQexEx#a_gv|_U_#=6XqookMC2h#ys>OVf4<G(*`Tb3!L-R>e_Y_ zfYZ>a6`Hx~VZfBtb9p<$KPJ{*3w5q~Sg<wHK;$l9;AmNsT;5FUePFP#Q&YEo9%doY zo~X?~CrCKs1DE&wUd%Xz_xswI_A~?Dh5le<_B=A+-pgDdqb^&hPQAT}trO7udU?bu zWraMN@I2MVMZb7)AfHEb#&OXdQ)49XICAnd#r+WU2t!H;y-7}Q5t?cSUr-g+UzeGI z9#qC!i~Su+o!;zUDJ$3Ix^{&rjht~*UQ=#k8O4HkspYsu?Ioz#B%wQCZc#%Pg=Yif zBmn7M)@SB$q*9;^%R4uSP9Ak2It8Hp0dD?83RTde+eI43_Ql@`vO3z-HmBb|9C?YI z*|Ngf@^}>)Voyc#q%{EG&GV?Y;;%hpxD9ie&kgwf6`}I)!exJ3!OY6ILW`H-aRoMd zLpdKFg&l;|bz#uOs;~5O&44S~JGfhJRNR!RSVq*brkk(Xr(Yki(=yJ7q!m9{@+P2~ zo_~Z4t*Xh=J5vmT-&qY;KW{a{Iyr}`C7rSQ{EQZyV}4~EiJm;bEf3&TsIlNfss&s> zqkZ>u{t~8bl;7s3zZ&=YhM#bBN$PCDLzdmR3CqR*x9j+So-)yeu|x=;JStBt^0U;g z4iJEUZ+2sZCg)X%){7=wiTJ<JGF&OFv96KujCK@XtzL5UgmRlNSi23I#~YdJ*Ly@0 znoX=|rGAR(z4XEMB!3?{#_MGeVt|}K95sSt4N?c(vlZaVpXuY(vR?A}aLcThPHxtS z><TTl*;d*Ovh48MuhVAo*(XFVI<B?J&VwJM${rskY0O5j3wX>-yYUNjO2_2hB6utv zZDV?Zsu^ZF@8JK8%vmoQG^+`?@21G>>>st38veO1H(1lSuF$tPvwL_r;98_~+}<-^ z#wljoW&HDkEiCZ<djX}&#|C?TK`SUqBD9se3vN;C*@R%vaZeQ46{UYS!F{SpkBNa` z8C}PfJZ~2E>mSUgdQ`jj$1PN^@V^q&_x#pWS{u`nv5cHr7Fv=^zuqfNKhuB|NP0Hv z)#%x2eW<jxyCsbH_D+maG2i47(d)O?_oeo+n2npd;0t}IY07w9;9cr+%e0et{7bn! zToNs07F&baJIYE7B|bsmuW)&_Iz{SC_WIpI%pEz?4oo=mMY~pW>YwqBpZ<i+MeoE0 zkF`;8lXk*8pWPp-28@y6yHjSUnPOTm8=Y!K2eQG{Wk>)VzJMAVstHHZGImDRnbQx% zgF?;aW^wG%jv&eTc&2=KI?*<A1<wdm-xXVlyggXIpsQNIh_tUO5cgc$dsz0{hncdL z=vjbTrs#R;#%CIQz|)%Fg<7BjJxzp|;rjuAe8s93p;S`v-GO7jw8Ix1(yZs7pzCsO zryYq;qC8AAEbzpu3*dS@>gY)Af%j6^%(8~-(^8v#>J!vS8}~i_yoc|%lttYZXTiX% zb6T1L=BOdc^ORg9{Tcz*be=m|Z3;Dh;z1J%e~U1k)d<N)CSDyD$EJSVs+jAjF8f{P zPR{-))1_R-h43Hk@6>h%ICei)QVFvMm7c#TNU`dq8tgxE*QfUN+fle{-k0q+3x-#A ztk{uRDeZVuR5M90?ROyBWWBvNC1FY?dHMEYfv-qydVZQ4=Xl1E|FXqdQ6fA~9Pj-0 z>Pzl788IS9@O|;VqS0pZ_i@<?wrsXYVuoy6uu?{Z6sKW|w}EC}%8x`lfTsjVNm3s! zRC#2}jrW|$31TkU`g)ohWgD|61d@(^$o)jq7SBeZ;_0A%FYhzB`bPAd!`1Iw!VlKq zW$^LnW#w0Z&DEx&`sIxj*@g*yI@G(Fd!w?j_&CecLgG=D_vlwOmJ3v!BP=S3+Q0I? zF+(&$r00i^`LRA5W(8(a=9G%Y8N7(r!;?#%jv6?Gl)|mj7F>1d^ISi!SzRl2N+>LH zxs#ckU6eMSeOEZmSff6KwXH*|@~HV6Ep{<X$+CNh?`4=bfHFd?wv~uKXqzLT=1}f+ z@X!?KU;WjN8iMQrJVr3BXd?WbV-%}2N}dM@*l0*4lwk^DCJT()x3Q2S<OhN@&G~78 zwqbG(4-_I`PFEjH0O*6ggQ}=s9s%qhTCHkr{}Vm!O%Xn&p8p;;T#m$2Gm3TwOsahU zZ-VP7w|Sc!CKF8xmf=g7#;4#e(n0jv3_-`^!xjBKK`{FOneSH5IFqu(tpM<@=JvTC z#WH<z*?%&Alm6rwB7MfteiXXGsKi8bwPLzh1EZ(iHnD*DF`Qo7G|sc9H{D<^g(GWM zy*7V!cW4Wjo{RWe0osK-^03OjjU#Lv@srx*eZ9sn1v@1ET6xV+-fvil7%essUtiff z7%Gn%mqfu_zw}F%J!}XYC*#bK(^71dY0|Ax838}Ze>C4FB+(^FcB+CRlZ)k;!xun_ zvR{tgQFc6|A-45H01TiLZ~8HLSD0awV5%R+(qe8@&1mp%c4yDxjzAZBq%PkSmmB*s z(wsg>v;5Ri)AyJc^{4Xh9m(5lzevs1LFAQXA4w*{bU{;}>+s)^p5IH}SJaf$qvZQ* z2y%2wtEQF1xq$bYW$W)>t-DO(N54H_t6XNm7aS#J3hUs0X17S!9nX^Q;T?Y<<2$yG zg`Q2u9N7nJX_P&8<B*+n4s*D6aN5>Ec37(YG%&<qM<a$US%&YXPkN{76xoCRDM0NW z`t2(MQM1Jkh4e`43;gK5yET1s&MBVc53+ftv&dVgM)UH|e^#x2*&x$cA%kxa??`%4 z)Luu9snXehqrSZAd*Dvwmqx-m&-Fh7#0<uQ<ceu|Ufm|n7E&?OX*VKgVS^0)jPv1j z6F2WV{JWs)EkZc{pDS~#Suw#^nG>4gr7HAjc;9vdWh+P26~+dlWOx6yStj7W{)`yF zH`Rp)5M$0G6)Pd?w{G%!Aq+m}WWRNe%EI*swyC1|Z+F?l?32QuLp~`-kxZY*D5y0U zt1_t;1SR!PT}0vwsVdAlQ0pl3w$}2Q&w^H^OJGU65&_RiqsHIh$7CX?A0V1R(~QZ? zbajqfo=5o|pDb^DR4TFzb<hZVScVi*l5jjbjZse{QyD)o5VY%%G!9q`rE@`Y7Eer< zj8TWqJS;fW8{k2<f+MT!o_rlS-}^6@dmqg{a-ax+rp&#syBAhYj-D$-?=U8Pb1uqQ zPldC+j?7w%8AMyETp6=|=Dq@;rS8Yd>IMOq?c?dtXuA-xJ(eHws{zSIujVQ5yNust zT!f!qHegF>mrPLsu*vkT%x8*RDB-aBn{k0=c&E|!+Bx2v`>NOzAj_xVNP>TDjD`h8 zP00y#=!K%}@q@7qYHKJk>f;??Nz#I_`Aa=@&s{fewXep$u%Xnw&ieK8Jok{nw<3pq zcFS&_{zuK?1k@(ZYM_Df6o0))wki5b_ine`@gXXQBE15K?^>3sCYCoLFIbcWD6i+9 z-|H1EGZROKCXKYBb_l*1xhq{{L1MDhm2G|eYEXa)!5?kx{#^Br#f|```siXXtFhiU zqZTysC%Cumi}z^klUxEOwWz2`Y`f~oDzB2_VdTmn;1l5v(zj!>)8}uzXFZYGSbPq* z33Qj)!8Ml3Ujlm!TJ_Ug;I~H-^9bx1JKla~C8wNHm$7^BG`pm`b+UI_>}r~+O&%Ia zpMvd9Av+)Mq$3HEcpM$rfq%v0a;Y6h4-r@Terkf))G;Nfzm^$B8C+hX9Qm;8rdQ<o zT0EA{qe3g$EZkpKeZM0~CGDOH*KG-T<&Q2+n-~9c!nQPHfpZhYQOx+-CN9GhAgG!x zbshKe-nbv##tanFSvM;~L600%Zf%_<?tcsLf!gt*07GB_>t*wHiyGn({*^NXf^Ge+ zyJ33ZtdxTamH6T2U9e2=z@<^Hi_c>ooblC>={XA*+$=Bso$u!f=P^Y&x<Vy`bZ2Sk zBKZak)u|{)C|dK-eCLEe7HwnaUj1HZ;27Tp2M|XCUaWGX@l)q7zQ&K?p+Gm&mcpJB zcTpGRD#Oa)=?6n8w9cVZybA}yf2|p71nIYD4hD*Q&|?F8@4-rv<$rg0mXf1@=Q<AG zI^0@j<vXR<;!2sPDTC4Fx@h6vg2iuJmoA1j-WWB055MoSN)Bm>s~GwFyUqT1b4i$9 zJoIHsj0g8PH(lrLty?_d5Z<7*!aS_xTD93`)X@GX6GE|d%VB=}WNeb!`aSt3?9N%F zgqt5OL}-=LHlxED-Ev3F6?n#C{xDm9wbW3~?KPQT_v8q*?WO~~gJ@bRiqXfBiQ;37 z$z>vnK5AZEmyr*3JC8cP6#TLB3!cSw9f9p5|E(Z$?PU~o6Wbv1b8IEy=t4y%N?7*B z>NG?wf+p64zyJUrk^S=51e63GxLwJ{NHRyu=T9%B$dDMAModZ9l{0QXPd^*edrzx< zNLXATR%)zI%d-v5Woz#KAB4SiR8`U2ElfyBsdP6;OGv{J5or++kPxJ$q&tqZbeF`D z?(RJFp#<p;NonZ=C-&v{-usRl;~V4Kf3LB}+G{`0dScBrr{P)=Tj8~oTC7fQvIDgL z_GaIvgB|xTIghlz7_-#l0dg9ccsL<bpiw;cp&GqTO4>HnhG3=wFk{|VFyuCXry=v^ zgbS^;RFApwmi>8BBR|pmtIhb0;rG_e(gnU8l7f(_x_~5Yk7Cvsw*FQ!R87s#m)j}* zE6}rwTW6Ljf9>)~Z0)-%R_)MB*IdC?AD@w}jC885M>U2w=`$}nrhVF84~eIkvezui zGDpH)ScjCqP?0yWM(w~fY{%v0QZ$=ETtI~=Em25o^z!6g7mHbqhq7I`CBR0AWU0FR znN(izvG3vy?N;J!3y4#tEHmt4b4Vb%UA@?N7>kKx<mL=zmpxCMse1c|zN?g++mL); z#rs5jBE2zAl{}R!>eKUBrY_T7NdTx_P$Jl8vZ`475+&aTlDbY0^A>5U0pRdUUXue! zCEZvY@1pLPTuK>Bfy*Zks#h{m=<oNY0rJeaZZU(2!!erAuD?w?|82r&$Tqd}+V!?J z;B9x2LHy!U0O-(qnX}d5?rdcbJl%<xU$@1D!YR~3^4@*@R%5?@i?%FNc0i}Kz<h3> z4P^FEncO-Ic{#-YNZWLAAOXkwi(Ik|#5P|P73qdP6XInVH~~ub0QcwD=kUmVCN2wE z%zXiqcq@jTYIJk%lN#_3A}o9}Y0?nAl%)axA(@<#=^G~DLe~F}yB>i*5H&N}TyEv5 z8pjeR^)!qkPg@#DW~8%&SRnSes(<h33B05%8f=ZbT^%h=(zm3ZmbA*Zq@=FgtEatO zA$^Wr+);nMPji91<|x#H62HqICc89Eh-!Owe(mA;fODLEzrcsT^G|J!hv_dbW>3g* z&5B8!6YIaO6&4)x6q}iM;9N?iu)(swtu-#G9Op}TD?w(hh;MSw2fo%<KRUH_FGqm; zVT0F?wBbJ;ewf`D&FX>(lm8i1%jD4)nj@_4vnI=ww`5k}Jh4aFrjctZVYycWg_bAQ ztp!XteEq>Y2;N&ZbK4nWBOUhOczvSotD^4dxJH^f(xQ7=i}L{Ce_^UxxMXR0HN4s| zOo%0ksbWQV)M2eUj`bxrjPf}t6K?gi?z-c#^ZSHzJ2pwSdF`RiiS-k|o3W_^Jj=;u zsO8`mjc})*eI$j1j@?|KYTy7t(eih%R{f52!k@S=t2`vjq(7%2yVJQe@M$`BBW^oJ zY-3MY->TcGbQn!21^v-64XhaQXH7!y(i=2>N#x50nNsrAZXg9Ihp`IxCjq^ACW+?_ zxN;Ro?z2$8ZC-LNX@uJPv@x7H|5=_KC(_O_hY9~@;Gy7FN9*8)>KxTRLE68Z7A+=z z*p@VXp%|%+KES6-TEYCeHI$ztVFg}rL+8&@wti3G9D>I_^9N>xH=Y1;z9@@gT*3j# zv6YAhs&N$Jye#^}&~apRvN^&`lgNw(F2`bv$(fMzX-TUs<FnII@h!RZd;I(*Ci|OO z>6p}CggWwzp(mslnGuR1Z?S7JYIcW>mUTyWJCufsfuL?>l~Qz9mKAy>UM25>|Kxy@ zb*n5Y&}$P5_gm!U<?nJ=T1rjBZVC0`qMBaCDs12VySx+LoqjI+;hb%atdGv|vu)p~ zq=+HgBo8_|^)-8=`8CiwF%fXkxM}UH?pKIR=#%riXe-`TW$vXr5VnQpN*Jf$cHTSf ziiE*bm6LwXM!?^;w@!(HYS_NtW+ZR}$kr$%9?7%lL{Fy0>ELQPhH`M`x_$%?PdN;@ zN=l9!)jKoZ4=mJL<oS0=eCo~wGGlzVNJfkfRef+tUzO4RJnHz8@qstyJ0VXr*0X;v z6)ro0>+KyC_}j4EM5#5aBu{1{o3WVKXFd`ytj<NZiyU{NClqzTd&J#Mm9r<&+oL4w zftrU3^{A4Ai>>RyA~TRNmJQ?I+zdb_j@Jdnzp@Pdgn^q=po{DA94YRTU=RLS8pQ0z zMDXcExEz!DFZk!H$flPIEV{<4fdx136^}ZfC!2}Pj9s^Pre-|iGWK9$dJ%UCS7Z2~ zL=n+iVNnIu_PB29EaxAEDgnn0k6<Jrdi1Up_{aHZ(klyb>#mu&l(*$HHYyP+*e^+C zIj%rQp9U*F8+(;c84PXwLB*Fab<8F9rF*1BMlXz3v&~Y~pjW`}o6%_kyw2wz7)Vn} z0Rq}MuszjSr4v<NS76XNg3w_2oZitJ^PY2Nqq6zw+)jqCC&AjBMK5oWhuWTWMR54V z`)gs<((U*guujMZhbZZny4bJ}xJ$n3clSr?@Jnb${I+^K@+5cfMmE7Kv;xck@;dy5 z;pp^inK3cA$OVzS4=N6>D>E6IaF{b1V-XzzQvAHHBU~*|zOI)V*M;)2?=HHSl)3rk zezx9d$~&wj5N6ZEz)e9{KiLvSqvxS?=?Rb^>HD&h<&oG6b2lRYG+xp{wqgg8v0G@e zeSuS6Y@IXB5E-wYYOF|F3zF?ZvE+4LrF=^^|20CrPv$ydba$cB6Zycdu$#Pl6WIE4 zaB+78C!@q}o2^?%nqWiJy(kZ0`F!#$^YRy~!GI6$vdsl@d*!8c{R7f+g)xc=$X>)_ zD$jQkeBYGx?{4SkJyVz(<wTm(iv=_3>>4))#tIp^I0J|D%@+OmDMn8GV29I}6Zass zcy3%P7<roQm~vnIN_=kdc3MG!y5KV*tAd0V$yk}SNl(BFEz>(!Nl7)<bTsf@8H4ME z4OfhfFXWv!4r|CMZBorLTMWM{O8tJpA;=|?mxc+C;8B&$T+of137XICB@~eZD6U>6 z{@}oWOf_64?qc$lrfxR_ue#?^8kU)|a*Jo#c%REn7T+P{axx6M+2y<*7{v<M#kiFA zJ5iY%&(y_Q82h8ocSniYAEjS6wT5pJuP}vWTF&9jPHjUO8k8Yn0E@UBx<ZnZ$S8I9 z_!jP4IW02_!l&L{Cw@E>*8Sp^?w-X5-Sy<eEy%ya*G3z`)^Sjrzx!>R8lFA!dPu~} zII{r7VJF@sDJ9`OA!-)(OU+h(Sy6m@h=TIp3u)DA!9_hzbgdTjOcDFG%ILY^hHudN z7v<v^Dy9_P)c}yeQVn{aIxp-gB2h7L?51hwyK!WVe1erNbeV(_^oUzr_%hA!&7Q|R zK~X+YwIAhB1L<|Akq~ya7a)u+&hf`O2~9njFoJ$SVV-ISIjMY*Uu?bSA|0z*uR@gr zYI8G^a$_Txx+_uBHcOZqmDGkB@1(g~8vV^e$JI@Fvpku4Zk@0tW9Yc#ygS=h&lxjI z{oLBl^T}q-De@oJv&T)QTmxWhG-MU+?V{z#%*j?_@gGX<B87SJhdbL95?<$l@_O2c zg7E5(IJ>Jrj8v1x|0Xs4FZc?Y%KI~bMqz>xHzzY2>s@}>=$qpuvg7qGBXEc3$z%9R zo10Co1uX9K!+`shW=Esi2aT%FV`=>N2*eo_yVIAahxb=->}31=$N%O6pcBWX6LY{v zKS)k(PJ#d;G<-XL^L7JF`XFJ?guGdC>TUNp3U0Drz_p*RB+#odVW>20;`vx-u9%RU z%h-9l?)OpOl?5AOrc_%s>E>rz>!$UsNo?W@t4vI0k&>UYK-iBUa1t5No1ObIW^&J0 zY%GL+{I1VmeOD4hWMWV|!mjk@{mrO&g`MO%<Wr}JyuL2TLhZ%9b&jvwC;X#3$6%)$ z?=A<;M3*|H;D^%_qH~Dm1{1d$bBqWI9r$gZR6Tyt3bPwk(EE?(dK$%OAk7+BA;-E{ zO|Ozw3IN$#FE-;>=)1`FU4)-RveA?5xeM&M2Y=Q4MMToze!GDAu8<%4V}wOBTM+*y za6zOIf_4(U*l#u0>Wj(g&5+{c<s=R<_-Fsx<@utkKGZ<-2%`b@6S4J)lT4Atpq3>A z4o@|h2fbs@e&@jS4|7_mjAop(m@Faj-0MZI{u%Sea>9XLHL~c3HR=*}5v9;Q847jX zypBrLMW_vd_mT+=nab6={`9_EPTT}qO|1X?`Mkc(6$YR7u>MBY%8ZX7y;A*(XGdLr z++kw2@mbnQ<}m%e*W0Zdr6Ul&9??(PM*ZOZnFA-OQ5>eC_2CN@-nC~j3tnwguzBEl z!D`WN4tN|$`DFX|HuIl8NhR$)U{GZvxOUcpTVQXr_M1`WDH-3g<1p`UNEgsi021-8 zRwvNkJOOo@tNvC#(WnI5^XlDpql=dQeO@yodnbfsa6&;Fog2!xC`3Shpeb>K?UF&e zM-8{M75lsE+jxKTOg-f!%>g+MYai--f*~N|$%k3AI`X0y@%7l?<WP>2cq@bDIXpYt z$uFfrY-@R>;h>roA0JkIvCWH!Z4UDWEKm_AAy#wkIBw$f>?OFSf-D($R%I<Ah)-Yn z9u4WD(s^sXet4BFx+pBY88Foi5DwMwlPl7|4S*G@@l)NgyWdSh!&X^QH{cVhVLuPF zweDcWcJC62O7h;&O9<29FQOL#RQHpIz!Jw(;7%yFTVZ4Usnw0uzm<n~E2_PI{?g&- zcoX;U(>T!Fx?Wc5ch!h(JQUa;wgDH?ai=fNc!O{mCxUt0XnKva|DA9;hRbJd0t`DI zSdC1zCoo#hm@$`w@QY8A%2^?(NplC)0j}Ren;~K{lo_T9h(wYjh{xfmi^c1$bG*Q* zx}H0Mj{60%wOi@_4OHrcm9n2MsIgxev2wY#`O|Q2CHVfj9JdAfg7>%HY3ll|uD5!Z z|Eo?^(wcu#0HQ%|(3O5{b+PtP15E#VLqn?gEyMMR+U`Sdo9pO~G(bhsrE*W^djRIO z$e6eed0h(hi$v`Xu_JIL7=L2Y^5`{e=Rt)X&?BiNWo#rxCcyw*?26X&sb&0KtFQ+x z;KwX-yD}v(!7tRhqIAg5E%pV5@nfv&Pp#j!j8C5r#N!+ne6<wUFEv918_3!ZB22|j zCKoI=a9jx11zn1g|3&sy4#Sls_oVG_y8|LlpqlLmdp_L3!otnC@a~xVG#ErQ24M($ zeBgp>cSp&OuF_t}zkr&jM+eIrcq>h7^{FLoyvI-etGUEC4OCyrI`M9xVfL+bq~& zKDxr5IPjaoIS(Q!X}+X42uSfu!I&^%a;EJh(2b23a?S#L9n`yAn(d4XC0QDWc9!Ec zX)eOucE1&c1F%{6c?;SI=7M&U$Ut~M-S_+K>0v>z{O#9RycST(#0`@8-M~Vx(AOq& zxwQZO)?i6+7w=E&AO0Y0e{#RK0ZG*a*z|tRWwF=}VEv;E>a=k6?gzArCURfs?DCGq z?0Y?LHee;?^bba5qgi}YbCN99H@_aOOB27nVp{s=OsDdzvJu#O>wJMO`!i_o@24mj z!gPTqBXO_^lp!~8O&UQ8E>Q`?&{VVUz6JkSB^&RJtX<$0=nc_+?*9|^ao$V2;}*9R zgB=Nf1=)m8T2$k5O>F;02aLTpmBCeL;k`FI)}f6b>-rV{LBE-5<7?x|M=2?E=iZ(Y ziIAvOST65*>)<xY1V6LX6krsr6&ObfxWxes_svW|d>DWQ)3Sjs$l1Axo}K{U96)EU zZW7dd=rTKG(UQCQuIkx|*I~uQIu;Z!A>MrQIoR0m4=vGxc`IjsQ|3$i`A7B(4?^>F z)oaeg5%!YCGk=yz7Q9>M`(H9uqnwGq+sg-j`fmTmnD^r7t+B$EVUnr-J?QuoUIwM& zbhT6ZCs$mpNZeN((UL5sUQq-eUddw0ZqxK;r+&r~$<N11dLxA4i~CCc1qSD56|83* zDidZi$TOok*$s!+vm4U>Uwv=04i2hU=ho)PP(GZwZWsFy<lS>{pxr|Cry$^Dy-Rvi zP((xoX=P=FGiB=O>G=e;yR-A?4s6FOy6Uvl|HdVX|A`TE^DBp-MXWlUo2P_uy5c7@ zCl--vtekHe)4W?!DTH5>kX;@W?O;&8i0}BP%Z+m_RIlrsluN=`mZ)=v{-75q`wHz7 z+RydG+#_r-x6F1ye>W?3Y5IDg+&3Enu5*3)4SNqRn0abKQBu12Ja%;2WfSK5wALV- zS8zDsY(mGI1E0FuEhFYqn?{=UY>)G6vQm+S&bl6q7EeJo;Np(fW;B4I@<osn5CiGP z!u#eWm5^!X$5<+0<~c*#xfM5Zi60~zKwg=PE(@roc5X58Y7XEUpVJ9gRy+$Ad%ajZ zdY*p0lUM}SOi~=D;0@DsBcr72><dM9x#xn**v`^w80{6mq#mq|F{PJzm&(U8Xv$(F zy033W1iZdU7jCuJtk7KwzAs4;WLW>D#}n29e=0r-{b3A;e=vyCzgY{t{G@KeX?ZoA zo)d7QbAcws-YuLijy^C|lp@+-0TH!Nnwaie{u<6G`}=lF)Mu|j@dEWy0yRng2U6a> zBhlW>8wEblH9bg{t%P2OUl#It?>2!0QPCrHfH&)`soW3t=n<xxYsvS!J>fNfEwtt9 zye`te2A25WJzwePSwBE#`1jv9Ux&4TOyYGh1Nw^^MH{?I<NIR|ndWg)i~6%xb`dPM zM-`H(k3QOr53B*op=z5dl{PTJw6khC?EvmW@Ieu&s7h}^%EdL~-bzD~yFbdJ3z7QL zpMSmU3{~nrGwNsTzrgy*ly6(&$LZYztHAj^RfS(}%wn7Jy3fD-1kh3D_bT$>nVs`^ z8@2gOu&Uz^_G$DWsf^Z-3Ua-;Dv<V0$jUkw6T0!!sci2Ms}o>OVaKt8)nb3a&A7Yk zSn2+XwUouS_$@xuF4M5^-POhsamxtXbXg`imFa-S91~Rmtab0^cUlj_X?S(#Q!ePK z?o9QjKfj%vpE<8*@_-plcQIbSWZ_L4!aohtN;7=dHIphygO4FkR210=Z7S)M^~ke~ zJ7eL$i6G^r7ON&rY&EMN-TglPCc~V=kwm`PSW=GGO4sCV|7)||G~q9n`UUa|^m=dM z#@SBbBQVE9dSPKTxD({6h^>Stoiqy>qxU(ozc?wTKk$8)OXNwUu!NxiYW%Rg6#xC_ zpWQvoi(hBdENge4OL%KOPLGkox2m1UC@nhc#H6Oqq4cNkt)ng$u%;_#wQ=LymqNM1 z?yUy=!Y+^umxBB1%Q0|{nY(AQ$=o9wd+Mt{^Mzd|I``Mwc#;ZJ=kFAVweniceGw%O zven%X{Bdi=Ch+Bol5%{149G{HuS_fCLYtH4-OIM0ljL_aHR0`bVUM@OajEW^zGY=| z=A3mHk_4GG(tL+7)^+t;3bhw6PakQbmHu$6YYeJZFg+_Y_GyfKW<hN7eHBSd1NtND z<23uo=N7GZPg_$fr)6v^QYtzfq=B{C(=sDbvY1FoH3Yf#mUNU5D@@z<?(?aOxo5P! zYmU6%(DLf$SUXH6eKZIjoIWLteu^&qrAk?pj>AD={~*p@OuJox&q9jD^~{>=V(@ZJ zdzA4l_a>mq(8-++0jAZ`wF6ViL`|mu-jRtF8GDEjdlV3r+sLDp)+CJ)sS6$c-1}@l zX*knw(ffC5b_8$OluHFm9FJsI`O4q}RjaDF@jI6j$}-iav=^+I5_;iJi+9&7o+LZV zL=MwjgYbXv%<J!V#7er-ZGXV&54XrFW`#Gzy+}Ndheho=ccF8wMed6<eXeTQ_g9@s ze><X8R(*@I2M~3l6gv<-%x$`V{j}4p-g0PosUv)}eReqG<LZyOQf%?%hZ){*B9j^$ z4S7;{thcsb%);gpO(TVIv+()CiGpNf%rgbFfZMAklv;Xn!DJcLp_7;>di8=LTO2AU zFBa&TGiw%9lEa1WD=<@6X;`Y;hK!OF&INrKG7J&byF`Rl18e9Sx1xN^=j0v@<c2gU z+Pkf4Or$W=JLmj>4)I@G7swmZlcGZUF3!}GxsX9wl1DE0@Ed*Q8n&=6+Bn&SEzooU zK|u^`h^gb;qu`>^lG8eX3kGhq#aewlx8eT0<OsL^dF(>BFXeDydhOldpS{!(j3%Nu z=MOkXggE!mV6$JMmpZpsvh(VIRMwb|qss1{Bet9hN@sU*tQ{LS5(#p*=Nx>@-gWS@ z-tUg;Vo}mVes~LFEb~jwjq<ys@2`$d9=B$a6dhhHFzJ1R05Mjg_`<uQJXMoV+##yv z_K!YU=m>W*yxG;Esgf%PpPPFJlUrbz@udE<2wO;yQB@x67#bZNsTrdnj)iKo2(rox zoc=iQevmADXI?obynTo;rQLh3&}+Z=w4_0X9!$}g<nD_q_(vc<1owi9>ra!)$p3JQ zVHI|v|D>c&GDYndu{!CJ^5Vziiv@H2vumK>9Mp!qzb{BK7TdJ&x0o83S^UC2FEEP} zT&i3S!W6~UQs7sR4sXZgG_YSDTKP}-G$$OO{Qh6@w5R)P(4#Z&yoA=;;`+C@Q=JiJ z292Gi7N%&Un^uvx&Ps8cUzu$e)^qF3nTL8}jABQOH%t5M+Ej-OWwj-$Lgi?ev>q^5 zz4Rdt(dK0>6={4+|7MIcI~=MCPxUpl7x>b1itL7auSrvXQ25jzPwqidvbS{j){wBP z_`41c41T6%@MZauu+twN1BmWByR^yF*d>layIoY#y*xtg!oQ`3A)O`nv7z%mXC~-Y z$)L`*gj}t_sYJEy(4)w#;Lu!<FzVj)naC&r+6NFXfE+r@^;MjD|7{W#!Q6zCm1o-B z_r0#(1%|%n->R-*2xv*(FQ#UIsSbRa<{|8LYHZNJAg9BklvXp6h<!-UbA70voYWpA zP>yo5JbLSo?|&_2(7~amTH=^&>e&MvE~MV;`V8@Bx@RvcT?3BWX8;s+8wI@UY~SAx zW93cD)T-Dn1fTdmBZpBC(0Yj<rjJt@G`%*>;+k^_W^#PaajgBW=YFu%G}4##Lk%%f zp)&V!^7L2ziP|ckkWElwN)2-+JZ-9Y`BxF;*SzXppIy!U_}e;u6u~{e*S$R25O4cX zi(5AC?koUtW(+l?wCYchz%(r<5{NHMO}yAu9Yc3CD-XunM|}Yn(cocV3y$YTr$osF z-Wv|bakD(VXi6&8){Uw%66l~VnXj<lj?5zP;Jep2KLgt$cd6BI`Xyt0QrE@6y*HCf zO}g{d2K;n-UsKkK)P^UTjtbw*ExZ2x6QL}by&&k1db+ZqGy%T8(f6|E`^R+){l&XK z-04$cW#5y9*Q}DDr(#Dx|3rvYFbudu_Io}?eC@uTG&z9q(@{>ON{-Dd^K>6%HB%m) z3ODWiY^R=dPTppUgx)#;#!JmEO~`s*S@UD#fkh+BUvc%?m$mKMHL5g*XQc5UC<rY+ z&ocn_M$!qHht5{$YpSLT@N>gYGfb$r2kSQO3TO&i6&aMq0=jEaHK}#Ekun9`fQ#7+ zEqMM#*cA6;F@gC1GoM5o6T(-D(8dDLkoIsE{H-TRn<ZvN1zVRRufha{-Ve+4Mnhrv z&ZXlzR=hS5+XqD|y9#t;DiTU%6vQqS8S=;oIM+47E-L<z>C%fN?TTs<+80E;vxpu4 zDj80uvTpkNOJ!5kKj<@xqSHi}+NW#KmZZek4=-D~WIYGqcfOtAj{%x;%LnTE9hW{j zpeiQ8T9B8g5B-QOyQBnGO(Z>tB0GURH`0xhpaktQDffRtoF#(GQ>wg~1M!Ag%1i$I zC{6jneITfK4~aks9yleTZ;zq+NUH4zjs|2mIiwk5$j~@p_>Gg(;()&+i-7j8J4T<` zOY6H>_=M8e;^C(^qE=g6G6ofJQQ^Y{Y!KdtqGW#L-9q1>wsk*cnO9FBGbu*jhdzcq zU$;jjfIB(?d?WfI*nbDgxFI$Y?EgFdCh|WfnLe(Oh&$+7D9_(mWDj;k;52+5$zKLN zINSwD9NpU^FlC>)n8=56iUo6Pmwi=`tgAj?Qf50^UZ?(pZW)5A_?7cs{+@(NX?ynp zM>l{6DmwK!FWxK<FJhsP_<Z~K<`z-^jbl2W_$wQWFfM^S22A~;0Z}K>4AjO2xZ(4x z2~csL4r|}}f^@elVd~-N^!UOwX7s0~2AqtxM3=`65(lc3kN7`B$1i~>j!wf}FY<Ct z*evoQb`Un_nyJ$i6=N*l8(dZrw+m=?Yi{mCP-nL=U_K3KLZ6L4Is4x`=YLfqh<cox zB|-yQjSDQyt&dDwhU!Og$aj$H;K-Nr)_J6XiGya|w-%vkq+<cuKW<rZ5*IDMMQzry z?`bxax@5<81{g5X4%3W!)}hR(Kbdg`NZx?%9|uIxwZFS!HCqL?&Lh?_A6S-Spfkl$ z4j-MU%CudI9#iqM`%wv8iRz(+8LqvbDG6FmnM!UP_gP4yUk^2o^q5uzIwVsZHvF5= zFdm-voW1w>fDd!`oIRUJ!JtZ-1uW2YC<}nM9uQjXfpS=H!P#sHclf&VKYgskb@f{r zJf|WegPATn`I~C%=lQ+BPLJHKkwA-@I+NsK3tRw^aNZkeKqX+N{$1yPR%8FYD4T+x zg92_}rwvY>vg1<HiWUzo`8TnUehlWwAPqGL-C@=Wk^0oe{jGXg^y7nSd1@L=>rK&^ zG#9FGLJ;}7TnPNq*a3XmxCm^asp3J)gzlovCPBRv2ZAE#YNUZBac;f&XfFmNiphiu zALqDzw!Fx@iuq9IeFFBHwsRffwZ!XSpoUdW!2J&kSI!6c=Y`WX6_h?d9$Ix4GoI`* zf0LiSD?0KHb`y^xMPZfIqDv@Tkg!ArJcgkXDR?b=E_nM+ziYEb8t99jYpKgKg&oy+ zqiAZNCw+(DZ6tO{ro`a?ikttd4n;qvT=WvOGz%*iRC*-}^XTaQ(O>259wCg|SvfmM zT90O>BzAi7RjUVkT8r9L={a+<1lhYM)N$K%ml3jGAd6`C#6{pU&I$8~3FR$_I@J2l zh$4fL!=tG`p>!V(^Roxf;SEl4(5CaLs~Tu6;Rk;Y=58|%SoY}Krt=y-*;&m2Atg+- zbJ1Z&+A_r~a4yTAdEeGtBiE#uVPW`D->jSDuO?>qG_KTSCnK0gSiLm<zrMcaFPaL* zBy~7&jyI%Al(YKxos#CxNBT*q3ldXb**DycLPCii+{<(P!UfspGz6iBik^r(P#w#h z3;cHl{y+bDZM+flH5zdS_BKrv>f!e>FfgbOMETnO{)su@N(C`yp7@^qLdMc$l7AW3 zCuEN2>-VuD;%^?3AziY0MXAkZMQC@~N`tL7)njw?i;AT|D{}-4T_VeV3O<MTE5c0! zkX4?{@A4HADWVmlwpVn)Pz<OTYtiUmxZoT~Ew|Z{_AC|EosrQjL{PgurYx`r?VF_B zxc&!1K)rc{RPdiRCAlx_v0*q@fw*aogPOs|V8t7#1p527AW5<(rBocS4VR9CZo{+k z3_8(($OL#iS5}Efznbsh;NXSOBm`N<WXMArn;%!OD`&chUKss2`KImvFO;x*o~}kV zIDF(<MyOsKNApCdiI^_d2?G3x)m7uA?tqSQ2*`A~#i>R={e#3C2mF$&#R*2?3Jyg> z*jlvGuYZ^FvAjjqW<M3~Xet$71<3Z8KX{)5@E^ahQHYGgKZldWL;q9;KdpZiwa)}n zXn+n})<`PTgG=?{aMjpnFjE&K4Q%859y=rm!h?i=vxsfpx{gpZvSVs`7&UZmL#=Dz zkm!Z*+n#*t6rbRGeW-FUUBvP5Oe&UcxM@XeE1pM5#ib$q%@C%%7P2~M!gqJ^gdti3 zrc2~+_x0az9sZwb<fdjl2J~;;8D}=|xJI1C-3EV>j73JMn5nLK$M~vt2yKw>?0XpF z(OHx(4cW*1Ze9T@D(ZQV!%`WO)k#6{<q=2p2t8ygSGa|Xz?VmW6KAhpN6ML7<&96@ z5Na}(Lo{7FvSi5{X;$+X`I9aldX6l>CXiN=0qiz@C%%jWZNWp<d%l{P{3-s-+b5O_ z&T-s=LlkW2!Gq^q+20DVvRUGwwm7K4bFcMlyzyrx|L5eHn|n<Aun_;k_@rGFd0A(t znT;o%4*PP#Mt){LX?Eoj74Q&Jy|#K}LG$O@l#qPYbtEATgYR-z^=-V?Gr6W+RSUG8 zzCGR|EXKMy?!?LDO;+hA^9S)($n{e?vvK~)v4L$;n2p*woQ{O1R)w)*;4(hzB1d=Y zj_MO`^Ly#VMe~5?ao{a@eD0?IYp%@y*e2;^garCGNuF8Tt^{N!({@dpGZ%dMks}U- z=Gr2SX4!K5zxUnG8!bI@{w!nsZN{Qi;>o?adOwKj0^*_*cb*NZ-i=arS?Frskk3&M zu+jsL=jJOJ(B&B#iDu}X<}vu{@y5~d$lC_>RiF|2_c?hy=ql11x!Z|l`hA~?j`i_c z{lf2e$oPHJIC>YPJnz7H`UICKjy63wlVJ-UZSp4@D_~&%V=+44h&OiMbb_~5Q3f#F z=XO`C$;*K=O+t?)fw4=cJb`CaL;v^Ic_UAF+(A_@S{pv-;IZd*x=1nolh#N0s!^En zK8$cd5dBiu@U({_!Y4wF+%IM<M}`2~FU`JcV-PvVIPqLm!vXB^U@hZZTWFY2zr)jb z(8CH(f)ZVNHK@*!W04~Nv5GNi%$s{^1A1_Krp~r%G{>S&-wT;I=-ex7j+g56VA#1h z?zA`RX{5*&d}T;IW2a>Z5=HIw-{I_kbsNE$gybtWRxy=x&)F92@1oS*aqUZ|q%b&E z34&gEj@}okSuK_SdRCa4a@81Gm{!iLJDQ$YPr<9I@}*iLu5{Yj>+J4=!9IO-3$mcb zDN!q@EGRg4#K?|E9&Zd_JO4p41PqhEDh}-^(z9@Y&0Gqhek#bJi+?(TJJ4Vf;8T{~ z=rlxsw3wkxyWCx9gg=dQS1m2sHI-MTXqtod25^HbIp*I5Jh%@;acms?H&5PBQL;9W zAFf$WwMH{?_uKR*3XnmZC7A{q^6|DDr(9iaB^lONekeCKDA#>nz;{al0GC&Q{S^Rh zM@!H1_hxj<3m?2!r=B6L)K@Cc(?nAYnUYD>uSLK>IU7;gzzdL|5$l+~Q`&0dbg=E4 z=@;=Ixb^i$KMQc%Dp;0&Sq1vbSQ{g)(e)>1S6W<mXXD^ZI{o2?)XI|0JTs~2$rDOm zP72l3^!k6$C@a;Sx=W^8XimNFpUI4kW;H{@ALJo5`sE)K%XN8*{2xby3b2kNp_Wdm zyCD9=rYu*X++7TQ#Zf&;<-^%>=E10AFyMo5vXSY^K7aCTSG9uq<>6e49mh0ZI2!Wc zSa+aY@Dz9Lt67$**yuo_MI8VzH3a+mg(AGs2tXEiLMt}$-_`Jccb6Rrj~l4!kEatA zFTVy<M4QH5(9F4U#Mn{YY#;FOzq!NBydUDd_zgNuty{lgx7b|eURQCH8VwVd<!ot` z`Atb;_!Zgw3)SM@u`lN1dgY(CrxN;Q1*LJYR1`vQB4+$L6iH^#P^47w_Tt_7+tFyM zT5n=r7TrSEUDtZk8Md8Jy{g@$hIc9D5(X__jY*fz&I$^3LyYhEuKn-+M0}klS{R9% z25m197L6PcDhj{3{{<LUOMa=la#(!-wou&Fl}F?s8%`oE3?g_UaLUf`PWHob3W04_ zZf9w;{~P@>k8}0_sgpYc(-93~Rh}Fq(hCsP%Jusj*k%JyS51F4uz#fHeg6K}Mr&## z=tTQq387k+Wp`3%K5(LanRNarW#2{v7xl~sPBvP&#LeU(sXLL|NLb4?l2R7%Aj_C? zCRVm&)+zcmG+9*r5$>~HwY(fGlMn3R?GlV{Dm|~bO9I$U<vb{_tb=N}8eIyJNiWrW z#lG^fIkS4W&9Ed1!G*b<$T6*)*)<lkar$?TebYyzW|@%p^fXg<wfHe5kc6s#klcTe z^>wgvxTph{qi-j7yk{7YGH(vUN##ixj%w*pjlCiJ$UON=G|QI4z?(Jh=V*qkny=^= zcBlS*a*P+<s0LpB)KQ92)tqU>7z-?$r=;0|g-cZC)z9iC2wNlrdFYwgSN5~wmubdL z&q^hlhV{sV8-(AbaT}Q=6dV9cZs-Ic5jnYy7@aFwd%m5p&k)MvH+<_(1K<8~V9c~` zl!6{`3#Oa{$~Si`-?h=YUfKTjI}u1>yVaa503O2)9N`B2oNb3ZVFwT~5e1Tffa=br zgBPyu#bRULXg*67R=?t_FN+`7Rg{<_On=cJNw0Z7lv%aeWcj9gXE#EJlgKubI0T#1 zA3wiAQ(;v&VvS^9*JuBR>yFrEv(cmqrYmlDC^Jl&25Hb<d%-~-m6!~4FU6_}nqA-P zmVcmF0)CV2j7JNmMH`C!c41ux(xDy|vz^|-QKbQJ{M;QJ;$g@!8xQ%Y78dw;={HhH z5`E`e1Ac97lg*yo(#;H8Y*PI>?V6U4ECWVcG;W4sg-AAAYtaxfw_^I>o4P<-<apL^ zE-><y@483F)jftqd%Zj{K3UX;rtQoLzt7dYrz`b6yG{xS_Fd@%WGFl<9vn+Hk$Q6? z)#vHqQOV+S{~~$cbQWHKq)6&12Jelh@4$yp>~tq7T6d2f7ees2gHlDsFt|_@jT(r_ zLahQC?Y1>`n#-P%B$G$LY8&?MU$*KL+ei`1%|5VNNyxP2wvBAz#R1#y)mzC6TRWpn zG^&4EBFx0%V&@hbQzDqa84{Q@Fi!4s02^_2>`F2NL?T;tSyIDqK{{?->Qi@jaz|(7 z&9NfOXJ*)^nhtI>d;72=wXwrPpc^H*43fUI&ry1AqWyMzU+wWWBr^y-T?n!4s}`v+ zW>J$nVr?4Uc%;BNE{_%GNKNWtOkv>Bw^IMFD7uhdzQ^uvrNw;xjcH#(R+^B49klM% zdK>&n(c6SRcn!^(Zh6z4F=FF5M#plxS<V#;$-nah0<9Qv0$=E}eEWNCiq_LVDTt-b z(;mxlvIt!N)Ff=4dZ^tdFDrT4s&~<%2UGbq-Revzk+duVR9)<)67MFR@u<4}UGnV{ zobDP7#DOEu1p&CU&O{3L##Ntj^=lnxL%mxTARA{IHR~(vs%F8RmdFx8v_)+Mnyq?) z@+#ohw7VBxewO#1A|?Q`#_ADMt}Qr@HjMrCF4l@M#cu=NcNM`rimmhq+5fSa!aUPN ze>Cs=%=4qDr(Z5f$O>7^pBlE*!WCf5!yv2+k-C61^T3Xq#w<}rUEb3BQWhOa4HF0u z<X#!w8m(@u4d`fm7W`&Q(Myp3=3}eL5Ome(^j=@^Zk_Gzt%lS{kK9_}<%kDHg|Z>t zG6>J@1NOKUN0#z8vzK8m^nb}xXy+x+G6%oA8{+JXWKE$ZPeO^UuCA)s?Ero^(7<A} zH?2j@>qK0kJnDGCzvq-&2RE+XG*$0ua4u~$$01H71wn~@wASA~q@V~S?e_wOKTk!t zN)9!HXu&*}rZj*q?O$QPJ?=mLY1sf>2Yh2C;x|E=OP`Oci(jSu3!7GMy!;5m@<5f9 zcAg|={GEfKyT6}W$HRyEE%!Fnin1Tr%J{#4FO1H`hT2IW1)qchSxKNYE^<pgNdxK^ z8?5~`a<2tY&Gqz>Yzl_)fTC~X8^~=>`D3vj{jZ7xkj|&vCB_=DZ2}#oRie@uy-&2| z0Wt&6)s_04-RM4Q?j`i^x{)WDvX5MRw2&%f_aa}bm(21nygldBUDZOg%@E>4t9!}k zB|9<TpV(5a^1x)mm2djk?U{P|46V6i+O%G=nTf+Fg<BxX;L&TEN#o}lc>I0eQWDbl z10sDAc}Z^`(W)kX2z?LaA446>-MRg;)xRB;WZwwQzpzmaLbv=OY-=CozR=j_OmZ1+ zs()a=ER55RZw7p6Tu17reFj)1Pw#3hFJfUvM5T4cuX7=HsjJ_wsRwFPV1Vbal6Xss z8|UfUwa5$Nc?%^A+2Wo&z%15i=bpDm3iHCT)kIFFJE*h5p3I`b>xL`vB~9%=wzkea z87gq3gM;t~YnC(t*xR25Iah(`5rco>)l>5!snt_b47rUUREmYFOB}ai3s6bJHMZmU zU2RDy&))0i<)D_RBN&99l{odc-N;Kermn6jxDgjnYyw8T9CFf?3x^wMOvio^CyQ(H zDS@k&0$I1B4`^p%71h(<Qkh%qUV?_)l^D)7GsD{~d-~#cFG6N8tkG|6qqa=l0lfJC zw~uh+L3q5{CbH=Si(|N7=??Jg*=TlL39d3~Idpn}ieZAY#GOdQ9GA%*R$H~e{{e^n z2MShc)bbAeaI8-}Uui&wyciSgJ)Elu(XG(K;nlAu(yRRVl+UzV27b2>39%YW!%<5Y zAWq{mc*bYaDe<xKi&m}kpT5l!NZ{kWNeGjAmKeYHQB_Ous&Q!X{q|7(4+8Nv!xQng zSHp%fVy$6jxkF#uT|bN3fc!p;F>GJ)#8t?G*haBZ8iH*FJsuIcoJ6!H+9RG!jv9Cx z{<}ElfA?ZIA1h=a%_;bXr$6_uWO%oC-yQ?%q3Ud<Y#MA~l94A$I0N$QeZ@t!V|($T z_IvZ9jAX0CfR`&(F?fZFczs+&{oe@j9@JY^`SOpg(PvVOe-P*U6-NI{R>#+L-W@wl zwzF~sZO^HppURG`<xQvYWR6k4N!LxP8P!v8#Cy{||62+za1?wjw-Uvg0>Eegge`B( z?8uFpT3y|X2a5fSRC&Hr(AoGqB^1@v_1vNYvsW;52g>?n?n&#K>~`C4J=m?#hF0I= zM}!UD%)RG2FQBH9{j^iqEjeGBl82n*)4#s5ys8eMb}98ppk62^1;f9`eNh3SgaU$< zLe9j3J}@G-B^tw=Yy#qHzXg!F`o0Lv`f)&t*yu#3hlw?bDN2V1S|fi6vX$G5<%7R~ zKO9>D9q0|U%fHZ{f{rBXS2_O3OSt|SQ#NzhC25yc1s&dO&3%7OHZRS$sl{ZJ5efeM zGoCGQ_)belh>N(^d?5gmaV%*Mv8N$bW;K*EMU7r<!_)Om3pg~Gh>Fi*h99HNn8H6X z<_^V;G~%IJ-on_G7A^~9Uqv7#!vmx0`pPm2AJf^=IPUW7LpNdETrJJ1yM)b}v%}Og zrlIi^eIO|M>L}f&z+z_~>SMQ#E|PjhswA?rF%(;8=co&F9M{Wx*ZmmhDMgd0_%M-N zSFb~%Css{F$;tCqiLcAk7T>HyNRVna2=zCd*X}^=?;G+^9cB(%v{}Wt`e9Nk&d5s| zoZ}j2=8TsRw*>o{;>kzRIkSOi5ed>0ju!?ZRN!asTE_MO@@CR+{LaTZ?_~14=V&MP z-x0DQ#Kmr*5b!|s9v>Qy+rOSJ2KJoXzs}t#f*acg+zo%<?sT4Pz_pqbr|xS=O(c7l zh#gb<e5N%b6fd}h^ljZ^TO5;5G=uh`7(TD`!GY+@lYsy^0D836rYha{dW1)poX1E{ zfboYH(n*AQF(Z`Sp8c~A$77m@+d?0!KC@^Ha{V}{J*nVIlEYcL-2sRHpz!y#(B^8M zQ~-Vaowt?oK9`V25-lBEmJL~hCogOmue=!o$6CFZ6iTfA^%N?Mt|iVzzH@2KthqGO z);p5+K>>M8$c#gFoQB_e6V=7~%3}CwV7od2cTyOHbs1{AkQg=z%HqU3nN`Y{nj)Eq z|H3sNv27R%Z78D+zmswGwQUGKkn<eh2jA^8#dXz;Z+XAj?X|h2>fOlsigTrtnJmWt zK3=R7LDyg_Ar=grMS_}GZd{QiB#<)btDwI~O`quL4cP8PqX{6}4BDB>fQTC1kj_)s zf;UWJE;We}8L^O3Y_cEAFLSW$N4CuJNIxQOy#m%}w%47js%`|(ou?rj^Ub;Hv%nKS zH~;H<yo_Y(86I#<R}AE$7$0mdA6W~|M+IaH-yYx=duiQ}BBYm<S0erP0b(aYDIc0z zP&esb!HeBp$V;G!opIheT0z2^NX$XUR6hkJV$<IJ%V#V6v!SO+!_xr70%^EhYOsV| zBW^TfTvb%#y~T;bY{g&}$W~g=*@YYdfdGV!px<t8b&U3oH=2orIi_?=%!lBoh)~Z0 z4S5L4Z0oQl7>Ze}3~VH$rbuqp75T_cz*V?=1~X+q+f9jkN3lih9-Jv!VkpVJf`3Fp z0DxO;3-1<A{DslWeHrSTUzp{}Prgp<Uf#3zS&`aP{myZ>V!G0IaE2&Uef&9k&JoEG zz|fKONa06{%WX`F2IJz`UQ*Y#X3*<4ddFP9Ka$kB(SIaqa<d+;sc6-DpPS3t^t*}6 zMD)8!%9QlGNz1_c-DG9<``th?cmr<o=*}mTPtT1LK~4j1$};IYle~AA>N5K~lc2jx zEi`hr`cnrMu+rt{)njUHZ4DnA9etb+Jw85Wz8@PIA-Dh}tdaAkxt!lg|F4DzQ2ubF z!Bzj{y<OvQt@gGy<&MgfMGqh1Rh;x+87~{2xR6)vMA^*ZIpEIO=UJ?oMq(r3FDooh zE6;YK>k4)f^+B8brEljF@6mO8uCra<vym`-;w;Yqjr)zjL{X{QY<Ab?(Zhr7-H~^W zyKRz{X!UCQ_a<UMt-+~-9;Hh=nE=23D61Np;DE0N>`#z8xXf)tHJPk=zs`?sL-(1v zW~_|VBVn9sGUcn&Ctj5F6<eCW-?rmL@8I@M_UPR;plH&*^;qynr_7dhnL?VkRleMB z3{36d3E_Xq(N>@(etR%dKHTGg(}Mo3`3|w`R0aPoqT-(@LBB~9X7-!+1T>T{Z1YZ> z$(5VcI~$4{{ar&2@iZxH@4oq8Am?01&AiLG{7M{*p<45N5RMtnK$ZeLkigl*dZAYU zkH$B;fKvva`g5O){kpGM+`TJ`O#%t-DJ~R7m%$5`?v66pMdEJtPrL|AN>uh@FsIR{ zUf=n9apE5oa^lFBssyXFd<m8~xaZ=N%fE5uB!CWhNspJl{Kec=9^jBE+1?SVEd_9X z$8;-SJsI9rIqZPNr4-D8zbw4^;o+le(ov8j`VA<wbWEP3*)G(F5f)7v|0Wq4X^Q0? zE@o;TX3#hgl1qfjk_{!%cXEDDl2G$uKE~W9i?Nd06mV&KD(4(`49$wN$q&#QMdECX z=*M422)@8P>q6{g-0qFRHL#0t41Ba}!&I>>iXMrNe$$*ti|S~2uZbq1vh-5nkR0ET zfj<aboKUx2jpnIlW>uH~#=geR*&mc0(o>`N$6{*a5_5q=T(q|@bLd6p7lO)dQo<|f zgtpm=`Q6uJj05zc{wuMb^vO2u2}2uHjAD=+VnCgFUry4v+UcXVu$Odx9y(LI*@U0# zTg6NPKG=(I(A7AL+L&Nb!>aJ|AIzNmOBEMI9f<cI^Edmu*UR93{pk);402q$-@e|% z`>vWZB2&7`Pt=F;?g{}eIz%T|xLW!U$Id<zbVy=~_keDuV@%OI$^{(&qiJW=|FE<K zxSR<`vijsbAQd1HgR2>#d?=S5uBxKxQ-{w#w!&$KPv2NcVtL)|^>TbtGL#I0#sS<E z^1qP(R!y8np|p7c!kGBXtG~;+zd_T>CU00UKWqXBn4`Kl59=>?b?6fdU!0f&qaCW4 zgLp3o`v7g&)#G}rWy&^&0O1`|8S!bTfD&-Xj0jo~yeuA}`^4DH1uh#XJ#vicqP3{p z)-*`EX))(ee;U-E<Cr1u+0TA3moB**$G`0Hci+`%rs0ZPb^fEadOD2y9hx4J*e>q( zX4wkFqO@7Y^K7!;l%<xX5(11ev605MzBRE2%F{I4iYok_4@z7G_J00_b6rGVbs!&W z%A5Eeah4VE{Z#ruuZvGnd5KI%(p_G*U4+aher5hNwc#Yiq=}cRlKRO=e6-k9ZzS7b zW0Y$9t;(c6ni%*ABX<CkF^@V6!fPPxU31kWq(~;(aP%~hXKYfwKUzXoACmSHB|%g| zW6^R=)~MsQ7a;7p&fw}1;BL;5U<zpN{HTdMjKu2`CqGIQ)E<>^hS|xT0p0J-^4<9$ z%2Pwr%Wi&94sp?*7z~DnW~USi-u<!hNxAgyGtD<$PtQF5{1LvKbK32%h`UgXs=#}S z7KykO2IQ-50IkU}C6K8=`n>zAD2h6;B~tgU_iQOBd1s39q>x?f<1o|Z11w#5x2eOq zC-n7jcC_aLU-aV{aQ~YF6c#UkqH&8^@=mw4jjNQBYs|->&O30NdV5EE<KL#puu&yL zmNcJJ+5uq%TiOy!mY74z+?e%Pqe}7)ibZp{qd_c_P+E|D{OQkPt9=Wi_Be|td*659 z3Vrk;hY6VNV_dG0SsSI(sn|l$Pu|%dh&+eOi!Lqi7nsy0kJ|g2)a}eGj>(x+1_jlD zmyqGimlKaIq!VX$mxLxqthg4^RXMPi;`BKKU;bs0Y&c?muQGgPv#i?Wp<qRvYx!BG zFm$BAyH6Ig-v#CB!%$~2hfxEcbE(Sm3nuzjP?PRi)0A>XEge2WPzFo9@q$@i$Zq8o zoaR_@Y_2@AIKvp2Atrq;$W8AjA~)y#w@tF~!Dcl2AJ@CkZrR3l?fy`XkAFLMZLmo; z0VU{U^>645&{I0lEdS|qTMJejt8e@6?NW-Xz^V0?mNBT58V4+j{s4@LphddtTa}m0 zwpYMZ=C;w%%x;!w&BS-@BtIP&kP@HP|3*oMcw-R0eY;P@qZrVpe_b2onD@NJOqG;x zPapHyzudkPO+*4U3dE5<=_!J#H<sz~fvwO0a=vF#D$4AdHZ?g08>>lBvwMTdb|-Vr zwGVrzZF|Ie=SgHyJ)#;dgUInqZ8VXd*rUi-LXs*`ZY4wJacHA?z~dJ9WEVyFVCLUx zk>8}Wzs{Qp1>Mxl+)(&H_Y9xd>}(xQPjiSAKpUa^j+dEY@x!G@KU7q$DdR8;3hUBJ zT`K9@K4%eiw?Zg2+R7^Yzc(!{={{FY0ca1rc6Iq?E$u~qvq<+$q3zuAYhyrr(Y4S* z20n2ATI}TYe$=*NX8T`TTSIXM{E@4f2YhdU-F>Ed4peKRqK`UqgxV2)THqYhiVRg4 zfBSvyrIscLAd^vl@Dl&;dMBiRE*C*t;FvQLC2;A_X16yfkG48~*3VY0e)J6#)&4rJ zio>syy)!c-KIZoqR#S_=>qQE@GE5_})c*p0g=1CN`!oagq6B_TOgFw~##LA!0|y63 zE8n+9>y}~fvM_bp%+)kL>%A8KGA^l&c|=#wj^T&B0&zJo^Iq0Ee?tGSm+w-ra{nnp zm$<e&SNv1BXWin1PF6sHF<h1R?vyqzF(o#pj!k27gF;&5^Xe-<?ihpc-%)C<p?CEy z;7K+=WyG<G>mw?hANV_DG@D9_`EfVANWxo?rpP+%|2b50A%shtAQ@hu<1&C7GJ`)= zuUoC~#U~b7^3^qb>7Kf!jSR|0hD?}umTJ+Tns>;+oo)4$SqEIGWhR#Dr9O7_Yhi?B zOA4}D&wkN6Fc$KEH!L9tSoLm_&;|<2;nd&-GpQ_$HM-UN^*wG}CLwID%T~Gdm-<;1 zFBasd_(Bm9_>oq|fK-$L+;)m$);Tci2O|R+UHJR8QFCWPOH&Gp!=xUL;W#Tn-?TN_ zdha(k#7~$mlG6k^&m10UP3LUfA`?y((6)rndIT@CZ0H3}e&D}5mL<5Vn#iF3`PCzt z!NIt{q@B+N1cZsP05X~neXa1Zlf6y;+c%VFdVu!XcLhnnk!pHwyfS?jZOkR=<MD19 zUCREF^E9$z<OIdS+xS&!C$d!!`(#2#(S3N>58Yw?o3UMh;P@*Ddq>PqY*z><sH&!x zYr#j41<O+zNk0=%WF*>C#Ca2#w><vYJ0fRaQ|?C$f4xA%nE$)G76#hZtl`V^4aRX= z*NV|IJ?WrqC$EK-wb`FdGr8mMr5wX?rRle2F92+Gi|uQ1F48m4!Q}69KByFzo0`L# zO-8PilFz`3<bEthy0ilLSd5~%h@#g96A^R-?y|O)oXJlEnsq)>XeDMe#C&D58po9` z=7eFM>63)avC~dlg*WEkz&;J%cM?S@NGSdfvd$_js<`dfQVLSiAl=<aNQ`vqP=d5b zOG!7Qq$te*(%ndR4M>A@Nq6^<!_>!ju&@2@cVFvpovn4S{_A<}-~AJt><<;hN9F{5 z4K4%vZMfm>x_<moVb5hcnHn^84f<qjo9J>@{Bb2qHR8b|6F286mN`o9WcHTsBwj07 zSX{c~ADLVO=Kvch>GiJmi!t(iz-XEbe~F~emEs~h?(!f8Ps^Y@O}*Blhq=46GcwVt zt-1i3XXcUmG*q&<{T7%USqb$2dO-aR)yVpX_iK?{iyxq|;x@w|s8`saM@F&vF47Oi zTR76;dr*|%*0-dQLlD(ap+|cWA%Rw=?bR!E_}A4K0IW5hn0$<LP}|;4)`shs+SQ01 z{Pu{?P_3p7m%`meG@D&qnJh@kvP)LN!SR6FWNgtllUdbsp*Q|M%{dUK;5GVb!a>G- zQH;o|tJi-gvOx{V_DJAuV$0>SD4OYm%#N-dZGBnHwlB{Q@3$;T?NGM$kE+%Jao3jf z$S~pbE6A<v0@~g~5U3X68NVmz^_c;M*UEIy638-oEu`jz%oFWccBuVx@BeH_@m2?b zmJ!F_rb-NP>kSLqgSv)90@aTu{5J69P7T4RG@8vMjLl4ptmA9c+IQ9aNVfcKK{%Q3 z1<@VwL|C9-$gdKOW5U6n^W7U62ec0Vqj-jR5Tv(urfCGghr$Sp?Uii$Z4O;xY)ab? zL7&c}US^OqeL>cT#6Uh^`JvXH4d3C7lY}3}iA;cI`drEZ&R_VlQFc%-^1lZx?`$}X zwue8(xucfH<(-IBnk8iQ(HzY<7EtEtc%?*ix_XcTY8GBcY{1d_f;qF`4e?cH94$GQ zkJ-g$4BbK{VbOar@9V9XdaHZeIiheIS|B}&qSsCjDT8=hZPRlskiB<5>TBQi%=1Tk zR_`i9^qWdxkZz%e5c{A#>A;i3hk7pbO25e4H@Js9?o*d`HG`My_Y@n9OO&_0bfq3o zscF$(-$y&0^E5}hd`H;8f4P-Df-l#-)p0rFnm`pOjMc6uph3;i1oR<J2CKb9&;u3) z^D3JN#~8ugY~|v=X3z~M1PCoDMI1g&lkLlqwu6v}Jp&&5kb1(O25IPgqgukfnd~Jb zQK5XjH60JL(EK@?T(tFxY;%I|z1qN7;L^~bx6&K;Ar~s_`kFPpb@0Ye@P}i+C&b55 zdnmf=s^gtp8T3mEYezHEi+z${b1m!}|6qDuC>!n}z9LF_alHox-J2V?joP?gxD<Pz zh;9EHKZ4Hn_yqtxdlW8#!{v64_Qix1W9bi)GfsSsh_O7G2^<+*<|6hgNNQia5sh7^ z!m;@H1=l9-A;-j(&1~q($66+F8Q#m}6L2w~*5FvjsOR+-dzw*vMHSA7u&%F`$bA7$ zGkfq%j4>MQ5Sn?wiQ3ESm5aJ0veDq-mSHwyzAGgRntgCvyE$Ll=*@6*{F;HLk*H@( z;z*im>JYs4DwIXzWaA6b?)d#+cr%Pz(prx1GOm}HM`~$ErY$CHE)?C0b?xVUoWhFK z(1MouKP@ofkIfm%H~WDqOW1n*pYTNu@I&|NXzZ8I7Md@AvM4nCBClmpkV1$-XGEU= z#U+Kbo~!N084VVMT^k{OG*tD&$uZ<Vut-^-`DW@Cr|b8uR`_TB<Ia)sk{!YOzS_BM z-QC|(|J+B4V#h-7HPKkSfXY*!-kW&4!QX79?AdDyx?LGQng$H0{=!2FpD44z+!GV) z$h9{HdM+<-O@{!NP(SENW)?HL@39P^{MPpqe&J;~9*rm5Eq#FyXhCBaxPymCR2_Ps zSbq*OiY@$u&13QBtWxjQw`YqNKX7{IJA>fz_@pM*J2Pep>_Wi{G2q(f9KIHvvBfZL zTad1hNSSV4Ib?tALpePiNFWMq0)`~$82>fSHyyInn?wzOe8vTmqce2d-RVG|q=QVW zN^dzc=l#BvKn^vnUyM(z_q@JL4)t3Rpt-t+F#Vt(M(zQMF>|B3u@b@Q(+)K-VtjWp z*`32$UOIkVrZ2jn&U)}Em`$e}W%~T3--gRb2=RxJQ3zP<eozlOT59s-82cp>cql=; z&c>SS@(-o;&t)-2n(Sv2===6E*d8*4Hh7!yq-n(T$e{Xpl{skg`RT+U<!vS8P#q)w zb`q^Y=N%;zpf{(DegZTND;M2=Kvz}Llb~w)T{m6HDF$7#vAYU1>v;etX)`E0BUxJ$ z$7Ia5ee^65?8buQ{Fd%>P2r*Ec(PC7#Jx>n>F^2W6Vm=~qTF>YSFap>!a!0|$drH` zH9<}lyqg3yI4?;$Zeb-b5ht$_*lz0?{XsSO>ss9?BH_<QyfnLljGZAb+wVV1Icmj_ zo~TC{giJkC;XWzyB)%4i92Lfjfdi5;=!qo6=n~%~0v>iI)7*c~01VrPMYkt8SsyA^ zR-DFXIl~hX6+=>Yojj68CDWR%iD%>PWIBV?&}Cj^>ag_cy0*q=;OZpDd{wNHJiGuc zx;x_e8OQt^U;CBh;m@wD8~}5pGhS4Cs``w0<IbMt#04(i?b(7#c6R&n<)6!liJfwy zYJ2ApkIAe-77HafFF1i6ohijyNVaE}qFqEqb(=K*>T=~{w)faFireNcX~f^q^ARS; z$foMhMvo3!gyigIWj9n@-aX7zO#t73+*G&@K(>Y+AFkxZ*^w5YY5j_Sk2Dxy{j%!s zu+AqQ3=dnhpU6(rg!0R)UngofR!w_&VL2&hi)g$(7^ho9e=>2cUjsf+gH{=e^)%sY zruW7abkYu>5$9j^gu=&*kvrq(2E=cgHl!3=z4f)!rEG?D#Hi;0Ka+7cD&f))4oZsn z3ez{wteJJ%9oEquYO+PVpvfy_!hT>BC}FiMa3*+YlUUaK`zAPrB(8>^V&t1HQA1H| zP<iycsNI8Wvd+uV4{*^G8lUAy0zG=F$XP436iG6A63H2wk4RJ9@-A6wd4Y`i_2)M# zI6suAFqlwgK)&%qfwdM$4yY#y!latD2=-SUHw;bC((~I-(y$v^`adoJ&Rr!LdrgZv za@)eAVTq9+J*m`+<PbL(04(ZFEaV<FQO6%moBv>#I8WU1xt5h=gks@eLa8ko3q=w7 zU7zB@;yutbrX)_g3+JYqJBtLkuHbHuUQzP#vn3cb-=N3`tdqW>`E_xUcAy^<X!($o z+5`~(a-q5nbS}Z%1_YQgBbY&wXjXyg$o97cxaLOV^HRN@;OG69V7$i<G-Ph~5->+Y z+nvD4RMV3|U9(((deXrC2VucDi-WTi;faV?Y1X1H4l+MHj4;JC@`7h9?cb;^54=eJ z!>~0$s%pwNv7*gC92z%My5aOf0v!+joL~sTVXX<hdQG(p3R{@}8u%@En`96?$KzT3 zuq7#)p(7$PDNG0?BbjL-`xR+G#a2E#=K95aN7!4iF=5Rk@iNkhI<7G-hpIZ&vY8&} z^cGw22Ox^V7Bte`u<pkHJ(^Bs;u5ft#V}y**vubKe36^6_sIGR!mZmX^>#gbi62Jx zgABNX&pJyqWp}i2ny7_`0k6^f3ye&!ktCE~cC6SuY4;>-@>TQ4YhQ7Z*F-~DP9}Wb zZYbmbpdJ$6{9@dKd@o<LD}jnKbI%nYh@>;Z%->M&Dx(HMFBbfJ6UV5}aqZNM^{7E+ zAd(32<sZR+>AZCNc%~oB`+_BB!-S{TB0fe2%&(v1h-JzOA1nhF%Sygc(|p`(zw-5S zxgEy^%>d^5L49v)RrD}|vq195w@_c&|C^5e-+Au8JN}J{*^|&j7PT4Qgl{|wB2;{z zzu4*&CP|qLK<=MFOPQ(P>3UX?Riz~EhH<!e6<Qkx^AI1kYv4|6MOZ96*H*qt{S;F; z>bM`iV;+1$wunvOLo_HU>6gsC`>6~HTv!MZ!nT>dk}p*Q9Pz*|G(tX%WuXr^Ka6kN zrv`fO(>$b834Cx#yNIVVQP6STcECy$b{d-B_qMGcn5OKy=Ww0wPJ1FI&NMfVZ6sol z?K=|{{eEQBCzHL1{7)|KRuXYn83+TF&}~e`#4vnHXpS>US`FxjHQwI&+eq_Ljx%bT z3&h0(pUVEN2E;$Vn6U9-?(7H)p|JW30t3ltya|zmCLtGRLj_YHbJ=xu5;cgql}){_ zIQ$qIa&UjCP|y^`s!HmAQsWgV_};N`+UKkC#riqonYGaT(i-~gO!{dFqVr=Lf#<KM zmMc0I<mj5`Y3m1|##q@IZf=q55LN4y*PpY&MPHHc??N6_k%D4BC9n?tXx!Yq=U6&y zRSq}ar#Lv|Rhi2}n|IBaPpf?c_81?FAlI8&dAQFH1~!sjdpMtuwmec3X`<^%%lj3^ zy2xR55j*myL?S)tA(!)E4Vw-2T6cz8G|ncI%}rBym1D|wqw4_hGq@M$_&e$-v=qzb zdGN5fu1fsE6ejOj-sV5OXbO)ix*J&1{sdIp5a-8*9ie?9geMJx-rWZxC~`)yUKf*< zlo7O32Dt+fKVNxTy}rlX-W?nqQ8{^QI3o`WpwXr(rgzb25Aw8@78%o8>zo0IZp*fM ze7mfkb4>h8@7EYb5ERs&jsxZSlpP_0a5Ra372GTqXu4OgJ*u;Jm;MUo^z(V)bwO2f z9O}?oxqmhFI_dqJEjlsO?Tqj<5&>oj5Gt3B%x^*a+pXbel{C?nuvCV5(&V$Ysp-R9 zPoEQCZZq8`Km{W7^gJ*`-)ADw@azqUxjDVlazUq|Vpu{0{_`*=2O!@Nf!doD#=k%H zq)2`M5f7~>xzZ%m&h_2l?x2xeeqb(|kho@(SHx-2mGry&=tq6zWH;y^iUegqWNWQg z*|qZO+RZvkp#a5PKzXIlR#9-f&SRC$LN`KYH>3&(;=JR2eiNu+o-?v$$-RW?ir#6g z_*-K*+PUu2QORB_<IouhJ*wa^{8|yHHq+qByAX0EcqD2U4VIo%{q@=Hgf=MVkU(Aa zHV|mV@%#EgC$z{)EJf$|4cCB32Xo|M^FM$xkUC^-EgFz(des664IO@c9WrQr@;ZYA zT)T{*M9ILUcax<P5w1b{<E!h9QeGIm1*%&q(lx8}e-^(*Q5~%RilsGVQP1OI$s(+S zPLSS8uQ=<>QW;9$gf)h`ziIo~1erDwez(o+4C<TdeF2ON%>O=AFY`ub_GZqbF#=)X zA9AU^hB~LvgE>iZgrzq>0X;@B6Fj<ykZbodGhCk$f<Mp<`=EdGq&q8#`4R!YZjx>V z%h3U7JvFC4%NFr>#+)8pv+hpXqc8y8cHW0a;f%;_8fOE;1jcZrFZ)f9v3%y5h&_}e z@z2DDQISL3C8v2==K&RQsc@>akiN@%F%28a$>)QLQk$zW9p2sg)F4+-#D4lSrymdX zy-yPJd4<_SW6poJO#Qjp&p$ceS7rpQcr5Y?3@m+XTs+)#Op_86Ctk39_ff-?3zXEG zt5qX|aFj@8nEdvNI}|{=<~q=~y{cJ!&=2Yr$<iADCNeg|Z~KB#*nUbFLKe*~FQ(RO zI;hBp83QLPM+5_Xinq~l#00C=d6GB=TQ0KI17tvmXSV2i1XB6~;nvc~b>2w|u=&`; zUTSb4UX3opmlrpV1`sd_RIBp!1k5ADy}-`BrmjW*UfT34B{L{bDhSQznr@p|M`LY7 zeSBZ)893$R>U<x@r_G&6?k+6oE9d)W?)|-N6xG;zu9nb*w7S&ze`QQ=&G6X_{ov`* z0^hHGlK)(#_J%zfbH~e!uoz34aVhf98`QfF`59iOKhjIfF8gU^@7<Be*T2TCY%)=_ zVrOh6vtnW)6#WqI<&0f|S<xb`Uu;(|dXBcbKPhDDzfnnh+^%+7mtWga1mj655p_$+ zD&uLWA4jgI+6ugQ`?uwN8}J{Sl&E>i%qreu?#xHO1N|WRcIXY*54wC!{0INNIl7fK za^!C0iO@}XsWUil29W#{4_7f>A2OtDwzrooLRd6Xa5>|C)*}NOVx5?C@7u<VD<XO+ zH7`}%ay((DS(q&5q&ThIh;yOD#m??lj6K24BTk?6QF)Q^y{*;B<<V6>jCL?SQG;=F zf+Cb5@#EswZR7I?Qq<KIa4?*BZmN;QfrKMqH?c4#!!w2QK3J_3M1pX%@GU^Z+%qLY z7uk%u!^>;K%~hlTpqWIk6oL`PR@sF3AA1%?<L7S84>_2qmbL6(%)$+<sY>Zze3%(N zVABr*4|(DvFJ5`?*Nz~T5!L!gs~xRDiTEyegSmp8G(63}TwLoW$gBIDg&btHss7rV z`FAIr^l~BhrO(sl*i&D1@4j3>p)d)N)xNLCRS@Q=Jg-cq&s3C@vM8>?dPRFsgEG&^ z^Cf^@aToNL`zEyqyp?m*^0z>QV8Rn!6+^!OIjV(Nh~R?k2p6$;|K&G^>{(r8z2VST zcw0VoFg~&!Ri6wN5&EcuJ1uUSIba~Z(xN+AlkI9^@QbnRXm@5sg78)aR8S_O0^?Pm z0L1H-`TqE3bD!711OnSs)d`z9)B@*)e77VE3sHQE%30!OI|OqSL8P1!l=;AP)H}QP zTni6B^SH|V&IvVd(Y-v&KFJLOBzxmrWq-r3CQ@82deoH$(FV>7MB;<Fd<ky6OUayo z_gJb^`gu9p6X1=fX$@a08#u`WS-Yc-V}l@uA12m)>lpy+s4%9O+``N`=LR`5r4hXQ z>ChZk@JAJZR8a1s#p_Q*pKEib^_zw$>_O~<DV9qd6_jwYG`!YB5t%v17z11onc^}* zAKo6)Vqfo|RBkWb>ioU{(qW4XCvVU8shb7FAp3PcJw8D@IsdGqoKyhw2LkzTpQl?$ zf9Gi-RE91vnrCps`kK?b-lNrS0T+yjhI#dh!JW-xLBoE`zdtonoJW@w?p1Flu&igv z!-YPB2G`%`y(@eDhwtqzq@h4CdF_TU(O&biPYna5IiP+XXLf0mwR5eQt{FM_GKA*^ z)0GEOuJ=l)Tx0Fl$H^hXBb!m66Nn)*Iso9zsTBA3Cm85~P83Z<lJhg)5wwqHyGs;s zF---+GhU}bPaRiv)U2YKb~k@7;k!m^!wdMOZiSU^);n>i4&MtnrMG>EK;Yj)>RuVY zJK;i`28Hxo3nmySyj7`FhJnf+#&*xcFtuH_aA5G@vE8(Z)C1vN<Zr}cYH)fd^DLSn z(DkQ|kq$zKT{l0<^zN4#8{4*^tpFZu=Ik@&Nt)zc>0@E(ea_t)?d_P+676=nvg`A_ zi@y}bpn0CaB+^r$$n>>HOr%<T<PT@HN8`Y16R%Ua|Aj`Hkj^%9i1MlHzXL=UI_cTR z+egutDq>jlK}(-2b3!XU|31Tpj>tO=cAX>r(yg_+%0ziYa{E_MO+RS!!GvDhD|&xz z@N^R~`r6TGjD!Q6^4k83*>^NQ181DDoWjVdZz}@1!CHhYApG{6ZZhC3*{!AMo1dn^ zQQS&b$Xo#Gn4^>H6yWCdHe3F0_`i{86&x*%eNdpTR_z?R@?D$<Gp}32`~kcm|HO4Y z<wm=Svv^8%fI)MHqX;SEP%%h}E_6mk`qjeW51#o;zW#=OxL2Rv4OFy=>rJ(YJL)7y zi}@kxRlzhx@c_>i4|Fwe$yy8KM>22q=stnUH7?KuBs}G7dXanG+1@ykmf>sGWjsQ% zI1S9%ZX!F1x94?!X`qz14Ya&080r6+j2WE-4%xJW3hOQPqxlwev2ed>N254*Ti*#y zz+a(RDGK7WB+*8B;?EYhv~g4;^2=u-d1wkC@4M$58M~gxTqfCJyoFY)L&D`;$QTeQ zv0A*;AR7TU`uo4Q39YifH#`m}gT0-uAWV4hMoZqNldJ+wRjMFWAPc=3ST6Kem0k{` zZ(*V~#UCCJW!)2pbJ+gedd>F#pDX&BMY6)VYppi=WP(K$WSzg15biE*L&az(uk%AJ zVGo{)5mDXzHI^JqgyoLCZcO_W)G{NM^b@;V1PUk-mfO=HD9~X;>)NbD*5S3j^}ZLK zw9f0RnNrRguJ)XNoR$-#Q*}A?&zwO?ZB7_<pUT~02?9?%9sDOsxSsDM8zk>g{Qmkk ziUaChJ^ClkgO*Bh)<(R(<%M1fqHM706}122%w1zar(F8*=GeVhdiXhY2_(EWmWT?e zRXVyBYe;>7u>&|2svWf}{@MJt<r%<2ah_7&Bx-H$ng0$T5AEUp1}SozPLT2~X9VL> z=w9r6Pc2ed<eQk~C%t7p9ARo|LyG&#z~C!n+QajQJ!slaqXS(fgVspVAG!IdQhA^E zlzTs=`&mB3Ke4zLlSQ(u?xd5N$Lx!@)gtk(I;1w!r2wG`?k(AtEpx6*-Y?aZ<j?BV z`kd``k=c<<IG&m)>{!}fcTa(0cbvn?)w4z#1f|E<eaS19b_!9pvL1qrYP{mV%vhCV z)-y5A3;<u?1P!cb8Rn}!PPRfuN=A5D+tq$IP4I-S^og}L&h@xEX25p~I9-$LiK<@I z78v!i4OfGv(f`=MS{b&(B5BP|X<(yQssjY)%+0bAi<7&aem>W4-E%Rq(s$w;(7ggl zfR_SRlqrL&$@8en(Z7GepU1`%lZf{`qLi<I4>_#I_7&Gtw<SnI$(@`*l%z={?Hl|f z$SJMgVfd?fjO3Q?l`e)NX(N{&=ez9((Kxb>P)^O%Y);3ufKLaY_(&EcVw(j<!&sXm zvCHarR2Og)1v~=T$4%@cP$HOG4%K9)wS9Wzs2FkYyfztp`D~yMyyOxsH6n;m_k4>4 zU5&nx5NAjApI5O878vo(I`+i<9Iue9W>7<cuSRm9>`ER(^(H%;Hh)%a+s6?3Z-S@# z-PU%S;0(@C;jBR4>HL~Yz>Y;*;jOyjGK+~&amDHvRY@r>^mBHh2q^BWc7tW=fMu>9 z-$?@}Q7QA5vZLR7-B-_|&?(&0C4%GEWNnwC(^Yc5*!&G<gInXzj;3vfB-}OQ$db$5 zM5PWmc@isAwi+kmsn$9)R7_Va+`3vXxoBoz>%C?KKc!YvtW#oTWVo;fGt}c2c-~xD zZxobhZU+F~|3dNe{%oW0+c^Bu9Dv3WX9=<U?AefBWW0O)=m9=i3wyph^<m!*OIW6; zz>8VrV^YJIzroJ3#lFN>+9}zq)Zco$MRF&CYA1qp4?E<oupAbvr_|vBp&X<9vOwq` zT2Tr~^1o4sjrxR7>~5ZAEt*$7&(@b_&wk0WF0-WZZj0h+@$VT$REc>|w%BNJU(6J> ziDbimJw%vC2^3O3rapUl7eH;6F&*V7oAM=$?=QN1Xw$R6PsL$$fL@Xd>#2Eln03d3 zYL^GXrR~hAv!`H+{cfXi6fIQP6E_qIv|u~s#Y#rh&R~<K4+h({7Q3I#?GI%o$%WC0 z?kwKzYYaLPNt8_uc&vdKWb7ko3s-4WhnU!(ocvj0^onv`*I1{T=LK&R`nI=$o5NS4 zYtP9fxnbV)V#;kY3cLEx=Kwy^*$Hf162Fg3_!JrPx+)c)$3<ykFOAPIKN-L<d<C=m zOY)QFBimKYFII265!9IRXjJ5dpCH)q^;`3PghBhMN3M$h%<g>3Gt1zBCs)g-?t9EO zgzs#u=6xfy-ms43+`-TP=-s5GYlIr_^3&Er625q9kEWDqpMA8xkYtMW-bgk!KE9Ti z{|6nQsF3gd-QRK>pXt7=w($!k=(S4*OSx;pyMx_3$`B@guBgwjC&=?ZaX|3CAL(z} zsa@S-&P*Dw02~M6K@-SU%<C{8SPN_M%|J}3=vZ`1w=@E4K)ItR6v&WtC4iVqG1zC| zPabRG5<M<ew=}8J@I)=%{M1q~UCTc{cu{OYbr+V4cTP|err?ZBVBw~tsR3^cqYU4G zRC~6Zy0;k@!lPA(fWvA7rE)EKakqp!#g60CwBVN({>0{lerb)n@q;^|CClp4dWlLG zp{U#HGg>}Vj;mDugz1XCkzW!d9<tI#+@DC8&pSY!`gb2-NaEewKDzH^+xPo_)iOzi znX88{31Jzi4(cstnWv5)ikH8maa#T1Ia6NVD^}==;3|UdrAoYg<qJQ;t1ZWO<xh^s zeX?8ht)7t$kE%}ofx&N5HMG7I*T{0Y{h)K(>t_*^DS6+^DVQMrk}d*4nRbh_9TTPx z*wm6LaY$LYkgSpm8L(TgN^B<rkiS2+KAP0A9e6yWvI=YYA`e50T@*M70#$CSP2T0O zu&8#$3U4^FU}!6d4_yGYakWql>S7a$oI-f~FL@OKe5`XH3IW~Q?~(0f&n&aPhz%^| zUk~m?axguYvL7jc%yD@aqS;mAz;Yi7-V<CbSs`e={;(8LrJ7mX==zh#xWaB;<e{GE zA*o`MEE!Xhk*j(J<ZNo+R@~!ntSGtIso*+8Q1+X*I6RG2)r={W&F;}knD@NVNb<4m zx)v^^17`*Wd72o@Lw$t4(!AP{JSb^j#gx|-Iye3`&ELbr4@o!RDdYFi6IYAmH}Q!q zs9!`yBZF?6{QsT*-Sd9<nlRawMx89YHT&ytctv{iq;@^QYLh_HMAs)tl`va(HNwmq zE0!nXn-aOcVK^jtA6)#TjYW2?tgtfo8Y|R<3AykhFm3d4(GAnLYi>o~4Y5eyQP~wv zgoT7_?nc7!iw2sKp<^x0Mcb=_2Y$Q;?4%{b2kpR_5{hV?rhC_wT|C&n?AYl}o(Ly@ zVCZ%-vpcg(n4Pbt19@bJb9kOjln!uYtT{-qf1WQfHF8lQjS0I8u?l;HzU*jqbxgi| zQ_y&x?<U5b#OC~|h(&e2y1)l@g!$w`2gQf)?4*DZ=T7s!QeI3ax^`lPdHbuYXQI&4 zybs-l5eNfJO?f2;%1@wK(y(b?t<Zi;FyQ*SZ1T25=83j=Pk{S+<GI7y_CE%M`~ZMo z{-I;1!28Ko9rv~vkY|jjynJ0+h$Y|xay=cwUZVM}FhgWRah02p>|%BJ<!^E37{Sl7 zp!!&rkL-&0x*sAfzN7j-i}xQ#VBS*;iOR(*FS{nZHvP7lGa8^gM$Na7De;d4$Fvkg z2D4xGl&WvIL>Hh8>&Havj(RoRyBCR<UK6c^>c|$p3g&NvaJsI{7!dVwHL4;zW63kW zrhgIY%%C$Yp*`Rc*YJyKNYYxnZKL}Qjg0^7AsWC`aDKv9bw~Z=R0$anB-q+4v74}@ zcK1=Q1)X7ssShj1X3CG8)wx1_7kh(?&O;{GCnvOSZGY(>6dcKr!3<n}Cio(F+=TSd zeZVX3=k<P)_vB>)26PvTbKBbA9If~IjSc!ZK!@y5({xTLZFsYHZzxlfsKC?U%^L)q zOz9eQj0MRDoX{s`s{>x<2ilVyIUpfvfekm$r0`GQe5i)Z>&a?t-0Qi>T9$ri2@;Ue zefS!iro}ua*D1=@Lhlp5ZNF$8ZK3gDr*!EgNz&8XS~>3)$j|SES3>^9EG=tg_{E55 zUFyp8jkLO1vzj^0>z6f^wYP_rR+SmLSr`iIOl7hc7E*i4ekR;F?q|KuJ5P4}M2@c= z85P^t98LYZI4oqo<Yz|r{ITvchs8q{F>>7E%jp?XnI}3q=>1kH`%{}wc}w06;#ghy zd~Cau)EJE}JDn^&CUf8I%nSv$kTTzJ2ofja-;8)a{=mm_fQ8@df3Sn=N&u2<M5P*v zo0K+hpN+3I0Jv#*XFxziDhQg`f#drr^KKHS#dqxXZSqVNNWr>$)gKJC2f?6uNjq%c zQzAj7kdQ+Xc!aJ;F~OHh?ebTt@9uBS(Q=N$u>^^CUBL?Prc35A7cX{&c5_0At<8Mq zNpunPcSrJD6)~9*<&%lcAGfz%s_6aNrdJzUw11Rt3<(-5J_W$*$ILVyEbz(#^l1+! zbOhp?Ar=C_#=aTsaa5wH=F=5%om$-;Z`i&tMGWXS<k-<cI*2em>Tnv~$yl`dK2rXX zFn`(akrdNDT^O7ZD~Zy+1RY2lr)()0@C!XB)wG@^wBT|&3!*PHnsf3aQFY?XLaR;R z$X27Fagw*f>^r6nHeL$P`gc5|gQ8H9n?$D0qtB*N{FzCbLYy>9qIFOWrdPehe?Dj{ zp?w~x96;t6xv{yuQd>c?Vyn*hZ9o)LkMkHEow;D?m5I$?SK=oW{1LY^FlSGo!<2I& z0pu=lkx`g*R9!j_y*p#kB#_`{@e)nmA#k(t+`AVj4_ADdJaa8*6rO7K0Xv{9_Z^7t z*Gehfs%D!f%-~UZ#U)4x|El$87PgAxZf5o&M(pP`VAkOgYb>)meKI(9bYcf=t?z>g zW8g<a9Ev<oY~WXdW5ZE=F`uB)sM`ot`_Sl-oyISSZy)QPz|ia{Y%{WFX@{XZp9hp1 zu!tP=IM$TzHk%w?Qqh16Lyy2Zokf}puIyf?pAPSy?hzy>iEtENwO{QV`4fBr|6^E& z<Rax2XlJd3OmtpO?=gtncOCM~O~iAiy9QBk+7%OYc;$Z%-S60iZm*2-HKI5aV~GoA z$Zs1Rp!WeDMXPgXpTu&xlS&k0Me5t>OxiPSy%go-?b6!3a>WK4-8HL_1*m7pR{hCa z!^OlJa(d-)mj>Rv=xXTQ>ktOykFR1Sk8hGVfs=mc-$yl#WEyLo2(;`CWT5#vk@vB( zc-!_5t%gGE)>3rVFPUTv8>XpJq#OCBMK>CM)1qv+%=h(!QIPX#LmbDbN^~QI50cGF z3KtW#qC%}nTcurWE$uSmw73S-=I*qNAV9vvQ7dVbW%lc3hgAfYb_bu#_-sDqpwPDr zdS4gT@2%uPaRd^5Iy$#cM09#|8fP!RfERrpI8p&n`WRR={QEKPs12{r{PKb+-e;Gg zaw`AUE_v7`xZi3dtK0X~tFCT{WNX@yxp^V(rt<BZGvb;qheyovizl-G-}!u*uG1;0 znMM7u%>L+l??W2{7Or8jSHJ?QZ&E7GKZFZjoED+vZZr5UQ1tg|fyjMY@U;4Qzvd9d z_d{cmVm-OCkD3GBbF^deXhH;D`F6<G2GhI$l;}Nb10Y{<R*ag1bab(;2##9*O{w9F zh#1tzJpD{?Pl~r99*3<~;nwqOtw`-j%z@K+s&FC6G`3QCmAA7Sm=N*8g&08-#>?9s z=F`ee>k?n1Y3(`KtF;=Fn%q|Y)A}MB<z6MbhfOboX;10O5w}IlfL!i~P|%Z6W&lf6 zZQ&Vns4~7Uh7kKXe4~LbiHbfc(BQJrr55u^@|218K|g?J*9A*)Q-99UTlokC>s^Ci zZ?39aj~)rvTj%ZFMD!Up`|K8Kd|e1m*6KAs#WYg?C$0;5Zz8qVt=qy1rW~M8edo%M z+>;d{NE~Eg>38y0*AwnBb>uJuT*?227@EH_T*EE|afM*|*5Wx8IiZW)Z*5e+XEzlD z6Q$lr6=`bDFCcfa7TJoDjWt=9J6i`NEe$t<vmk4f75QJoU<~x~H`-BJwn)1AnPF_N z*V@>&?@5xti7gb9*|2A*c85ND0eI>YdiLxsbAEf7cT#8>8U63KgUrfmiycOL#fY~@ zEfxGb6T~W_Iw9-ZpuSbe4OSw2)NlH{s|i}YKv~dt59|w1KRTCTn<<gwd&^ZoX+n>q zaddt%5L+1jG=o$uVIFPI)m}`TG+~<;EwZI_Rm;g?-Iozmv}zgH_TzO;g!7vvrj;E} z2fY%4yeWoabd&PW!m~}8)+<K@{dcTh618dn!ZZ8?s|0B_ko5N@i-`v6l*qRTmVz_d zcON$_xFj--e$w>w&m%|=-=Di6DPLG9i~8yUr4FwzP<Guf#yN##8e=^9Ao3B>*|?;8 zAP+%jrhP$1*3dJ_-ZO!x&eA$66bj7IxI~Xa%zew3B*)hG3E7mP`TDPHwkcu4Zf&#P z^}td9Pj9f6NG#wz0c;uLIUT6+#j)Eon3yY``QRdeW~W~fvPcWhkf;Ec=eWKqQv8AU zcyw})R%ZFN4R~SYwEys;`*IzA`OKQs(Rvoyo2;v_q>&0);IP!+2s_hB9Zrf|V{Jw& zO@~?!^{MXch<=fJ8rXsKn-D^C#hV8vjX>jkREFy3mY0t!E=C$Fo*~T!yyZ-X%Qu9m zg?~N&2kA?I9t=4af=pI0oHP``&vt%0zU1z3VL{-LHDyF$EPj-tnDlTf_5Tot?#*VV z4+)K6L|-)kj&FaU1x1$bs9LpMK7ppd@ms3qES<-z;phAb`%E+sFjn{J^^0hZlSCQV zakrN$@M9hSpi%i?c2ZUr%b<B+Cw5R<h3N#rFE-hCoiBXsT$6!tx#|zC&Mt`_8w?eq zQoiN+^T9H@i5h%@=<leJ`QC(2%nub|T+fW<;A9Dn8ei$ymG>Djx2^Yk0@*1=?n_W6 z5C)Ek%O{d!Ip=I|xkdEy>l(TksiKXyw|KNcEw(LuEf1C}lVr}IEfUJ=s->)O(J#Mu z=EyKx(>V=9&l0BaT~aeHsQu@or`#c-0nq&I%iy(h5)3XQC#l<SZy1nMDR+>~AA<1$ zpzU3uklHv?p3b9BC%w(}|5PL1op5vJ^DCmSfM?VZ)5S6R%4ho4P*EhAR9YP`epjSq zu@a9t=ZPiWAmg(Pm6Bn<XUl1R77amDpUO;fSn1z<-GLc820?bJ<V?(ibAOwnmvm<_ zvBWs!{;3cJ-Z7_rgZ*}M13L&`Xfe@oA}wI~re5AAa&8;p_{jO;m%GHa<aop9Nyv$A zbqPiDAc5YVcp*I|EYJ#H>cXQN(fH)(>%k!7^Xy2#DWOm!t#c7~^&_jSoK-fe^OvnK z$KRj}?f8vyE9EKC^avxZAkls4sv5RU9!kbw1Pb4th{wcLywDq0G*uFh^{IWEVMAnY zP=1xReZDJlHY04OWynnsiTM=z&@nc>xSWD(+);AN`KtGQ+t5P=hTjSB#n2%#PEszN zi2-gH40lBx5t@oH_q>TcoH0soZI!|;x6dISSIJRDUOTRVVTL|ras+8kpbX7_e|+ug zGefEU?FNKsh<);<a?9v~bgMdG^P|&wU9!IqU>U6kAZ}`1*5DmBgP`Pyx;t9-%pF(X zVa_BeG(1A>tYF)MWkHHW>D`oye8g4&0F(3Oqpw<i*ml}u_I;B$mJt+)ca|zq<pS>W zIDszbVD4|8_p{JW>g>T_3-)X+tKEAS35>&)e|dLyc4tmGRR6(tSTCGB8y{QGjhNz| z2<+}w+YD>&kM^v`B?;#$(>6<=eI!+dB8IhS@&FA91w^xUI69i)badD}KU<I4J82Rx zN}un(GUcBse`A~p>I#729@k{sg1Effev^T@Fl0fW{*W?J2fM$B(4XHhDMeB&Utqg( zNbNHc7IwVMp*Zs5vCuA#whlg=xBr-S?Y9kV{7pc!ku`f8C?l_Kr0<j*Akg)!jQBOl zKdG`$6&Td;w-O)gY;o8a#eC{LD<f|jG4pZZoerQzsgH}m8xa>J^cSM9ef@Ki$vbt; z>nV1Q4ZV6vTyL~|cH>2DOa~u64wX>hVVfPys|EC0?BY1hqRFM!{!7h+!le8cDQN9* z9l<n;DMnS|@T4+<W#m;XpPtz}8TFkpL7MTmXuxe3R`(AUKge35<*+=taBhAGTW?t; zOHWuf=JTyG?B2t?(o!bd7us)xnDZllJl@9B+Tf<adYX@$DDNJ@E-*TdhL^YPkC}K= zbzb>IqBA10Ce6$?kB`pMvoEYKkAie900n)x3H;qL+j*)27jp+=P~M!SC+yqFo_jwC z?@b9PRpWcXB?vx*ImYN^oarr#f^B65P`@_+X~{?;r-ojE8?6Iq`E<IAMy~a1KQm)s zqG_nZ5_Tugs{pl!tcyf}x`cprnyjMNzM^0DaK5_V+=||_V-;e{tzQm(9c2r;F`O=% zP#Xg(n#*I~8$UA{(N|J{cQSBk^%fP50=C3@!&dABKk&dq$!;PBFrdlH-hRK89USiP z1j(01`#P()4!wDPqDSIHlw9b96kadv%vi}Z|6brFIZ0G8(NJ@|5c+&(w7y82?)>cb z9l2vWYmF$v%o#^h>f<)gu}(R%3kfdncNT%(&|c!vPpgupZ6i24VmvgS&1H@XL<B1E z<Se}iC%dE?y0(}<J_l30{vNmp!3QjjDhb^GdwK7;9CrHYHF++Qq||-Tg2qzO_=?Aa za@%zzDQbAg`~pkv=ObQdD*;d^+E-xjuSKf&C8<;oMHW;6gU_BBsiU`RH@`ofF0Z_) zhUKVh=~uEgcQkyc>aYpBc7hxFxiCnD?4PI>ofQoZ4Y-}&*s5jUhQ1v~rLH30(Of>< z*iS6jT>Wv~i8*uL8E>ZCX8BTT>ILQFV|$y>G<TYygLM1yDFz+nrg*cacYT)4Ew8V8 zGT7R@&RoovYk6fE`N`y$9vbtvB0gLnja4*~dq9rxGKxfiGepL+Wi?zPXKGZm+oR~( zUF)5UL#uC}!Py9N1j_?3Mkp09%R6S_9*17?0dUV8hcJ_wafzC9<ciwikFNWdatY90 z)rsLlLrZS#Xh6rELRpPB*eP&Ya9-YG#{|%`E1p)NvBol!;}wKv71z?p3!Y^Nw)V_J z`kzg7=Q!0~ZpVpq4=lSr?kPj{KnZ6hDXFV)KSfH^v!3fQOm-*XZ_^dCj@Ymy{gFG~ zc}uNo8&{h&gWM9iLa|OT$UA~hId*sZZcV!oT9!Hr#HO~&=`_`-f@!?IYxD_Xv*!zE zT3!ZLmB$-wac~cs&?V={9?KpM^*nJ8F>dKeZ8Z{i8B-XL<JPW=pLPC`zweakTXy&1 zFsO%6S74SK+U{+Q;l_i$Fo5pyj_np^oczw1ShiqwH5XH?;s(=CMJ|27Y$r$Xz5>0F zn0%_4s?7CdhBNr!ldIOGT0TiaH67Q2T1*KedO8m5v4V)U(T4eX70&{my87%qYCoMp zCI#2d3V{jk2@ue2q&u7?#VWHRs7rrzg@yLQ;guz*$4>j$JdC9i_HE+qmWEeWpu?Oe z+&`hLlez5IABIMmPk>RcT1hgCR}VAE?j<rjSX^f}R5sABDbr#e`PVZrt(`Vn*s!{Z zd%j$`P?OB3ktoP6OU`4x_$ibYJrvWn6e2)W`qL#J`hD3Own=s$&I`CylF`8;?FA?f z5d2yGEMVsQndVV!9D1VUC+@FZyA8yXvgPz2GO2&9+5Ea{{aeI??n@*<TAs0r=`A`q z2HT>u>?ZsELb~Hsa0)`GBXtCb-!^R1q1PmB(%ql9=Bq1^hwS;QGq3uFB$q#Ksx}T$ z&&J<bGuufWNe#D010GN_jqHo;JKtwsDwIU=pd(?LQx)&}XaQo`BIIGXC>p4L{q!`Y z#j!?`w}{`lcA3S$ginJ!m6wuh#%;iT+=^<0UfUarBE>FBw@{79xg-d&IR`%q^;nv| zXY6;znZn9QEIrq{W4|bL=D!kLjEc>ciO)Y}EM#P-LK^L?Ru5fL8MR|wdEuF)7gd_V z8K2*}n5q)$)5C9+?D3`crgoHb>{*CqeI9pGH;pSZc45OR<~o52CcLko!eBY6AjylA zkBK9hwVzmxxw=h^8b(L|$TiGB$>1WUGS>QZ0crWSN#VoIBK&ueTvyOCo<|b=J<%?T z_L6gHcoriyqIyV`afOM!SH>bl<ar*$it-*hOe`f**bZzAPwq`YjHfDer!;7Jh9d?5 z6ViR_<$3vz$|E?$=@l|r$RP}N<6m86s+9+fEUfGv&7*dL*O!IUE#@?fZNZ($r{?*& z<iE}F^}(TT`u;<>rg1X*aT0HSIaNf0SMm!wkPn3SF=G<eGh41ZV=fEoB@#3qog539 zVkX{#zj#i8Z^8(b3s8d+7PG{Sou#S$`8*UXh@i4b6y3cZVSP?h-Rp<&@`0FUy@bh= zuf&3F?hhp>&I#=<Bk&BG#{wm^*PnXRL#lh7<#5HaIZh0UOIlKkQIINEVmJj=nohEt zF&sk3DAtn7G<_azh_Esh_jc2xEx#0OIR`&~N9){C+ihgIUxxq4nIK%}$w=E!>ma;m zbmxT)IZxy*7B$vVvdaNzBx|?5Xv)?!E=G9WPD<}PBx_6Wx1#mzvyOL9Fl<PlrC1hl zL?E<+%aLqikWcX9Ccx-WXfzA5+DMfKwiKf)_E!`79(MI5#-Kj*DDjj*`&CTzIN+8i z#v++`-8GVSIt3`agjNW8+a*qLGl}4UUWkGcrX3Tl*w)fgL;4G@a?}e12GS8dEARfQ z?7g6)I6Vd4fB@r{N8+BzJp49&nyH#Mkf2h!!NzvuwYD$CroD_&^Gay;A8HVlU?o9U z$YoTsFy?<=k#d-4JonoAV2o@P|8lxet#)0Z$HvF+yEcVlIeiOadX!abd5wQI;$Q?v zd>x83u{2*;BTdeJCijz-Nao_gd}E#ZVrgK*sj|{H&EeO0B78mMJ;u?gWgWwnQ+jny zcXEr3vWni1vgOuo^CSVoOlFGJSK!p@JiY@z7kPUcskSzrZ*QfgDxM1XUez&DaK&-k zubH=bcPPHT3s&S<ALk79+k}Oi8a75EtVudXzAph^{*HT#QTa73Fwmf)@|(tih#g<@ zTfbq$;andCEWpy}1Ml^R_#BNVIcE3#+{!Y~P_}5fVYXTxD|q0gPmVSd%D0Q$ITA4M z<$G_n!!$v$Ayk66V2NTgnaPzsY|S$;r>VoWCI;c-8+}efhcR;fl&buoDJO=O`W3jC z%zT@`t)ZS8qO2tm{@6b*VFK>6%s#EQR+sH<vPs!b>P0zMP}(zRfa7|OY3XGyPl4G& zA6<#y9;cwvy&^O(YOrk{)yK?C@eX4A^zSMY<9fi;#+qVUP-jQiSE?&@%fgtZiEpRG zOU{T!LMz>~u=<_YO^=-!+H#gqT{|^+Re^PCc3uvX=4E&Agq-9TA{1<UqOA<I@2YWV zQzYmAJP6E-9Y0UM%%I=8!Pxk?15M)YZ7)9>aTx#YZo2qf_wu`jZkYx}nRZ>B>4gk4 zi)#Ga4s$s(OA$h)CHuNz>vOpUs-FxTC5=biMu1M1k|a7dc+O`5^smu%CLwe0<6hq~ zZjBTP)S8@q0U{s5T9C4D32Eg1RZ*&s+T0h<)7{+KE&5pdDKXoe6m+OtXRXd1POHvd zS``KUwA;e>?mFRe%5<??RyP=m1Ho@GDpNDmeXhcARkO75Z_EGC9Zv5~Jn&DQ{?gI+ zV))H~dPaHNh>TC%_s?{dXx^C5N$eJcgPdpad8m?8V{;w@DFTqHM(cF)E@J;L>3ip` z80hA60Vw;WPDaCvHc2=)<l#ne<f}(1W7-7R(KSdf<zuU9IP(H1J|gn~RCb@5T+aEX z>S*pAN}mjWDZABOZKUKN6P42d0fV>j={J%H=~F5{0mNfkmBmr+NjW2cC6uksXV^EW z=<cY*MaH`aV%<H@_|Ll|>P4(P1rYt@=S4(G_}_RFiij{x0myK>^zaym;<x4AsxMQE zjH6ylPGdF}j`eyqpr;tu?p=~A(}fhe4BJxN6}NlU%Oq)B|2B91F5SksFIn=bxl{#R z&?6Sntz5tQa?<n_UWLDxBoZGL{8@%ymjI#K&Po-maJw2iv#QZ%kiO&M)+<ZYm#R$E zm#wVSm%Lmm9NU;fGFog7#4qmJ=)R<yy)KrBjccjlUxUATHSdYi+B^Rx$O?DXg_RI@ zkh*%(ya>z=IWp3I*$B|&fUJfW84J`)54r9BQ{}NjRIu!7K8Dqr!U&dLqn^U7*_TGO zQdn$8KFfw%4!CRit(_y}C_n)f33EPb9Ouc*%9otWoh?ykgQ_Wv2cXJ6(n4HRWR`yn z!M$5j;OtGq3pDn15Y`oK;}lO@)YADbRni}!@P7GEnOYXnc;iKgo%4SYa)Y*m7RrcN z0^%>!91I?&0lC{*?uO?JHjkRK+F_ad%SKhNg@3}I0i#+AY^kM)e484X%5j{xfNcI_ z{q&bbHywdcre}@*#KD}i)Y~#<&n<&wf4J((E&Zs}7ZV>42O^9r1K&Kj_UFvT;Ek6N zOP0=;huNy0E|}hFzZlFp*^?OR^jQ(`0mMpeH;v?$^joNz{H5{OES9-K0>`G_x}3&g z+MFfyM2(Jcuiq)ZCpvwL+KZrLq!vy}?gh<Z_lVN$#c>@3y?f6c@Xykn4OLEOU_O%b z2q}>Fg+W!Hf}%2#bdW=1?0u6j^_VOExKVlp1@`I~$8Do;?t;16JuU&zqQ~YcTI%ks zqi9z6^-K3muFq#Wxz_cJ#>P16_0p_-?pk2c&)>dHe<YgYTeC*;->0UO4~BBy5H5`x zaW0?Ug>F_87R_nNjp1HSsG=^ZR-a~kmtz=ByZ#+0y=_KkDRBCwiLM&UM!3wUXLral zoqIi4R)?c&ID@hKr0VAm_H=3Ic(81-r;JSGI>{?p_j(ZIM1^_yeKxd*gqKOxXN86L z?$Tmd%}ERVb5X0fGEU%+f@~8!HsMyaD)p283X2V!H7C#h8tNe9epSEt0Fm?wlKcrj z5RC7)YYTb@%XOG%K;9EwZ!g$PpC)tRSWrEBN<KzsrsBldgF}ZHD_XcvrQ4_b2*xGG zC2N@zm6F6n_VSPT07+CaXz1(1P%dAGasWR=^oPU<^&a*Iz|Y{AKwTc^zTgSYwL#pz z|G4OmaP7GQOL>Nwe)jNTN#VDN`PVbW8rHvDrT{}DVeWh#*J$wZLOLJrKKm10cPqEw z3HI`v(Dz;>hU&J2NqCOGg#fToIfjt^^<OXkihpKmtdaZpgNLg9pMaT$24znPM$JFt z23$jBvoz7rMl<%tI6LD)ozg|Nj>eFGGJ<dig4WM!ZTx!P2XjX9QdB_pb@>RczXM5I zui9gJaR$FZU&(pjcnRltF+twA$yGdc{$PV}7V-Z^3{R$paczK*SnO(Jl}_+Zp?Gc- zo3;YDed16UkoMu7`We}C<I==r3-i<J4zPqE2RQtPn_<a_`L3e)Pu7gtTSJCo3>+v- zx&8S^h6?t}IpPK`(Y5Pd4D@!jb}Oq_-n+4MWVx1Ug`vGI;Cq9HdjV{8fFPlk<4qlH z4rk;0nj}0SLg0|MMC$kNc?!r<>hR^*0Nb*_Kof;KwjPWkPUS26q>cqR4ZAI@?DxcU zvkkbp8kdK|<FFJN`&F7VM`7swF&ZDGO8C3!a^5*V#B|9gvm+R9cY}BZWZpDp{m+5R zVor!MHrYV?My>oOxy<BA{`7T};Ux)E<{Ry$QlmO;*Y13q%j@FANrsTPKIhMHlP-#{ z>FCuQRu%T$KkxSM6Ou+f0=BZX_&l655_1$$x30V4!PJZSm0YGck#t{Nu=)J0cL*}s zm)C<upWuMWMno8J-gU{NzJ>dGy(E9^%IHi~I#q3|wKIFQavB}Z%L=k>!G3L)JI^;d zF%zt>)9Bs<`D(IO?1!;_Jp`1yCs)alN#@bsImr{TBqWBWLQZB<g^Ov07Gr2PJS-|L z_nUBjItSQL0YfmSbI(6?gj;dPXH#1Zj&^-NZ4mtds)G6i@`pYwPPcvD@4iH?>wBZ* zb(oI6d5<|jbi$0wb>+8&4kdR8E0p#aO?f4}x@VTydUJx)wQ$&AypgylzP*rOd5LG- zR;2XUpy@OuP7&RL3pXPuGpD)qg|1L7lPhcut-H)fK*RyCN+&ppTTZl|AiTSunfd`8 z4hb++B4nT!&RXP}`Au4zPI@d-F*-=p%Xeg4b{6k*MBz(niWAkb2qSV>IDWegS|D_P zCp_H-sQZ?Kc!}sla-WVqNS*Be>USEMR2F1lW|crMUyeyn`{gB<Y~DGhXPZ9v`h5#z z&29u5ZR%gmDkYu$J092i<}E10ZQ-O$S&=jk1I%s9G9_CaI<+=8CO`YG+}3o+G@&hl zSe>rq;N6VNp=2eDWkr=B1-EJaYOB}wglIHWjVXpi=aNlj<l~x!Z<#}(_!qxf61N0} zyFxqK<29@QhpV>^Yx;}d|1Cfe2`S0Z9TL(q0qHIQNePi|34tj{cZ0Nmq;v~Rq#4~k zV2nm!)CP+mpI=??&-Z%n+JC!tww-fcujko)-w!!jQg`sbJR;ehCvo`-VfOjVrs%IC zxsguXMQr!tGi#-WpCTZ`RyT2}?=w?WagYg!fRhou*WyIw{DXe@-uF(vxNoEDCq2sZ z5)W+CY|+WpQpo5op=x3uhrE!qgHqYtiMoyrEhSdsSokUym!=&!dVSx;d<7u?Jd$&E zc$^2U8qT(DXiwCUt!RID*8Zwhb1Ox2wD%+{SlVzvgd#jH(usvhUwDx&oaObi@W^bW zOcth-(E3~X^&JzNH<g~VZf2L>&_fPUd=A_t{uL($i`F5_3?qzNNtB>-_Pu@J8PF#_ z4PU}CNwyj@5(5aR52h_O^l&pSRIzyIw5smcJBbX;qRa-)9Ro!~vm+v@Hx&m$SDA!I z=j9ulrOK65_{uaR(l{aBOy-@AsL?ZH>sjLLvQQIwj;zNLV0zLuI-rU(ok=(Kb|`pl z)Q>6(IOI)_%hI`>HRRA)E_-I8dU=|;f~@K<9}FPZ`3zsdAyR4|_$cBbGOVy^5p;t| zTa9MYYS-P5n1s6XKn;{XNRU-Qfv_Y+FhtO+078XY>2LPx1E+-p=_0^kW5CTcJg?7t ze?5fp?Ue8&ZJq-g#v!<-QSk_wggMgT2P6KOhJ;e5*GKJKvFIDC4Up44pG`FEz*KRw zFT2RI;vh`|%Rc}zlrKHbo=>C*C%cVLmYG9IDPJXhUmJu~aj<U>=!alci29*tyO#v1 ztp#M|nlFl;&m@&b?OQ5ostEHx_sv^f+*C78;D4$)6g|ie1Ll9Dj|5I+n<O<^HEwCe zz5Y-A0o=O}05XMEI&I^1p-Uf;(6Wn2+bWa{7QgwCg<bS}UKii3jX&xW%f!D6Wb^4^ zIQLM!;(g#?B$!UnHu?8~?A-hzyrNt8`rk8BxFz-h?K*X=q2`eDLVfg|Iq1-=#jREJ zHI51)&rk_Vc%JC=m?-}SK~5Wi2ynTA)xXYoE^tM+En2)-fmk%|lK+69NGuRa3~3MN zkUCo6-?;Bs2|nZVKwH^)1T(ND>a?z*pRZdEE6LRx1@$O9O9u?3cgUbdR=fhTLcvwe z?w?IQ8>E$XE<*(sDJeL_EP9=4#P#$sZJyygh&<qaXyn136#Mn?l}ho8WEw$P)tX2Z zOJ33*P!oQLV%aXA6>oOR4lm9j046QyRr%WS32qaSrnXK0LGn&wTNs>*$aeJQUWAk} zq_y41YW&Q-a>xECSe2!EsmDT|E7VmhZ5nL~wRL>9ibwYNJQa6xTadYPX{=SK*^&FX z-+nUsIYEQJfF&d3E_);Cd&=qt`U}>$^U?a|n+E~R8ukz-wuzsLPQhCzk5}b@x6K%f zSM%4)pDiv7UJfnHdxf)4jN#6ELA{F$b|nXF(>|v@OKJ5=^R;GNhYPi-chqsn@};x= z%nmXC<MlE*wP_=Zh#{BN$E6AHe-cFob=>KZh-LT#kivm|x$bXW|6~yQv&*m<iUlHI zdjGB>qrS3^ow9GrAGO-t1<2G(xXBere>Lt#$cGB&1y2uvv!`tz-`I5{rnpu-G|Oar zxUA`IH63h9qg)o<pGXw)#y~~Ul|myGEFYPA%N)8Jgfm`ddtCt`4^;*~^>WohR))5b z-cuUT;eliNW{ZVi7G<s-B*(w)A>vJZAvr^(R2C5<nk{_eudr#g{MocxgI0Xr1TSAm zZ|mfWNr(;SN3{@XGwPm34PSyNt9*Hh?ZK6p_=l~8L5t^q&2GOTD5QZWkB_<V4BQaS z_c(Csx3z%Vj?RbpF1T2$oBJ61#?49$Uhs$Gz@<*l$ZBMt2M3m~qmx&(?WUBFP71t> zq}Y+V#f-UCo(QPUc9B7_Y0+ax*Oz`MZt$ShM7_?E(&D7G?V<DM?cz6S2gh8tY4B)p zuvpB<;%HyT>{A?fD7}5x8%r1HTtd%bd5GUo!9|2X!_`FQreC7*=Vxs_FW<kEv*@s= z7|3c?05;WsXmo*!7~|&`9~F)7A`m8>>!tXnmTlqPoZz%v=syxTWGu3nGY1_Jw%x!M z{P+MpmL?W5!kzTgHewTEDyFc#1*#JezS^8|m^yQx+4<FQluGci?t7(cbR;D=c!O|k zn?tt0hM{hM@=y_D_#;}R``bWLD|UinE(#qKom_b@<a=D%H={F-rwQ={FPnXsvFi9Z zA&#ftCC=>{JjOl=^}_?Sr>=yUFIV1odMZ%pTxKMC)`|mBhrj^sQzQLS9_GAK`(vBR z)&!tnuJG3&(Qra9shZ#=0+kO2TW6fp@vwK@Scj%c-*oWaqJ~>^pG#a<R9Qs{^;VL; zfAy~Ht*Is0t&NI#X24P<&N~srT_9MjTueNOTEczqD=69`%kjg7b*oY23CuptMkZRl z6BUnwd<I>9V{8<<?s(k+YBnu;5u5tSfPs*-4oci&LxbZ}<oZkGa)?Q+e;MOjJf<p) zhP-30EuQd3Yit~nQW(3Y2;@lE25F814;S3i;>NtU+v_G0GkXdI-iBCGO(d}Xh`#IL zg&=;)+`uFbI&b(6XeVJjglsRF_ZUI41q!sicQG4H3KtHzeL2%8A0keOHi_}3Hmzs# zau|Je4+q@<1q|z4;yU33k#kA(iDitwg`1keLtk3VO-RA_qZpRoZ7(*KQeE`v{7un4 zM^;RNMKgt{{=Y1M+_&Uq$X&wXpPNXld|Wz<oiIinXTXsgRH=BIdTs7u@MQPxQ4}lk z_F4Mw3bC|*qb8$>*obbI2UdRUMe5(R0ulDik8ep(-O!}R=qAAVa}4rKNQyd@N!I*m z*E#hYj|7@0`Kl~{t6!=XSY6|aa+Dvte|CQX$7Rk3d<7+IPGSaa^|h-*zP~lo@JTHQ zVjFh^HMj*)vXT9#Jh<8ZB%voYADhsowR=#hd>W9P4}Iw(fS>x;p(*w2oFjg@{Hbb} zHylNa^m*DC^q@WQ>+t*D3r`WZA_1mHp=J0dpb^oG08)vh1VHVOB9=1%moR`J%Sr{k zo79uGNGLN`l;SjMU1UEufQ!~#wY;#l-x!g`&OCpo6D>=+b1yZCYrHx1_~Q8mUT5+~ zX2>Up>_t4_<LaQZ-z2+eEzbRi!AVrfCq`UF!@Kf$j+cAEyt$X~<_!Il`uc{KWkJ8< zte|>2BIxw>C76(|hm(#uUvOnmBe1>l?@dVFtJ<r<^CKq_-=81Tql4Qf|7}-Ey1m{g z+Kg_6Qqj^n%9b;8PLu}~(ofqPC~nnOWQhfnVHKTbb8uwn-D3M;o9S<eec<kJFMmHy ztX=EhH{6>QsEdPC#@8p52Hhj~s6IZtoEAthpb$}~ZVtbCcmx#yl7Lls&Hse^HCAu` z>GqO$%<pj$PkN||$`p~)yRA6AkC3l+@;Il*2sv}P{juAS$j=RGP`!bYpaNG_DtRv} ztZuo9Bz5JyvJD+x>AGr`O)I5He3E~?<^Wz^SR?ykpI*xUJq^(d4SA6GH#~+{IDlz3 zWaJG3k&1O_BYXRmDLgNT1HbtiNd5WN;8Z2jCVSXQh%KMKdJydzFH=*=1)tW?Pzpj+ z+4RTgSLiFPWeVg7s#vUA{!>xv7dh)B&U4W@O`*l8XWJN5d(@L@q=Ow}F1mchc+$3W z5%#`1s3QvXu;BOe=Z5&rz?rTk_pT^$^@_jafF6mGiM5b9(`e@VpGVG+-r4I3dL=~G z6bRA0ir3F@HeUN-I(!1dG=(~!kakjPNnRsRZouleoFh+BFk+7q#jl4d(oD5NAN{uX zqPdNKq<>Kbiq&M_Cb$6FDIL7Ktxavk?=DejKb@_Z+yA)W_0hP6YlXTXzRxOKgrn4H zMjWZ<r?G_SB+mIu<s#Dx_46KF9+FHLs-1dYej$_amZG48f15l%N<6L$mu%61+Z=sb z-RWqXWt-?SKmRNBWL!)l8jQLp`Xq1OGQVo)pvdbwaChjuvCjX{AI=Hty@uJZhHk5D z{5ZBMVZPyN9x}kb3)s!hY)T{ynK>G-(oXl{I5m}xbS{mdYMMynF;+<EEct~r`_^~a z%(LuoO}di+UV=zi7#uIyP;%}T*p|Xm<Ei*E>f<ToY1$EDNP@kgX*W=kZAxY<aIrym zAOu+-$0+koIWb3|&9_jb-3UKfI&j=2bI7d1(;8;{48-wuXmk#$Hi18=mWh`j?paFQ zzHeBL|4!`mpODHBjQhtYqg&r3{K(8?FZ+$egIHu7&vp8UdSEu)^g#l+;w^g!_*$hw zJ-n`gr{DEH<Gt#_RjFSk9HhhM63Fz-6`_8ik7vZ$JJ$StlKtKrVX#MXni7ci%=8Gb zikHKoL8(h1?cRf6R+v?G0|%VD2_BYU^ra=pmY3X)SLoO8wKB9%n8}V<pGc5sl1L|J zR_gKTt?Tzl(Y@NkG;*|FNqP+R-!<S{k7(blA6URq9ZKs-xv}cR8JA)=tpiK|LO-iO z{3W;vms}Pf@a~6$<I9?Ka+;io(1{s~^^(NV-rnc!!_b!w<zlYbl%<EEAKZP@=;;3H z$}P5I6WNHgldXvBVc%-nFkb?<*M4KQo-d@xRkatrQdSiI01}Qb;|Uw<xOaB(3m`P{ z9ynq$F41@5V=MG=rlfdv>FA?C$!hM^p~*I9LzMrVFb_awJRd5A_323Cu{o#ZP^K)b z(Hy=@b3K{ozdpX3voiM6U4Q21PAqUAvL6}4_j{JD0>03q9DUK^AKuUR0u1!Ko6F#= zfY=@NFs%nV^&eNh^o$EZ=jC)d*luu)!QItqJP>SpE{OLnKNrWy{M{kByYQ!tGo~A~ zQyDn3hz|Y?G)}iX$TY9}cSQgG!<`=VgtC!g;dCi&EP@$?E0%65$nw_K)FTaG0*PEo zJl9hi%=w7^r7*0*!E4MAfEvO*#kK-$ZyW%@?6!kJ?8O5UK2}ePf@UJk4F&-tqV`%_ zdR{xtzC|$2MO*4pyw+h;l}%4N8KpSi+}w$rxW**Cs)S{LSck$vrb@offQUU7WxNYA zA`LP^*Iob}Qf3BDTb-35tU_4$F^-=goXDQ>IVIB}t?1Ohc`Sd-IFQ|8%ly}D)G+Gx zv&QpYD3p9oir3W4nF@ElCQ_kcTK>M{LMjro$m6Sv3xj5hY@}Zp-}TFLYMrjLlqrAm zRk)xxF&B4n1KQIiExiv&#{;?UT9H?^<(Q4<WzWC<w}6ixY(9~V>}-kaI0D5~c79ab zpiq}c2$FZJU6Bv#{5G1hqVtOx_PLvbbZyp9o4-KN(e$?+<R-o0^!FKJ{7-_2$Fs$Y z0>PfOOELz|64ksFd#^isj65!$*J09ra70L_lWPKftS{9<EJzi`e@8_AL44#<BrDRt zrHr3;t+UVKduCfT+pF*YWoFj)H<{W_4+F<k+3$c*R{VbTo_G<ZuS~Y?I8(mtFR=r? z36=naK0bR-nI=;KtDl@_4DlaR<`a!x`UptIb?sEEKKC?JIgFg<yrL+gnUbUQyH5tW z@pbaNyBYRxq+oKx$){w$2%n@U&H%R3I_{L_&xtP37m7PV7acIxexaYCnU;0Z-GOIO zvIX2>Wgmccdk*VKk)fyZK%LxTjFv6+R#cT%zH7rh`%yc53ZE%koh<%(uawibM$_0A z1q5jmd?xn0&}Dh*#j|M4-!h-R&`&y!lkTx8#2si8)1{N(03xixFR@IztKkpGi9)lx zL>GyJY0$y`)-zOUS2M8xlxHd1N+-opMq{MA3*AEFl^)mfMUb0cCC@X1!L`aYqtzus zGxx0)uid}YuJ9*ngi-4kGnxUnXCxxqT)%35l#V%zoU|A`l^)C#*ROHQ7`@Bfdz;#O z_2KN0r_exA5v7z^&f#Fl_mBhUi!-~>x2^EJHg{Y(=V-s09?;)yV=HwTR!E7D#p&Fb zbAf^(X`8#Xg0Cthbu@vm8sY~F7TXy>%nd#rn#h)jv|$rI`b?p8p+TU44oPIO(_e!^ z(w2;l8}SE|h993|Xsxu;9BE5WSA?_o%tm9EtrWDSf9D%cifgpo-Sggy=%{1GQcrwi znk$iA{#KAbV`DQW(lPsft`r*`$&)cE!j`Jpup7+mw^8&-ghbjWW1uv^W&hqS1($jb z7rpw)XU@u82TMk-E;>sd4v(J*^RBx$Ov;vt8B&%F=(^ag5NSKSS5I0c@Af0130(M{ zrs%5Nazps`kWj=`g$GT-6rvbgI7K464B^V1d8V|H2udl=N-Uw~4?CVoNR7$P-cgY{ z67uqQmBL6q@8hM6k3Xpx>2r0F)qOz5;~*e483OD5`?uLGJ=)^4T5oqw`bq5bnS~!Z za?w&n@3Mak^=4sb9?^ag?z*)b5#P4}_hltqX{qb!4J>M&)Bd?v;29iLxw=#<K45}O z>*R~C0SK<hwc)#)ri9gQ{8IONI$4v~WWhpn94KGWd7Qby-sEf>P<`${*Sp-DPI=8* zXZ)Bk;b)<c?Aw2IuT-TMI;rT!d^!{XUsSkBb3v<;g)qtIp#zD7>vV&Ut`uuTJf+%4 zfSTB=^(WKh=Zzer6PF{9Z~5*JMG13uuD85A(bahkuE$O&)NfD3zjH=7O6^Yx^e$~t zPOIw83TQ{-R6Z^`drzkVJ9x#%tx^_-Gk*7N!ChK|VnbbNjMv6S&GmlG!mBxxz{4C> z!hoH*iBjX@w|hdWO<LEB(gpM0JHn7pZ?_loefpoKv_-nw!HsTPGw5;)Nt1Mf|KMNB zVsB}JnYD5@U3n-=HeHt{{DK7IjmYO!eqsjIM8c8Y3}2NEZLcyJz%Lx^-lPAz4^l1G zYwv{IRIV;Ml#Dbjf4#^NH=!#!tl*5cK=hxl{d(-xVRgwRbG5>N;M*K<;tL=o#k)5r z<u@z?g!1QAddGcw{jqDv^CsI1a>;tq?L<uB6}~#3Me4zR9J%;V|EhCpn%tdirsW7+ zEU>1#NvL>hG#mX95`jRjQ8Xj>S*%ni&Z`A9@<EB6@g_U9cg*np-N+pEc0U=&?<o86 zS_>_8wrAt(T{Oa5KH05riXv>R57I+12VsFsL;P`JP-}+ONYovC%=8I+s81f7c;_nF z`AU%EHTQ0-vi{*CY{vWdn_E|d!L{jCMNjU~@m=QT4;L%iRtLd$x0z{Gmd^!r7-mM- z$FnZK<m$V06Jv_XnktQrVnW~71?Oo7w}QpmDu7v{4;AR1rrkFN#6Qe$dvrU?;3ltf zn~S$dlN8a#sZrM5yiI$FxfZVJ;xQAhDI)xv76WV;CJQ23_{U9ga?H8=s{Y|FVZd2~ zt=$~O30uBfj6YqfV0UJh?>alJzvvcAH%mg_+iuWEv3{ht^BXOJxEsJtDh0*5;p6?_ zuSN}0q`r;|U@DMwNJE-8%2S`myY{G5dz*0_)Rr*W#vPh;(EB{v<TL!#v0;!?t&GbF z(&)rnr)1uJjB)lIKTYGEcK>lzJmaq|*HT^=Ss#84G-SOmV_ZrB&pn6|Q21hK5C5LD zCgP^+_sl7v_N~Jvw>z%Nf7sWn8Lhbf6TRd&JcK6!$>X9VsF^o;XAGN2Exkx+ZV2fY zK{>68P6LE97czy7^L~`5Xm?|G8SnW-DGB@>n}%|UKCSmf(#TeS&o#n$Tw3ux{H&#& zAfvrCL2T}F*XQWYM!ti)0*wYh#N#boejo$BZ<&uQeHrWoP_G5M8Qh1RcTgfBySvkq z3Z^i;cR*|^y9A0$%!wshMarG;t6i&<PURsf|JU!PNW=YXEqV=`1AoE~6Z+i_&5{JI zCwd?Co7^ff9~GBLQ)J<`+EX`$YT39Y><BqM&B_iOq*OVZE}Ae$_}usJyLUMb=<}7% zBjaallZ)H5iK8KO?@={5lB}5(4%PG(os<h|dxKQhb|XyN6n?)6<4mX}kg)(u6>XV> z`=<JepPhv(733W!AvLuHdU{cqzag4MqZcC4w27(G<ewp5FILfs1IeMkKjH=}hU%vs zDQ!CFkWXI*;e8W3kl|r94=$Zhk~^1w<_hA7m-w$9Mfd^e(W6f%>x`%F3pExut=_xi zUqCXSjvkAMh+MeeULD`Z-JzhUUDi5YE;iW5VqMoer52kU4eC5$%9xe9_ljS1x*r|R z|9UcCV?keS+Q@0r73f>%G*@X2A4%^K0;8W*o7A(KbO#00xhyqU-*J9>QaCh1`(tSc zVyOj)sQFFEMze(3o(tQ&`C@!*F`~`HC8{?-0Xbcg=?2i5mlS1(htMqv8#;U|WBDuw z7{q|D6?_U9k4QML+P_R$nW*%t{yI63#zx76ah270Ub4D~bQ9Jfq{V2TxkOXqEvW@- zeXeaM=a^{0Lt-AyNomzQ{(0n~neu4p1xZhfqdean%_s4Ymy09M(o_2cV7Kc$SFLnc zsa1K5{B(=Cp4H2%uF4S<+sW|#?;C3}<6@ef7K_e|iBGNrU*<fXezr>hON$@2LI(Ac zK~&1z4Y1nYdt@&ki(4slcjmT<AZ^NwITWZ^pfZO%gT|pV1mlRl0bnHN{d+g0`>lA} z@(TQvEm+@BAG@Bd6DgUCVX&t&N)g`zE_2RD1fZ-yyFg3egu~|fQ-x8)IS_Fy?fRL_ zF6cOjWDzAktb%1!1V7o+SA*o@udtbL1G<`?c+Q7x)=zgojK@92nZ1??Ks`SgwY6NI zDj=3whMq%we-;v`PWao<@+?hZcm4e>i?BmFsaHK&Pff>9nRQ2vG9SXtf)5_z(l~o0 zj}rri%HCcys^)BS0%yZv`fD_ym$U3KAQ;PXW|+16>0DQ-BKT0wHgiVG9n~Ym_JAKJ zLwtyLQoUB|OHCpx5&CN>l^&ZZd+mE?p?E&~BJJdIyb1@sW<+~doeu_`UIH;?q zwPdtfDgr7J*qR7IYad=mIDIr!duJ?BiaQ}0xONN;tg%ou_iDxMS1do{xgyXja6-q> z&lsFR&lCaao54$o^+lets<fc1B8!<`X_tj^#$lMM5C+cZY`mDHI!m~2VSC(RO*Z)C zYA&P4KQ2dV5LDaimpG@7?gaYfyoc2b>5Q;<tb{H|GF4S)^cd2=kmZT@1bw39xoe0M z+#?s!)gj3;SRRa3FznA&8R<40GzxA%7B0$Lb2!qj%m@Wuexj~Lw0WT`%G#Ww3+T&* zZeT5sU&m5<Z_S8^80*arZ2Y3n!QXB9NG;~FD*n9N#wrFKJ|Qs^k}W+*JDhJi5pgHq z_q2cUQY4XA=}m|>n#KtbpHMm}Rf}CfZdz|0bgA7A2f_F5fq5JdW}OVtW(sLuVi)Vy zHVY{%<A}*N=F}k8V7Sgh2T?9fneNXlA7{%0JOa+~<zw@$tnFf-H?3@Ow&1d}%zm-+ zA%8x(i8{|zDN|Y2=ZWL}%kg+Jqe*cv^NmH5JvY-$E#dlaOk7eyyu9A1e=Y-#!b|=I zQ^*NQh+%OO$<&9FRH*|vfw$XWD=f2+{j%NY!pt0KCxcV2>^LJ1^F)OUrin1_DsFj^ z=*0{^hV+PN`%0mq6MD;;8_+3}IS3RbV51TVJlksf5KXBJceIc%!JQCsUMR~RUk>$# z06$z6*w_l8*aLQ&po7sDb9}yn+SA|hr_N5UqkzS7u5zi@$goJ*D0UB>C>7=zpp6bT z|99;E(x;pD_4JUQ{}Cyfx8vx+O89N(GI%`pesNj&MC;?=%=5Aag#w4%LWCJIVC>On zy;*kI@pT%_j@C59lr(8@f?OPB{oINTW&%~<j1zOD35v*yMW>ZjmHB!h0m5bR1hF6^ z?KOEi;FPiuSZ1e1*Ikqc5BI7uh`-?RxEIVYO)h|;xgbs-<4!cN$Nq~j<_0k6bAoFN zsI`^eKNf2KaKRrCS3CyOuW`;HHly?^d^7EqcTs-j>kcXa7{Capr*J6?)N#cj81%#$ zzt}}9(u%!X;}W;`vL@EdP;I4T5s+=bo`{4PugR>mRz13NN(_|pV3Y@o_p)edahT;l zEw#rt-<#rp*s{MA6KKW#5l%UeICFZLW^32y-gyU%gyO~FndklM){%Y(^gF!)c2aAH zZrM2yKwnv|pdrI2aumU4a0c@bZK8(V<tGc)ZPdLlX=}##O&i!vI(#Z>mOPFloF&a6 zo8L(mKD7<>HZ#?rJdPusUz<Nc94eTzZM{pjlGvhqwvdAENU?I*`krb9LLBOa1UpUS zzxs+>`R(Wa2Ru4Ddg>1C4wk<V;^X6s!X87xz#)`MZpdMQ`-nf_KPS1TP?aweM1T}R zniri!3Jtqi{5u!f+?yOEBU#TCQrh|)UG0x*`VsE|vQ%Rawo$=|N2um^Lt%<Io>;dE z6<&6Pt*nV5-RiB5DQZl&z56HJATFX@(s#OK-9l*CFXsxfcFC8@omLw}l$OLMD<D^8 z@7u&~s9Y<P&Z%FCFnXFsnL?DF*q5(EuodmJyc>TuxQ<omFO8utE~H%l&?8K3+xFDH ztl(3D=JDF%@SubIsmv4T=1Y2gO8zjF?sTqh^~kcNOO_YEjvM(P=@TJrRp1bf(@O#4 zP?7nb0`+NI7bl67t81KA0&L+lO@^O`P{t%dt6uCjOYz?o><KISLF$&SK63KsTkoKY zxW5dw%%?gpp2)rIli1P3_metqeMY^g7lZzLm(C`YslKlgf5A>km26e_qM*r$Q@`T{ zw4uTF1cZFoCAN2?WBt<5t^BJEH|&kF_M3xGfok2*2CILb*y3-=S3)KoynES`SnH%2 zT+_FRt&^x}|Dg8Q9Sq}|)1rW3$mJ~seQR<g0f_y)^(fV0CGV#@1N*B-=_d8M!sxWR z+R?C1ctH#o#ApP(2~tXwG}bO7C(m2LlDw^$N3)>p&PW3GCejUQ#*E+17uh>mtYan` z5x%e23zq~CM|+M9;{Ha0SG7j+UmtK((cMO&SC4d5jd&D70)`xtZve~e3<RtQJ%(is zOmo#duY19G^j4xy!N-@TJTPT<QH{fkj8DEx?Yb$6K~fDBvZ25C*)=wv=1w@&8d>5& zB*7vB%pQmU%ir~@$UoNEogT44)5$s?KEFJxXz;oIOgv=E$ayIWPh^<)qm4}e2Ba2V z(UOBSMbsY9vWc>kWqtzq%Lk`dG$}hp?v&zbWRvjoeD&l7-WuG3^c-g|pO~U9tGs%7 zW*-g@GYj<tcIUYox5t6ThAHJ3{W|{!fwO&fi%iH@P;{UL95Q&^=w)|m`J2lp&gjEp zxoY_MFPR}Cl+7$jI$$=0;aI)9(7Qtk?)=hA5}^<fbzJGwI9cO-(WWasXoA2K`2w5^ z;m|{s`7!dm(zdgQ@EOD{in74&p`WM)jLM6NlD92{DwL{DP|Wa4VLiJ?%tE3?mm!O5 zv33`*WBLBHKInKkzT|9|0@I%yy;!W}%E!9+7N8>)S5hT4<$*}s%ITcQ3~^fvL5=!E zeC6Sp@&28+*SxT;LGtm3A>eMcuzrwoDy(QZvejwMZX`4vPo1fsac^3<)-l8Ffh+;& z5>ha-eXTP5&9is=d*!K-74iM>n8hGSpweZupYdI4vs~m-ZD3_)(Igs5IFsk*wPD4a zr}ugt2Huc(`wqHhu%6dqa+UDea9k$0KALDc(Agm&l~$4q>*v>|30-_^pve1DoE2P` zd$|xYB7cVRNa1H=PDYlAt=C*ecdF-x#Kr+|-Emm!ADuW|ilAo#JXWV_z=X`Sg6M@9 zlV?L-sNKjtwrX>N;1Z_gl)=^QI_NHe%Er@z`8V-)qVU+IssOuwe{WpO{TaKtO!tWT zxD#B7UbYW2)2t)w0?;GXu-Bui^G^}kK;dazprrme2vT=oRQh7MWs&@n?L3D~`K5vK zHgYF%D63xvE}tM({t=<J;p3@d*-id}!u=b-ul<hDaO>7ur9WUb;$Xvw#s2`U_vY|k zjQ661dg&{x;UX#cb}AENjfyXaE0MI<!wX0Z4Ls62!5NC6I_^9z%X)$3=X`piD2thU z(Kkb|tP`#}Qh)t>%+zZ_ii$9dbEHx6q_jqEo4P;tS&7D@$R}m=y#;e544{xiq^Lbw zf=o-NOuq?pn8E+?O64x0j!x%yAPJf_6EycbTEcMM8LIO0Snu3O{ohsbYP`lH)s^sX zM5|vhRtJWYI;7OxRMH|L&2?Yq&19TIH60!nVqdkII|Z+Q+hGA0<_3&WR2IhEdJqM2 zPs?vj;EzcUH3CdWeObEs_FyMyv<^}FWPPTaa?qT1`e^Z_`B>&Vs!LH%y!XY|1wKK) z{&1(S2C0d5;%MZ*qO68}1}MNSII5JG^h8~$=zH$ZQe(GtqzL}!s!E~Frpe|GzINdl zQt94kOb|GvzYCX;c?#1_z#8B50f&{+NQE7zl>`TrOx&($_`?H2Z&=gsDQ6^kehC`Y z-RF!r2Lj`N5x3u+AUmApQDldLBce%CdP^jCbg2zMoUg7_c+P0_in~j6BY2QB+}7@j z4JESOs+*||0#0)9V~1eZlyXhpFC&+d&_=J#XMw@LQpi%x6x7~?3<tJ#{|i5Kp0&Qb zUS_*mNp-Q9*Rveyy9L;M)jtL76xBUnKUz@au%os0y`iWHfBEh8*Wx)MZS1~<vibyt z>PXD}?!VF9zcfh&fofkn%4-k4YUJ8H`fp($KW0bvJ)xSzD`B|pMEpR>jvue?;xb<4 zCy>h~v-#7h)^zZi*DKyDD{>Z@{4pSR;58Tr;~$6JS7>@=_Gj0@wB4zS@|V66ksFj3 zPs2E6B)w{goQk|iG(c|A**uDWBBMZVsp-@qyVa(P@{hYP<zk)sRhp!JWuC4@0)On2 zdpdjm49r$|AA>%Y1UB2!MWmmn1ME+Q76HG;VNf+}i%~3mx1aCPAqmpOLY~L)g@w9t zIkWxQEn9m15M<Kq3<pf9b$R6`D`j^E70RI*PjBZFSHF)=&@0m7v)8Gw)IaWnm8zSX znO}Bzg9>p<_ho&Sao2-DjZZF?LWieeTl6jeGA~$Z8>kChqz|@XrGa>sYB@lq9NE6( zBsY*V5GaVY#GG6Y0vK=(XwqP>Df8@W2&Y<=t{%~bLE~rjLY=oj`O36LB_d$8*&%t( zA`V-MTDYH8hO-U9(w?6m%w-iMma{spw5Z=7ornZjDpev;*|ONdQ>er)Esy@KTk?Pq z<i=A%wI3&Zi%Z40uT&}_&QstGJa_O1lM8;s$MwV^q~$K9z2uNKrF9TJj(@4$KCc@3 z1?8$CzHK+uVZi|(O0CqmM6^}xEBpmH+&Kz7$MR&X=1=%JsUUX4Bk@c6@I6?`javF; z(UblQzZhJTnF^P!-_dQr`k58yz&a|bOhT0|1XRJiwZGO+u44>jIuqMcUO2@KUy;J1 zaM`E{sT{EX+41ug9OwX)-B^(R<5GI_JYUfc)^_DT+Y=BFhdU9$l8=Wa0?F%a(E`%3 zueS!Fe#!}HcO++x=w}@40#7CK+A|RDXg%Gg5X;@EAW-fK);fUSp&=*WQ|?NDWxz09 zI{?0&BV&|H|KEGJg4Y|9UCDDq5)ESOtsganlD<AJU`3o6Yk$#4T=qF_hJ)Z#@U$Sh zXmgXl0(f4Kq34nHLH%K``;a+_eOQ`nu*b*OCs9Asf?h=r0>W6BK&b{X=Y%=txwmAc z{@CbU=r?})kY9$*=RZ{&H~(Enxfn+8S{<^Tq3I{U^K7e=v`eMihiZ517~(VZEi@OD z2@c6)SV^$Gp>OEN444ODDrgpJuBSEbGQ)JEKwI>t;~eLU{Spm`dz|A5<Wc``A%&R# zByKUJL|^A4)6z*jFR3#=yKp-^&NbgYQ+W}sQy6OL=u1IJ5nr+FDv}cW5c_~F0{{cu zTCL)?&LVs7z#&7=6T#9BedmdP3+V$R3Vc%&Wtc_tLH9@9V}T93T^}XtCl~VfeZx-| zKHj~;jXDu{hNPbWo}ryZPXLbCr;<O<IjJLFB<z>IOxVi$z|)Oo7dyLb9rKVLsj@}4 z&I3BF25$fRPto(Qii}?suav2U-Xd>Hu><<gR3n1W8l09JXQ5x-TZ@=_RLgtu2B;3Y zq$Vqp5ZR!Za=3rK$t*8@K==O)d{N>@Fb5OJrQ|d?42iUpte0g1xzcjk=RbULhK2>R zEtl;9cZ}9k+i*C0tQsFE=AxsvAP(i2vua8K&ZZs&?h)W*jsZ75t2o$MBJABN4tI*N z8d=C-Vwl-=@5vg6O4!H106)kELEVV}n?q8UT*?0bsK)yqGi*Ix6iNo9sI!j3pYryh zH}&yJvwF7u%;gt?3Mw}1Q(gdz;F3|NtauavI<EML<iI15p~Ux}N=Upl6R4Mk8*NY| znPkiaX~#C`O%>#T|7_--y=Fa*{97BYA4XcxlIRoVkH&j`hNfT?y&sk1fW_s3DAErg zVTlFBKL?Hhw>aE)T;zQ{S*$H_6b6SQ!0A*W9Rl{wZsv1Ch`iZ?7;yB=p6Jiq{orva zn8kneim&7Tuq6CpxmC{ioiOuR#k>cx(9*fs4C)mB)6Yb76u@b=fzUZ^7!{;UyXPaj z+t2duktvon^tkw?+JFdI8)I#8HL+RgR0n6?-Et^=y-EpC8e%J5>_g79Q!*df;$m+B zH?avU2PDgWl3O1qigM~km8nW&2LYsagRM*~Ke?M}EE|C_B()c$O5CfdocSQhHtyGp zgXcQ3xW4~+diUqOEgLLe5<8h4)@#QA>Y=}=6i)z38UE#(l?XCC1CoRGlgQlvd%>}J zL=y0bWR2d`<jYi|w{W2k&2#KO1D~asDbD=|T_PG=uJ_BIj08OB_!2991tm|Bg7}ZD z2y1G)@mqOvhznycp4{84!P?^39%wEOV03QPWU+h9m6n^b4}bfkjSLq}w@_U9AQ+M@ z0sMk`adlWPr6>K^-x}qKuJ8mgfSk>X1b?JH7WYI)kK0VOp74319brlgASbTP!pdPZ zTLO@ZD)g)hrbA%e8T<b)-Tzs_l6~ZoKJIor9-XLf8Z<OfXRMr)zj>*fmVFr$$wx(X zdy~`aL?&prMM>M4-v&~L4+{@!A0|t3^doH1o6-kwR{!svXq%fN5qR{hkBtcg`=5cP zvONrolEg;AY9+C=lRODv-~6~*proKOMQ88YYGN(;%M%$5^_W^9>`>>BwSx=+0An>h z2axQ_%>Sv4B!!L1?qvAeh$Cf6kKXom!`FWbI!`^PfVI)Dx5jl7>?vQJL3r3bbUvPa z$l_uz&1VhM6HOKI`^+$iV6<E%XH`(jr4)>${Uqz<5Mvq#l#jtoWSs9Yd*Wt7?gl*k zHIyx!MCdfp9}WMqiErFWAby4}Ci&6UcTS29wFnRSk^0N+B1`3;X7Jr4A=H<}4V>2= z(t4ub!;~37>;&owX`bk>0S|-O6Tp)1+lJ?kaWpU?JeKwUIy~;y>hj$~qJhk8#fDhE zNy$S{<Mb}H^W=47dr9%sPm7YJZ2f&IqA+jjb0?*TzDGTjW-6qXcEj6(K9>~V0+}GB z_4nUJn8tyQK%Tg}X`Fzs%3v%dvIv6weH&>A+-VpEq`qJRt(mB|-A$5Q+bz@r`tQR~ z?QPPfo=NXhnhEf-gU>1pa|BV(COO6R8B&q?F;UXSIN+R}2{fm&$914_z%T0)JnARC zeXAIHM~%dhS4(1JVZg&zXGrJb2LuF>QU82Z&uj%DXkiV~%`=)j8SVe$fc)_zl1+Nk zPn)Wgo=e|UCk2qg%(I#iG1QbPp*Vp}eFHV~{2jJL<B}UI(X`bB)gyn_%m6tcheU=u z&80AQ=R?Qe`=nE^WCwDUgL$ri3fnLA%(t*KiNGCF@xSl<>IEqh!Dr}Hk(s+6VElzA zI(3W66HPT}mHT1~X`n)|OYDiJ9fS^>tc=m0T@rk)^PdTgM&7^{EJ5W@`g8vG-VeO@ z0FTsyaV>?*Sd=Uk(W7rU_^t-hmkr#qu||le!ST(}kKI4P?RnZ+i()X=f)nwX8It!S zYtU;AjwpT8_7A`9Xn0t{i8xEF>r?c*eR$M_4Bp1je7hf5U-ovV0R?Wfy0RY{QPQyQ zZNWUF-27|)J&hMs&ERcF%R}je0CC}3Tfj$9K|X51)cBQaHC=A4;4(Xulh^2!{iC`q zG<YBM+wL3zZwML_PyX9qs>{;i&BJ3wbZkDpjIzdpy?eb(8@y7FAU|t+zbll&qYhMt zH<exxqu*no%l+4;GL71|W-GYXOWdpFlZ@Koq(Tp2mT!3KX?H$A^&imm44aPyI5X5v zyqkZh12%F1%zv@pU!y}~Q=na_W1MQ6C@6quL8|9qbAk#>0LzH;r`m&E$m1T&3lU`! z-VU>f;_Qz9EOxw^cOQ$u*=x`lYSsGZ(wpHZusACO@KX5XGV%%y_B(enZSjgf8s+83 zi=|1?FXdBRQl~2Q`Raj~p;emLbLx1YW{y)m8^o<4f4f6?O>ZFY`fFdGh3a=0D)E@r zho%j*+3Mqd9~ZRSzucK=Zt$hKv8-2!0uyOu+mv#2xzO?$H!K3Y&@1gB;rtfudLrai z<ZFf2jul>8!d@oH58QktaI%!AWhCnqK?TBH{1Wz9d6#R*4|v1-L%E(erDr<(M04AF z#p-7KH#iL(th0{n{O_l})w<Nj>6IS24Drv!X}u4lVB#)1CAe>xThY731AABo|FEEo zsN*ovzrYP33zUDX9z(iZpxBT%fS`(O!;mJUfW}<$qPG958zGT;<Wb=r#rf35lVxWs zsI~FXu&d-#U|53jd-E)=r#h$$y`3YP?FnCejSt5z*#?_|rXn?|42O{P$4!fer7!l3 zyJpl9Twa+vE#$M5nrS6_lIGh=2zey~M(KGSX4~X{a(y34QnD?<)Z>vRk?K|cwzB-h zss+}?ehS#Vi;=p#hHp2SHo|`p9>VJ*sN^3O6;9<iv=2#;i9?zstkP6!f_1TK@5>eS z1qBYX^Hed^uG=Fkx2k2{5*iZ*PQyb#nmNAG(>j`nK_b40&40l>VpH`vQ&2iAqi?TM zt^tnMuq$Q+@g7%Vt7X^uSQ{F!G7bK^8a$<2URz+(0bFt7>g_cap*W;BCo<>UoL)5H zm)UZesKoPJx7)0*7@dCNlTm3LpZTuYK^>Km3O|pWfG>w}Jmc1p8N)i3=bD}eW((2` zRcXj2w+vEGUm5dG?j!=G^sv;~r+;D7s1~js6}-ZZ&2s&Nrc{>6>zkWF$*KH-p|@S$ z5<w2EK?Jb`)nBx}k9;y=t=c$R@>;D65czSewmwUVJI~(EUB>3vEuZ#GA9oNm<&7~d ze4u>8)q`bd^44fNXN*sf{DWmYm&;(f_RGK)gTyg<V@^xmN)zM=ld`JqKA#iCpPe^Q zETEJIy_3h<yh$);zx~~Bdt{{gI7M{v#wy~@Y7*|Xe+?aS+)Ydw))7zLGWBl8s?Iv- z=YywlJEIllAq(9H58!7tu%eEt2^(?%aU%NMe!9~4v*X&HKMy|b%|+3_r;zerh7#m1 zndEzZ#vo%$?SfYt-+w?aKbm~yAjyovj2pH-B)nNWrI}(P9dQ^jkx1?!ippI;OFM?B zSUI+zsqI2u(Csg*05zt^afaPNl@*l6|K8>CDo=c5)*r_bur{sOzMO)7&0f&u@${<0 z0tqmfxqg7gic@&AbAzRVIOH46t$HSj&XA8fJC+<ragl61rLtU<xE+BT@%#6HgaV!> zy+klHQSBd!E;ZF~^w!d-Fe)Nz3zaxt1`@!uTmwkOpH~hk>JKMhIRIMfpL~91EqbjI zXBrD^KKs+4z<|cwL7yhDnZhRq0oBel0b9kW8vJYyxWyDq;39S2>)DN3R_7lKut!Bl zuagJpfCD~|3%oQsF0n7BD0y@^`R3@(7SxG3;L|qbCdW!__OE{=i2F6lp8W1Os8ySu zR^(K#9h+<0bnMc(k@Z~yi%P_KmsqC?i@+;lr!qmrgSau@2uSWi&9E(6NA>E*rq?jx z!Z7|vKiPq<R;hndTE_96W(jVuES=`Jil4giLxgdZ%HV48BQDydE4$ferkL?pUX(lE z3|<uEEG^>C;~MLj*P8n0yf9W~s$)bKrutE%prX9lHdpaIz9C2!*zM11;iSqbE<o2? zsvYJfrS)M1&tO60<c44z{5!<|EnV)q+6UFow2fG!_PQhUebe6=ow4bg=??Fi(1Ypv zbo!ma(Q)A-N6Fe=m_}RXiQP)|<$u01@d{u!&i<g=lfmc1-S3*T?=pyt?*gp6k)EF( zW@nt`=H|!ZmXL?CJxjF~?3FZzLyq8U@aU4z$dWIC2K8y4MNt>OQm2pD9wXnJhJfzJ z`mf`!oby>vD0h%v*0`#7I1$IEAaDxyAN&R*H_Fp&?fyR57sSN!#IjReU1bNfRIeK$ z_ZW>IN2pX8-1lf&`}g6)Y+|&eV5PjNcZrHX0tGAII1`VCl?#Wx?whsZ`Zw)wQ{e@q zd3@n)$0x@QxQToT&GG6@o9KrFK%={?-iaS-2$xos?e5l}ue;qDp;)^F!?NfmH?QUk z|1Hjn1o}+vlH>CvuoL@M{yYWQ^`AlSJJGuUWi*?l+*PHX*}8!K;g`EMONS~>N?;2A z*A%|A(2wqzaix%f&cu?zV2e_4LU7s}R*j~~!N**sqKQ(1$^3oLfqf~jqM&P6pcLcr z<{*Gega?ER+Mn993jmo3@JKo&FaR&O0;<-AM@(;tdAH@TdTu1Bjqj~E_vGm3LNd0U z+nw-7$UN2KmZ)P%OQv7p+YIU8AS4vtCO*SXj~BKJ;s90sOJ)~kr;8ZFqSpP!Gii1c zGjbBG5Hb_sw6Kz&yB~nZM^9v2L*_#?h`UM!BU~p?+0tQn=EO2?KNf(`4NP-maZ}d` zfSCHuHMQBkXVH3W?&u{U@nIUFtK=G&hm|#6z7EUstwj%itF3q^G<&<r-%;DCb_C;V zolS{L`9Crb;6@QqjNe;RS{BT|E*918*9=sdN?v19TBNg`m=o%)!VbH6e{neuivmN~ z{O0*9eTP1BYz1BoO1F{lggO5eVrp<!fPLfD+z!`j!qECP)eanzWo!#UVJGzcKC>}J zn6y7ZT7hKw;fV7==#Ytq*22?-`b0RzBW8+h&<_l>eHurM9fxfFA01**;-7zOzaL_c zmzy<kpZ=}Vp1KbvFv=?{M_^r{-LE#FcZ!S9UuLcNW-TsL;ISMDf*f&IB5}9XauB_^ z%j5Z4D?qhbtDwp6Pp)+z#=cu$9?bPr8dZg+^BLoV(Fl#YJ0ZL^3IXqFu!n?}YGmST zWbhMG3t2MoziZ+)sk4@UVLK3K-4{iUEb$?;JDeAvf~mGlf3pw#qxJR_bsV?!Qrdoz zNme@8m{(DRa6int=lp3}LX*kkCmj=u`FB{l#{8X^)UdTevoyiKI;1=g2$r_{hzrz~ zG&LgW0f;TD#>}u^Z-1<C2VD3=r|adpxU3FQH$`3RZY!DeFZdp}=#U7?e$lQ?SNQ!( zX!+#$Jm6Y;h3OG3^pSA@Q+(v3!y@|_Q(04#l1Et?;iczQ`0h{RwcpAF^o-n2fF6Z+ zVtbvGD5({N=+zIT%YP3ST?6sG;v-!>Bf@0QxTZ!tBkao?n?c&QJjMUkif4Dq|HqA> z&HGOeXTW%?mH5`T^83#Y->c6*M(u0zy4*Ss-mD}UyWOM%UJw|up(jZ{$U+7CxGEAC zM3=CHQb2#lPqViSWv(+RuG%Pp>b0(fv=7e$>R$OD>$ki_%HZxk&T#(;N!rPZu4^n3 z8Vvn=(h|(r#EMT)Z}q*4j9;rBz$@SWa2d38N=DIN-_O@WO_%l%H!0}Aw$gk1$ql*N z*E;I$9onulPizn8CtaCptzC)4)c%_(0xS6zRmuqi`DY&bWsvvhxo$0U*cZ6qa*-6* zNhc#`AFg{&Res;fZ5;-pX-Kw_2P<nQq-nT~S>JWBI0=K$*dL2%B9xxY?~t72&$pim zSuAfuX~UMk9aC=U1W0Xj-N{$NK&v}a+{z=I(&9Td4&}z@@;&-iGHEBvr_5NIYP#zx zjF1b#P$6!@0C>@Mi}{K)n0R<pd+t;C>shmK?HM#+%#ATqYn(P0^s#E0{?U^H_vc%c z815KP!w}rIe}(N)?MK`#*t}{_e|BV{<|(`>$Xkya+6%C&eQH?&aD?SUzbVOj9N<HN z<|?R?Vb`9fSKNR6eO~(hl>5VSVe)ne$>LI60{%=(;s+G3yyx<xP5F3Y6BPX>bt5)! zmOpz)Vd(|r{5*1%?c{D7Y|>=G$k7O8=eywkiGJch1?vCW7N0Z~R&|s)F;0Gk4knb+ z%NXgElP(hr;fP~1Tyh2O1?3*zeR1F^vc9JoY4A@#6?wNbfGYJ~TWViH{hO?&J14>M zojS)+CI^#zMryCzEShx{I#$+xkXa1nDzSgzMsWB;oc4LDZfBkuXREmK&NNPTU>zF* zrB7rCNxirO*;lWiQPw=p+q@w67os9p@MT<H&<%8>og6I-;l`@xJeJm~vrNv!9itm+ z-yi!IpjKV>GApew_yaW!f^0%eeiD58xsp!78k{Vb^pIxg3Pw5zd8(#8k}pfGT=S%3 zOtU%fP040Kf6)N=mbkA7yo)}xv-W$fj|vHq`y=P>K8@4q;(ONH(9kGF+k2<rV6|<i z{pEs=hV7m=fIREN&SO28e2)K}IbbXDSUbYMD=q)I1-rL0z+evz&{WZ_M4!1+tZ-(O zj!=~{u3g{njn=w~mwGd_3xVJwjN&aRE7ZC20^EwD=rsxHJ_f+t^A9kI&O+v4o9~Dh z?ApW|?S@nSNBPz9p|_d7X469;(plPkWs{C{A+T+yw;51#-&0_y_K9bFl(SOET9mV@ zxd!4;JtQyMSvv$XT&se*ta$bL>JircWWDP?PDE6+7aV+hg*OGRuC8XjX$9f1%)3_N z(u3|8SR2{@63#0={CcWH^XM?ru))FIGdrwAC*dq9lPaWkp;Y!#jNeXSd}nz2M2hLR zY?9As+aIe|CpMT)eB;8bqi88x9(k!Tc&cmlLa`;OWA>bm6T<Obo#&EroVOPz2i*DT zGsgz+-vbR^>17LP%A0T;@{>F4;ZAkFcwk{r2SOQjn7pmSJ0q%uMI^$jZH0Psv@O%W zt-kaL_31=wR(!X7ef7a5UEpwGsIwh9oHn7XR+}j|FjKN&(9j}#wa>lZM%pm@e4g|) zy2BM=In#n@P=9iob~ZR&*B7#+Xf($@`*a$fM#ph>ES9YQ;Q`{o=6RwTqi1JGwYkqW z$G@k-2zUO8I9lcfF<Cuc$~7UGvx>rsUZ(We6Q-Zb6M-GshKtA!m!M;59+hrwp`P<u z-evjaVoM#z<`cq-`zY&!3k8-0ls0V@EjsA?#R9Bg@pW*{$nMBJqy|O6LF4`DpYpyu zW@7X=HE9)!pVeo6Ta|tiIj`8!ckHEa*lcz#4HYMXpBFgQ##mtcR;G(S3CqVlEiLCi z+sPsLTw-@wsjkSFoonK^BhvIJ2VM+6vi<HXb6fp8LNje8r+~vqgEHwAZI0bxL^EP0 zmsaHR{JL~^BhmVEB?fw3!{s3RB9fQ;!{t9Z{#u`QeJ3W%x6hDoRwGOcGz!FxNB*EL zz@A>-$07~(A0m7zQb{aH)Pe>G1>B>PKptT}0k!qSU0d96dRNd_H0#YI|6@HXC`h%I zt!p3)%0m&3SD?h-X(88!ltwaos;Vw*0@R8xFbxYl8YIus(!O)eoILY~ecg3o>qLqE zY&Imi8o3D<-5!$xq=Rm*0BiC!46C{!ZQ1T1Zi1tLN1>{?9L!rQA|>iyeVg1DzpdPo zoGah`&f-2%BYX1W(aqY@p5KjOYXxiG<jKD_^u(Uu$F<`eyYr6bJwIUKtI3l|rao8} zA3kKSSVH}QJK*C3p^#9glWG<(-vvKS2p?0X9!SP$`sx@j`sLeuAT@@77Q;6Q{})$h z{T5~Pt$hV4DUt5(4(Sl2yOC~??v9Zb=`LkZI;6WB1`v=g8M+%828Nk=d9QPwbA8YG z51t?Pv-V#1y4UBPXmhokGLzCA0lqcU4CX$LL4>bMci;X*j0s5oNkJfZ9$}o*h+2=g z0m_ULBVQutO3@#?el|=$e(Al#qJX58k4bVa7aEyQklNB3M@j!R=jnA}J3(7g67Hox zjWaLqWWA1?`9a0C*NE^?Dc74AuchX+pLVPpkKzT`3jb`r7c<{ar>>h=4Rm8qvoH+~ z7dLVLUE;3tVj))T>L5*3eH`u)#&k$Ll#BMZ#e$gkC0NCX(z~^<u$aeK7kC^tojQLB zv~M1-30PLU(RGyE{v94UQ(Rkc7xT|0Bt}vKfA}V5BUIICRXnV~w^AulpDa{pRck>> zrc0H>-f`mbLC_v*{?|`kAExw|!>D^hIlLW9`eaW6uk4KiT?{;B%#||n7pajGMe?sm ze=<IZaYxwzNSDTTG5I&A{e;Wk{q(L_CpXG!i?NS>-!tQq$IPzrAC4+Cpg8nU9X`En zxyFD4&bdd#y?(6OA2mgAXg-s`JqJ(gKzV!eQ-(eRTy_+Y-cIsao?%jkX(Hh{Z$9GQ zK6MNcuuA9w`qh#!x!EI%4^LUTO!KAY{SK$HjYk#ExeqhFs4+0{zc68z2^ZF<2@I+_ zPHF7DyVOI9VIcJO&&u9Nf6LnY+c0mxY*~G5DrpV7G@}ECsTlNURrSJJYQm4y#Zcl@ zo&afB9y4-ykLO?{!`)RjmgUTrsiJ&ZcW#U)o@rVg>@U;I34w6ZWj6mzK=y4iJ7Zn} zAT6fJVO+^Wl1^&rCv7@9&PUFOnN;sY=Duj(%pbPAS#u%V|0dGqQ&FhzQKBd~aH6^7 z)9z(>!G~lB|1yZ;wUNp*2C?m9xBP=N;u!HLA5`S7mypAzifte}kBzA1J^Y-L1Ty;3 z=Qt7jrH_;TsR!*T>_CH6*GVmqd175{<!M%#-cknbse;taW5swBr&DQq$Wcv@K!WR= zn7K3!qDZncwpJO%(M?o|9^Z$j;SN&%$K%_@lr5LnK7zG`C7fEg*;1_GE#~(hO9;dF z=5OP<^5#mbzAXcq9IF0};!mzPx@V)a8f44C{6X2j3+(^$%779<8T&)au!#^EcmA4+ z_u){92dDVPA5VQ&iQO$MyO?YzYv5dahGbEb+gJXAG<q$l-S4EcZ*8(`kU^c@tMRtU z&g=q@!cKR(j1Lzc5EhLir1mLnvwRXr^OR;r)YKW!$MB)kjQ$-*PPWi6=BYz+POqEk zxDOeOjB!J^iD<O<e6Ezo1nA&JI0F80J5`-gVl<R}#40aU4u|cZ(wpa1Q_QtJ_`Mji zAg2SiC|j3xI_Tt?#8Vn#Ieq)Z!`kqSTqj{RpOr5h2m}RHoBfF%{b`AJ8XM$7Hq653 z(USU=(sHQV@B8l#&G65sD8RY17&<-ixKN*u^AVksm+z1?Q;0icW<pB$M`=Cg_|=Cm z)<6ZE5R`+M7q^2Hc~8M29nFMi(H8SSMVzi<Tw{?llgd|S6%9YBIuIRHwm016L|I{Z zT=WD`XH>daDFQEGemw5in_-~*7iyl`uct2?2b?HsF$xd9`E9DqYS=Aj6ARcM6?=oE z>exdC3nSbMz^O^Izo<Bvf{HEqB9sJ&mjeoQRsGM*xP4>*#uv0txW1@6Y^Of%q)z$# z`qMhg^5}1aQuQq0yb}FX`0F((dOB(+fC$C!(rUp==j=xI+v4&7V~Qt62q!AX7rS2A z>0Sm$W)&GH_SlfBx`@5&@B~G{mnVSBlStYYsq@=O3=|cl&n$HGk+vV)CEuO$zeh-R z1Xo(!P*$raLVo1ANaIy~q7+vt2BL#~FGdB}<bwvW!%g_;c1#J_&mtZAeZ`yhi98W} zhN(P0%<AnL$I4qk=@zMF+2qb3+DThD``nj9N#5A`&X+@V_a#d8qutWI_2~qg!V|j< zvKCrY0g`UmrQU4-y{k25m4dmFu&e8v9;@uOCph_OWYUFwb80zzsa#`}`M{TiBvz7= z$U5o^dbb6{-}y*Nsj|SEJkNZo%)WQfEsmQA?r#5@d1k1tr4K(tir}$`I>qNZ0Y|}4 zbuiDC<uBQ<63`pDKU!!3b4T_Kv|GT-^hwlYWg%BY?<QB5Lf>Y4f74Ywm@dBgWz}`8 zX3jo&EGTk(^WQ9hYBO1?7QpWC%L%Zr>Z|22`7jM>G@j62<Byvm)6(36<l!#O^fP=C z>6bU^h*7JLdh-db%<HR0d(!N{G2`{+*z>7dxJ=KHuYhYU09Ib2QHV=4foJ&YgDE90 zzj}sJB-&o>=WVOy<pB*m@Y>@(UGJ}e@GE+nc-DCE6-c-nLYi2#Ioy0*4ap{SdS7xT zsr7rEI<W*CkqrrJvJ^~u>-!^==In9wfqJd-;i}(4^$OyFDc#Yd`=w7P_@x$9Pg_V~ z&vE)sdGj*_)nBR%jBg^#?lUoViyUeO|6wJpx@0{H;23e63dg`ug*etML-@EEZhD-3 z%whcqJtRM`zHq=pp@(uT>h5vYIJ=DMu@kP|zku#{O0Y1%a;Oo#0Rmzr^w@l9*_%S< zRP}U62sChQPU$Zbre%c*?emiDjT%99fwZeisdTxXXN52a&-`2d#}8WFaHmd+q;zk> zGV=lDJHe)i-rLi2{Je^%8lZ(|uqo}Qdx%+8LBbR9Kz+5!2il?;X{sl6!&>;NmaD6L zP=d&}lwf1Z$dt>9nmb=jXUXwRHZRCwlFWl%f9qD5OzX+VMdL9;-h9<S*s@mW^dpec zvJM`Y#i6qHMvuzHW^|(jUXEX=r0J}uT#b<*6FcGYWaNf}=XyW=Q--X}QCdXpR!VES zr5AY@%PUGyrb}}}inB-N0-t$eJqCn?Q_y^?YOLuVYr6nFhTTSCe8Y2^<A*wk$miyB zaNe$O#%8(9N1Kr+S{ul{7e{c1vHn8}i(fF}@1`Zk54Zo}3`|(t?Gq*o{6;%pi$A*S zMx|C(eHb4XXWrU0a9dpatl#N8;89hj=chyTbifG3oD6Y;@NtZ8m5#lZ)4|rc2Fk!I zx1U%Py!+GqE9Y=(aS;IHO4?7>(dTPl>&Eq|ySL@w9N%B!=@aj!CiYOYl?GqE_zfM< zCvqoea9K#?i2)MVSuZ7e$#kwY>gV?%tm<EY$EFzUJ0|pO{)dcjL2{eN_$cuO974W0 zd5`pgX}oR@GSGL2I-;2_1!0WS0(dQVF%toqKfL7S!{->l!Q)<VoiWGemxl_)yZ(At z*XL>c<siBcAHKm)$PL*aJ!jP--7#blR8XMr<5*G(K@Gq-F%<)GrdCg%)=o!8*t_+8 zD7^a@QSa}=GpPa(yGrHPGwfh}ok&l@w3OGCh`x7Z#PLog(^3QaM{n2mg6M4FcBB5y z3GHg0xMP!Fo<_(5o}S7*OddKjLAGtyRL-GLVcU}eDJF(I5R&`0u5NEw+ah;--sWQ+ z?crf1s7SKJ?))x;pI4N!vV3|*d;B!(jP>n51sqD7Qj8!_9Ht|H12N@$-I8Oxd|dWV z^BpSy9{t7r3M0Ac8Ft`4+clG7+}rqdQz{@(!2kV2@qD_ay=U|a^SMx%6gF+nN7#A} zZ4n)EH)WZASoj>-5J3IHP#@H~i6c1l;sYMa+o|}9ifRVBA{RP#8wLvgB9yOQzfm~I z-Vh9^>*}NzRokIWsp`H&(;;HQRGz*?h#A~NPDO6fXORJ<_xIm}{)*@?R#s6yZYJ-H z;kB{o`)4@ac<;h2kyyVl<pL^xSumpo1pSax%=jP>9*&Hw{2*#AOAx*X5X$g`B@~X! zSz7n8ZINCW=t$nY--{SWO~YWom#2Zw1i!!J9zr?n$2OBadW}n2!{4ESw@tMnLA;>> zY3h#g$h&g)z)t3oR(;ffff^$jx(>hAWRGB8^!lH!0fV133K6kdDkX!<uC8n{i76!q zvJ8Ip0AlirFWnmRu_xch&=YZR`5*3<MD{p0A5;wVc_&1kHqaPLce@lpZb;g~oZG6a z@Po+f`LEeIb5Jr2jn})?M0Ue=Mya$p+>Id#U)AC-@3bv!OytRJ)D$Nl81rOJPsS_m zX)^TG=-iPiP<yRDo$S8g%I%+_@(G7~5{=GV#&0IJJX%dOWuCm(+2@dyVVYCpD8AwL zXc4VUi(=mQJAem-M#q-M6}ykyMgxA>gEj6%sWmhRnd7vgkd5D?9v`%6FMoTu2YUg& zO~slaINNlXBI*_iwHKsCzZ;Ys|J(HDt_FzF5F!CI7FV9Grr2n!)h{bah-8&2M=4Cb zK0d!e>@Kq$T@*6$nnz!1X)B<&kca$2a?E+Hgbr}t=0-Svp~>vc$gU1to52Ku6114M z)@c`<8k>(0*{)U%=qo=4Q3u9<k5IS&ix}AV07#$#?R@qN>`DKYy?j4BG6S=m3q?lN z<4SmfWl-bECMG(NWQiUdd_~>zEEnUB<Po@3>qT(4Z_-p+>e`}q;sSF#r`MfRs~^b6 z?W9$pAM8X<iZiP5gKhiqqxLsS9<Lx7z?WL=M4Z(D^3@bm5pTba*$fB#{2us}NF8{> zjQMb_k?^@+p`rx;;hLB!1`aKXAO6HTY1eeNN-?K4!hB^9Dwy+Tf-yRsL_cC;Wn53b z>sARL5Xm4SwP(z4NcotqJn;97ZM|XMK$z-1drV4?{v&vlLjLt|h^sR8)65iKzSY#+ z3lr)lIv##RQ}hCtKFa9L15p3%dTh8iHABh!_K>gLq1O$gng;sR8N?YJbJj<p$0whB z_UVIcc3$r?TC{tMoJGf4KM8nmnn%4NHGT8GAj2N~<O9K|>HU@pMT1tvEm2j|32KNM z-g(((39vP^^>K}IbnEhxVOzQgf4s8qMmbY5KRd{EhL}o}aB~Pmq<A}|O+yk*|MHhz zGchWcepi|N=ZTJ~WiupU7vYK_-aAvygvKfn9swWr3m9lZx-Abx%9AuEcc`O(g8iTl z<RR7)t<*S<Q{Cku&cy67l(vW+owhodNavlceCJN?Ma~U;s#j@{Lhu4L45d~O1wh?D zP^sod{_RKF-lV(jx9PJY_NCo0Q6kVFyzdQ=%i;63%FkT6^?@NLqBPe&foPG!j37K2 zHV1O;`&C3dvMDk6Q|>Mk+lW^pK&>#p6(=NvSW$3CdwTSHqeSIfeipFQY!ax5vyeGZ zlu2i1_`R}?^=R414LvK$+WQGLF(@x_IDJ^kdraW-d6?kj)%!9OuE9XO+pUS(i{Z<8 z_*VQAn`Ju9LX!HMv`+v^yR(eIye8+UMwhXPkT&6Z4_~poUZj(5X_*Sh8~T-W@rt2m zV#><%4%pAicI!ry)-S@#rd5AEn5ZCp?mMRNw!S9w8|lK!bg>vhtzLHN(O%ZtfT?ll zm|f6yx@}_4nSP8+mS4Ru)wCFjUg!l(HYk*VCIMS+94Yi7pj$aK9jEXnV<LbB?XD;I zMms3#&9Lk?7RNmH2bSAwwXMs);cr<V0Q?6(U(ISODfTWKX$}>;L;x$_pbAWQ@l=g* z|4v;lz)ioDgNA(KH?X0}!i{ujC%Ssj5#Tm*;Vx`Mo+GaVEFohgeWgC`ixafKyY1)L zO3Xg9FdEXpP~o0CC{A(iPdA4=g;p=T$qJSRS@t&2bKvY4vc%%4%oIPhwly*Mo?lGE z@55ZzpY0r%SATuOaZNID51;aNG;E>}Tkt+YEoqbY(sI^`@R@)88?sol!f=c$Ha5FH ze<xd&Q6qDd7`n8;)}g32=OA}i&Ch)}E`#Az66umRN++~6FU<y#<9_rJv@3NcQ18C- zbm@{SBw`Jp;9xzP%L5SYad+9a`Jol*aR+G3(&6~e!v96mvnY7$b5Ck1Hh$rk&xbp? zIzAVdhe+uk9dru<O7%XQrgNyAI^KpC5+6tsdnmrCkJ)cT+1iPr<!kp%4-_uE*_!x= ztwU#fWOz$pX7@)|_fwHO&ewDdaH<)*AtqDH{_9(-C>z)G`@%r|^PTGVo5oKa8^7f; z_eUScXH%BfJ2IJI_u~tWmjO5L*Mn+&#a}rNBZ#DlBb17$?tBi|dQI`m`Z0cB3q`0q zf8V*xPQmcgT3P+oCM1K>o@3dp&5n_Znl0kg@Lf_KvnezaO^3Y_t1EB-HQM9|=*h zi)&l{Z!F9mk6#O0Aw_G%U;0d?gJ{a_B{ka$=j1#rgmpLyATdvt$AhM5T4wc_GDi}W ztX9-NECOL4pk*Fg07ZR)>wpR0&`?Rt<>U;!#WTjGX>*JCSH1D`p)G(1yN*KzJ7@c) z?CtLbuXYyf4(ndXz(tQCp+15%_E8~Pa|!zX)~Um9&ckAEBk~1Hk~YMSNtp)W_{<kO zM3=TBtfz}rPv@3ssys8EE?Z;g++~dfj%zSr-OX!PrI)oXXssOE!ac4pggiZl6&Q%o z3PbNw!j~@zP}5liwqd;cnmH3$(l>MEM*-@r+n0Zy3;0+aB`0<D?!G~ZS9F!8GOJ>X z5UunI=4aY5Dqg)9G3?vjjHNS?jxBuaKj9j&H;Fu1aH~>VepfQFPj7zkWEWRC3B?-e zhY5UP^)P<bd9hT^{k!`KVx$OkptWA5F*_oc4(QtX2q%ns`8cQCVyQy#m-%^AC+L~k zfQ&np$%5+}_uRytW3-MT?Z4g;R>fqv4b{2TC^%E@qYf(*tL(%$D=(AgQ{sxEOFb64 zdO|0Pz1!)f!nYs6vDj@UcmoB2uotJ`^%P7rIyT&&Sg>n~TG_V9rFI{WW9DBRWI?hJ zjJp@1$-nAmwtth6=qHkwLZyKrkmV<64M!7r9$m=U_XI+kQk?b@_>vcJS7UO&Aj|FV zt=A^=NVf+t*nr+ZkfJ=(?wgGpF8Hg%#Yn*t#f)qcrHd}w-N8g+*;(`l*QdA$3kuoQ zbxSUTH@8T`=k+DJ68dUGC9#%7#<-gWFbp_EcB=c8n$xjx^wm1RGUzCV*N@BFLLuTS z!*jmjBP(i?FRImAP6Z%6ABpuNf?)25r3Kj{w1JRxvFdB-qrO#C!SC7O%H<7X!yYro zbzM{(mEtooq%+}@jusE9DwtQ<H4V^{z^0tHFOOG;(lW1=NikOXZ1p`he?N!tA4@^8 z7tS`X25ggcxn!ovc)E+vfgH1X+11G(@DAU0JB*rv5rKKRkT>9y{>90ZjQu~$@0CrS z3QxUiiDdVXgGdncO(9Aj9nv)A9gXOeFCJG+(Rs+X#V;OTPWJ)7Oqlj_;&1S$34|81 zmutm7*m5!G^+Ix{8|q>v7=ITjZI1mArt^K6;1&pwp5rGMw92nhH1vj9a$ffFeLUX1 z?)>_|+<M{9ln<l;HyS%<X%`^_CdQ(=ID3<2MBQ5k%@*SN!+oW}NDlKA^Q-96M`;mA zQ8zzj-JQXFz4eQXI#e~mls#3uR;%QlbM-_SRf4?&wyU${>l{C;bjjBF(bebQI1Hh< zX#9QYjzEg%&7Y$;lk-T<Q>rD^`>l39Du00yh({}3#OoE{E-!h~*wv95kaX<m9<)V6 z=Xw4E#@I>22g8k;W=$Duv(0|3u=(Le{BXI7^phxZ{;O?*2vthV{no_6xy&ETqoKaY zbFCyTTrNHmcYu?A>cC>3VnatM`f_y88Tj(iNO4ibRYrhK8cU`g2xaqG`}it867G?H zvn1oQm?ZRei=fx1bjfEA(3-*~PxD3cO%UCG7hnVj&6d+4s^F38TRp#kpOHQu-vPEB zLHY%HL8j7c`A%)22uV%-s5lRJM^8|gSm(8ZH%ZP5yTWzz%}2a)Mc?Vy(sR!N)FXLe zCQre64N$2L`P(45{g=mAQ#q<R(J9_vw^0%v!hbuww`<Mq-Hwk=HoguIwWNWwve)Mx z&8p<n_(z&86a+L>+1xB_u|qepcg((=6b8GeS?1I-WbABiZ2N8yd|M9B=0IVjP>ZkQ z+YFy=BA)#$+SjlrCml*S?mbpZet>jq3>>&@M$d&hXq;wj1aPpCEZ7y9tW^7}lS*6E zo|_MOrhVhTWZiGGXWOeVG2i>J5YuabT`CEhh2+(xpVE@5KgEme8oW{#s#$=V?!!EU zqat6+g0YchTGy#yyVTW*Ze*#ac}KFJotc0SLW>DSiYpc`n>L4mJf5|@Ld7{$Hw5XT zFB03U5e~P`TATT;aju!cFsoo6@wJw-9bWt<Q^E*AXBiQJZC&|ShvH^ki|BoZvK;*v z9T5#%z4J(S?`#)<(|p;a&9hFyyi$pJwmauLZuamGB$!Ao7BzjsqSsbGO3khsXs#0$ zCm4~9&$q*$7M&72ghlOGk$w3aX?H(i0<OpT$wdY44DV7sy%_g?gi~l0?jdPeCu}dZ zaoE-^c^qjBjd=Y0RHYvA^Ajz~re6|dq1n4O)w~Z2-1l%@e*fCV7)8dqPicR1L1Peq zHO2Ahy*1h9Gt%?YtbOLu=&EPSg_@nMyL=+!Lyz1HSqM&;-OEDFKfY!c(n!0WVqhs+ zs|+N~;)v1J2pT4Euk=?h+K-@BOk!JA5{$4hl};O&sd<@ZoinEAhlONJxzYbnjyr#0 zM`!OsE<zFcWs+6&b?*76=Li{d&YU8k=;PY=lI;OQRF>G`8o&i1baA@Rcv>H2h2Jlh zYdEe$Ka#MRefH8TwHHB}NS%E7HxKS@=fpm-8=G;8R#J=nO;#O_pV<eG>{H1<k!Sws z7<>79R&rse<<s&SQkI|au81t?4FAf22zLvL&!BPG1{C;MMZ|m#8q<f`%}j6+ZE>QG z=rQ^GN6rc~3N~^RGFP6nW;|Ht4fL_r!3$)v4l!!<!-I=ML0sB-E3a9FM>0IoC7sTU zx~JXHT`k#YZ^&@Q{@(o46CLG~;b{VY_YfLhxo%PS)FL-h>Z?2Z$ljk9#nwkqYE#e6 z%?ix<gk-F%WzDJ$ktMm(CTs+r@G)M=Ob8{M(`xZ<3y6Is(E5W=HnKu80#TggZF}LR zqhNMm@9a9k*xu4XIY`I7x8&R@JRr#D56@!ENk{=9bX+LrNiaQG)f4p(-?M)AB9d`( zWnN84rD?n*Ew!@-sp~x#luJmb_(ZV0v+jBYmXl;IqyRtr?MUZwz0JSPWyOU@cMEmM zI`9-$+=_eePYexoPiHc`3*kn+uH<5C05^E$(O72ILNeygv?bpvdb_T?#ffu5=f<=N zx$kRXw57Kk<Xt_Ip#ir6v<RTIZYfmaNZB9eT<TlA6jB@iSQei>%Ro6HwzB~EV@4C! zKQfqR-JqHZ#Bm~H<?J51$lH$P<1{bewuW&-Ju2Now}*6qgHy*Sa*=aokPH=0e)`XB zXl3KXdizdPQF&ftUuXgc7bB(mdIFw8As-aOk(a5LeQ@*BlwI(5QY#*cQC6z?tvfhx zp}CQ`ZTG)1Ao*?f&)f<0FB8K|#;C}+E0q};H{3l1x`3)jaNlm-Hf46O@jmla+eCn6 zv27~O`PTFj>q+9EHnFr!Z^2NfVU*aJZYh@V1=Lg&6~o98FaUM14oA+Pa5qBN{oedo zn=sFnfX3MwS82YgxbNG6-MyHU<?}(L_!i!_fauK!!{_L2=gV(wkl@_+#%6dN$-D8` z!>aoL;+^Z3<g7OZd%Kn!QuaA4%hqRs;HBuI9fkL`Sn-$VNX9#0G(Nk~kR9Bz89=NU z!Ql^tgvhlp50+yHJ=LxC5k~yA{EaLNYEJskg3o|Y1*H-7<hAp%NfKiwjqMcucdG`~ zpQi_-XJ~zUbB>&HHa{PBkz)Uq@=8aOvE$*j7FAB|2kC39zXcyP5!9b+vJ+1nLGyLH zDm){k5C6&t_ZMlOd}!$W5@_2HFY>N!q{x+3hEtDkvtHJHqJ-B-4A6PoI)-aYv9$1X zXx!<n$3ij#mJV6~)n_J3Zzrl5{WuQTq(lHjGFCX(YYdy36UIRnp?fFhaVxM9AOQ*> z;cTnJu%)SWp<*!LOCUhkGG|blN|i)r>L|63xK6(@zjcIub+=Jh0AEb)G3891pwkNZ zG#Y$!qPtms9w`y=KGm$*AtnDy1R*kCi=Lu&Li42h<)dLsKw)6$<ctS^eKF_8rqPR0 z^QxnN-sW}WPg>G2);`3)jHi0LhG#CrtG?34y*TDZZ$Zs;G-%<xixXOGpSi#5dokkV z<+NSS{m;1j(|o$l;`AsAhDYmQp59JeV|BGA6Wzj}${u`)Xak};so%Mo)6`a>^6joW zcNQdrhC@UTVIkSy7VgA4IJd&p^8W=&v_p5ViKo63>1bmr$6tEX*@vLKOv6cffrVVp zGTeJp6le|q++9^4Ryq~<fG$=BV=Ki-z&Q&}4%yEzCK&}vIDEEHr}J2LnO-CueaEZN zhYF;SD9P!L3wIpY^~m`y3j4hwv>_WlC|fH{MH~<W_fUAaHc;*_ALYEKSq8ptv<%xB z)=7y@kxVB>M=YO3UK#ggZU<&AxoVDrIo6j8{=ThFkRDvJKJM8j<@KsC5FR$Ajc|Qh zuM`b@t?FP;WN5rmW6r1I?y>a#U+_!8wLWHQyzLRIOThd@rJ4?O)q2w9ykHHns`UoD zE8xbNo2azN;oToCs%(<-(VR1?b5<7X4A-UGW~>xv({YeI<vZjA1bih6JKbNouq94_ z;9msSLg(ES_qkPKfE$PtE7!jTNb0Igj_@yc0Bw&oJ1wrN?`47Y2El`-j`$!=Yrv<c zlq7OaE&Ol=bX*Fi8Qfqz*uc%kZ6bbpL|r!*yl|Ls%$Y<Oito9AZPHaWRCBL54%=lN zhdw8lUhj@gz8Y3a3RZJ~*BclJq*!6Y&thY8?Hoz4{#lMeeB8sDY2)T;>g<0_tI19i zW}Sl2lEvN5<hMI4V>e2h_7%=-0|lCNsvYK1;~1iw`GMmM!q}Ovh~Uodl0Ug-n|qj} zUm}y-%{Mdw0tJwzv&S;Y@gR(?JPU~<3Nc|;77_dh<s~vol_)EdSZCj3CUWVQy@4U! z-AUkAP`f9n&dt&~5M<)1Bmc!@|Ec2|qec`<vPkAYjmYE{%gKj{VPv}g;Vtn{-Fm$i z?hKJeJnx90@6_VsW-Ep5&7HSdTZ1fIX8D}T<uU>;JACZnv}REK>?Q1fNP$wKn{$tm zXk}c~g_;$?2XI9>M%hnJ!AZo|E2=6od+Nt=9j{PL+Csl}40EalQQbdkqh{A@5}pHQ zNV@To^@Zv|f5bKE$fIS>0m^)Cx4X#hqY&fkd4Va$@L6#BNUjzaLe|jZbzuR{g5lF! z;}hG7gza`wLO;)c+_t&8QW*Y2xx3b>O(CR~>=Q4N52#?uPJsL*(YR>3lt}EuEnRM` z<6>@c2>Y+Tm#=Ty4j0l%j70PrLYdbIcl(Tp$MLM&`yaTH2PA)j>D=;ZY$1#?xB@6# z#Q7*-dA9HA?HY~9wly=N&t6j*E{0K~sh8J7p@}Zin5s72c13svBHrQ0SF6j{LnL)$ zEj?~3ZUa|d>bg`Yf?y_>vIE8hIX01%U=Hs0@$fX&<M(8HVqPUePj13m^5Q%#CFo~% zxBn{Q$ppfrA<SQQp)~?Kjl@15i<M;GB!INQVZ5AwASA^-G3#Isw-6f3kt3E><W%EB zOEQM8QF686TnQnImhzTf+t8x$K?7bS<nU<*VN~+Q11u<e`gdd7FDt$~*+aGK!=3Pp zy+AEGT4cUJD-*7Mz(Kh<qT?}nter)Y&_ynpI+Jw1VRx~#mF3Cy4)}^T@Oy`>IVT9{ zhO|H+);z{r-{GpuMbkc`AYVG2yGRA``T+ajrnP_Sd(M8r)4t+f^;ZB4nAZMptAIk& z?*_#9)GzsMUPAM&-}X<Rp4mOK$qk}6*i=0EhEKPvThX5qU_7a+&L;Un9e7$!J)s!7 zqG)Tk3VD7WVPd$Kx^3l^n9-q_TeR1$R!No@Kb7o0_8pe~9eedvtsJ{BOVP(Y+c`5H z4G-1wZ$BC7$6*n7qq4couS6w=YIZZrH#gk#nbO?h1!h6IPTX0}j+6CzuL7IBk|hP4 z)0%r9*~ZWi8ZwhiM{<c|Jf2h*VyOHX>ejF%EgA!U>pp-4?JtnQkCpdUaxTNUFMbrt zEh*4)dqXJ!nJP_O5%`R1i@FPQS!n!@GPl&>+X5H^BojK@9I5_C=0)SS7bIpG?BKF; z94Wul<~R>!Kv4C|xlis!)!1<#Xg(;Qqv*ZPcnz4;5_n)NR!dmUc4o$McDgI($O0p3 zyzPmG@@SPcjchggn|`@WHW7`qzLcAopLHzU+tk%7-b8r9ZlR5<r=#<CE&JLFP5fS` znNzmpvicsG^B4BO?v&>3<w^@f-j(`jdmQ#_Y+}N~s=K<pKOXsPekg*r7&BK(nO%-j z96g#{=KOY6Y8`FA#g9YKwd$jmYWY7;D~)SybVJ)=#0tLeq5$R}Rgt?)Ip}Z7lfv{n z{bA|?OI&FYj4ayL8Oe=!#l0ERN~@{ab%^_^oSaTAJ%hO&sgj|}Qk=dMusz$OIffg) zPwDbe%-ZFV_T5rhsenDppS&t&C4E(#yiI|*Sh&_nC^YEYDC#%DS3p9h;v34E<$Jq) z_Jk8C#<lUguTdJ}W-bC1Et9N>QJ_6Xs9ek3PD{z_$A5?|$DCbuoe7=F<gr^D{M8w7 zNRw+tuPKQ}sD&cnL*>7BYf8Uhd-E@Uc?}X*%>Hiw#%l1*=WWXl8k5`ZV;Re$o_+2+ z%`)dm4Y{{Ip)lliM*JG$i*}uJP>+u#yiw#yZq-{fhVG3e3@eXFr%7QHl114CU?;Bz zyr-l-6zE7$f&Br47L^*bhAdhLTD9pNO)Nq|^N6a|cL7-{BtB{gNRIJz(y!(boq0`k zkG`EILUE};9Q{1BRay$<18%8A-3Z!V5wh~AA1^XD_X!$Ul9;M0vAvWmKocxx7d-On zZXlzrZDFxFTh|G*WNIJ)%v7)vUM9)w@jF1;O7=WtZ$5%_O@TN|MJKBiao&yzTe<us z@WInD3?TN)Kl$ki)b%xkL`EUG&O0|#k}`)Mqvqvr!JGZMl*#x-LHpwpf+`J@?x=5J zu6Re^-NPM|i6EA1A1HTLl_sQ`NL6AIlG9zpBz1VB%O$?Ez$Gl$J~-f~`}+lo(di>k zaBe;felyxXA*n-O3jvgDM_);p_NF&IXi8)XylUVJ*H(10=1^^<vPAZEODLbsyYP!4 zH?d0uUX5N?*v_8@Cv^Mf=#J5Z%Q_&6dlzPI8r!v$9XQ-vX^+?7*dVA|0}j>eV)ACh z?x)LylH0VHPi{1!jJM|)F%&z-SKy79z`LtI-oGUr7@Z0`pM;JBMjizIB@B44UPF?{ z`omdO1IqGkoEEg)Q=5o=;=RAAeTx;}3dDbz({_^5As<kgEDEe?UB>aA5=82p+OHYX z;rbb0RyYSsG8=wIvciFFNFSQ*YoL=k26q~n{EsnQ8N`ZYJlOdblY3TR_6J_4A5wj8 z`H5`?cPO_Qp(O2l!FLjJ9Qx|CALSG|Hd6y{3R<c(87MT7<1hFrrI1<=uGh)U;|}i0 zu|+SrR$)zLjq#HZ+^-;^raz=^=j5@Jk}wJHe$<>=`~*r7IEg);$P5XftTYuiLQgL! z%6t_RGQt{x{=r_=mL55IKx;2>@RO=wo=?mFo-HCBI;sSFhbs*+e&i_d(JA{x`F-&F zt_{qVBgZWs&E)OZ$~pJsNL_Rr^89kGt;^+WBfnxQR?xBQT-pjW<9A1zwU4`VRzDkN zpJ&JGD(RLr4V)H{W`u0;=V|L6NC^{m$^G{P{*KtP+(T~L(n{>^)`DyhtO7MdTdgX~ zf$N7U2U722ngDSmL@T0j5(d1x8I&@&v%NDj77D8GzQbkfFZcDkNSi@lS@Gy3K11?J zAIiiMw|P;ifD!WsjwRcK=7bhcd`r<}67_htTlw|dXSKTKNnqq7{%+Is3ZmUsTW1aN z7UGhq7|d{J-1yPI5t-zTJWIJ^M8>Vtu4@wg|9S9#$W#C{d}z~ejG|iMCVZ_ix3$_y zlJdF&xa|(@(7eR%MW_ZV#Hk&l>l9qgfveVd(vl@Dsg@G+zP6j8PSbMR5GRPWA(NC4 zZoy~aGw;7w5RacdbIN0c_n<j>*QG8$hsM+NW#?b1@~~gTk1r&})Mjto^2PKE<)n?c zSRo#qEkPD$#*^b>_bVg9-l2;@?cu&_>nZE9Ke{T<$s~7a2g_Y!=7|Zj_Kn@_1i-+5 z)_Ifvpo)W+G|VVDW!wFCq^KPawpWE$5RCNrw1d9wEpoRyQuG0kezrqa+T>=aUb2#z zLBX;{EqNnfYAw@Bze3GxtB{2SC{cQS)Sa9LL1@VfSi{1*(Bjc0vb#<eFX95I;oit> zVdsdkdoVjGcGk-f!ri&-t6l@+mv8l+g3#OIzInptFExsk={FRXGZ8aU9&^ed!r;$; zistmQ%}0mL8_NB&jwQv;z7#rdXgD1It_=J|fBODm3dNG};rh?T6?(yoSjmOB0SP>v zn}(#u=tgf_pZ%Ef!t{utbB646+uMmj@c!bhml7|g-Xd}|k8#gQDKr!b(KRwx*=h8? zFb`;aRqvJO^ZOKvXF5IxUBX}gTJ@@LPtMWVX5f5)6awIQ>V}MIq^jIZ^Nb^2=w#vP zM$iB-Y46^WMe{S;Ij19cL(FLT)tdk^SM;g+Laz7>vT&HV0%C_BwRAaycbu)~i~aDm z`z7e4;~o@0GOmVoV9Ls^+~EK2YP>Z3cIJb4@EK$b`ISIT3UNkEOKPo-N^z)2@JpnQ z_xf-gTkB`i4Fk#D52=;DM$aA`SxN)dgEU^>x11p4v<+w-L1f1KN}9p43Uc^Y*=XMl z;2;C55Z5(#W_4!Iri<PF)uJExRL6MO(xblC;=<~--je0-cHNZ-^Y>nTXQWoJOSc{m zN~jZ2`$Vtp{4On<+hk{1)uh>(hugFzz3iPc$WLjVxa$RN<AUlLfJ{O=So$u~V)*Ay zm1$eRe%mVkxJuwh&JKiNsbQ36GA0=G?V9l@VDjvKEW@A#R;i1Hf+q$KJyKKQ&l3&d zhH&n~a}J%w+dlY+Y4YyP(miG3=`4GINFjZ8wDik~U}o&myG7gVI)KHKi)CBl2466L z;CCviYNyRRD6YvMDR;hFLiQE*&Y_4imy)m(qk-Sq4?IQMv)e7!b**6MB$*>h&oQIP z_K?`>lHBHO%9$#Pl`Jng)1Wg<%D$j$j};6~DuxbJERLK4vw_@12!e{oCg`<5_tRhW zp#9MAfdo?h&zz(FJu#il=hSGB!EV6L@ptKgr-X}%EdIGx3*!zap~9O#TO~#6UU|d3 zpm1NE+rHnYHjy2}l)^dM1h?*KE*AS{C^cmG;~K`oRUcI?L*mqb+242a&vBAHx3Ybd zT4-)y9@G0P3F}M;?{s)d=o;k-vLo0hYD@%~ks-6DWz4!&Pq`(2d=eu%_AOihleB?| zAa5_oegIv9he0HfRvN))8Fep1PG2z4e9bO_=MwSbm5z6+l#4{6XZ5Udq0HhP@|l<| z+C5$1?LSS;dH*@tGsWDK1MiK**}FnKH8gFT2<TTi6kYoEuyLg1k!Sa{LWI)-T_ya3 zAq^6S$e{&4&8R8<Q>NR9(#Es5b)<MSVP*Eoy}aJefr}x;SNClB)HFKFW(~jHnYimu zm%Mm~CjCzz*gppOYT_v_yBR+5^B*5eb%{Gx_Q%S|;L%j%F)Brc5^-vJz8w~fnhLFI zs6GH{hEK)}>!daXDbc2Xd*0xbiff=HZRmA~<sa?p<E(ZB^Rkkl#n=SZQQ{l0VS?E- zG&gsF`zRP2<U|birRS!MQT!?g?S7cD_g#oeLOBlDVo>drSZV)bIgZkY;$!Am8D~J? zla9mdAMO@3OfK2(ze#(!R+OMfbHs9IvhaUddH$z#qpqWN9!Ss`EIc%Ezo`If{>odx zYSmcxODnz&C^<~d;8D{~CPeLMnaOmPSeo>hG@A72t4+Nt5GcJcW{Ek(Ed&s;YBb>U zzV#L(kK<DHXYdjXa0!Axketx$XdMT}<5<R1>IFStznA^<Dl%%<^CMUw^0DLuN*432 zd;iUl3x2g9Mf{r1@ZR8-r$&b)E+p<Hu4K2vXJ9q0<Yt9H<`1$9E*V_@@%{MX%j`=O z?q=M~zqFxsxUTXGXKkV*SJ5e(#IDJFd~F}~HHV4uzTrFx#E|T^a6P7lcn^mUxcqys zAV(A|KiA~WMRovr*ViHBKRhf0pXsc(N-!R^&Em-<;B6M_D9T?r)(vuF*3>N3W8rS- zxoBU-4wo#i68crAD+_6QQVsh6?JP1fNTY28tUHHtsu(n3TU#S3d&jAp!qd##??QHC zaiMORNd;Hy?K%z?=7K<Y;h6keY;odhw(?5%n#0vbC~1#eiGvPt^~+#Tjqu&K^IEup zcrU-I#-@=>-Kdi(b`TsG-RIc!R3s4pCg)sSKs#3E$BVER4$!>0D?}wE!uQi?#&_Jy zeDpOO&?{O$!M^hz#2vb$L6V;)&DyKz?sKhM4F|4G`HP@Vprrrd$O+-CoF0fv7v<^A z&%0RMtk1pqnHo2U_mWxhL<Ls!ouzhv*WNYS+<7#HzUw{rx5H&_W4Zc_1B?nUPkfWE zC#$K{XDgsX`z#advTjF_)1Lt()*aTIw!@qI;J=VzJ5BDyCY;7@Gs_4y{hTJx+O*`v zN#4fbrcOOQyRslxnV@xWt6z0<Vko~^gYw5C(NvwwwYYsyIc*wea&aj3yM#Ser__=f zK&rN8I1F@3P|sVBP#Lq)niOX7u7?nE!faMKR-0&{jo9EC2JDlBa`lJApT}0L+PKA) z8|#-U$06$@5y62x9|cwv-;ssuA~`D%K2@Kjw0)8dIIn_PUvrNm50Z0TEt62Q2*{Zp zZddA{!}jFik}16+$R?CTinVWm;zTNO^;jHojt>p^;X|<#p4|?fd#8asS;L$A!<gG4 zQncj!7Nd#OjJBgm*$u^G6D$11_B&5vH?B?2Wm)g|q?X#z=~&Iz^$Jf8*YRK4=oVvI z;2XY&=T!X_6@7qSuLL#9l1%<fvqA-zIxgtG<6II~>3VTaE9la2_EE;vV)<+GuFYKh z<KLdl^ORg?9Eb`uX0PJl@BXBl%w$N9L|(_r9NJ8)v>Xl8TToA*0n>yy$uiZ;c00lA z0Q=GQUo(57)y;Qrbry4H%@*!vd-?sn5hdZ*Lzvdc%RCvy&QOoi?%a=IGvZS@OXHoy zllJEa>Xo+v6Qx(}IKg&5t^9X3JjS`+xtsjazZlBhxKCDVPEPvSU`NE0O#yBZ%i1EI zT1IU5k^J3H_%-<!(eyeM@hc@ALk9e6)f!ewfC7XtR#heE;(DnBds^JDspYD*n@uw- zZp{|Pfbcs&&Pr0lpN$`&v5N7~9PFH(5UUb~05V`MbVL|5o2_tNw&@CD_s!}WKplSm zVpBc-U3RrG!q34^5{^6>e@)x0F0Q(!X@#xv8eaN*#jkB-waLVg^Tn?fS{UeoKdJyF zbTBgGxKpyo6&{#=#PEgh2jiwWK`psWxx1bnVUnrxKt{Ix>EB0UJTZypUrZW6)}TV6 zX`_h=v1PNeGrQ26b6#U6OI(2VIv{_8llydsGPrB5q&?f}`PdDwIl_2#H1f9s-7;k+ zC%DV{4x&ea-3V~2zx^!I4^heTCk_kt&}=9Rh5S}4;y}*@p+81DhLYdhA3{&Bh7ekf zeINbAD7Df}6O4JPg$eN0C*m|-Lf4mn{tyflmsg>%KyL8gI!;-)*&rrbb3OqCYxgAM z7eZW+Y@@+N?1y-CNn=Hn2Y5K!kep?tF9NdYqAx(erTwDM^lU+)+u|^;)be={=)J-A zgT=~}@N(+eg9sT5=Uv`iACaj4`B_6722@BLGDFl%EFeF|bwe0N@n+uubjK#`UM<lZ z$84B615RiKq@?XRQTVTc_`o8}VcpQu%{ZirhA?01OkCK5%wWpX<+^Hf%Kw>A9MO1A zKB4Mps1Nu_U$E@!>p1Rr{)z9@yzY3>U-^iyxDgxFUi>}eJC$KsbEZstWM-Y2@dQyF zo#TxZw|Li>`-#EL#Z2paE1qSVy%yS58VuM_Efv?y)rGFP_EeVta!M+#O}i=8nOWkM zUkDCF^{t{%ynv$emKR;XgV6D<_+%P>P|qnXS1Dc<odKtQYSd&-mVi>L&jQEC3(BXo zt4W<~V>#6;cQcahWaMRzN2}||57Di9R}ZM&;%7ZR3vRwjWml)Z?^E`8;ZVoIoMWme z0lsyaPi$<a0zuR-o3Ein58j~11qi3GNNgW5t0P+>1<}kP_oZidUW7WyR=ImXCym!W z-Elc-5T>-!+E1SB5>gDxoaJt^^x1c%&qmuH6+}ydY-ZY;X{$1>?|FzpQFS|S1=`#O zzf!4~n6S)SoGZhEfQ|5N1KU-5CaJD^B2Ei+@2~q?M(SVpiH1&V7c#zT(qkbxU7z3F zHHTeTLPjLNR(|#xDvm5A9aNfrEAoUpW<|e9W#5NBKu;)#q_4cLHM9&P1z5x`Y`7n4 z!nDKl{c(m;92c{CX*W`A#z%PXuSe$`FI3rMMV3GHj}I;jGH1>t;HPvDip%qvzP<v` zq3s`9(g$n=W^AnaRH*k6)HM{t8$ffl6FoQFT|ZwBYQlG}RxdY;3=LPh!VTD?jJBxF zUiL+)s)+rQSX04Ox$fUexwB(VSI(Jx)JFc4CP93Cw0iMFRgY>I`3X7cH-W-<bt=6^ zd-tP|0wE*~CC*=Kf`9m#QxI*bFK~AOc(nT(+7Q?iwJCvE0{=DUOwF3!37a}$mI^rB z{nfQWZ{D@R!rLpTn~Z^W3J9OMEt!|#%z(+*eX8aspbxd{N2dg=BHkd25piE?bje=z zS96CBE;kB*!nwy&`rJ5qq63@0s>J@S(m*@g6WJRz^-EuO?^JO=meQ9#(p8K<9)cKL zW}y9(BIwaje>p)EQI}Ttm}}GD7F-mTd0m=pK*yTgm{-&d@mL)ugp;V+)G)MY9S$wO zwMZRR&c>%TL*FJgFusxKW&UuD){J!PSSJjepdD2jV}0|=V?Cz)9mKhByE-iM3lh8Y zUuuE-zw@{|+MGICX(jPqm`jn1F0#%{iAO4Z!Um_{CO#AaIuyuIDJh^b(!8F>6SJtD zrE)z8WvA7QsZ)tG+PCnwF-XdjT^OTkv>ZbYX6@HVSfp$CD2*FqDNVqo#<n>>@YMgM zucDEQCRJU~mg9H#%-<KzFJDE2%7DUSuwXJq(iFjM47#DNn|I!yDjRh#wxUX0_oGT( zufOK<>R_Osm7CM=idxQb<vc?)Qh;EUVBZd%&U+db+6^m=7c@o^`eE;Tw?B|j$U(`V z8edgCz4l5@05R3$U=M(b@bnMln@oP5`#TB`gdS{F<Xc@cfWG#D&Jc6R>pjQbxaN!s z@^PG%YxJ&l*_tQKaI_<zG<H@oi@NSRXS~PLr|*omkdzyVyBF1}8ry(g_l0`lNjv~4 zR>i=%+zFx%ys!Iuit%e^Q;>Yaj&NMRBm*le#w{jm44Gs&!_oC}ikOrRhIycw9oFbK zj{C{Bs%NviKbGcax@ccQQKk1xS;)M)*hoBE;F_lC&Il7Vso^gq>l3Yy)@LK>uJ2ue zTsLYd0ruMmb^A%uqhU5kVee;E?A-Nim9=-Rq@V}d_r=Z&QDUdJ$2q0I&9r`5rI8?t zaQ$1a;PT}$^T13WJ}{KHy$YRZFFhulV;Pl^{+l3Rr|Un9NPHblLo4K3?Eb_Fg+4zJ z9R;xLXO#tqn@Y8v&ah%1W=PfeLTuAGV!l(5O?X1rg*_L_rrI+Xb_I3S8D_#oc}Tc9 zV*=@01CxocTVyskt-3e<C~8nx-CVPp3e?LB`~%hEb;Bq2{*FfPWCTwtE=3$D9}k-0 z=UPl%!|VKV*7wT_+%s}my4n4*h-?A8iEu*0!1o6vpZZAT>YrQCjq9=X?lBo^aOJCg z9ezh7fsrJu)~?+5BxF+q9yyPi&B!7^$m;S=%Lyw~L#zWSat?fZ4-TJeL@bKRe=5Jn zIA1hrQq_6eX8jVG);zfPm~w@E0`ScXUV&v+qK+f0ESls0_jU4wCb^Y8i1D*bcz&0` zob-+RPI-W`Kys*Qur*2hv2759-;8Lxd0nHXV}dS5W5R9j_ruTl_{koRDa8%m{-C+< zq8uv(<n~;K7Vd$5?HN(s{BHXvr?mJ~Bu&N@Cr6|b6P29$=|Ky*Toex_p+7PV<BGjb zKtkab0XfN1%SL7MT*NxcSFeK@hc42_z#~`&O>aQ(L00nT4pd+WQeefkjtXCReOtbh zvAVDGru{(>Ns?Ce&W8(^GB~9$ih-|^Yo-Qkgh{%O7&7-=Z@?A;G^wk~szhNaxcQ4} zgw9I5SC$i-_tA6W<H888R$xm#2Cdcjv;Tps(y-XI$a3b7C40sr3l=R?4PjO9DP_?0 zG)Q%955#Jq_uC2JS&KK`kPG_^kv?<uN=Lr5g_0Z2IK(UpzFcIhkfS7zv-tPT1N<eI zwtj}o6l5_pJ{MFs@h?l#M~)s3H8kiN5PFD~_lYSzWb{~fX!E#2bdM3Q*EuWN@~13* z-p0sw<Uwn)(PS8J8U;OR9lc)AM#W(MFJX>e)F`uq>sr%iyJQAN`w3tT^tl_{HYu!l z&7FfDwwYDCH<Y5qM-y;Kw2CXYkMjWdGtRn)-I)8TO+ht=qSu=Mn_jp+Mg18_)324& zNUY+#k%HpG2!iY&yP;)ik$FiQH##rlW=OSHWzM)N;Cap}2;K_Beez6e{|isYx<7g` ze9|yXp0_TA<GaPP<)D@v2y53Bysv9kiEIm*p(*}~fC3AoY^rVt<M~!E$6#?T_q^=M zyQvq|j^pB$oM>V1RYo3(a0I>T&DN#;G%hf48<I`%`SZ&v79uqlDv-R)%iRqlyETqv zKuIwjqW{-9uku6+p+#oANu==do^RzyMhA|SUf`U^MtsKE_!oQSs4*7MZ#Ln0{Abj- z#%RpzC7IjqeZ_wL@X&=1ztdA4f~6j^lMHIQB2O&+XU0Ch%bNRlnVC_QANkrglt#wL za@}d|e4xwtcDHz{=m+01m&&;yb>s{VOeWUIF*x)jf6HbgNhuQ>P_6H(yPkqFTZyT= z131(S9Zo0zBvTyQa_0=XayXngT0EHFdzAU8*;7)RpGFy?=zhF`L0TEuuwz(h^!smW zs$a!7ze1BpO7l*TvD*fJFGRsxm3R*|d7yB%Xon{do<`g%Lr$B+=wi-6C=Hm1kEkz| zne;AE=aP!CQrvlGIMtHgeeU4__wazeseN6YA`-?l^Usg9H_gN3#mqKk>yQ$A*YJm2 zUjA3mDaZVE+)tM)Bi9t_$spIuW&r-^9z~$H(U?eSncc*G+N%hZ`ac9%<W;6G;dLK> ztJzUKDJj~+wps6hci0owRzK(ik)|OI@gX+4wng#OOy(9euW1}*4&EC1d1+1RB|D+5 z@9JV|y?a2g>eb~mBzW3mKA_#ncoPDNR<pIKe&bzLW*k$bUeQ%Vz`j$go5BkWR?<Uv z@dB*#{I0Y*u!5?ramGeqVh0t=L}~f<nNlA;7_>cX&R|<cOIV_>uVlX39e42_uPCW} zV_X<iYP@*_)>RjaUwhw`jxlFWKZa>vd<rP;UCXgwZk9Bxj-wDrWyIAAzr+SM%fdKk zk*m6BW89a>F{K%US1t3_PDw+UJC*2Uym#$rc{r@6F)j(^gc!{Ztc484O~#oRfMrAJ z0=2bvqU7x?Tq>($w!dtsgheahXBQKx8FE!r+O(@gwP(yqYS$`LkQi}Mw;v->UO}>O z>QSH3{KUK@qx@-IkKI|z3PtsGBTxwI|55eTVNpfVzA7LhB?8hR(kY12j7WEP3>{L^ z&4_|XcgN5TLx+@fhqQ#$&^dI>%z51V-hKDp|Ihxuv(7quowL^dg?|NhG>4+|E*Lxx z(|%Ty8o{-9IdN)5)?v24Lof(X&0*lxgVq7TestyV3)nwO3&4sU+WaOR%8?%^Ew%NH zHwiV`4<?6_k80+YMne=-Tjhtu7!cp#{VAdP>0d1thqMJQq|<+${ScO^SvL`|oC`J& zLD1B8mpl3GLD-cMY~zQ|?&x}1kTGY^KxY8d7UE!`{{N>-|Cc$2Bo+Pg2t2sqzRC=^ z7yMiAP5U*nf%z{5cDti?Z!5Gr9(b&%-|CW8(O;gV12bUaxNI_*t6ZW7wfm(gpLVsj z4UF&+o=g`DDr{^>l5qsm#q)%Mna{CjiYdcE9(VI94^}r!-42}8NJ=Ry*Ue#f^%}oi zyghMa#B@P|f3<m51-Mm3M_sk8)`>LGUZ*M{>R@LR=dA+cJqZQ!pLxW<bHxOEKaQ$! znt7G%bgJd)c4z<MNCPF~*GWsiBOV9{S=heVOa#yp>sY5tLn20NRz`f`1$lZgGnACG z5BAPb{Ncp+&i$;wt1$+6@n*33fx%xDs{PzgHC^&Au!&{>qLd+l34Y7CWYvuDUti2% zXw~kC#Jen7S3$wBGbtV)!-<1G)|e}dOP%{GEXv@u{(?{=%z%LVch2cA(ZTKW(rzs! zO5KF_(6j2`*$_4hX}Ho{9bv_eP{!3FT0VUS%`TAO$79W%((eZEA`_nybR!WeMW;2X z{qP_+Lw_x!akga;^*BCy1LeLtzwBg~D%ip6x@E^bKZO(A@UIno+-NiUd@u3Ml(qS| z@E0i@GR7jbds9m8*rLxOHxWZ?RTW~QyoJ_3(Ek1#@OzcJ8u0NcGJll|pn;JZ!2+D{ z`=1^_>?>Ch+G05toqp@>Oe%E_cK%0itU>Da;vc?o{sqaSi&KM#UZl!-1Lsnu4Q`pN zg%>&KuFO0X))6%C1zI$4!|vI>L#@WT&9GgTseqh!koSCom=)6b`JwmOQYU4=9h>lr zpn$tP%8>UeuV+@5zY-50hv6-Lky|Q;`*b{i?oe}M)N*=Qyd}G(kPMv&6myO1KmSCT z8`qT;Q@8Nge&!x*$NoOS@4}KJ{Pd{7WMYEP2kQ=!izf?0q|!LqvNLIwnX$GB<9Ri_ zg9e8jC`{;+Q>m9+f&7z21rNNYi412kg0bcyKW0uAGDs3xTeJ7MHs>{rY9ZZ6&a=Vj zDd@K@;)qptvKiJqmu<$sF(jS7g#`<irq$XcHl`ZDeE(<R-4AxiP$Tl402LoQyS6sf zN*9M&S)Qnr8??M~c;xwP;mw|adhFbM%0^Nm_2(Ndu0}C5a(=YLq3TS}r(q;JzUz*i z*FZql06I%}gdHiRBeWbrtqUk!0ywPcpqK%?U5^zz4dWzwU*1w5l{b|vBv02%aH$lu z*Af__i&<aeSB%?e{Rroqh_dRv@G<jW)Gtv9XbFd3bS*z<rnYX%Qq;}%4Q_A<v3+oW zkb|8U1~ofCH`&gYB0W|GJ@@xHs#ZroR^O_2i^6rsQ*?&Qk~pl67NeSN{X*{|9}G^~ z80)<L`0hXbQbs^QDT_DHpBnFNO|vI-PE?P@MY<QJ+cn-xyjUOSpI%ux`BxD<CESRy zh)0370M$O=Z_!Yn?AYc?@i+z3C!FFXI@7bu2FO_<;G&zH-`E!(?Nm4N0clS;wf)3X z?<$Ye7{jh1ht=C>%XaK~Bd|RonMQ`a5$(_~D9y~p6I)w@!N3^j&*`7)LCP$-QmXyM z{>k@OJB~U+GF6_4?%F#7RmJP<SzIPL;({H0*OQ8dAXp-7s>L-X<IQPU{k=(MF5mMj z;0eV)T9y;zcCW)Jy>LwraIp$uqw(FV6S?FfM`zD;%rD3Pr3FCQYq`8M?T8fF)VB+K z8{#eO)^hd8k~9*!ik?BMrc8@4F0OKqAI()~F)o5l02pP==Btcnr_*nnT2Gt1%V@U_ zSf3i-UJv)e#%OKa$RP;X<EtMxAsQ#A4(DRecIh^lP8%BRga(wt86E@lNWulMoXXKn z$#5uUm>BveE%f>Wx+3$m{$hG=+yy#dLrpf5Y}7Cv19DgxC0I%+Lxqf#isQfapOGlW z=8S5~QWa%)wm4o}QZNCg(Mf?~kFKi;4CY4(PH&T+$uU2g!<bQiSFmrTIzr#}K>6J! z*b!w@OtWm6X6gjgKN)A?CEG{6AWO=Ep<Y9$F8rWQNZm9eV)5xgcZu5zJ93d1?r7D4 zLza#`gv~yvB`_XEw=Ror>S%^tL7Px)Vs}#YG5#+af=ckE9O*w}s8cO?QB4kk>u+Ox z)*f}lTHzXTzZ2xzDJ2v^<>FM43+nbcCAA?g&JFrcFqhpC2n}Iu7;aB_&u}tNsF+Eb zW>sb)d)gcAaXTKb1e^%se`%;;B}fAnu1Nbkn%b7;nIvUCw99-adqA|QP@u-rmGHV- zg!)<aXx49f(ybg^+p9)>=Vz*1lj-3P7N$>06%~dw3Jd)8_w`JM%R34gi!Je6c8kV+ zHDa%#_uoJEqD>%#Wt7g#XA5P<6Men>m^EDp9D3|OCn@d)Uv4p`)js3t(P;M|UMP00 z__$SG^!dBcZz*P^Gc7N-vDM3$7sx`IB^{aU9zKOM&M~U%WM`LzvZhs2JjnDsY}lvL z<gHk&2ijg>*riQ4C?{3$&2U0q{a@|6{xoaB?H?%xCuTpZCr#ewZTYSjJOV-y`aE_6 zM$E8t0{@?beIXIa%5-s9le$C~krmTeLK&x8nsqun-xhWa+daQiD^jCd={(*ziz3#G z3+^T&V72ZTkB99WT{2uYw)ocMMwnJn9#n&0g+y;1`JYOyJ?M>rmE-ns)h9kf8Z!e} zj!kSHjpg~Nq#UpyEpeQ($X`Vune&}Lb6$5_$8IpXk?k#(r6;pe@WwJUc4Ec{gDW~j z->qA7u>@2a6v+IR7cxeEH*|YR6&jP^Mja44A%2X_&^NjX3CGp)+z99yL@#miRm$!? z>eNM*TmJG(5BGFRyZm(}vZ1v%O@XQkPUJM!7znOC^jZWIS_8d2)-s!DX?Qxzd~XP- z?pD64b+(>(&kQ&iDd!v?7eCh!m`Bg~^XlIlmtCp0+vd$-_&hnv%6j1B)S>;-F0L?r z092FJ;f#=fc?JeIIaGrU1QK`MbqG~e$67C@n^yTJxHODN4X<~Yq6)yIwsfVLUh4D_ zzq`2Qss4&L^)djS`U%J112=qOxc*;K_yetZmTI$rb~w?^$*bj%;`#zx0hby$!pm34 zB`6}kX74+*%SXR1{i{<Hs2k4UI-cd7m*8+?_(c_?WjzZTn-gSGKnKi?q-Ic!fa-%$ z@TYr=ZJ$ffQL;ff7*@W34RlIbd{=!rTy5&$!roH&R~c4J_V3XMI+6aE$`?VpO^vqU zzP}~qF%jtNE9Y#0Z-3oqtQh%<x?HgFW&ejNfH&&VV-t*FH7<?CiI>yrx853rZ7qU! z15otdzpc9ScO}t-78K+3@v;$WN`NKVMxToB>aIt|6VOV`i^Kuf_nEDHu9x-}m+!5I zMPM2AM?j%Of)a50H#r@D>tqcT&cxVz^6lxsdSBGPyHqWq+Y^$iw#!6DX08eM)d@}f zO3u^o`=$e|NffJ5&aNANlI&elKK|W@$h&uc@}Kp>KU8sq9*FGXflBf=^fg#RP}{FV zCyf15kQaznzGLXg$dYqR%0yrz3+dGgT6frfg1}YWmO-FNNL^uT?fs}zM{hvO*;b)e zskz4Ga<nVU>~|LzADthgdd|s2be9y2FSL_pNtVN1KI^6pUyXllll}W|zO^e`zbdAz ze6Qzs)9GsX`x}#lzopjfjp~OtS8nHYg02%K9J1@BW|dDi%1NA%(lR@cB*G^Lk@VFi zGSx!Izjn5Gy(*#(+Q!W+QhxKiNm=%4tx;RaB^$yaJP-38%(LC5;Jx|~_eV6j6)NMf znL(~V9+`F-@h`}d-9NkuWTnnIMcK5Ko5`}9<y@!QqFwawhu4I<=!XYMtjNv0p%2eS ziH?04Vr$_4-og8EKxGs@1JLG*q#6Mz+jT1IMK2Y6dwVuAMR-kis7%Ke$u*tRQ15b6 zhP|-^hD4uQl~bxs41dSmS;Z@ReYV+oo+@DSAVj;w_jI5wN};@v;OFljS%;A2RCms8 zPv2$pTg%ZSU$eFgxj{GcpG`ir{Uf+0m{n2dl`^Jny)F?!mZAKjiWZ!}?Ujw?+^gNv zyzZL_c%@;nohRNK1@!@E<>)t$K2=Njf?_(0YWAf4(RN>M_GBCI58?KVhG)&DglBB} z<dE}a-2#eeTy}gU+3C$F;YOLc&phZy{@ecC1s??N8K`SI`iIj_`c1P^_i~WO?|4gq z81im=ery8rr-hZ7teW7$&x2EW!FhB+_@2q+p{r?LyX>uLX_8yAxjAePsYa<ZzY0Ep zjwPAoICgnh3ZM&!<qq%#woRe)XbV_?I_+lqi`V!EFU~3V1^7E^uC%4h6K2pacl#?1 zLnpi!&}}y)qm2(As`5|pkgpGY4J2>R&H;8b(UfIN_utGs2ExN741kR6{wnIFItl!- zq1Y>}JG!wZd9vb-#>61LU;EWKAhIRlKVW_tr%dVRnQE<9I(A0g=V@mJQyz~65cvfw z#8Ipo5Y=`;<;GuI*eAVptgpI<_qV)}k_Gq8Hd&KCIq${Hn|;mIH?NIkY$Kq04jD?+ z-ko9COW(<$4iSV*AA}+)osEXGmUOsfJ{7N>w+<Put}~KKR(vzM+;;m>nd1g8A|94I z2whG5+gX)T>E}7p_#mpcRg1-ks(kFKnV+g9ia43N$fAoJc%(&WjI^b^d7Db}hlHOM zhJP)O))o7`sVe&RVP=x>VIsOonrZs{xLY<=Way{Rh!xc|{qRb?fpwdIISI_8B>)o4 zQQ1GC(5YB<$Nu;=3f6C7FU+)lz<!~&cXjpg^OF|QJ;zIDG8KM-1;+VKE6ptLwq~P? z(VI090=^v;p{g$|6j!qo<_C`T#mePct1mr-_sUBWsk}(8I}6emH%B$@OF8Oip}7l< zrv9o*Z2hu<5jEM+_hGEjeQFaP>JwtCv41%}3^uO#S>8u;8BEYc`|2FD7_}F<_6O5F zK~^lz57jT-px)X86Agk=2A32ZiipqRb&#eCz%yQSCMUE07_e6ZnkM`|?(en;PXBQ1 z;Sc`Ic1L&6G3rA&WXrGTI+_8i;x(u}jd{}S!jLwzUF3ye2zruD)?h9R5A!%Vms4=U zTr6yLx0^Y@Xu)wW2p^Ccq0q(iT0L7}Pk^?Ab8#R*A4{C(ZTuqW_LRfR#INNUZ<0uH zM&wN3fV)r2XOg=t!Wy5ctzcKz^&aQJOzqB*E3uN8BPzJ=k(UnLma3>`x{4m&znQC@ zvx=}LELUx>q!UNwL${R3_&USJM7MD}CNlmOWotLVXNU78@;P!zaSIQUD;iizZ*BQl zO@oDmT>pGDvOLrHQ*2MtVf3I&E!`-Lyh)zrJKtJjEcRpx2*`ghg1xi5BEpQBNbtJg z5Lk?S^3hVu>Ghk?MmJ2CTX;V)93iwM7Zq!RREGu)jFV-E%F6yFp(3CKY2Uwb(W#`e zx;r|i5?rHOs1UvzB7Y!`*rXskOd0NQ9vs)ho-PCqRD>3AyPLLd5Ejqj8*cvM)$n}; zOaDA+pX_c$5Way>ca<q7s*0j?T#Nqw#2M#kU_tows8{d(iBoA@KnoreRTo{^yQ6pc z`XG0l^eidVS@h%6JX$S~Q>NUj`zux8?HA-~NH~HlqucLachvxP>(LU0qpW<m_AN>F z*N@A>0s~O@_#cS&nvxM8I^`5q5K2lslUGwbQ%KT!^hV8kJT<qI;+^$~GdZ~f@*17f z_*7v``>=}(KK9zXFNfm}zD-;hV-M;;Z<6jSocBa(<4E}XX6<wL7-=3(`rgrS3^yp6 zkqxFDU#1T}Ax~XEkD88klPYV6zBJG1Nc6lJ*V37$vi!YkcP7R?e7MlV;@CJ;n<iOk zwQ>;kic@(B%D^-$Emg+?s%H;O<(giPnRvioAiG%VPBVnuiuys|ZZG^dy^SL?S7UIb z^^RP*P9@y=4Oxl9PnGBY0#ATtEQ^8zJkzPf@g@ag0Wbp;;fu3O$K=QhK2s&T^z#UJ zKv=wr2Fip2^4<rxhe-=-Qi_R6f_Y0|Wf4*F{kr%~y0z>LB6;^6k)lbpx43pOC+XJj zTO_h+-Ya)}2O5w5hOjU-4%bph7LuX{9s$t52!1wsIa3Y7v-1>z)BEq){V8k#zrQrQ zQ+>DK62Z(KE+9!h;OI^4S_G?1)1KWisXW2t{sn7Eta8hU%x=~Cu%D!Fl(W)dJja>A zwQBaus%tyGSC=XC+t7`Y5bAw8B{<Cg-r}35iw)MoMk&EXT`=Ku`JT|?y;O^vlJ6Wp zhMvBS4c)e$-DRL#)=^-ZL_g*t#E%L{tT&wF@(25V=&h*&o)>OzH>MHF(->8#`|}Xq z_7la*JB_avoF|o)r9+u33*8d-A9v8H4AxNH6ty~f@$~b;v=xO;+Rh8d(!}5#9j$y1 z<FX<Kc>lj<-X=fKij0VE)$^0&bZPDsBJg@MmO}i=y3s}9QlWPiM+3|rCEz1-XKWDC z{X$7&v1Uh}4wXYDhAiVB-D7YLXjkBA)EK|Aq8qZ{iiyjPesi5`4`&1ntl?WnkipuI z2nXP4zDUF`Jn+{5^evBf1KJI~5#&h(ZXejJ6XC`@`Ml63W8LAJktm2B?v+Nqdpejv zrt7v)|D@6G-lihwk}&*g2}ta@z0@0}(VER6xJV5V?cVeKc(4}UySyHWKAS1jmJg!C zxcI}{uYqQBT}5wV3#2stSU3n9Lh$yZJGz!%Hvo3L2#jaSJ>U1kF{^0*#1)t0CU4cP z!f<?u(qUyR_$iv~KiPUui`y0i|0pq^Mt#Utc>>1zTDo=@>R-L%4D=5<2GiXFF%6wk zOJU~!6MOc%^B;!M_rrs0*!%`8%+w~IKx(C?Y%MXH*u}|_^sA_pV_A%&LzDl*feNb? zHA|U@K%$ai)UHC1k;EgMi0F=8-^>>Un2bLz6TNg?aenrFTF$OE?O16`qXQkK9>CB4 zHDo^V?3R$0pk(61#O2~2egwhdCT}z2M<nwo9DG;*@yR)2ok|R>{91@*<gzI_<n7Ba zcbdDfK;4jER&&Rk8RC9eUMVc61ONQusKG7uBx8e#d4HJ-%^NHVT{5`&)+DR_`l_$1 zawp$*fUJ}_TXUy>4yD6^ti9SWnc7E+O~1vV+U;rnS1aD_xG7eMh4QH?CvCRyd9^*9 zu?=kb9u8WsnVj9zJkBidEUg0ZaoR;Fhc_uvp``q@Y+(?OI$$^8p3LJrt7Ytu(tLmj zW3zaS+kh@m@YW_5ME56Z7WPG`ns#l_i1VAml#-IWDWkbKcW?P*mAno-IZdwM`Ws=g zfvif}-ualgf`07I6q-h8OWJ!_f-<-^o0#9?xP|1>NFm(PQqD7uy3`1zXE*bdMOl5q zBqbO{F}3?AiH{Vvq>1Oyzv3B0t@9lAB{;y&E=}WC|LWF13KI!`Y`cE;Js<Yt4QA{^ zdg!6tw6pUhn%~6SU6>=P4oW6!fS<|eoh^ZaITDO|vS)mHp;XWpmqW1hDSv`{Fi+4C zh)%t!&<wl@FLr)UYnnGRfIAx-+HvSeqV-~xv-xTk>!l&DJ}us5YqGYer0e}PN;N!- zVSas&d!rWRA=$Z9Nx$pWP!-1oZu>^OVo;L7du_rnpvxH&sQc_vU4va4M1VS$*#m+! z$BYk|BHqd8v(sGpp?ta-ol$<k^!74m+rHfUJTw#Hxgg7AhQ)@qXCB&4f;AY~`Tc1v z3E=;GcuDoH4W06t3!ZTDr<f-20jz!$(<GktBQPslQ-adu?*J9&)Uos}QNS<Pe^<~E zo;#vP1<h|iod*~)pkF&e6JNJ|Uy_42{%RVs5u_^is7j6%`2+aWq}^%!Q)vjo8J;tu zG~Y_Dbno~XhAGa?Csu1zbm>&V&u9Y@s@EbiDwmCj$%RtepnBbj_U>Qb%gYyk#aM_c z241}Pze*Clv9ryG=12LmL^`s}<LMU+wcmoOI}P65l3eCkkXpj~P2vd1%fq{0WLK#2 z1l3#)cZ9=GFcj|Dbiu(EeKBoN8>&rCT6*F5W|5h0DlV%Djp6@%Py{Wao3I*zK<@}W z_&i<Rof2Hpf-yIl?6Cou2f8)Wb+~k@#0<l3CMTEQVL^_P-{B|tjor+yXBzA~W(<zK zgwxm0bVQOjvx{PEusqZY=$02PB*VWeVO4ysm6^rFYykIj2D35TIrIjmo?G>sghyL4 zoyMuL`f6hb%ELku@)oPMeerA8aQ_<;q4#>jzyD|!5hP}CJ1`7rm42-e)-+F(F7)kD zITIg|`<c-2U4(|F9+KIoO0Byi#yz$clVAqvkvV<rpNF=61kj(rYy7uLafU?~;VuQ@ zLL!oG?SN(zV0?DV;YCI4@Qdu6NnEtH>B`F}<6!yv)q36Q_AN309u<Vw&Z0mXzZs?a z;}|+s*lV%Q-yFQ^1%>1ZFpAn(MqAkyYgjpLj4CL_^tL`|s!&-|=-04>2Im`GG{;lG zqxU+ES~CAJUrD~WjP&O=XJV-Q?6YBgAQB^WrUkM3evD*57*~#>G`a6>%1uSFGu4BW zxb8nTmOp64A?Y`PNdnHIe<?62&hHd5HVG4^(ssY^?ZvCtmr!f92QAkP8Ypo#cCC<L zNL)xhz6nB2CIvM=NUl*0n<_PV&u&`x&X~hB+paqo!6ikaKY0h>xnCUosLAxPAAH+2 zfH<g?>q*hzw1dz6)tsx|9z!Y}$v0(vjpGG3_`fuG4z|UVO}_%wJ?rce@fqZYfClPe z&iKod{?3KN?oVD^y?;(!>z~o}&6}>`Me-@*fLjDhwmRn7*g|t+ypq^<m&V8w*=MU7 zB*Y7Jutn<4Ex}Rg%Jwq`tybSz#!w64K#I&I;}u;W_i40`{@p)(jWB^!wGUr+n^Lus zxSa{4mJcVA9(z~1GYu)gI6MxD<o`(Sj~EjtzOYbW@&9zBMY^*DWvYH3myUchuqt)` z&hc!KZU^D>M^GTN@L2L~XeD!>nZ@g6iC7bAPm|e{{Sq-3YO>@GNTpVh^mxi=!)o+; z+gRdzsbP2Vu7Bqx{MM}>4SsyNPuS;zzZr$yYSAL}v1xJ)d3Tee(HbQMd)Ao?pPK0Y z$<mb6{sWfXj@OVU?gX2<0}Ft{J84~{h~Sm;nJg|#mN4esuPd^_=YLq^hz9;Z#z@IU z5*a&DcCug&=yin|_cw@br}9LJGwUJND$@C)1I4mPS9ps37%~Yw2rmM^G4B7OpWLy& z{GZ(=^;_D7rI0ENnIYgSL$2l!@c07sWKZXHpn-G6h~<VLCpt~PF2%?M8^(6#7Ra;) zU&S_jCco7=0^+u&wehU8S~U7+N15=6smyewGf!i19LGmyNd)ODCNun9wnZ9SLBVpV zl-}58!Juc3df4iQV@Ij3^>v)rfyWNks<ygeA|`K>?M^Lz3NIY)NhldjEQpr8B}(W0 zVpw5<?c=;;PO;RQu=SR>pg%+JW1l^k-m6_${gqc$C1zv&yR6vUTJLUNj!?ED4h4cy zdAVx;l__+jLuo;<DSMo>oMs%a@>*~&(HK0cQV~9O@4ZhY;qlIrnZkTZiq^-u<Iw-o zwX}-sh1Bc&X+`QocMkTn4sMMZ0H-7Z`-}L<+b=J9MZ|t`#M+sv_iFwH@1Aa-^*0ut zZKE8GT88o${{c1Lnm!j$@Cf(*0ez+#lRS^U{!uYdcPY6lQ5vJBr{I4FP9pewf&yRM zM3?N)SsKAOW~8v6xaO<rB=*`vdA!>B)su}PA}aQs2@UlqS9sNvCny<osSnPPw9B?& zM%eU`^sPCHb}#U=kAkMMSkfA!0~Vv4E?(4kKeYcOvqE;fvgKfE70z+KYcQBdF}Uq& zGk@3Ciy4;J9*qsZJ!Q*LQ@8g@4D}=<pzYLKS=!n(QGS9H5D{Zf=#c8v?Ch^!P12|j zRtc|^?@c6F&3ZWbP12wmfP4+yc_3`Y5epCBSH#E)|6q(G;}1IiIrFL0FYPiYAzxz9 z9z@xA4&iN6;ao;n>O7H|MBKaJJvaBRT3DK3KnWRFq^5~``-}3ZXFeF<a>x-Z)=}We zkV1>m>gj>rd8*|MK8tkc<_PAqT|e;1_-kFchP9IT-#l8MWC^~>>lA(SRUgd#T04dA zyFT=@FB^W;VxK62P%bJ!)6MfnOj$H*_3+vQN2<G+<ep5y47)6vmVL5SP&FFsa<|gR zDCz+(KNE2vAZA&klUngT=EFgOyaRmFulufEqiKgb+U1@g?ZJk9Bx0l_I%be;DUFfd zg?!`$V)d24fY285L5Hnnvu_-+L8R-0X)!yl3yWp<W@qO`tZTC)52QJhN<I|zm6jWD zFu8vDW5shbwApF!nOmc)=zI7Rm0Ud0EgABk+(~JrA%RFPE$Yoew#`_4ke~wnP^Mm6 zZGb%<V)Ox3hm93td@mvMtP}4z!h7EMOX0=ivl#W&_}-9a>iLpNRXL~o1h}oJP@E`Q zCsvcEt7d8)Jh^QdurHhT>1g6!;%Fon*ws6%Rg^!nmKDt4R3xrKnHD5f@u((wXu=Zq za|Ea)bXjGcqX+FfDX`1Fg19dgEFa+FjoDWgnw~fl*&5i-w@f5oNQ9#RvNU9)F=yN& zp(4v@O8gOvpX+^uuDIcGzyDD0crx2LWL9v%l9sH#fU#p-szmfg`pYLD=6*{UV3-18 z2A@X0jb<YqQedtZO6t0TY8$A01)hCud!Tlm?sq!zsD1~kv;i!}H0ex$9wx<{{nY{o zqhlqcC3yY51v9DsBc3x5CiX8jR4~Q#qeK|P2O0gRjRpW|fk$V|)=tciktlrDtS+{Q z;M?dx8U4zB*IQ%VVY9yqz0`2~u!+gUfd{WIR-L}#k3aNnKNiQS-RG0wH~%j7_#J89 zye8Y4K>v0-^GoZf|BccZGhs{ww1vZ$F{&?OkfKR7Seb`q`x&dL{sO?_-nY=?nX>Fk zx$`V6=aTjeQnMi(<c`^U!l_vlnarDCJXqqF-dz?8Y*IAmbbqBve(PbQo`=c>mww54 zy$W$oShziv|5$^piS-M<==rj|*eE6Q&rSVhOj3L(S$&4W1SIf{h)Mg)0j@c9*LxO6 zow4y+x4)rNOAX2&C<ApJjzyE7yZ}6$XgOCM{Pii5@{G3MVG>2%qq7j$F`dlA729*> z>E+y0Lf6TCXWQ+WZie?3rFjYDjx6|Y$NxmR+gw|;rgfjEQ?H_*CzU*JVHPq(7A(DW z&nQEw*MBqZ5rc#mQ>Ux{bPMGYw3cXsf25s$|3i2eHE~;eu*LDVb8g8uUJiF_!T0N< zzj`m=4bUb+cYid^D2=Tc@b)TZdqFkCpI#^4HGP;>2M?2(7yF3U2ncaq5bh%7`GK3l z9Gd8ZICzk!`54M2$us2f^GCp@A8;~(fHG*VmuCfU#9%&lc=2ac>q_?K3w~B3-8qkJ z8Vn6&AXTaI|A!VC10m8wG*)o_yASL39Qt~`W^KZra;ecVW8Bk@U(%Z{`o6Z>&0kcB zZ2UeSVdU>+F_O%6w&Jxa{~*=9kr08=)SDOH#onzt)pGI7N`%V6WdEi_6vI&}Xa|nT zuSArb@RM%sW@&Dun<)Z5zeQE}rEoaDW8F)h!$gN&M^ukJi6i;TJmfce#k+DS4@NdL z?3kwUxXA#h{amai4F4i@xEn6$QSqEc4ZT{2a~IgErsFh}=vwG%bz5dsYIO8M=pt1? zuqHUxmV~=&6ry>*)S>b!7hIu-XtmU?;-sLOQ#1&3byW)~(<t@-Q{ZdeIkJkr9{hFE znd}TfD^Hz{HGi@{9UjQT9x;=pX2VWtBt9`ae~G|oLjkSGi82*ItP>Igj))FGC7EZH zULRXG{!^!OZ{O+Ju2)i_IfdxhcNcaa_tzjy<PgGUr>(f)%aK#F3L>u}+chLn)2d{q zvlK=2e1FGDpJ_F)PHxVjZ{?23bt`4IMFSBlx%D&OA6k@Fy7<shx1od&Ls0-v9VDj0 z7}>yi<5O9X!W9!(tJL_al0B5hCz#skB?|sX2;D1SC|0p-q&J-M@6Culp*CSsPmH)+ zEii?)k(@5tHbTu)K|Gz8=<Vk!k{dd!5@@8uhZ|RQ<URH0#$JCrP?H$3I)n%S3yhNK zNr@@|NsC3l!JfzGjrT6V{N_X_3|Mb)UJ@8Cn=Q9QJ-_2IY^*>jhbLBY%hCp<!Y#kN zFg?A8oZOHd15`Sk{mb@g$REYL5t~CbqmkwsZANx%AugNrMx!cK#%2CFF%UmX)Q0oc zl2tjcEGrL1>Kg|h4gE5@fC8=cg==RDNP{cs=lQl`rd9%{=q_I8*~F2;%ucmpMo0zP zjkn40bgZfNv%MKxsFyD{xLuZAXTarPSHX!p-NB@L29B`lfvpbag_K+3I_ZTE2q-$q z=$E>V*0^fvo4lwwg^Hs41YpU|9VYbUb}ZawT;Q#vUc@bE8SN@i6_15mO}h}!w1qI4 z1kW8N4{OK7_QZ50lz%bq-dXpq1$s~uZ7ApgKqM~q;$e-`UL0Tv0IM6FLaqhWKJYjV z5>>MEA?*&KO~`q^xEcD})Ve>NYQw57?FhwB3Id<$QrqqetUk>lwx1t{{|DOwJ02TN z6=Q~d7*Y}O<u!-Tw_S~2JwLpj-L*VFC;#H7-;sc=vtjA;iOG{`S)JBXbSSbNieabo zaqHnS<_GcyT?6QV=8zaq9k@@40)YtZIYJxhUL%rk(DMt5g;M-zWG5ZOyMFq`CFr~d zs6((c1~j^J_<p<iei_5Fz-Any06eU7`Udy>gJekuPzO7!ilGfDJ;DTJc0yWnF)gFf zKGX*{<nr#wdk6#>F$eKnIG_G%i>9drfTkUgj0{<=QL#e%y|XAz>f#iu!2j1ZToOB7 z{i1|x^2CE)C)tE$Er|(JWs?6(iWgCYXra0IZdA`;5)H-Bb(D~P_6vU(linv0oj;|W z3d2ul<Kh70jCJnMkRcZJHR2<M{|GJ;)PkFxAn8qn8yI-Ej(Y~~4Mze%9txoXM)f4% zbg8Ql8a!MF2%sGjcy%-BRS{oi(8_!6B;dXNAbML0&*dVE(}-<QRep)?8p~5h{$<(o zP7FtMMyqKK^_*GooO)-dfuc*J<I`huFZoKz-UjykD?(W*)T)>L2QuT1*Ka6+UD8#% z<$ogVl)&2psRPI=^@4NW|1O_iejg_|TvpZsA=37Q%eeZ1I$Jyc^vdp-(!tYZJ;p*j zANTHF5shgCI(T1i1JzzMU$sdU{ha9evGzQ}v2bZx^PcHwg`1wV-;>mcs>c;CJfbqk zdMy3%BPI#Qvv4eL1;vkLB!zN3L5u}iz`eESgc#1_!wq1Z`8shW?bh1b=KApOG<ELk znQQ!}uSrqORP`wFz|A<M1_*HIMeKa~R^E&%eTN=Jv#1wli%#va-F~_9ZD}{5INIr^ z{D}gJ?^pd%*B6lRG7P*xkzShoZi|=v5eER^fx5rj(h69=Q%y1`7GovsI1A$psB6~> zCfh&|rb~*V>tg>@J&Azq-Uz6-JdXBJ-AHXxae~>?O|nx1a~$_q2pd`meyQz!1Y#Bg zff!hR1nNaOF9YZY2uqc2gl-MCIbkpDPq7z%^jE)uRBR*`R~5i!mlDuG-x*hU?kPyL z)ABOKSLIkGv+euJ46S04!e0FgCSPlb=Ny{`*Lo77=h9QZrp6eHx9_DRPuj@tLD3-o z=k^~QXwnz5jSgl!YDse$ogk+vSAzQ)%|O^aIO<0hHN>6XY)oNuAlk$Qp!&dc*I(ES z<i7ETjSP8G;qdYtL;kpS=hOt=q|}4XOMbn7SPxzXnqOJJ?mc}*T(@zx<CoP8AhLhn zgX<%`kwA<Hx)=5eul34Y01ayUQL5LoF}i^9U$Irw5FQQ>h_}U9&npRoO>AFwAJ`Q~ zlfS;h8`Zv<f5LdK=ae|u^P|;i%R4f93#ZT2GkAXbA$vUA^1kv}r3VF_=D+~L#*vMJ z*yTRrp6=lN3*rvYY~Xj?2;vBe{4*bgjXhxCZuOKP6;QwLIsJLmgct_&kOP+|qAvy@ z)PSf|{}EK>Hz7WQQs7emi_z!_(8f8TjP!a~vNzI^3+o7zs`E4Yje|Wx<}m2L@B6g# z_%R5i?VZ_R?`@UxAQPR>W0KP?$SG>I{`6fcQsKmDpd)%QkzV5&ALQCkDjEM&&$_^u zEX%1CFDdHi86hkFyMA5WUbL6f&&`R3i0Yu`ALbA5VJ@A^iJ1BPx*zLh@`2L^dI02j z(K!z+;+ETjHsL@qs-At#tKF1tv-2y39Dj<>D_{X}RTqn%+~iS|-+T$T)i7`fiarX5 zI~dEzlfZdHO>H5(;wuynneS{y^`T-sV_bj;NlAZX*n{=_%^P7fT<<yWdf=R9@5p}# z_rh;2#n)7~ZS7pqW0feYGe<hzxUb*%j!HjpBZXK?_<i9!O=|D+7-H?rf{h1$jnCFR zXPpl((<7Q|pY2a42US%Ke9PU;JxU+;%>7UD763|PN|8vy2qNRp-hGIjr7ZBYfXlrF znD`oWsJMx4Iz@!)x>b<51aS5Q2cEUG-XMw}4Zm93f8jV8X10G24Ku16b<j%KxQiK} zL)?rs#CRi1SAq_1&}k^T*3U<sn+Q7Oix>#1c^*bVg}5P$Vx$FX^Ct;TpuE5%<4ux> z{qym^l83Y=yvdLV9J&+ujvR~p*Vw6#|JQ@Z((KXbefcF6L&9kxO(J)i*~D?`zPf>P zPbCw~9#iXz?fw{h_6k<WY&7I<CQ2aCAA_PB0578#upXYNN4yJw3p%~|4PxemY$0S> zKwLS$C)R371=^Ivj!|O+bhti7CEeO(PfXmWBXkzL?tG0Ql_>rx@4Zgr`9PK5eVc^k z&}P7`hVmNnrT63j*tnv*hPVI|=wLQ+^ikO+6j<5pl(ue*{LfnO|6)P=6W-u{S~3J~ zDUsrsu<MhAv!xcVbzR&kRug|$mO!WP1a-u(Gu7NQ##FgaGk<5jzIEk#8upJyRw(!F zu(f%SBU|NCBQ*!1zPbOU_8}mMu1M=Wdf49!AqG4n+RMOVTu)QX?n6A4&($<`$rF}= z)@YEgS(L0C#Hf%#xK&DebJN)$>Ghf_1~NlrCL*!)^B&?!G&j<Rg7_mNVgOOkU+DM& zl_nY}WFs?7GV9c|%!%)$88Nx~9*x+nA*Z|C-0z-OX^Z|}VVMw~w$(M)m$xlW9Bf}A z%P$u_po4ifdR{ksmQ>jK3v*qs8XF8e*0yB8dM+bJY%%zw-s@dSYYv9D<Rsa#iN7N7 zAk0NlydA>09Y0Yg8zCHI3X}|#lH9S?uF}t_&-JMx+hNV9mcgI*P@n~!qRN-{=a3$a z-XsL$kdrKMJa(KUq60QIK{3WZC%lpQ15WlZ-xu?Z4^eI)VhD~m5MWWXhh&R4G6o&j zQ5{m1X`foU6Nz{L@@>$0q4VF9^Za++e#n*aEJkKe7}}FmtX&0?B;I;OtWQqi_N9Ua z{{w%2Hr1>BLt+KTSI-aNE1LzXa>*6OwR(X@aj&sTTNOWl?kGquXVhjtWZvS?P39YS zRj7L`kS1s)q1Lld>s!N#v}=bKknBbkV=-|Ib%f5uwkxLec8HX(aEp@)C|7UQ7dvcP z;7muKYLiZqS57MnvG&6qRs;Fs6KIjB8=(W;Zn6<8Nu8iWovK7krja39Kdr>Gtr7XH zGpk2xGXN%P^RyjnyXGgVCBt&BTe{Xapo1i_cIr&qUa^wWPi`L^q>A_J=A;(XzZ!ys zGI2ok7)Cx=DSQr#-*sk}OB$Xn@GV>kRKK4vs?!U+vCD$fXD+aiCN4`}i8VJKYRh1Z z-W5GG0M1RQK19>X%_i0xj$U@>d`{zPDILdAQZ_3ud)*S>uQOHZ>Iw#A_*2~jbXOcY z=WAX>z0}*NDKxnC<CcejJ5n+R)Hxe?p0iUVdDJ}ghIl$UrZcV9wJWBU(<0&lC&|t< zY>reb%sbRCMe<w$Cp`jA)1)J9V`rO$xK>B~{?rhk6u<C9n1<r#xr(0_E358Et|F98 zg$Y9h#OTdW_X3j0&V?AW<z9(-*crs^-oxRFV-twEfJDN?CSdyzG!A-VrCR9~7fSzw zWq9J&!iV?T?CT5deuWC;OUcqFLt4li5t|ha{d%O$-`a-A#D&TNtqL{etA)C7El!D7 zu2VMI_w!dE7v!{`$Qi&R2K@aMSjuVgOXI^%p}CQc0=rfTJ88LYLik~PMR;{h)~0jd z56-MkIUUE3KBfLgLF`&xLNa3t8nvlto{Gz6w7Q=Q5=dACc|>XcSLOSUUy0L+v#%?e znKQSrKtA>`2g8{i*rXZR1NxMOl=|tx49z%!cXuvnAHLZAm$ZwtsFa!-8RpJe!(T@K z<i-24L8ZS%W0<Vzvu3tk?YssOTxHMOxg@a`7|r?*|4d!3(iAS;pCk1X|D-;dI*!Xd z(+fS{np}zKnovxsdH`68SWyj+QeY2HlAg%ji<MTfnLaaF!Mi>EH4Q&>W>HMglo<-P zF&J@D$*}4X9t<Q4<i_7uP8r@&ja8);jXQ_-EkZ%9P-?%M_k2t)=@%%odL!)!UH6ZX z#C2AZC-IbI(Fwlznd|JUZJ&(Kh_N($WqwiL^ixx~_Pv%D_(gnucncjVUlEoM6(?4< zhQlMLYlK^-t6Pk`hx?{35t~+DdVcX$Xko|~sOe`6ZWWXVLP!5@+xKm53g?b0tty%T z>liKjU$tg^IwSgngkOtIcf>6nBx%2L>pb@{Z;ym*;k4{*)AEHR2IpUu(eY6lGogGv zlFL;}Dt(r2K+Z+(mAc>`iKRSs*3_IQ73ADUS7!~9()ox`-(OdFLVm-Hb~EO|{wO6w zw&F{DC6s1_@~T3pSah5VzLY}tS)Bjn1%-yro*j|9ltRV5f>VWSp8s@p$7n@B0w=9Y z#0;LIyadvNZ!Ir>Yxp(pR%&*F<<!x@;8d>HFq$k-;>n&6aYw1)E1#0hh<?TPyNgGi z78r?OIKVHTd6(;tx=7RDKJoLZHxctGt{=R6ioqE0yHKNRFJD+h^Dp|0tc}ZNzC~*8 zQ|KaUXK<2(FxQM*0{g><#SwYMBBT1SJ6qzy^%u&c#aa=dIS@%BgPtSK>UL11{=2d_ zMMPxx6W=56esaa(<FCf^@9M_YkHgfF$Xn+Tp-E?aOqxkZBc7F!AFwm_E$dP{g=T$1 zNkpC5>6l42U*c86szZL4JhE`pZ>XVoxhjC*QdhKJtWgtAvL|vK&{C_SpU~&}((XCq zrr(vob#7-`{_XG<4*lA)>^~WZTP}5@h~!_hGO>m6CSNL(q9Bs$e@&Xe-rkty*^i8^ zO^Zo!#d&N#JFjEN9R6imnu*GI@=z^iMQL#$BUt=<YS;pydb}QxWTbm5b<49ajLONd zLbM7n6vgGZ?LvAlGRWxIbUWJhq65t0mD-MMFTeRniAAB5`QUdwTX`pCgGAHQ@KFRu zp?%%{{*~ilG2KEk5tXFk`(VnYegHj?{btA5KgsCJS=Z!W>Vp-<gJk@pui~yx?&O{_ z_?HcBOe{guv$?TzWBl*Wgw>MzHNKVOPK7>+lZCo~&*z43QnC~Moc$<Kbv3b>VRKKT zxKjef=#n`y<~)TAg0b4OW49zlhS9sY2X&4Z398;c;B8%@j|Pn`YTTU#Q8Tdc44lD2 z)vtf0qtrS-p;ZTK&1n9B{kid7luUun{HvWKT}NU&jl4c=zQ?G(JFnw7gGt=wGowY! z3&|}KXllq3B-#H0w(UBuYpDKDi#g!@8@2wTf96NS!^P^{wgdyhjV4Dx)cT`X+IwOY z{D+Av{J6yMp_%Ykwa^EDDGUGJS#839YAtj#43x!~WM76D>0;wAG*CF|=B)oR^@Ipj zp*{HC|M_H+E%d2Mq?gV|JC&1SUeQSur9!b;F-3Zi*<tCI{a%9`6f7=)+&cMPOa|e; zJlG1t^d*}HKI2_xFn#Bih3v)e7c9l*51po|GL9H?Y?|zGU$4wb7RlJEk0`vs=T4aS z6XVpS2ICg;ztsQ+^?#6;`LKE9cc%W7_=_`CrDJH&Bn;+mZEl|_Pv0MwBkCLIsHJzt zMz3C=LeFkcG=&4Zx3BU|`53k3$B+2*Xxq;}3Aqcvu+Pq?w-CNjR^)d)ig42>uyP1b zp)GPk0mj_E6TqrFoBAf^y+iO-jD>EGfTawCmP+YIC4GV;HbnG8z3>H}*azyF6Tg|h zE`?7JP8!b`>MsbvQbXt+X$+W8Oqt*~Lb#VV1kvQM(5^u&ia+T^as+X6i9<NlPjGNM zyzwYcQupU{I8qz?aO_|RD6Y2XF6p)V-Wt$0fSMFYg$lYmG+LZ!gtiy9U9IaZELT@9 z_i-Kt`k=^if@-1)$1~ZmuTUmW!9i&JFkhxk!h4AycrB&5Mt7^vrx*i@G7*2D`_$`e z&*BF6ug`^p-zw6=R$mNI#zo=(i!F7|Qz4fUsfMDuHt{2OiZ@r2v3RnuX@_Novr0Wg zE40KeutNu93nky0ScvK0Yeq>T$IkvlacyOuFw1YgIvFNgG2HW34xs6pFnKGH4S`Ge zm`)1BcHdMRs0o8<E)526i;Y-gM18WTBO?aH(VBeQ^1!&)(0d;LC*0l&vuoWXPBUh~ zO1pss(E^+@*%6&bf1O?UY1{4SCkg`CnrOyxZRgM_1g(ajjYVk(zEWtkpuBI%cb+(u z_FY1JxzzyQv^YWSyHP*Ys*)&~8Vn@#Uyy@XhZ=pt-o$0}5?HvuF@Gz9)@InL$_X8P zrR$Gk*#sZ#<r27#MN}03^jRqII`AUr2J?znI}RP%;C(@&gzi@S{+y^-<m&K^&^V$- z3RGd-f&(RCqLUmPuc}a7J-oTw(xRa~QP^<&gdzGsoFi3hh3i^aKAjm&UFEx@QDE}P zSMoIZ;cOeZ#b#)irt$$&Arp|mO6p=F%|Pw@XaHAzQ;eyvZItx5V`#xE;q+Y^pBj|{ zB+?(Osf$KP&(<eU@WisnkBXnE`p*q*+Spk>_$a&nkuB0~(Rk(WSv=$FN!9@Uz$tk+ zHzz*3sh0g0s(bm-?(da<%f`148ic5P$thAU+_OJ)Gxovan41{3FOL8@%d6rX(C=n* z3m&_Q0n$P4Dd30|9cIB+ujNGwO|6<)I$7!@a)bf${m?&;Em)4ASNePbXl{QRuq06x zs!@~Er0@TYIsUV?Sweh;X8ct_fU}J+$kATAJ03UhYP{BQ^_^Y}xzO}`Q>VI>*tBpH z`vpdP-)v)o4!1XqC+>s?M-=}t6JnW1fXrqL`R-@@TwdGL<y(6)=suuz+xa^#@i90V zWU+e({jS$>Ev0rew;IxVwibV79^1GUXZ`(qCRPP09KwT-#hyDIbCk;%MQBEDOfN!N zA_^juDr;35KmN#4!-{Y56_!#-;ZKymlRxt=SDq>)I>yxHcaHlDO=(r<*~U!uG_2*t z#uFWrrpQcg@O{oqW%F#?Ok0xs7WPl8ujcz@Vp7^!<Eys`jg})#Jgck&%Y0vZlMj`! zE|?|zVr}{bDL&-KFT0<tpIsWICu|FKH)Lb@t|So&(t=B^hcg@WU#@-9*)}jrf6n?Q z_Oivtz@P-35|bcuEhe2!SjbVjx5Zm@ol>50l|m*QnHU4LtE&Xw)mgrB&r17hacU3I z1nCQ%u}}Kk;|{E*Ls@Est$epG<9ykvA^nfhwVq_oluB~)R9tSYP_`(+0TTI)oj_*T zAGVS;sl{jVhHeovzr*r{`pnsC_6;e1M(8P7m23a;nERZm!9q^OaIi+@>R@oidu3x! zvqVuLtha~C^9C?LykuAPiLQnZvb@M3MMDN{H%pGW1r2H^DHIfXS?9lj$-+nOti+8@ z8abTAG5(y|F0siF)v?`CChM@d$yX|HF5mNsNy^BfPw38iHs)o)qK;P+1cBxmRNB{d zCBDc<h+8?kcz&89I3?CFZuBOtj$U;3t(iRCxo$TiXuskruI0TQaOXD2hILB$G zH)P!!xzMdj?su>lH}O@!3||1{olEo8x;gv2M;W)!qLfL%wQXW{A*Z-qrYubA#vk%& zJ7$E7$Y`R^YX+K--RSGu59Z%date30Y2Q<wH1eu}cRP_u^K4`Z@4_zD`7FkiHR_&Q zN~2;@X@ev5df5!4+8IzG1+f**y({t8TY2ImHSJ3G4QyhvBP%T6{DkRONiwnqE5pm2 zb=!|V1U;ohQ1$T@=DrSGxOZv!bu?1DyOL3mynTmtH`p+(CcA4tow>|_*kLQK8cuv& z=1k<z^f4P{@j!eigeneD7VjbkjXpyC7<N^rZQ9s$1^hHknk@?aZyY#Ew=asbIL8gf z6v^fw7CkR<p9Rec+au-nT#DsbR8+FQiZC<Wg>hL)07$?%0y+u&#ONOX(}x)GC@R zK&8^#ImVf<_3exHT|$KH{}Q%DD6o$?Td)M};LdX*Uj<OJ5hh3a$9%6n<g}j-OB3m} zF&w2A(WtqEG0g!a4(Xxo6uu=U$zfs4v~}SNs%M#Pct&~!+?$rSI#cRcpP{i>sH()C zDmtm!?jaiBTdz$mYsNsKCDPfr&o@2#Dz2VqScz4|TE#evErcn7mhIaF4H)PqFZ1}k zZjlx7`g3`t9R~bY!qYXq>ni`5{P*UAho_g&c29Qr>mSy_D~Uu)&$F1t`eWj0X}DAF znK_fH2HyQ(xM5c4`3~>92dPe(bf}~w54ft!)S6f7-6+{-esZS_4sr*;xAuDA!bby> zDVC0jux+=|-=^-SB9S2NZn+vEDvKXd?+-9$+sb^*Wu<5E-TzRA&p@266ujyrJ}Eew zLmlp33j2+D{oLcf!4Wa@dn6yn?>P2KH*{Czcm5GE!jUs^$5AywXmd58_>VY%+H&3V z%~Yl(dzI3AjgSre+~LtM)c?Mydq^T@gxE*504iFc<4*lSGh6gp%`%;?9VJo)fpJ*4 z)z#TA-H}}krF5Y4_jyTgG{L4&{|2o`t@@^-jbw5P)<p&RY@f+A-|HeT+Mcu4%PsQg zXD~&Hj+XuEi$+*KXUF!4tWCQiz91u8o>SGq>ogFwWG8@JK98JNW0_`$C2=*E7>#F? zF6f^faWoCPG`Tt0KjAbI3c#}?**yRSWVR)ks5|Ytwo^w^&Fk^7WfTu(B}K<)vyX6T zsT!Az?oH1RTTdqEugM{$^&OV#C*}eJg*SL|QEW+*FRPu6zay$aPYVQ6SPUu?#_@#+ z<gP&C)~<+|A`^F<{^7hRasezsvW3Ti{Th)p#BL0zS4Y?-O%THn97VycrA$FhPcMtu z&U{oUWtqkLO@4gX1EW)N>rKN+0d9qp9Tmlz2)r;iyD_Jln(%QIp!>~=7=D~CJ;9qu zRG}gxe79n~>viI<D<1GGNlP6XG9Fi<T@gkR-yeH<gXwj%FAG;SOkg8q>Hq3kG~2^- z2^upUUU-)DW%PRmA<(K-RiRCl_6O};=>N_(aocW*rjxNPR$5qj(r&yYuvz^Hf~!?A z<g6<A*SFwW;$8jDeK!s#^vCQEhpk&tdji8f_(D}HbHIc2>inVR-_TM3_b*7(8X~Td zZ3f&3aYsVcW`Ac^ywoSBTU*F+q-8Q==(wA7eW{`SAvcS6ss2M@0ML|w<E2y9W{ax3 zEN%OAm9Y5Tt=;kderL0scvJd+%>g(>Ux=Ncm>eM6eOVj-hpMw|i?WT{_N{;jNJ&X| zmw<GPba!`4cjriV4xQ57-69<V(%s$7z%Vl}&xf~u!S(H0+qsTo?fZ4n3)FBK_~EkF zj}i?*hE!<nc>Y6bHQ|O==K9h*R(wDp#mItf2~NJ;hh#xW09#utzn1N;(n59YL!;>d zYNqg+{_`y;=~n0JUwcRz1^9*qfgW>9*rl0d0|ivzSif2>PJZI2>{rp}B`NfrNLf`1 zq}!<F)AkKi-Vgzuon29$m0FDU#9g0$9aX83+g<QW`Ar&4?$fg__+D8qSARfOlOfDR zC3OfTg(!L_kclA{ogSy3jG=z8TbkG_740@JdEg;9l1i8It93}86js77RL3d`RoxTo zA5~-_2Wh^RG*)(>r6YEuNEm_FuwQr2NSr%)&|=*LkMSyjmSdKD5n#_ZVRt9S+&0O@ z8e?{5U=FSN2$1or=b`vhev54IE&9PfOzCmfj>ICS+vkr-oE5~DIujEdV~QKjvz*rf zHt}6&O?cBM#OHJoq=#&%ALa?44FuFT<SZ8GXI;0r4$P0XC7dgTo^IS+Wt#?yZ8N{~ z)WKDIPvPYJReQutW~WU@at|#C76-)XW&-oYr_Z*G+R8uwssB=48r`_cV{&R;+j`8z zRB@8lb*vJ}_-~HYHlo<}&l$zMs|BqZW-?dp5RQ7?9o4Y>?FHtv?0|qbX$dtw?2oMR z&!zm;06Nf7Ey%4>%k$eW#J{UoB8#%Tw}$`jDOf5ntu=TLsZ6^TJ9;cN(C1S({bN3r z&X&+vNg4CQd%fxrpi=<`Qkye6pZWR6#U0m;8EGE{7ujxiQW^QYJQyXn$0MOXy6~A; z@TcI6?w|MAZTt8YWxuga@HV!OsvlwjxII9zd}ppce|4c(qD3YAmz9(6b)$#BxlG7! z3=|NuWjUV?f0JD%9b4CQL)$Ya`dbxI)_E?Anan6~=wVI2CxX4s1O<rbGaZ_!5rM9X z72lb@`{;%p60z;*YL2SyIIz;co0>mL+Z~A{wm88J9g$!19FaR1#Mf=L&QpNAnESjQ z!hcKpVzyLP-5_Ic3I9WcqW@UKrAd?`HClp|UT*rypc-X9zX|G2TqOOLwqilV|F-Ni z(kP$4t&$3{6(E-xN9Moxd-;<mr|&iyxZeQ%hmfhJd#X`GZwMe_Y&!(&90(-Ns}XW` z(_XS^3D1bAV$!EiNV|Kx**H~J2b7igKhyCWr8p6Yuq$FnS>fKmgJq3_mAHQMY0*vV zv)9De6{}^+GuoB;7ZZpw9yIRRg^<w35**>q7NcM0rG(VH@mfcv<?E7So(3>ba`M*I z_}aA~27_kry>Ol&V5$|I)w(P$!_Cg77~xELB&l_li<cZ0^|~Po_I-wLNTE<gu~m0J zeMfs0sarnekN6>bu2m^@>H}6LTeP2pk^|{dZ|hmBUv%^q`OsQB4er&af8}>p>ylPP zdv;n5DBoJbr4P>Iq5UDU`$wzeMrWI101p&8tA6qGNae5pn+4D^npJN7nWE`0C}iLG zfq6Xb?}X)HM(=FJ^in)SBE52_@znafalAC-1_7y4b8q(SV3B(|;7u?HRQ)OKuZwvP zOw?0rw7LhyT#`F-t_d+wJK9q*9<$F&T+bpmZgHsL4LhdDO_>anu9DO6%eVC(Wpnh@ z$*X<=jxsZ-QuwBX6fnAi?w{*ZHKfiPp|ooN6&%e26#$MRmgFvxY-&s^P|$JKvxOY3 zkxxe79GSgay+nhA^kTPef1Ja0>;XaZ8^Kbqh!U9%@Ecp<kBQqMH_H#JcQ|b#sJ?d7 zWB@=AUj&J7A>Qf9k3kis_(E%lxd^n)kCenJmvfW8(wYW#B0rm=1C7d2J+t>?`s7)R z$hv=mnGcdzuB1+#_!{nA?WZu++XWbPsW@GEY<xO}HNGF|wB6Q*EWC`L0#O|v<|#Ug zF3B1#CtPKT=adDWo~3+r7oo*Uu2Ua`HsZ{=JiXT8ewaay<Lc7m9GFw@lUKH`r<RJZ zHZJzBd%imUK^oAs*(-*mUX(1^FV0!Hst=4ex{UjFREhd9F4qJJ3HTxofAW9NxdKlc z&M*b9Xv-OI*T-Lyg7b1>mp4&`G~<U&|2))-t8N`5tWf*H)4vUfzg6&gY6H|1b>Hcs zFsQ=UbfUuBd|WApy^fJ*v@0p5ztoeLpFI7(8rDwSBzg$+>p`{7XSO(8UOFh)#1Y@} z6ub$v>1fDrQ7)UDIt7>zix+Oz<Pov(F06@PjIMP{rPb+Boa_xx$X^A7sYz*z<%#t5 z7WZ(XC_j^nw$22KZYi_OHo%-J^`%@nq?&kQ-alxkrGyv`nu*|todORNFHJK=P&iH{ zpTYD(2c2~;xWX{x3ekOUhY^ao|D5N;utMpuZjuO#OGBaW&|1P&h16|t!A@Xa6N3%0 zm)43Xv0=^P+>i)mu_W&A3I$!X(R1XW8~CQN-u?1VlJuol%ID*is)JDRr_|XF-7jmk zpap=bJ!B~T7WUhb(+r;tcloOrA>CuUk*}JSoP%eZ|MD3Ie}fk7*pS_aqY_0B<_8gm z1XwKP7n#WsRsTrmaok2@)-naUpFvVxv=+1~!22ZOpyb4ncyEKLiT;lNkeO4$!rJnw zmFPSeZ;Ap{$Nzv^)_UoR9*rZk4{1jLK3@b66@i9qr=jNW)Yob`cf;v+mQ_VvrYIn! ztP3BX+FAij8O_FqRUXuwH!Ek(*fAoK&ts&P?sXWm)r(}wO+PYOWb)~Xbd{Oimq`S| z=4rL!lDKU1@I(x!=}-OqL(QL}YPW{?hnJi@QkyP)Lom_^r&~b6OTCQD5M!#;g73HB ziAOu|(J!ZV6sRl)1ZTEfD|W^HLfJMgP*!SQhaH840(w*TD<y7+T}rr~tb{v$Ob?R} zqbjbRd35LuU0bHg6U1E`4*aIsYT*6d8)F>I-0+M{c!&O<@U@`v#4U0{a*wLl*yB@? zzsUS>ArfycbzDKjbFzP_6H2$_?n!#iB?kQ8JDg(mkhvS*eQQXON2%G*Jt`dYo&|LT zj==r~dh@VJqPtF^pKbo$0Czjj{O0u;W2J5NrAefKcT*+&t+a|_Ut6JA<{q(_lNfvZ zLzOioYn^_B3RY?S{?0@tWB*(YGn8Z@taH{4gSAdTCV5&l>jL4Dy+Rd1^{rQ~o1V-Y zf&ZH*50ZiJgs^(*HE@R#sACS_Y6hz30Al7!E*H3ScXf63&%Vh?1*pSHBki`+-QizR zDXDN6kHaeNb(_oHu*pC;djHGA*+ZM-MyJWeYD<3>x7~f4@58CdLZxQ^cq(&9J`l#Q z(_ki9@Be&jveIbTKU*Rnk{|fO2)-F1522M$LyRF{$G~UR!(}mO{|erTAP+`D!$*Ak z6k4fbHvT6<PQ=z-GAF}Ts!q}|t*l@Z#p}Zr65mrsvqUOwq$_wvkp+?o3k4pMMCiVg z9%1zuO_b$f0Gw00@g)QlV)p?^PMcs4$L)40h<D-N{GfGY5>Lgis*8hQFrdQkJ&-mA zQV)L8icrZTn#m3}wIYmbJ|?!0{WS?}s2Lv-ycO$tyx`y%J8LZuSd6tIRiyIvUX^0K zDV;h);#bNqo4rH5V@^_CEp<5Ze-awG#xM@X=>%fivrQ6SCKXYPe$uKPcdm_nV>Ec8 z1+(_gq&0IDcyKXpH89(R<_*fA8QBu=dS!<DT_jdpn16lWTP9p-T;vyAw+P`>wn(X> zyVnqMf>>U$$6y8XxFs**9DHNYQ%02FlwDu_@~HqObjDv|Tpy&%mPA)PhrXuIasPq^ zpNHMWG0+&`eBxs>Lv~+o8^N6kMNG^hj_n9gZs8^}zuO^p0;Zp2;|lK2qOZ*zRBNZC z-Anfh2o_pP_|yd~7H<p8RP^P<6|9%XEpJA9-`%)OqS+V)gUI{o$vtE2fR&=6Kfb{2 zn?NyW%Cv)j76^QQf6sbCKl^E2kk_e-Wijo&xsv-a{zMk4fkGX-y5eb)c+eilonmq7 zbIu?|laNg;a`pKIoRN1zS(0w?Sj27?K0WvY#&YH~pKuLXa00%e$wXyfMUT9C?5kTs zB$ML0872u=PQ`z}H>-noXfKxGDPrTS{a6=(m3%`&1<y&N@G`xzj8b^Pm5mdNiRU28 zeLq`i0H7QA#3*?RVE^JqY@P-Eeq`dv(BBb0eprgsF3KCr-a-t4c)^t_V%RiBW{_tt z*4vuvZaWEZt5Kx3jD%y6ZEn=+$I(;^gH2#D4u1svT}w%MWp*ubHy+Ooj>N5CsNjhs z0rI}Me&>s_N$uHR=GSj~-8on3vtw-_%pg)xzs}pKV$9XG2>OI`vLYH77zm!o;r?p< zp6sd!uCN~2D8xGL=I-P3EJ}7)zi1q~^$5D}k2PY78R?@o%Ea40JV5ffB-r?|*-fy` zm5Y?TUBGzu7LeS(?Nd(N+?J3+rtbp`A=?w^NClI@u};YWN^9@>OAYo|G3F-jECc_( z)_(%K8CjzfPhRDg*?)9RN|(<q&px%{amaj$T|tF=gu|E+z-PlA!#OFvBpiH|NB1gA zSmMwmLxy}yw-d|=h_{|+`P}2RCUAj%w@&P_&W&ULlz`)#sl%+7DnvW>iNnIvSm3lw z419<)E{iz-_imP4e-;@xx_}L5DeOQsyJ(FPaK4!ZD}4E9_7&TJo5Ao|IA9hgDcXnT zU)=}=;QCK5#}3O=Lb!ta9qm)7v=NPu5_t#{0`*;ZfH($47ymu-UXfOdc00v5J@omk z&Y236-jST~p1?bV2?cXN3W&;5r-?d7c_R;J{CZbEmdv@1*NVIUo;V@Jp|wn-hdC^p zLaEdIXdxvdvyG^C0>&0>nYcp!X0vtk@G-`0@qiOJ=>kyWEpvq_ujb?nvw{gOO#Hl{ zfCPQ+&VVYu0w=1+{V<RBc_2SzZ{Kbeh&o*In6Zdr&yE;`UF1VvBYkxwbdRSu!Z4t3 z@c>Sg$@v_s6D1y=5Tml`OCXr&=9+Kf5!eWI%AE9cx(MyHU3KuUA6s&2c(g*cODiJ3 z`QkGXOn~7I=F^H71>&cLfqg`^T8C^oVP5vYZ}DV#wr`N1sRfa^UMH-VKF>C%Z)7ri zC(C)f%4gWCZAGv;KDhK5Kt{aF6Y968{ezA}48R9zCtrLp-hxH1=EojcicW`YbIo%= z5*maqt)Us4o3NUdu}9m-I<!qmz`;nHkSDN(PHhAm0>pqA4s_V>D~GKDo0al2f*$oh z1*#bjN1W`M=e6R!m1!TZ?e0$}9bW!x0r+V-_s!ND_t0iE(*mm5hqn%86Zi@7pHOVb z{Xb?akViZZBw`&kK3PlC)UH3i^0H&>O+)A@FM=CVB>Tz(uz^%gO4AnPkAtx_VfR}( zk6J(FFDV`Gmy2$(w8t7QviqgXaGxFeU~!M>t$=aHDL9$(M2tz(Ih+`_-5(Ods9uWL zWHpU(IF(!F#(8%%z4S~tHTORQM5oz0X==-vEaHwoXKCjZ<H(0^Yruzm3hqo637A50 zaU7k-ahZyAlMW<{a+7;?2^^c|e(s>362Cb*DrtXo(+s?fK07}@7wfChZ~O4iSV>7q z<vu;;@zD+_Lbm(R>cH_Rdk*6Ju=^#_e0w@B=$K?CzoEuWHv{;>y!fx9d8_H-iffS1 zXGyM`{8NafqURA65C6X9Y(ZTdP!?yBj85Bs8%@H<0GyT61aQRpWcf4N+}jH#Hzo0W zs)pp{;zE4InxyQzZtvZm&E#zod*5+9bFqCzul-4eAZOXmCrF5CI!-rUaH^c6_y+gw z-DoOb{H{p^v`88;HvF-7*KA9K{~g&iEo-S!ilpdV?ze91v&+5xFx{0j<ubnbH`4dW z^#*_WCi*4%*dLI_K8KS1XP%U)fZHFVkz`&vB4|#&$|5J;$(uU_pR4`@iD7ipC{$_= zsoT70f7yCGfA~3%VvP8C{XV*db2V#C;ZljGjvCG8hYtL1E6Gzl_FG~&=j)!M>wCu+ zy6~sIC({-jCs2u#k^LaWm-$n?O!6B*LkcGDivYtsXdBPDMi66U?n7zN30c23C}?}J zm@01E<>Bh)N#I2yH8?Dml-H1RZ2#Kw?!6DNaE}_`uKOsORgHcj{bTbzA^eYAqr7O@ z+&-2g0~@dXoV0=qm}M<1-DZ$N<^ZIF4PlIqKFeAYajZbFcX^U*q&Wd9$8z&V#aQJ> zw``4&+oW)s0em!ZjSf!s$fsvz$;8&^rJ`?$MD9AKyOJ~gaqY;S(4Mz0<vbY}kTkLV z<60E;|J_nE?!pVfl`*2(It$c^c<S__rutUK>(7_XZ1#XlR`$^Ruq8u1U=bDhtAbJA z_177OXr`3GEn^6=!Mf`DcNn!Yurc<7{)cO^TE!J_QqTq7u(T1S{}G`@w(PSnH7`Gc zknC{1?5;Vn1WQ$*M$-)3d{`;$YEmz4Z1|aIZv9>j_+l+!mIcwl0swnsufj5hJ^Mq- z<Z}~~zsb}C_F_bDg+?{m)s<q>Hn=oO^?A+0rULQma1DN%ipTdRGuZ&~_#ypEq0<c3 zMqz5cWqr|)e7;>h&m7qaW)(EXphQ%&p_>=yI0b{OS^qS==su)@;+{u!8haXXkrT=h z&E1RX@$%LRhOb&8C!Y7}>A_RiTecg-P+V?qe{P%-1^u>8YY%V<W{-;RMu5Z@9;Avf zt?cIfod1~A;O#PHUplq)-;XiLY@Xz9s|Q#}7GiYP$Z;X;1S>Fa=|YfG1;6{`Y6L`^ zl9>F3DWAn{rMjXFyveAIIZ7KHsu!jW2!3lxiz9Iy2P;idXD~)j#43GoJ0{-aSj*kS zm_EfES++4|0??9lYSRv_;r9);g58q`{*Id>$eoT97J`SKjcI@Cc%Ya^qVl8^kh`bv zjqm9*v#^^17fRdSE>{S`z#(hhOm{goCNiEEGiG*E_%(tF`O#laeV&rGxq;V=!e+0W zaHoFe7Dx0w<x9AXksw^<U~3T;aB$08deSbt1}tPARs>YA+2TADBN;G@nEmtE6XMx7 zKQ8oa>W+k({6~*N>hSVE^Q^9U72kwi1fwL-IfH0s6&bk^DUhn>^u5pqoujJ%%ipk? z=d|MDkv3_}p6^EOXz5voKB7!#(_eewMc`(!gODwV@!vmGR?J3S2A={?MWjc?^8?up zG3aP%x1(02rANb!b>M;nWg^7Gn2k%vqW-twm{!-THO`O#&IgZ+X#>m0Do%snqObVr ztwE&ASC!fC9|&IFi$%%vy4KW<)h3X}E=~3LeH^wM+HP8YMqmj?AAid0jS<tJ?{I04 zy>t#vK?*WU8gTG~Ba5QEoqDr66vJ_{4=2(A8T+{1v(=p<J?*T4vO*50kTROygMUYB zi+wGC7p4M{=zE|$GLBK(1+?#YbFXCS3BPFmFT@x%P#50DDsoPZcrnOMJ&iegGpNR6 z)IauWwwv($!iCfTC1?XgTwOffj5wJGbbL?!Q<$Z(mdj4^ws(&D{G+Z8sQcAm6*Gj; z0-b0)@!!V5G3q6s+8~Tc(J6@>Vo1^o7j-aB>WEYuH-qpdh+(|v736KwdChI<n=~L! zP|0od7H&C}6)qg<`;08plwGB2ssm2;?~xFcpV9jS{d$1YsLo}G9JRyg!l54*BYxcF zeyihPoNUcd6TiuO4ve%K=_9usqz)MX7tyqie3z1$zKIzC-@&vYQPcY`edp_cD?thH z*$6|1X%G8PaGQxm-rcHzK}4tEH!fu?yBkeiB)lg8t24kqWhXyv71LEXa6WJdNeeeW zRu<9#1%zI0kQw@I4cf)TEMqp1|IY}bh!29pIk1E=U>j>gLu=#}pmezO_<A0T85En* z2Yo*w@lkqwdr-h3w1DKOvcvIvHG=uyJu2<tzWEhOb8-Ts+Va0KIyA$|@P9M){YzNa z5)-NA_MZ{uM`VtAF%Y!#K5Wg1owUXzB+Pjo&&gRPpQX|Rh9#L~ToGKyF{d59Iby~! z+f^>1h*u2^p$Y!;KNo40Ym>?=X4SQi@lPvDP&%46L7dZ;rxiVogzP65BLQn#9GzVV z5LG2xMR^hIZo@Z|rE$m6rxo<<=<TTLk3PNM<#VC?n%_b1KIeUR3H(>yZIMh!s%_M~ zI_+i0=dVE6`7#ZX?Gbdvw3P7@raW3c5~?>({tIXM)&a@$YTIU{-eCPbxboYEkI@}w z)k+ts&aI-%Wcl026;3~qs>G%8WjKFstg1~MVn;@8NGdU&T|`S-=XQV7=CLC|_@N;B z=vsXkNa^Mc8#8!4nuZvVA(Peg>{WMC*5FiBy+<c=tSokb)`2>;a+HNWgf!*57QvRr zNDuk_9{@vA7us}qI}9A6CG=Hm{bi3Y%2m+=5nssR;hzLX)eOE$UE`_PbSvNs644^2 zv;x$E|2YwaD5F}0Or9M)W=d|FU1wS<IM&RdRJcr@NF|&HUF0V!Ycabemw$O3Y;2f) z_83XCrU|Ka!j5LcFrL|3|JRi|Ui`Pt6QThjZrW1B|Ml$|Mt%An4Ua_Li9R*{o{<P# zO;DsoY$GITTkVXF+i0q8OByxtn5Oo@pMnc(PU|Pi?NH>&N4iY4;Q&TA>^ZV6GoshT z0O^SV&DJylfBznoI&a_4iSsua&(8h0KL72150cv`hVMUonEDi^v`fIGQbK~Qotg39 zA32BRj9oT&ju8Ht_$GFS7TVY)bb3KsfF*}b((`<1^1Brxw`a}@Og6z6@EJIxc>@Gu zxaT5ldw`2vT!{fJ!AMc?(d~*HiElk%R~by=af|R%6^d*wAZGv`d7LcHgNuaDKlnFn zH{%@RKVsC<OM20qYWl%s^Qs<_Q=aE-859H!;E+#FTn?gXurCUO5}D8ct@Wxv9lOqf zeC4LV!iNSN|2Inzsv%;&?Yjhmm5cn|w?D_Yq~7re-dvz`{s&==pP#z7840@tj5o+; zlSiX9f8cHr6kC^4|A|f`h^Pxx=}86`r~Eh4xpb*XA(tfBHNN6!%BkrUJ+gJw-L+3N z8yq>(Sun@{u5x>^r3#)j)Y<a+2<*Sojl@wb;5sI&U)03?4OzV5aZf)r7xGq{LAUt* zP-gO1!ZxCiDFcc`JCo3}N;FhDV5c0Hgg%e9U;Kj;(oxWIRAT)xOhV~ffNgYzr->`l zT7TQ)2txc_5ZCx#Hm>z=*H?{CsBLzDYkSVrECgYHI0>yP0oe0Q4OHZ*_Cpo!G!6UH ztfcuT^oK7bBpG>Z!$~BK<%>s0ciYDY8B%cF=~vXGKs=EX-m#3M=SuBp0m;p5i1BmV zWq;=&*D+|xOqq5d@Tbjg??V1oS?wV_cLmet)Nd8j@d)TisbI^+dmTr%LFSy~{({Tv zNkMy46hQaT3I+|Cmq1jo1jz4Cy-Nc@i%S4Yn!UQOy?T+=!M71(j3c1gb71w8*JZZ7 zs=wMC0r;eE$FIu(<#(*o%?ezVf%{j(DMGEO<*~M&n4`QG_i+%~;ySNVk@|P0ra4$0 zRxjw};;2bj!^mSu47+`xICJt2DV!Xip@sU-IArS_ZoZb!h~JWry35xH*>OE}S^x0_ zYjzI^$l7mjcg+fl^^cXGBk@WYlOXBRR9^KQF`xZWC)7D>GCI1CI0Fk<^GdYKc}Duu zfSDO?-qy6$ZPn%PaEfu3@0!#N4}ePB85pz66n^Yw)Dk<*byd>2{<lxN!&BQm-uw^e z4e80&k4diZPSN_UVaQwAmde|15MTAj{J-y`ziuM3t!Jgid(afJvy|h~bqDH1Iq*>S zd!)Bg50({%83}cV6=+ROIUbMXq#ild5nOTO<u|?t(j$o_{!O%S&6M18@&nIjHTMm{ zHv=n++XK-_VSwGaZodDohjjQ3=yKFn3%3X0FPtU(zT<>{)D=t?&DqL+ow<G*f8KlM zSGf<7B<95L-?mOe*{aoP)<YgA(Sw~emioGmJCIVkAu;7m-i1owaAhR+SFhutZM3!2 zFKsjNy8x?i`lw&Cjyx0R43V7wc#_e3WUiwyUgZeYz}=r8ZL-%X1FyK?w0q!0g~+<E zNuTgcGMVDV57zc$!ty^}wb4=MkG2;sY1j)2{T*o~lBQ<NvDCSv88me<Y{eC+?%%)d zemezMY4+Gt%iOIm+2L}XdRLM{87+k^c>|)y?w!2WL|21kemur^6ogCPFfNI7%G2`K z3}cm$b6Ucx(OGDJ3jMsoDmld`NYs^yZ0b{>?l^G?n3scId#sx6sr-9Q{`|RB`3xWq zgV?*B|HOpUHA@Ju7&KBb_tIk!8_rV??JOn#Xj>hLLEA@vHWTUnc&L*W_>3g+zI;Rc zcDHX@gBG>8&%cFl&HcZPKhr)0w0OeGtMda-+Vw-lw#%h>XPz$Ld%|4DoOV&ZLG6Zp z<|%k+wa$1i^E)lM8~MhssceLC)M*3>eRq#XEz}Hw2H4XQ__n}J=bAU_nd%eGZN=BX zlVnTPEv8RfsT>Wlz$@T^h0oBe8WEL$uPieeAR2$xv}m1D8ja1eBJuqREo&8T($O`C zL(|CbhI#NEU&jQ&ZqX`6TYu_o^#{*C8bX0Jk6xpMdc=`yE;tsoS5DpJ4Bf#_7V~M# zLwnizqVLJnk{9Su+ILzzD!OzS*tA@Kee0?b;KkB)8U-W8YL|w--v33c?q5&i*ieH` zXTW^1^Vi-Z;iCcIIyN`9#5R6>y}4NZ(m|uU9JlkxG@<~nAx+ouAjSRn&BmvqZ$~r^ zB);$R%hQ#AMC^tv<;fLMzDD^2%zi1{1qu{bp2rI*O5TX7m(ujsiv0sS*a0NPc*h@Z z6|nB_Uh4B#s~?-n)z{3QQLtM8G>pOQmc$e23A{9^r-GCLl=H*np8T|D7fWKO3!zct zu~D;-63tU%fpUS>Fm~#i&6c<r$!-LGBKYus;|}N2d08J`E|!&_PZ7$PpC$@>IDEFs z{TL#NMfoqvq7q2il9?mw2>pI3+Hw56soSjxxm;HB89<8ik8TDc{pmHs+1hS>D|K6R z07_N#!UUvI*(^=b0tYrOSfBW%d;=SFTCS~I*@EkoL4?Mc8i557zh6(_>`#EC&zX%T zO1B-`kX6ze=uP}JcX;Qmjx_1#TaTArhwC`w+*6)sXv)~_%Y?U_n!4B{OWz*YD^!P; z#%jo{nOQs~Tzfpq6d<*Q>jb>uX)Ee$ZcLf(OCfL6^`gMUxfsC+Y!2m~zWHuS^jSKS z>H>%<<TCc5iS)IR){t0q1NYYyE)#ATx`**kWrZ}>Rw&L&vQ^_m+M>zm<RIt$93iOq zDyE7BS#kk;FH5Yk5X^$azH)O1O~_I|{(W`aKAVy_D{VxjOe)d;O1nQ2cgz?wNG>~3 zTv!7`_1ERp>MU4Wgl*q4AIu{VO&}RQxG<#7RXus%k5!8^UEs78jZnqv*Apk7W06;{ z>QLs1s92etoLlJ&muzWd-n+-l#BW-8q_A_!dplQCPrXm`MU1H-oN!*}77lsYC_x`? zT}OLRLmB-yNd+#rA9tPCm4!rX`d6R3=>s#<3H#jz2p)iu>aox?BooavImv6o*Rs*S zw?pfg2mWR9?;KM*4<!W&K0=kZf_#pk<YTSmz*6P}F%*OPW<BS6M@jl;3s;TjzHX>$ z#O`igGD(1^Fe~+tATJp+WOEghH>Myj`UYSl(P+`nvgsop{2dk-xWqQ%xCIO5<nsiC zd#gks-9AjxZkISwgj^`MaVW6_IqmzVI}niX7t@ml;=_-PGs4K7B4p`4KZgcF%DIZ8 z(vUel=iU7v$k*zPhohkhzcCjvriF=zr{*!|EQ`+Iau#J15#kKYln`Ur!gGi0q{npX zt;Yb8j(dcu27T^S@oZz7vWkFFr7rzV!)@|(ugUqL2SC<<VO=8^wdI7xNg1@rQe!LR z2=CjX7LrO9?Rdl+#hYA(2t@E>&Ga?G5^-M{UL$|Qf;)~_#*{MMHi`A7)BSU?)YtfZ z98T`v#9%c1|Mpt@wh+cTuw!k$vN2vhK~$4J7v6$8`Wz-EUL4l@V$Yt;oZ}tR6@1wW z26R5<deAu8o@UIUOFVc$z45eKr=G9>NKo5!V;Z}RG%(PAuMZ+6t|bC8ME8e&h8-Pt zqUg@HRkHgrVxB0fHGnNAZg3{Yr<V>KhSzxQTcd<{?hQfuQt@x_J@->@hRX$Wm^1%D zo@(Pk36I*;&e=wK{J>0#F2Hm8{Ci;9JW<)iow!p<8@sn=$?MZ2bunC*-*w?#xyW&j zat~#K=dHxReg>2$*Q5gnK*B=KUQP3AP`mjUwQ@$%-Dy@gY$Z2`aPxxeeB{)RM8GFo z(#$6T_8`2XZ^V{+*Zx;dEIe(k^e`-|+=wPBZ(p3#iyEfAp;^D65v@fM#F7bbYR<DE zKI^!I;Zb@Wf$^9~{)=~4DNN(Mw)o(Tiwfzs%CxyyOm>~mWtT0(h#1?eyz6qc9Z^kw zR<rB=hRvXo(Vk_(#UB6lVi~69y1bIUBb+`BQVaKQlDVw$`f|-XmQp8G*-bQ($7;np zma3n>jo3Gu!8ozs+ll;#_srr}pPHN9+Ar<f@YA_)uke~FgqBaYnBGri)j)L_&KT$# zk>0EzW(`z@7a1^8Fj)@DoIKmIi5UF#+@U`$$FRPpyw0i1SKBy-;|?uRJun9}IzY2W zG~e@hIAwz)?&~N2l}p_NcHfVy0$^%Vz0A|%eM}kNGeUwB5v7q^oE6Crf7M5MO}nv7 zR3+VMEd2Oy2XqL*fj%p9Eu;_=w^n;}+p)2lgyhOmdhv#f{5Ofm_}Hx9ey&>4g<CYv zw&pKVJrW91XVIgOGC{eCRXo(4xnYCu-uUE&ZMRcmjN7OZX53S~iX5n=*V1%<w$$Pl zjT~rZf!M>aUG5OtZ16ZahSOa_u$wdjpBFCHimQB-6aL8asfvC>l)jiC9bIEDyZW%A z97=m|-NcqGQI}V_;yifYcebl(b__4|=lERs6?^txfxjy$#%9!9VM`yAgVhdeu82V+ z*iB!qDEjvko)SF7b2u{Hf@$#_=-5|Kk|Guu5_2`M@M{8BdGnl!TxiZ{YAK$;T_agQ zkQ@u}TY`w4+PZ%+mD6;FdiI=cw^H=hH6l$dO(^lgJQP_~aWwz_-}mSHi18ge9N7@B zvxz)Ky>XP572?FDBtiewJ<XjPYXsTvQDqkxbxGYHYpN#~<7h-YDs&3)QNds~GK#gx zuHSeA@A}EtnTBMo>CUUOg|&RwT|eZVH?wrOf6S8@E(w?~84}_-(U_6i+v*as1+>+m z6quI=QmFZh{0aLM@D}a6c4lMDN8gH^EvZ+M8<36Q?H@A_uHTc7kK<OSQyy<l>WQ!x zQzZqFSf%ULU#q{-Z7)~x8Rw6mPp9=<)vBm(Tp8po$`loPVQA0!VK11~xMy9_O<Nz7 zQlw~5_c4W1v*oY6E)(^R8n%AOf#S;+lj0r76Q4Raq8@Y3V~fD=KJAfP2Hf4OMHWOC zE@dgQ7@@amK02<e#S8u-DNnQpv}qvS0lcbN<Xsm*krf5=YYBBMEfxokT{5qll`6zY zkJc{3Qr*LBYVaS_W|6#2e3LD1!<6AugP;^PLlGUer7xVHuR!&=!7S0nzr7IcKA`F? zf_l99f|Z)(0}A+PZX~``oolh3k4Uu2NU`~Ap<-9jYzE$zdns^uy?WGsYblRuGv*+j zV(31tRAzh8xNk_Q5HOAN#7<$O&cx}eP<Ws}Rajz!c@PW5!ez<P(;CXfW5ZMOsz|yW z-LB}YMsHg9v^f2H^HgLhida_5B)^OCOp?)WI0>tV3&6G;MXwzght#74tARKtPQx>g z+pEzx0;%25!H<=rJBmqt{{g-<x*%NC{aVu__)+11hhpZ2Z3aS6#u%iarXMl810#5H zIrP`@ZOalrR~o*GZaOUGRuCKz8+o^lhG++W@DRRsdHywm<Z5Io)N$<pCrdsmKGWG^ z(NlThdvT+eNnbo5Nc%l$!l@G7`JOS5xJiBtyRDDn$*Y=K+4`R|Kl<LOB73XY)+H6` zp{|N*FqItahe(MG<Fb>gG}9asi|fO*e+gog%NK`#ZzYvF%Grasfdjx@5YnHAx($j4 zqaM*qZzyxe)p!xMU${-9c*TF5LId@lh2ICuj6P(Y19NNN84;8VjLON@_+$wIt_27^ zZO9KY*LSQ>ydLp8DoYJh=6*&n$gQiw+xB1)(UqN@GB+29ex+Th7pNBrsQ<K1<u?kU z$~}VN;{$rii%h)ty`rakUVdBbC36QOGI&~8nSWlUQ*snX#YCjY)STeL1`S1P@ld?S za&*FzUqe+%ya(lH?WCb~<3n*GcZcKA8_cplMB*>p^M`@a=UP4C=N*Fa=~=o4uSr@( zAqHs%8=<hW!Jh2V4u%8EzbQ%P2as6#eVy({POlsHlbGAkZ|R3MQ^}G&0;6B=u^Eec zlYMjvCXy`QuiQhAeu)NWR4EI8@jk@gpl}*)yPb`(lL^8^eM-C&Rl~|*fOit@b-}V& zy?SnpJD^E8sL%PA3!Ooqr2P2r6E+XdtP+wO+j3Hc9)AJ5o71|4|L&Cimd+Y&cCP+J z7S|w<x(B%Z%&6O_X*(8G6Q68rJ@ISxLw@sARRP271q&=Sd~$w+xyEmQ2(uy)j(3!w z;FLD>|5Fs|Zol(kY9iKOD{@Mr0{a~`F0Yaf4qnL!1=Z8P^hv_l{3v7Smjxo-i=+Tw z7C30e?a2rJ#*$mEYi|n26;EyY2ahIWNHLCJO7JgRl%g~QG0?DP#%A*5-lG(|#Mu_k zy{)H}H_)f)Ggwa5R;7Bw!|X9!CoIfu*;SRveh<R;6gem-`k$B`4hrs;#^&hFgF&9x zh4FNb%d+jO!-fkL-#J}`3tpZR#(v@$rB3wmJk&Wp73RF%)>WW1e$Gk!PUVFP^DmSW zST5~fCiJ+{yv=(FX`aF!JciXEk|wCYhCthBX;fYRc93Oc9}re#otCSK*V=GcSa<$B zYoavN`&)1tFL1JTVTC%Rq7y3p)KzvI;3f4553W&s^WxdJ&8ygIsM6tGEXNG7YsV=k zW<Uc=6sE|Cva$xM64CczPI-wV%I(G{ICZV5N(40^t1QjIK=;CYP{X&#a>3R<xsXFJ z&$Qc1^VWPqUlKYm2_0S&FmZbG1GBe2Pc=37+1;7&y5gu6Xx4H94|&w_taRdcRGJr4 z-tjU5Dm~OG!(u1YLr2V`9RJpTw+-K*w9C8vE2W_+oPLik(Q7{_drNgiXa`L_(v+Wt z(L}+GmnCM~PNe+JX!-|i^_!C8gGONjI+vWsV=|hvX#1SvKx!V^EM)ng!*I+}1WugB z{FV6}+Z82sP2c*=A$m&4&rh9F<-2Pi$?Y@QtkRfS(sgh(zrmiI?y9T7zZ%a2Jgw%! zz(r(9Zc-vt^gDjEA+QatM^oi9lfW!6c9``rc1xu^6K~A2N;4dk+=X(8`R$+9nNxYw z9YB8eGTq$HT?{`U5>e=MV(C7h)iU<mh)3cK`>5g~pj;Pf+h@f&Rc_4K=o+G4%+Z_i z2L*H`lEXk;Yo)-R($HR%-fXo1_{0GPjfF=xfPPSwVy0~HOeVHr%?$#2{<^5Cn*T9X zS?SiDy{dK5z^`0qT_TC7(p<){&1G{UBOk@v`bo!ONCxzZ&+&p%&gT*SAb$Z|VgoEC zFgxyQuV_3LFmK0yKedoZGM$Zk9Zo2Es9=YdAQG6<MVkaYB$eWivLwvUIz;2HZ!9-7 z(gaVts(*)6OwTB*dcJqjXi5g{Ol$~5PsdDJR$f$qnIagBcqKK$4j!i9$+20_oL5aE zoc?s8hPE@hbba1=DW-l)sIC5D6*;8MfYW|6t)A;_wX9!VN;6IX7^8N}pWUV-7^}Gh z<}8D<FtX2!6IBm%-CQKF{oLNtptO&cw}tfg<cxdj=lS%fMdc(eF9d|oe&0}4;DXQi zNObB8&R|AgN{r0|7J-|w*p`*?PfS5D61&42LYC41J&*K~E6o(>s?cs^5`SY=GueWs zk~f%?(A(H<B_dab(%*pZ5BY;Hd`o-68rAh+UE`IWPJYTTl5*c}ws-9LOX~KGyrTh& zxgk9NJ>+SRa+Kp@6gI0_$tVJyMvI<O2`DMvMc8|o@*2e-oLO(Eo4CHBT=M#ePL^Ef z*ShqjF-njrb3O{xrJ(vc1QO9Cws9NCT9|RtQ&?6TYxr$6_?Gn?>{GBdqVANCmLx3K z>4@~IL{AvE&nQ{>V&c^Tm72L!mELdJpZHI7*|O=5)yP&6XLT-9Siaj+_MoG*U)ZCq zKp+f&bKi=T@byJ-=H;;H3w{$rnecuMp;-`4+{E0V%(f*M&2b5^7-YdSk9olyA0(Jc zZ;Tx&AHA3dS_3>h@sAt)1s|KzoX2!9Y}fTZL;oH14`Ztbra01TY6f}<6BT~u%xaKz ztN8e=18=@zY(mSlP2l<Sx-tvTbD0#&UstUaDotM1{~5ywO~C1h=7_%HdH8bEljG%( zJEK{R+?AuG6l{aGXFKv(1i!f%5@hxcN$ctS0`}$3y`^|h5Qb2}{uFT2F7&S&v?w{# zMLN8|Tp~EUAc4%J@RJUudBVR|GEL!SFwBoa@pOJTj`X{mhn1c96RfOJWcM2;r>v^V z;ddYBafOw;KfbP97zeRPtFNyuiU(nKYqDET#wqedTJLCa<fv{iXJ?dspCSjW@T`N< zn%F6mch*?7DSj$*I<u)9yh;}X>qMsDRJ_eV-7Mwj^m!VzX(WT#t9m$s4K9!vvch9v zU(ePv8~QtbH5L!9%B!O1mI+^K1?=j-MlgxdA5x`?$dI`{xX0uz>OihM{zlE7WqHnC z^_7=NX~vR0BrbQ$3?K7<m@Xn34NUc}${;N&d@!DeHEKGaOHr{IU}_WgKI$r^r?UyE z8Bv9Q&Ol^4sIWO!#u)jLq(e>0!aQT%I7TfDA>RA(>$tB82;i@!o?^@&Ub^}0G|CGQ zVjbZrr;w))JU&iH4~HzJZA|~>FzdHne#lZVylE!Ut-`%LBC7Vt{cJ#2wzRTw?*)z> zI3Vw{AjtV|<+Q-fr3qzC8^tDYz?=$7_MZqW&)=~3bY4U0cUZ#={QHls8ol7QX>l(( zsSBY@!SE5X7{a)Qm)seE(NCuZUC7hL^pq0=LU?HpBX5h}+@~K}8ARg{;?hyVgI^#w zbyNRyXz*j3Fq~isR)OeHsu#NM_*xMU7xEvjgNHem<_c&<9xk^gJUPhk=KNp$(KUPx zVNH++hOI^5<qxg#R@Lp(9(Fp|%2Y1jt4sZRvS9el)H_nu%sMgd3%|dFYlz9lz4D?? zo=9%-xA>rD@KVpm>|~RE|DLRUseZ<>%m?G}I?nZzTv63RoXNP*6hRmpA@B+``&#jk zn3;H_=bq@+1d*Sc_0J4T{<(Soz;w#i$Y=6_aJ*{NQapUj4U(In4G*%FLhji4%XI)^ z#_*umM~q<4Auau{#3g*SB%HO_<KosgcsfY%gbSZ7IRxV%G{Q9XC$tg;KgWCKogkW` z@Hy9t8gIjP6v7DuXC?`PP0)a_vdt!^+{BZbgQ88m=ow&MR9D8_ovvSg10&G=+A!m< zY|u2x-^-B=R^#<G@hst%G$#3Jkf0o-CZNQo0=J(yF>xg06%PzqT<W4JQ`t)*ADhgv zD><1xnI(oWw$H)#2fm)D_4HoPuHclnrKI;I(XzLsuBro4m90tK+qc_83h2L{Fr5BE zyUad{wfBQrF+QMYW~wq|;*K}z{qqfVtYNER#`6yP8E>K{w5}T`c<M&i%XGC(jF&Pw zG<CLR^Xrp^99`;^zm;-hZA>#f5or)i@xY(H2#Utg_0f$0v;PJqcWiZ+zG>?da+Vom zmE|c7duE#*?1X%V1xFh&JCljIEIgen=LaRYHCJum;tMxzOS+h{uu834y)w6hLy;Iw z{c*@{foJ2DAm-RS941ZFWq01ZvgcO^qO|F{a0r>UC&GDDZMEYb^tTqHo2Y**S6Uu0 zns}dF$hhwjm%KGx?^8hqqo;hvp1Y`T6a)fN?sM$+2lGomUSV4G<amFvE%8M-L3|lW zOuZfFZ3G|iM4mLTmEM^3n>#RNcY41n8e?LKAc&KbY}~opMA~ves>W9^H`$|_^1e%n z%{qGP9~y5-o+hr)=j!xhT%!h`%pR?rtj8{s%fLH`55_}oLdBAb!Lg*l9Na>htMkqD zY<x+7=rMTN4QL`r^kicgmq-eTJ58W=U81H1-Z#a#%53Hsgu2?BZzf5O?|&lU{iCug zVbsPr-u)=EMry$r<fFG_WqV_~+1==2#D(JpT+zF0KZo~l;-Ux;11zMjb&KB%<(`bt zHl5|H>t$`rTH_VQ#oz?7$jkWnKb<d#`syO{=h(Y)L<`fk7$YIMie+ngrVCkrb697& zQ_qrTjaO^!=l#s~mI#0KJZ}wleq|PP`LiFXv&%H>?}WJU<|%3f+SAr~+0eH=4u$ES zhJqoT6K{*3!I0Yx?c9=g`H>Qw>;fdS3r=h`wwJZ8sqcOC@!69@Fo%X#sK#hA%*X)U zAY-&7c__mY1x5dHPx(w>E8(iR+N>Q_-<H&;9eoDnL<)uF%ddKA9)gCIj0x#IO)q8t zoqg+ut}aL%ROXd_!_Li44OShtkRP~zv<qUMOO^p1F$$wEb^ll5s`3R9eZN{BBVBH^ z9)EY2(9+jF!<ry7!;V7^g)Y?&Rw4YLKgwS&?zj7;qk14rexIT{tGPZeo~#298>mRe z8&Z$#&vyB3OUq+KyHIlO@gl-ND9YTmK6X^`)Gj%?3jU+TL7|N2t(5!Iux6!Cm4Dx@ z#S;6aP5jMmxinmdyldGZQ{G;b*MS?*s4iA1Hvzdyl{j;(T)fXlo_Ia$+<sreP7jg{ zJC&o(cwK#T*PVx1=jx0SSOyy#P^1c8DiOMQ@$%OolLduc=ap?yJMcUVSqK<WN0P)y z%UE<#V6h>(ybcrHRWS5UYg^v52G?|dOv_@je0CSq;BasbDo`Np@YE>H`TBy?(YO)t zc&Z0(qVU$P6*x6~_B?*Nwbv&*ik01o$qJsO>D?;yq!}dAwST+P!f<B~p-cY>XD57Z zy|4C2B8zyoZ6ij`VI(&kj)^kiRFz%98mYF14Ajz5a}S}8aOX;~R4>CceqKOIaNbS! zH9=LmePdmAxOZ1^e+U~!_}ZSHF;)ZT=l)%d@0&IqbnqZEQCpVxEYG#9UWHx`1|FFB zQRULvGgqaLDx_7F&TDbow@2W_s)=j=*eI&T)gm(gPY~tPqyn+NubiCRw(eNx-|PLC zIrj1s>Rvr6FK#}C(gf)DF;oGPs=7}s)~onVQO7l4^U}K1Gdo&~^PidH>dq^=YWeip zwjl|9nw+Pmezo7Qn?Y;JH7G`BPx7QL4MING2)9lmnG8;2zw5|S_mnqADh@7oNy*a! zy{{IoyZSZ*JMM&aS1&%1_GK&yw+tNBHuc$5EiTpx-pSjq(=_3f$)NYP;a0T2XlMS? zc0ld=>+NoXwAqy<i5XNe<BegFH*0Ng149m=eBKN+e>vKbW{qt#|36U4H`>CkkjWk6 zP%3UdK|FIb`=*VfYWEfuJJa6NH5`94mr!OSFmB!ONemx3seTdjvjgJT4h1Ogi-&VN zL}d08xiJ|}(vy-Rh&=5`PQ9BfLLBlD&s!nc)$ZNnhU`#aTy~IW&iGp^sAQk+^wbOA zGcvzT@=*QD=cIcv<cNt6(V{hLCS*#SN|&5kwE?FeeRAmq!MzGi$ZYA|mm~7JJ*I!H zAN)j?_Xlx|>qZRJsy<$xuNj5kJF+4h!pS_Z^&+a+(nQOYLGtp6QG7DR;;0u#hJ9>T zQ9(sFr=6URyfy%3TwDZyzkUL$y&L(_`;M6F+kAmS_8e704C<6^32|+V-3ASVuk<%P zCO?uB;3*~a0nON))Zml>!Dv|-&K7dJ3KexFeo>3jrAb{TfR#y4_CG9tKd`P{U@3#5 z(1z;RdPI{4am;5_x#VP5wR8^G4RytRkA>>K9B+6DAHNWWS7njTLnDYz%`VN+9<#4C z$Mwqb*5rxx7bzPKzLjh)AxJU*SL*y$Hq}#l5&Lgn2Bf&uOglFkNY&-?@RR&L89(g% zlElJ?VWexH@UX!zP3OBesiQ+k%As*+$+;}#@LDmAG*8E)O*-+-Zu~k;8mTX`>*`6I zXkNujUAi}!1q5IUkcX^oDNXv5T4Oa<ZwyfH&y_bLw}(`&O0tV;`<Uh@e=Ez;pLQC6 zzudQ2fSUmGV=uJ(_q=<?AdrO_gVFwe?`?mVHi|K<?Dy!c3+|=4IQPwWrioDRiBXB( z6kGIz;mw%+_3RH5=Gq2SJ=cRF!>+5;v&EK*y3Z@zFVW2b@%Hhr(|B&Hg{j~{Z|F4? z9&MZhea^f^sJ8)}<<}uUfCV(a=iyI}zGA|{w9$T4_Du#Z$6bk}E(uyHUWviVaDSZ1 z^~8|&O`jJ&F8w)EWu_|iIlAfs*Xoy&2*h#xUACu1_aG}OCGnwbyiU;)-Nkthyr52g zpfx@jN{`*7rYFg%ydMLvv5@zzD?%s1cK?c#?G0Lp0x+NDWjaFE+t_|$Bf^tJ=LF=^ zhYu<mE8{gY!1pU5!un%m%yi?z%H1_ED<dYOzcRk1g^zO{Q(U)T{i_|1s0<WKNeWuy z`H>!#_g=~1TG&ZX@a>{9I`o4o4ofOtHuiRxDHWDwufrF52U81dl97akDlrK6j~u1_ z#>c!wYR7Y`bW%07(x<@hFVj*y;M2k+t$xJxVMW9uYe>_WloRc|sxjS-Ci?0-I9G$B zz7EY9;CT@B<g1UYbTF*a3VF=X<5}-ldE91Mrt9oWv@7FPB(I%eP#gJ*25f)HVt$6X zM2Lq``mQ+=T#CcVh!~Z%lIN)EG+jn(!J9>+sm9Cd3No(t3rMZOsd3GSio-QX?72L6 zo_%~Vy&YUgAB%DOg%<Neh)KG&mQo(jqh{PAuP69}(0hqjdQ><fow>MVv8ZWK<L*)X z*ULZeC}WjCApZlO|B@wD%SeNxo6#3>Da%$>%MCSue^&Rua?HcY1g5O2B8-_>;=HfY zY=YIrlgD$iFMAb~_#ErcS=@BHYw8GVi-48}i^eBgS58lQhS~f4<pk1r>he^)IKV9@ z<`r9O+ZHymNyp0zU!+T65m<ms3>(5BA9%r`68^rm_G?Rr=7+~FIb(LBl3SQ^=9-Kg zce~=w?Yq*(TsYpesqoFP%!#)*VU6}3BDPR(flI=d*9KTZCk){Fub?9N!&WcHngzKL zejU0dj}_oVv*9h!djdEzew8>aRv-h|W(FewL6hL$!(pRI0v?raVG^4(#!K(0_csS- zY$yP$a0aZ=WY`vqx$y<rF0Ye;F3+!oaShdyV)tC%Utwf3tcfEQ*Rfs2ZU~PJM!fp; z4PK6by?*kV3K^7z5vs8^t4E~T6En2E)2aON7U6i$y;I(jp@H<##j^OhvK$-FdvKrE z9%v^9#XVXfw@=44Sp1sD8LNUc%WxDXdQmm1dEBP9@A}MwKrkxjchMb3dobfBFxp1U zo~Z0A981i$`HfPi*W1*v;&FlKjRnnStsffN%UBDm=?nAFThb63lO#VQ8|G{_o)fvS z_-$8He2M<D{wucYQH{`b6}MwKKxPyoj|6@1&(5O@?}fVgf9hJWh;R@b|8w5g1#Ots zaI(gY0~pJbERnz2emQ;SkT?&+*j%SVoH9DT9;M!4f`t2w=yT)ONqKD+Qt*Y+_vf}6 z#k3rxAOpzU3pj%HK<3r31h>=vVqfc)%;`(0KjkosCN1-Hk6t1*nnAe|YrcPO*=^8P z8!&p7KKOr8_1@uZzTx}ur#iG0Ra!;u)~>X)HmOxbiCJ5yJwj1IkyN$Ru2p+e)ZR5y zYVSP~#8xA=Adx(;@B16a`~LA9_n*&k+{ZQU>$=YKytq#?ONM)XR3po84DQ!lP)kzZ zPnLE1;nG|i@#aA=+s(#*tBp=a87EO~2)B6zu>CdGPdE5>dhw&N#>r8ivbf_BX3@~h zOmX$yj!=<Ps{P<lwCQxumZpCs{|-M?oh3a=G`<?x9$(Sh^gtW@=K9>oj9LtR?cyYT zNKjo}{;Q!b9WD2ORWI~LK1GXUKGieongv8x!pG=<H%Ib^yZikr<wU7KVZG6?ZX9kB zToh~DS&LfUk2BM!;+7p1Ka&YZ<vmiLO*klmrv3kPL&4ow5gGZCo2Ye)s11<d-gMvo z1?ori87gFY8#<Tbfh>~$I;0TBfInT^ymMda6`MjM*Q0uvw!_C5JG!E*@&yI8r%LyQ zF}JDYBDL?LRHV{sZZ>#z+(twQY8ZBSgT8+db^0LPx_(zTroVS73{xg7rsu;^m_MIi zgL?EjW}qVl65{JGFs__IZVq2RYR+5S9M2<0+^b5}y5PRrYhfHhlacg~!}H)veBToM zlIO7dVsmn$?mC3S4BpRaY}DS0X*;6R>SC<Q+{n^;Dc*XrTw{1!&T6R;y{N`-D>y4* z{taZk(f-QA=dNqW-FCA>`nXVO#&*Mx`~M#PM`hLA`j~ea;BW1HjUFy?<88KLJNfcL zdC9X&)RwEoElH+*c<y`PJKI>ne3ul>hWB?JJp_0K`2KXKW|A+!-%Hr<_^v<S6c0$4 zikr$uaL$eb6c<5SEpi>1`{&3t%wDjNS(_$bPupWIJ{>KV%&Avi0<Yi1x$y;vtWdgB zP(#Azy?#!(OFU=c*5c*an?Hr<z=jbin)fCV6Myl`*wk$GidONwp8Ibf>AD|e#%1O| zey-f|dz>I4g<19#P2&$<`*p2J>)@t5>`}sf*z&YNQbc(nNy>MGP9<;6yyQ)d65kX0 zkiPt{S9a%KH83birG&NB-|br-7W?f*Pdt@f=H8TYj%@bE#;6mJI{}oR%vDavmkkv4 zyCx1-1U^5%qM#rx$T?R0nF6VhXQWe+lk=Hy6=9?k&rS7N_X$||dEhkx-MfvPS+DtO zzFdplA*1$W#7^e}{IHn%Uf$WB<azJCxn#X{e=$$H-GQdlTY$5?3zO{ruiqiUU-^Ra zuI3<+bQhXbn#Y(DW<13UrGV5(QGc~G!*>Jb{jZ`cZ9_iH{2R@6IWE)@cRF?$AB>^+ zKUx5+FPtJGnY-Y7c&2;^e!EOMc`5uL&vIY+FrmCKVDR+erBwSR^9tC8!TWJc;mt?6 zrZZ@VJ7)`$=wnw`ZvVql3DRU4@t#I#E3nB1qY+Q3B6pWp18qMIr;uYmgfP1OPn?BB z>eEV_cgDo6p7@U^ZE+@Vl&4G0u2*OmMF>-o4Fb%YIGi$xGu=BgaR{sFfZO2>&vUn( zh>LyDYQIX3m(s>>$Dlzi{dU7`?bJsv^8@uChIZH5+^Y4gCvaH(l}vl7W{)v|6P4uE zZ7xEMTM)d>VFl4uq?O>?0yZ*a*Ha5s<WSW4*#UfLPo$l$DK4*nSIUuzxSs$h^gc3p z@Kl8QI|Q1F`!@@GH$DXXX_)A__hg&bRT<(t_R62Xi?YrYTNN8nL>7+?H;V}S400vE zZkXNF!F6wZ{b;8+<sv+xTd+6jH&^XIxvgX)$=B$=z8JgwpZVhfLKUfTU1o~&OO^CS zucs9ASbpMKHhawEF{ov<72cN)LFZ@srb^JTz;UWOhICm&uOXx}dl_!&3(Xf>Ru(*@ zF@=CHH<XQ|wmDpbF1MlCPovrBtjCQGAKkAhN;`kE_RYEEDqa7d%CZqix4M<&j@N1> zd{w6#J)3C$O$7pJC9a;%S|NSzHcaB19{!*|CP>bIuQbbp<UDix7_4qn@n6X%6T{6w zPvY%U>uXgs&=}^3XB7pc39;ezu{*|p6SeUZneLonj|{-Cyi)~aAC7;#ut$lTioXV9 zSkJ1+7k!p}DPOUXIrEPkY*5>fCmbLA5XVL`H)b+C&(G_g`E0(rylO+@&5DE^U81uE zFcJFI^_<K2=a1zXKlc83oFQ@h;}H2o`&B<CE0Og$pMWIQN-g{_Qi<*J@BU>51d%;U zNpwtY3}h_Y^@S-sKLIwGU|3~fXfnlH7Vwl>ks=u%nW?1!?)GXRd;aVT3%A$-S*-B3 z`jX*SzQwaOlza**mm9=;)6S2yo+N^b?`$D~rnvO5R_TwvkLaZvpC{aMOJS8U`5<gJ zjf<Y8_Bw&qW#Wblj!Uq~c$O~OgCf}%B;oF6D+Zi-rquXPtVc!*>sH~9EdLW3R5f$a z1w~O2X(ac?ZC5XjX@yoT*~glul9(K+h6O|LSqNNO+~VcuzvlStTx1}q>1<CrUs=NZ zI;Ex_$>D0pgBq7q|NQjTb{5yn7f0a5*un4uz_-EJ;m15p86Iq|)SQvga>9fck<b!H zoS34jlWSP_S|5C_Og)(n^^3r8WQe>Ms81$|S@^1as6n<{*06ZF_F1>QWEXUs**};H zyhMTa#E4U5#_&9qV2x~`P!l9T%dE-rAdL>fv^ekT<e_c=SBNw;^X#pRB@GBktVLF1 z$nfy_m#$Cu_SbDWv&L_fH@C92f95JZDl^5EPg|505cWNcFwW!m!U*1Mp0LC6R+E4A zjvVzb_(a@<v`j|dCe{4Xe29w09V>mK_`1`)&I4bwwzz*YwnXc>(I8TxraLC{2U0fN zIyz~;>yO*sx^?t^c`bOF&X}r%eqgfgs;K{6b9p|ZUop^H1C#{8Pu>DM5~Ve$$FGpT zWYF_{d<MGiPG9*PO#X_$r%KDAQD*%n{<H$~^4ZymQr@pJqF|kHE~q)V93-3kqnX5J zlCW7UMJjCpue$GURlimn*Z&cx{?q+kInR)J5X^C|=I5Faaoy37uugsJzmksE6e0}{ z1^)?rv&-OOcstV0>86a{lb$Z~rDD*F;pQ@+1u+j2I2sOJh~YL%!InfAETB|Qy--)J z*E>(+jXHDnpgVlBd+fSs6nK>f-adPdmbmV~?B)<a1>t#5{H&)5RKbs>Hh8#tTX#5R zb_&O-OfPDcvv`GYkQX~^J(KhEh*<So+(D`lj6!iPTYLv$;#kqbO+GJX<XzE3=>sc$ z_cZl0A?8h$y4P~GC7H3|G;$pz?+kwTFQv`9KK0awe9(^}dA=vwwDKo}%bj`EsP{C~ z9cF&SpTz<qT%SHWs&Mw46_7_U{#|5`+nz>MA{U=dt?&ue4<6H)zTC!xT9(8eOf3wN z(#vs1bNjIH`GsoQR+^p1Mu>4-UZ{%XNq`L6zJjy!eTUzf4QKzNt=CEO4UTUzMzpqi zm;c0jUg<V?FT*&yspxKZUK>6_FR;4goz8rxd>UeL7#KXa)>+3+XiI&eZbC;QZ#|k; zHWy~-FM2IOip71AJX8^seT&&MG0&K~(i6f-^kmX*+b24_vFG(tht(otsgXL=`N0HZ z(N?PC06r*e1E;v8Ug^hiq#2pb@K!%nduzgTCxx%*cLP}!*xOn5ic811S#P&v3&}<s zvC&5wwbK;8l3JGcnoD%<&st3<lwE(VLW0a#VsbQr1D?#9a{rC%3AV%DsLr$Z{K<(( zOx?SJIX(D%Z<OE2IJl7^Lq15}?N`~Q?ntIxeT>iwMEClmp6_O9Uq+)LwZ#?5vn^zX z{)p+yotq8jK8=SMLo}bRM`F6ecEAaXOYzeW(-5eJ=EN|xb1^gbWx#+tsdN&!X=*EX zCZOH{c#EL)E*^fLFF2}dLZtfDryu1PQxhdHA9Tf&*xp<yJKfKyv2Iu|4de41mihjc zyJi;TjTsd23lqOYpUOPu_#hp5vxOvtHb>pxG?Kn(x>k^QC2}WZu>^~Xqtn{2_HVyM zXc}u52<c*Zauf)<d#Kkvc4PniPtdWS(#tB$AOAxQk#Xftp2F*No(JyPIh<~$_6Yf# zvo~!43H$rvsXakY;}^b2A7G6DAI$l-A=+3b=Bj@da=$WBgD_wDo3_JPgmLJ__kt#} z2hp3Mj}VeglRvM0QyN!Q6gxgZu4_0&52O6kUGkdi-Kx|jNET7z<Gf&-R(VHA)4w#j zLNnPk)N~pA`h~VN@iA>$yp~`!J;U26y9ec%0`i#aA4DWo-_=`!JIGbY#=Fp&P3iji zzO#<IYQ_8A@>f55jDq~O_AG!rl|M{!XD*hP=~GGi%5oti!IP*|=iE8Un$(lJOcyr2 zG4NwfDh^*sJ&Zt62Zlj$4XNhj=Q}&k$dj8Pjk{+I|AExp@WTX5K3-~owJ>*3-bSW1 zSth#{zmf92;AX#~dE^PC<*bQ}Zp_2Zep98O!(khIl}W%V5{G8eR)4JMF=cM%H`}Ah zWk8s{J{vywu0Uv?Pf5LR_;KY$N!&A24ripSpzYs3poj3hfRl%2dfM!J^tcC=`c)iE z)5rk?(UP6!z4<86kE0vZZ)~ppNE{~2JGk_hp-|=?<3&XmmS-C%TxiZv8??g@J<Qi_ zbgdluLYc8I;iELDh|Mu)*<DKJuwY{|#nzFC%Z7LGX_aq=&}kJ0{%jz#<7FrtbQ|(o zwNNX2_;9Pr6L3Ns>pd!p;#+#IK}8PCfX?=wb7D?Lm<KrQ<JhGp@60bZ=D2+^8Iowk zyo+UM?C9>9(s0^k$qF)8JyxlowTnwjad{XNPL+hIA^R<Y<OSmy;vYN_E&MQv8{UV9 z4ARYLGp6HtWOjS>aI`&+^$^U@;>B5|8r0B|TNN8z>xQ{^Gwu-4I>M|nZ^_}e5#}_S zb>!jQ>>o!u(?>xMmMdiQy6!o||I9Vv5ZiH1eBT=MaEu<90A3SWEGB!O+K;irml_`W znNg5dY=<qoHJoN87!_LMV^nkyd*$rNa`wJ#E&oTc?uV<Qy8l%t^cr!WI6G!*UHAcd z${$)L0c0v-nUU+x&1)2aFF7v{6Q!4)VsCDkNY(RJ$`~Zf?J`D|_cccrHE!5s>=v~^ z2SHG=-qIf7`SlkJwUUQVdnf$$DM6ps)1@88HW@~&@MS#b#dH@+?BeiN?`|P^=Bbjm z`imfl)3bx2-X2HO%SX`|S!>kMdp6Ww)5?i~bc#8rB<aRkQAw{R;r9I$9S>98ez)x| z+Nn%{=iri?H!#st-^pdg2Y!b7L01cpBz8ZTYQJgJFi;j9D?7N-v_Zr$63Ux)ciR!D z^I#w5n<hmNTmFc$YH<J8p}I-$dZ<gx@#1kP$Xx&9ySyJ-4Y4UURh7LFdA~+Lzv2sj zCl>KjJrUgWe)dK?=c&62TiqlV_D%1f!-+T?mA{p!p-lqWp1dzdEbDlGX$f_EH$J)t z_pd7oz0=P<9TEHd`8Sy!UuFh*lld|7KH9wDTA$B`H|E!IIAXSb1~5&pq{-gVnv^JC zXySrH^&T{$?>jM^`O<+H4l(=l3+Cd+_oqh^mvWr~zh1l8K3z;%%v7i1Wzudc`-KEx z&kK&ReeRQ9gyfz-+)q<j%#?`X?S?1di7P1*rE4*bO_M17?L{hg#v-P%$A+_+t`3hA zDDK6Qmqk@MW4|z(O`s$bCaxmy{kLkF_(hO3@RslZ^KsZb{XsWU{_8wb@ICL^^4|=f zqMCM6?KNM$6C=_6!CD@fJh!9dXlb!9Tq6WzE0xaDWCxo7r@Eq#6CWNB2#^_`bPp$= zM`gDSx*TV{aN0GSWp(w66KrsqvEI{+$hVftR{yqAF;^n8H8+&~K{N2#2iV&p+nJ}I z%-`>LW!Qzx)B?$_;{_<oVOdgy9O-!cOg8B3gWvhNBcAj`<;Fe3*<td2Me*ICD)wpq zn~NjskH!xechvN>Zs-Y4NO)J2zwvGJvQ2$I$ra=%W092G31$h4-Wj_xosp;9)dr%M z+u}fMDM5#Kro7O-_z-*k@@M4X3oP9}(XtFR7*!iE&5@0GSuC1(3hG<xc9}fQw6kxH zOU!!7iuT?Z$I<_IJUclL#PVn;Mm#@8e%p`RPPG`Do#mN)mM+wr=X4lGH`Gl8pH<FG z^=b-9#PzA;Ac<a-ZphUFhdtl{P;pD)91;0ujgMRXWjy7k>iN-)hvh|3A1?DNHDDA$ zeq^e(MRRHSdM}RziQc9r0EGE)5+Py91qQrwXgl2Ra3Btx`{%KI@?#e(n~Co|&dJw; z5)+Qmw-eHwNVXS6BPX_`AXs=%>k|CWLIajmM<V;yMJuby6b5bN0YzYcZ0p9S>~(oq zQ+f3C@;$=5>TmWRlsRpvJ|fVK_+t1#dSToJWsbCr{#F!2nm-v%{T&zJ3f<40cfXwM zd;VlJGQa?zNL$~jv(qHKW))Ojt*v#UGVo%oc&Dvgb;Fhsllog5u6RAx{7?7kYblr7 zedNgT8-#{gMH7$9F!R31zdN<FcoO-Q3~#oh#vef-{htCw4at85;9WBO;bVJMB<!i2 zpZ-U)S4RX&x|1q!weU?9qMfv869$0Dto((3`hd2rJM2|OcPX7KKX!CPdXY3}L-j=} zsW$4Q=w`om&vUkXEM4G%%rZb^tpLP@djLCdirT>fAICBRw%{@_YCP8z@B%-MlGV4& z=ll04aM`h1@Wuu&K6fZI8#7SweWt5T<c*bTUk+;16?lr-bvDE-4DgLkIKSY%CAH~E zVk<^X554poK0zM$8ZL$wW#IK*VbL6Y$rr;TCv`PSabbAJXiRwZ76w{NTENe&-x=9A z7S?VgIrR@HwDtu*v}`A18wjoN4exr!C)+^z^t{HcS>=)XpV*VibhXO9@7Fg^l@zj2 z(j@-C537gO43$yEMDU}tECuce*5;q)vcvX(#*EEHOX>6Ry~g0O`s;SA+F`H8<Z)p9 zh44FY&w>c5|3^^d=3W2>aq6!+`m?Rb;};FzMP}<^6F%U(ShV$N#`ee_FX{EsCo!51 z)#f*EQ}NF3VyV5ikTE=8%fYss9P`=XSD<5iXDdl)taK_$_1GVc-)%a;7~VXhMN%SE z!&p@&B+v_0N8%#iShzCC$Vj>R+JyJUQ^0B_!jUQNKdTT9txCTA6gc6(Js=u`A_p1r zflngjK6Ki1h9Y73jstML%)xK}QnKScu<UxBgSaCyO3oP2mstz|*QjRyDuEh>jyDKo zOAt*<fwu>SUaO5Cul_s5tEFuKdiur!Rh);Py~*3$71TTbtK=E+W96qYq<(=e5h3LK zw$Ku4w#{fAsaG`pnVmtV9kg*O%0k`4N6S(w?)9&mNiVgha&)@K^_$XZwNs*ScZlSa zi7@9pr0q)S4yAW<p;{wH&klpfbNd6i0OBP4<SIy=(W20Pk96V4>He4w;V2}tbsDXk zwHjJG0;HMa4{*5tzD`Z;>1X)Ld0w^VEm~3KFxKx{0c=m0<Tp7^v}9K3{DrBf&!CW0 zro}}XzW$#EDrtI3pBVE3n@1of)m~BZ7%k&)ZXeHn&AT`1p?S?$mQm%pVF9a)OOj2b z0lTyst-Wa&OaoKK$Cjv9iVLH|bPStCNObuXwqxzUuG8f6`^_dd6+GOv2nmZUNndRi z4nM+c5jru7AJ|Ib;wM^%0`boNJPV-mDml31>@G6h@TQ~`c}Qxd?8s$94jF7Sj3pUz zRC~!JZQx}JhraEphpG88?~GbNoUHFuwh{6kv$^scKaUrx2d__Tm(QZYT2}th=!AP0 zJ+gt-^T5W{F1&7#6;_iZX8nHqO44u$C=%d)GcrH$1mOq0;i<oDo()A52&MJm^^i;m zDE|gAPOs)q|9myM#UhJBdEq{D=@zmm^=Xp>RQOd30>skK_eU98o*8=Ux>XVebrgTX zCnG@B26M9nQ@<uEtPT559&gBt*jk57Wb|-TOL>rZMC9`E1<ou2?zg&`hnG*$6|c1& z0U`L20V?icl}mNoqv=5Vm+%Yj)>}ex=$%%Oo2@Fat24Zv%|Tv|!?a-~qj2V`n1WR| zGccwyk&#MUyx`r#%17XPk_kKstiCmg%~dk9tHIwV^50IPTF;4But{FPU-5vNmH=D% z+2u5Ip6M!F<>;9By*14Hfaz+IMcwR|U4p$<>rGU}GJ!YakRD_A)m_|m&dBt}r7#P8 z)^^{R<sjc>LU$Y8+WnAg>G`&9GwnB!Qa{d=yYTu+ek>nR)rHJV+_oo~POZxL_W#|H zzD=`+2h+8TUthWYb3dk+BDAEA!+2!nNrbL1jfmB^f2OoG)CZ;Zx)1LAc+Vd^YI3Wi zt8HhIG6sakhpNr-1c86eJAN6+_|m^BeDxHmJKrgux$-Tm5Lw++&E5-GSp7KGB1W(s z2gx))Tr4X`RxXW%whnsOlY~XVvLDpTq3?|s_-J>j4=HpsQAFw=8kMmm5y;ozrw-N` z-7X@><0x&x{`L=(GymGezol9=+cnA$;L13J%+-uukc(m4)V}(Ja!{HTGWAwLW{rmU zG7SHTw0?%761o`4p;_7M`^WKE0f`{olP^-3=iHnEpp}?1g4~&$OYMT-w*sMbBSW7m zmz%9m6><~0uG(%=JOg>(Bll^LPyy*A97UwpBCM$kzi@zogAw1VgOP(|W(TFFJ@2Sv zZNPOSU}7q}F)!1x;o5~)oCztq{x9fv$HFf&?KzUM%&O|eE4iZcz;CYjl|~2T1b6^0 zPiAyG%_4Oh*4IPG2hgF}zvNALXQd4KmLLO@ZFEhpce?)gH7{GDZzp^1CA9#gm5%tK zK%wyGzZ@H9o{R8ST6s5PwdZTjmfli-Z_wH1F%iwdTvpmh1@{l3d>&v57YQ|A@e@gz zGgWWS;qB6T0z{XJsCqjG`m37*wCjJk2Op!|p4m8fe%}|3!Pkh<&0o`DR37;+TbD!^ zj4Yl+)l-8&4LagAsALIq2W*by7d1W(yS+5Ysjeq4hJIMEwEDDPOG~WGPt1l`bmL{V zDssr>XG4290sWNzBTe_oVcj5-fK-pO9g+`m(dQg@_fEG!J-8(!;<{oAVw^VFi8VCW z^Y}i#r9aC3<M+~f5jBBGj=mM&&$yE{Yv*aEhYqQTZHP~27N0FKy){>Xm})%?J`hHz z);A%->}7m#WK-P3Z#?95OzYs3zE~eYVD@}#8%hehA+*2aj)ooqHEf#$f}2p{H!<Am zGFcV-Fb097$ag_nlj4o*GE-@9FT9P_D#8^(zesb^t+nf1B6MiqSV^7zRP8(2CT}6{ zrtKH7Ok*8~<xXTX{*=`r@g!uur@^DC@mF=?h~iLW(3I34L<7U){VfxW{YD(_%7XQ4 z{z0WL?lV$HyGJh30mDzwfGaozyH>1g%&Gt0mu!A^a}_@Ym<0;0k|1TsWrHcGD^SHM zydpkBg}Ui<mR^#EvGa31x!*jj*rlkLsQHmq;C&>rbvfG6uhkEh?tFwTz%6s6^9bNz zm|4D4bVpaD$*&23kN;AXYP4=FijsNn!Q&#_ZDMEqW))QMc}9cE@y5g&9`a}AC{+=q zNh%3gyd7_HTr-cGe()zJn*A3x1~-UsPIZo6I8-H)GRv#50G4B?uKS$jL*K7iEYn3b zpw_v05BW={SA*=WHb$4l{eQ|g3OD|1KEM<-^Za^Q4EgP9f-g}Ki>)zc@2@VT*a*G) z{7hMvNeip>_^CWcXHgoenT?#v5k7%B@J<YP7k5y1It{9l$@n;Gkv{HNZI7~nkhkTV z$jg~C-Sv*$#pMgOdxZJFcU9GbBxJkFfPvqNWag$ayCz_G4d0_dmi|&!CxvfsLDn(U zn|I*}@^xPNQR2jlNIrCzk<dycJR?XfoWXMbLzRBo#LwiX{c?y6H?%GB=;t+ORXu8* z-|lv5Y0ptN0!!X(I|8XY42hZ9Q6Z{LJ^3#$eMzK^-{R*YuqR>eTtDX@KJW9_rs<%I z)#Z>z;^z?!{O>9TCXI;yd~97$&N0vH7ATx{*)1ZX)nOqs!{rT_pTlV|&x2HcF{pn# z`|lMeneC3hB``@u8lnI+E9XzmbuIqHFMDKQfA8tp)Mtm6oA#1-7Alsa385Oan|x8R zq+A!Qn8>s<XQ$6J6RagW1byy(fw3ERy}9kb#@uwUGmM^zq#Z4G_gR^!ooB|AuD<>8 z+VS}FKQ9&GrwGlwRKz_Bs;-t(R=7asgi=##pC<2(nKn^hW8;r>a@!o6y-|~upN0<` zP39z#@BK_uVXu&~(e;|%^Fz3d^~-Lkvyf@Z8-Z0qccPc)!TT;1Dg(mFpshCj>}{vI z%vfha%h>PLR0C0nzZzm{*kApFwDx1x;^VkCTuXyKEeMG94U2@EA1nWjm?IH~{U@<m zeh3MY6Lnsjhb+yL&5io><VTu7^LSayi5q;I#s!$p1;43d9RayEXOP}i%^$x1_*tEs zv%DRUJsZctmXj3V|E7_4hV$nT;m@exPKIXrwR}ok?22~<36#TY5>SErP0K`oixZLP z7L>c_)>ZgWcsLpk9mEqdg?2JQgKtNFuO3|l7|w>8{>A!7n~GC(MrHcvz>?5WTa>-7 zbYD0t<bBcuV(x0-?MXQYW8Yde<Rc<Pf?{5sK$4wXogwraZNH9!FzD3E=+1YI<O6(E zI(BWXl^T2d)v}!*%&}jzoj`voOzdZd>ZFCZ?VQrq-xd9J45~j0B(HK;7X<W)5GX5j zvuYTtTzJ)nI5AtPddFc3?IV+3$uQ)<>-f7>##FJPtd#G(yRl`}sQ|os3%GHnT1Oc$ zBJcW}4ENI#O|OrD)Z^`~T>uU<*VLYmPv=e^n<7`a;N<jZR-|Sa-h0re>t~u@+LPMR zY=S%d-n&$e8Ar-D>TB?emdmwxJ!&{e(u&6rRTH}WB#gbDv<`8#E0~wUz;aS9G~bn~ zeO9PzL_AbT#BEePMxef>e`Ov}x+;h<+yyeqbNzGs5<X}blo`L<>^@{Q(0C&L!&ZAr zgIR6O+8a$%zhGCdmF%MDn)Xib=bTL(AEdJP_xi?^s*d$N((vP#H&&|#>ruW;GQKoF zGR4#FF_5zd7SZ8f?UzHI5}^{9B0rb|_Ep-+{K@2Bm{{}p(`YbV+L3E&%>X~Kr*|U@ z40akGNGiozr;?VzJ5``v2TBVH_CvG+epezo>-F_5`^7WA>G*A29mX|~%>v&WXVo9i zYTK<DSAh2PJbaMk{@+{v+vWP|Y+W-J*p?1tcNiQ(tb$cBBJAC^R(!m8Pgc}QnTKar zkL2An+z9k;N)xD))16~dWn0(s>!`$At1fV_vz1#(p-qb~d>-t?sLGPzJL`CqgVGxZ z6F>mj^O2(#^-zZPm>to)kqX0(msNCI3?W>~G*NpdE_IhsP2lDc@6s20rZQp}?8{Pk zXWq{Yyk~B2uOp(sg7oz!^PPvqA7U7iubjvBDpg^<2r86p>HKF-7SXn(R)x>XUz%K7 z+guygrgBJ{t+!6P3C*`Md%b6l&gKP{;=DfbS!bLKU#VkCt457;9jrs#Tnn&Y&uv6< zODvgx;R+nuJIM&*;Ph;1{Tw$*0_)yH3h2wk%`wP3<Qihew9*Fd`blmEbIgisSTPjZ zpw>I$gNAETT|cE^Mo_#M&3{nDPjiW7f{0(4=MVFf6*n7q_yr<Wa3L2co`BWuL~%To zjo+|B+v8#>SC{tHpJC%a+xjs2rkID2-=}_9u+bag=p(ox?yRt~KxKH}UQc_<IUFd^ zEQWIWPuxKPya`E}1iJV9Ka*JWo&@{tF42!UNYFrHyIs6X(oxYHl`X)La}%aR6KtQj zaPqB1bXo$tK9~X<2jnJqksZ&3>QVUQdQ6*}$!yoo#VwhYL)M*azRYg7YeTj0W^vp> zFRG?RLN2&{4GEWY5W9GHPf-nJ!dGU@%}yF1biarMg{cesEInq5dL6?bGkG}pwi<Fl zAZlS=7}&!;RW9Csvbnd5^jG4V1<`+3@wIrA)<@8LH`ZC~K@{5FJ0+{8-<$;s1nZ-c z>u0lzOC56I<lm&TDpp)}K}N0dkv7B=T93r~1mc1|-d(VqAqS<-I+*>|w06OcgAV*| zQ)R$E!=B@xHZ7JRF~z-z1?xBG*Gaqdn<uGRm>Y=1(+9V>(bxd8rqvfZ=7f{Xlc3j= z>t}~Aws(MEK=9f0PG-}wDK4OR#iUCLD}$95piUq^D|QV&m3zr?d{#_(TEn)lu2PRx zli34G1GaeYO-j=N@vs)gR<m(!AQg8NyKp1okz+MSnqTD76^U5|J%{8}oVXovLvwBt z;Wcz+K$ncmoSV~Xp=O2HC<@AbJ1aV^l-X%CJz)KNh)Uvlvo!aq^~*so-g{uOWpJ=+ zn|9$Z9ur`QvEOTf^@nqOY1V(BrqWDzR{iL9<VEI2PECCB#D4rrAN2FFz2EY~|JxI$ z2vB|LDL#Zr@h5QCT4=d7+Y;V7`sG?9eqg9@7bB;<iG*T`M0QG-eP6EVv?&6!_TlGm zf-h2EeE7@bvi{^RtbCAm%B}Y)ag2fXPsm&?=UY_&d#MybJ%S}>OU9?l;ex$xegnt} z{kIo|!65w7w&^p6E6g9nLK>C?h{yL=^yA+xhh5I6uTX8B?s@Sc(q$JW#nE`l6+ypK zmCMz>JfTH%T)u3o#<#3sFmjVv+6Pae(mryO1aiXlGNihUgBFqxN8Jx;z&?`5-L3Ze zmBK3k6C0VGSUWb)qMR_K=Z9&+{W2uGU@BE=A}dLVlX#kxnqnLYXPW#U{%B`}4WTvG zn00r$uYi>wGJat`<z<z7%jHa4_oF0NuhpwT>4Z1<IQ9ug_uQ<cn$-D=MK@elExekV zt9TsYN(u9Kjm^TeJd#M4KNIs?Euq6um3-G1|3M9%`|DPuLrE8(fm^hVimsGH_|&#+ z<go4gIS5OAJBXIBUwrfGr!W5&s-0ZvGd~c;d7-yFLpFEolz8O%UaA;Y`NYPYx<T;| zeg>hL@LD2p`AGC0RqxNQ?-KR$p&Dv=JbLog19uYgeA&y_;YoF{_{|1c{0Kxr|HtZq z8c1QgqsKb<sGpIZ!u+wHg)tZ-u7{~?`$9>ZR{aN+2b|FQUH>2w1u+Q>Z%hu>uEQd4 zFO0AGB!ea;n-_{SZwsV+48t|f3UE)f2mI1=%n!vj%u9o-V>b9w_5Yg{3_QECXB&@P zxTQMd%coxhUW3n0yIqLiA4u=Ub>Has&Zu$b-EqPocUfM$Rrg0@7&vZ0@HWI|uM8^W zk-!-%(`MC9EqszyAZZx|Qf2-eqUz7Gl6kc0rySa@kf$i97Iw)W<dU|VFWr&*vpxKM zu*MtZY|Xkv@g7%G?9y<rs!Uh@>s|{D{DIF`7advmgn$)AwGL2VCd{vF2R=pMI5PX; z@yg9rl|!NnL1L@X?;#!!7tD-8v2DQvZF<+fYp9c^ZYFSQN8h9@b;dTI*bsMrW>V5@ z{R<1)`F12;7cO5@w~?zNi7<zcs=}+n3n#zEuskm^t7{?ob{W)NrGbqB$&=TyQfp+P zoj<kS-P^wWYqG=<-i>@wbxG=iWt||lV==!o`w(=PjYvJ9^-*AY&-q*cya`>q3OH|= zeF!9>gv{4BB;<zbGA`B1Y#1f%`IE-l%Hz5dM98}G8ocx(A<x-Y=mSg6R_`x#dgP1d z#f=~T1ANrE4q`vGiuH@T{BtN#Ho?^Fq1jE-hmsg4SKRopHr4WNSRm`^waa$&Poa<q z84g%KMu*9NSROUooj!ngN7;(w`{ri3T`qC2+%yNlqH0ZB1rGQimb9eH?>_R~R)P45 zwA_)q!vxiH&K}YKRWi6EWQZJJ5PyI{qW|RDg6=;@N!c+GBWq4&YcOzp$OhnmIiv(L z`oJTqVSQG~Z+**2Ug%DE4}mz7pS4*7MFW0B5Cc?R3ZyY}5-7G4C`MPe_JyYZ%YRbo z<|RS}1*Pblucrr$)<^~DSybx?8Ox!DwS)S1Gr4SUXw^rmdice0oha_FicanCRd^#v zR>W~#;*1uw_0>5FXeZ-|pl_Akf!{Jd45D`8+&EI-+bdiqVF*P7?U_jIvfPRF&L0K_ z7uEQ&$>8hL(nLo+#Igzsv%ba2lHV4GG)ApF62PbCVx3V}GPk!a09fH)u)JqJ>;;w4 zFQhKT*%!Li%D`&jvl9P5MfhrJP}N__Gaml~TsKB0lb8Xca*=yphbj$Et<Q6+4v$9P zgQ+uxf-;+%>u^jvzpA<XxDkQhVU!BpjRas&XRj9Ox8ZR`El*sev97jwm;5_`I<@xE zCi;Z0P6i<nQeF|Kl2zJ`-0d0Mseou!gagwX$=w;?PTKA`UnQus#?h_9WOxd$cFl3D zU~Fm|yXc3{G^MT2U+OlFX3x5P@{iwYoPGs$sBbY5Zjs+bIN*#)&xM`t0c{Hby(0L; zv_QfdZ=LweT58v92FhnZ#0<_Mvv_*|rY3RnLFWC@9`D>k2q>ppN>3Qg@h>r_&w028 zva|vVIg^BC!?(wAl$52{8Jgu*@v0xk3i;z#3}1H&?R*IJ|JLXAnmBtY)!{Ets84x9 zcEkO3=?k?--{(7H%AUEFR{w%zaTg>PJ)w|($dr+lqb?DuL13~6j_&&TCA1xG^Gocq zc2%Sm=0bjD_{2DcC-iT<n_2%r91V2awKLtwJ4K&(L*Ipz)YqHezJA=qfuQsUJ>6vH zyoosFuxEeQKX_GI4ZJDs8^U!zFITau+)6iq6en-JEv%N<8oE}CRX}!x+43(9Yq$Xs z!mw1f<}$DJtaP)1;^>OO{k&$PoMWBT%2b{C{xyz;YrhV?mL<fo(hqYL??!IO;_8mh zX#bl&{YvLnRFLhUA!6M^KEa=VgMBVY1GI9eTVY69M+nAR>WubW^;ypCMLt?#Ub>rc zw33|&_~_UD=#j4|5Q;=yH&|WZOdg9m4_v<x?w!~}FQjltLUBD|Un=5&pXY&X0G*we z{4%2(>u0Fk*P#UhM^QCQ(1ao=;G2|_NKeo66a4f(UyMYVB5hgXBT`k;N&M40*QkAZ zSXYek6k*i(|98@RIq<ct<k4ow5OkC5R-D~Lw|!Gb6CF*nonOV_atGf2TThffGDt7} zFwMSMxNKD7m~tcMTAK1tpH1FCF>fs<FG#FiGLJavJIQ_O@?GJ^rW>DTY0naKP|;?A z|5^>W(6Jr7RloD(#bT#!9d3hc19>AgO&g$*Qp1fw&GU+~i4%^E;TY<4_>Rnhf8b&A z?OTj5Z1SFf1cmWYYte&E2zooQ*DVvY@CDmU^?1qB7lJTX$<ZtwAw}+$T$g`~%5SXz zOcZKFt3&99n#NWoPvf2@EpwBH&MV_fu*8W@81<eBy{Yf*0ZXGPJYnhyelHba%Yor7 z@YUk_p2$Bwq?+cGh(-K>NmX^F^HUQ;mdnO!pSa~77&r{ZJf6}sc=&8-^Y`e?x&p-$ zmIbZbabz20cgh(rwgicGYpp6j*7K;#RM+P_lgo%B`_vDfpNGH<U_)Fymr7z$G2+ke zc}zSICUfr2hVnx-XNC~&=iLmCwVWfxlLQ_M`v#EgU1OgXCTJN=<CmPLWZU5L*St*m z^?yZL_=z1QzB@==&a6#ec>d->*kG2dV4Wo=z!qxXo3iD`8s_hYwBBcFv5D=|DaY<_ z<*en=UuV^0q!pMyIpT%wTMDmfKWqQJWO3t`s%`>_dyUIBcKl?eH&5qo(BDI!(n~W? z#0e8aZiBYMp`La{{2}jJ__H8_`to6lMs_oIhKC8GU_;9rodv8~=2b5l`Fo|8Qh&Qh z%HjC#eU0@$Q#W1gW!3cstaB1Wl+UD^<RBG*pHFbWLHbLHWM%n!<QJIt#U#E%a|6xg zwpj$dtI&K<F#H9TY@dm~n`+lEpoXIHG*gxlPf$o9{n7m;D|<WwVM(|VFqC_7#TP&P z`N5ktyx~99)CD){Lv06E^z)tKqOAW|n}+P_7(8Q!#9LNaHcyOR=aL}vzEAGU%lZ>? zo6g$xL~J(A#<5mzz#nfj&adR%kA4xI9M2VDhU<}RDUS#O81Nx1v$~fLmnEuu+)0VV zxOOV>y!rQ_nxZdAxi7Xwnrq#07O0<97auSb*S`^4{ovvzD6PRER;fE>uNphx{~DqG zVSw|A+OgFpyu!^wYS2P%<BsXq=tqKA3qI@`IjQt`C;zSB*IT3uWSpE5U!XnT<k%-Z zwKz@psU1!fK}AzAR*{5l5Q^c8#YuOI+chw<XVhD^eg9&NjP9`+X2y>80=oNIl|lz! zC_c1tRIMmJc;JXSI#2Gk9;ur{=yG3qPIwX#MX!>%O9MpiPvoLa%!!F+$%_Q{8m>#I zEJ)73HejX2`6cMiON42v+q+)LJFxcy%<%4N``M{~Vz*@v#ax!xw}u6I>6X1%#!6c; z8#{-7ne{96Bh_Ek#P=WkJz!Bdj_@hmG`xS;u*QnBq#avpV~*H0T4{l|QJ<o(L)D{G zv|R=rI*g$hOem^l&_aIO($pB%;}y=>5HuNV22`|>pBs6TR&ZHj<@?wNpYNH&gVWy| z6H3|4CJ7wWA{7QVx|;d_!nTJm7T6ni?eSa#sYySSX36!4oe=nnUil241oY=)BIP}K zM`PB`Y48s;M*<^Z6p-4u`;Mil3SO}fV)&e8eUq2_QHTAUrRHtrfxM_nAwi{1Rf?Fb z*f~JC@Nb{^HPptd#x{*gjyqh<x_1xx3m&5PrJI6~AHU*)l*hblNgb^o=cFgI*g$cE zBCJA44Gk<a8rdoGn=J2l-UqT`2rn1fWjE^cAo+0_-9gwCJ(vJS#G$PlEXYQ>^Gr#9 zd)Dyav1am89Nn2<$E_#TLT>Sp-FBhdQYgV`RL!j~(xh#OcBS-zy4F<gKS@5ljuUSh zyzG7W^TWnTWDd{DoI7UL7=<s$dF|{RdEoovna1Lxlqd#w*)dsiMmnl4HQm2WLmCdo zpxe4RoQmlv#n8~{5%;=Lze?S*SJz+Fsd2^cxMBXt<Hy06IHYttZ_HPuFjRsxp_+eI zF>(`^b|k2d?7L!=EKSE;%uHRSiXQRrzTs<J!j#`HPM$c&uj!6<MOi}KG?6-KCH2ny z?_Ph6t+am5_446#!(jXgsEe$MsU`_K2cq|%6&6$hko~*QnVYiNj^e-=J;RT30=JBf z6}z`&Fz5SC8%SSJ&#<n_B9$$G$Dd$H<_Pb6+K8CPq`cLn?-*cT{4C|sD;0jmL&1AR z-_{r-3UFzEWmXC+4OWm4;`A(m6x*S+5x7@TE4g?lPZ6l9+iYcBMtkiw?AfLG`HDva zb;Zcx>0O@IrBHZJu%p&wA(_i=h)QPWz%S^YdsM9<mh@;6b7z3TgN=q&87UO2OU$(7 zXrHNOlDXz1^9=8=a>V4Inz<pTRtFup%lQ}~;DUDHsndBhZhCv|cT9U<|6+dF>*+R{ zN5*R4@`o(LTFT7AY6B6HhPBAhm+V8yri$)Kdt}4cTZ2HO<JcUC;Mu$K|EZA&@9>v< zAK!Q5El4v2U4HjK<A!S+HE$Bji-$@_zLy&`mINJ>?rquD4yL@&81sB}ZWdMjU-MAr zLYbI3bm*cDoh)XL4x*EHAmW-b*CXTy<Ha9_nQk!(ZFsaN+IhUmIBAyK-v{r2qfs`0 z4b9r5E&O}Y-6AldH)g$Wje<?-Ul^xdBltgXOpA7EkMb@7dqmFz|2(Gxu};j#w=JL& z9<im3Q!I63l5=JbIkU<r>UV8&FGWzL1){tQCbe%jLvDNnIrAs_>TDx7L;XH&jN>oT zbn3=twEV1gEluH@_gucJF+@5?G;eMO1Kd?8hVp-nNHht*x|3b^@cv`q=vX%OH#*g2 zPy*!k*NgH98wjSiNIT&mq%MJ{?V8Wx<&G}3F!7zf;vPLh_~Qtjy2D22SrdjaE%R~` zvP=%x4}kAk56^O5h)iVJXH+ET8dklS%0n&vv=bwRmjn3=wKD|Z^VY_h^6^Ik&`N|F z#27LtbL$?0{n<uaPUq~02U%P-qLb~T!5Bvd!+^L_TJVdUK!luB98LWDQ^K2fZ&V=X zkr(9{N^Zu2(X+p9VW*vlzMbKNf^tGNNtr9;6&`iA8i3yqf?$Nw&5}B|LxSH_+?zJR zOm%EuH8x=1+6KH*&)bji$JN6a&ws<Y!9y>R?2baEEk8@2DL}3N84^ulNb_=8`_p+K zOHPi#n$6<mxTE^W<=kMw#%<Y%()oV(nW@s#?M!FT#gTjy039|adi0x6Ud-&o2%(*v zOI(E_{w7lC+b^iGtdw_2XRU*`UKUL`dLrw9x7%Q68WMBp0ukw&Ie3BXhsfIimv~4Q z>5TuFpE*>}ut~SSiiUP|J*kg)A|d!>x!-i+!fj(G5!Ya!S-A;mu`H+Ia4nYyN@$=T z4NR>|C1xE+>+I<Fy@13x#|d-~Nh}A3)8($79M@cuWIv?7@c7+=pYs%V*)-VEbS{q~ z{@4jj+1~5e<CTApCE*9&M9llZ_(;1Q25-M&)00~Ldsqg@kfAHLbbwK^GucsX6G$}k z2rX?`PZ59DansqY`<0~s%xC}SZxd`*w_n+BImH*;ez@h>cYN|ZvaHxg6jtpyH6Ouy z_`ku3<R<!mdzD$`hbGy3bSdQTI<B`$dxXX%!tISUhF;y@lTtrYT#)_;e|t*ZT3DcR zckF36<tX3J<u1kK<;Mw-rwoqEE5#wdE2d#Qp}yJB@8@k-+>Ndxm;T&n7mr2j)PU>a z{~@<POUMz%upu2MrpMq^!eGuJ3cVUQ)IL01fIvk5o+R&;GYOuCXAsUW^r{c|+*&K$ z49=k~uZj~7qW!5_W}rJiV&uKnKD%EzW@`U93N73TBJZP0xc=kazx#O!`H8a9Qt4gK z@8cb0cpp&sV3f=>1006imlCjrfCI4QJqoY|?}L|+PZ^z_E1Uja9h>PnjM51hpthfE zh++9ZO}JxaOGH=HTVIpx?MOR?BS&{P(Z0gtuXO{490d=NQz&`+|IC=e!;O4Kyyp*D zlueNP+}xC}7|)C5E(tk=sI&qPdY&iitEN&qoO0nG(h+QgBVEWMv<4)eHfJ>PD~F^4 zPy>3$(T{t8^+C=$>|FjvH!!~X7I%s*Dhwz_Ib8%kO(<}>IKcX<ac)n{1B|Sm!t^0B zulwqrWlNAc87v?09oezuGvX62pk2}Vox@%}$qJjmB!M*&^`_vTqQ4s0lS)Rv&;=Qp z8-m#HM|?7RWeRpsd3YCoUGa6Hnze!xK7{-SjD{Zai~{OMsFd!TfZhi17w9_sd#)OR z(wMslI%+)R8?GY|2YkJ0<r4=C-D&^N;PZw!#oDuygjjLb4VK<t%SAa)#tqi0{gdq! z4p|TEh();)Dd*XPvIh2B4=Y%W)7JOj#?+6<ueBw-ElB$21Ir(VhAUH_555^IP}7C| zinkF6WaQ=zde@iWBkb|`#ehQm*j<A@ZEo6Z)Tijl>^o<wL~CRyd1Ic-i#lUfydAh1 z+KEGMuFe;Ol7J0|zawG5I9-%P5fYo{BuoCMR(4}06WIUFl!v(Jk4t=o8$OB&N8&NR z4x&R{g>LuAn6*S8jmvoAyLGpE1)^H|Z9iI*lB-Z%NRZNxzQf;$zUiDA`-Y+tOJj(% z&2a_RH`#Om+>`xfPBHJwT%JL2KR4TW{7~Kq$5}CR*0a2yKOdOh!l>1t{vlm%9P>C( zAL>PHLpObGsDZyx4CF+Mpumj>$Qd0`?k(A(uTRte>pUy2)3sFoEow1fEXjohiBOqS zcYpr=zs;{glD=o9Cr3~T+Eu*J_x5oyJtVm<?C0c#pv5~?vYl_9V?34>eAJ(vTqbJn zc5pG?)-w9!hd&B(6w2r}!ssLDy8NJ<(lO_qv|zUE$(ZczTPYp(%;#yh+PbHE_wN>P z^QZ87WP`8#)mtnVF9^<g#ejpD3lN}ZnG)ZCC$Ez46TlKhDUsl_&|kqTbeTEJme3bu zemOZ>?Oo*DbG?kA<LUWs@FPEYU*@eY)If11BS9s$dmt7VCKyX^=CNhj%TlUrAKP!J znVAKH&@#}{9b>Sgk^ZP+;{G!8W~@#&)OR(P_8D=TBRS(FXizDg)Nl!kzj|xwtDXvp zy5L$t)@=aP>`~1v|C#RAAORTwFqBCu6Z`*rMGPkwEG(vfM(~>Vh48SGLju0Ov~2FD zedL|_KThqbs)Ko*&L<H+c2O|#f&2fuvoQV5RX?&yfa~=%J6op?=&+uO;m=KH#5%0Y zFroYTp*VHRTH@vG-gI54n{tQ2xU*RZTfrGPa*%qwMojWo`b$%o2D<7Mc=f#Zr97Kj zH%2k<S@IR^dq(Cc6${>>=Y3on|L889HC1UsG;iWMQr|c|ZTzD^6CUD#Y|ywDAgpkY z1iFZB3?;li9Bimu6(56;B|yi*-vE$BTR~+|$QF5+X`+F7k_6>Rx%qJlB@Rs+ycfTd zh&X)q$p0VmH@$wvqXzXw#p`7)ST&(og=8ONt^4tFDp*ET|MVACDH}CJ#QANtSF=E< z#YI_vH@1qb-yK?CPC})Ugp~xT>*pTDhWnQO1NkVF08~Udr6~=Y7Sh*<F^1>a;QeTP z$k2=i03v7|qxQixU77nRN0-Ca3G0g|1nmg$GxF)*3sq01q09?C^12sNShBJ~oNA)B z!t41M+vfkmu~WF2UF)+phiW@`4LChQ(Ie#o<jkut2(sw7^X(&+e2JCKC*=wLW2=8e zClZA=YCYI1AU5vR*Xj<$ZzvQ~{089@%A3gvo@2PGA4zHKQky5NIg@Qn=QUs6-mztK zbdPdrW&DAfyHB{~vAFky2c2o6bPR6Gx@xX=#^GJqO7p$q9CU(WdG9<48a6TjTBYJ& z#f2U4LD>Bxw&lrB%bhO95e$?U(xh}B<=*}T4GIboZcp2gDqVrz#BT8B%Zv=8v7XIv zP7{7>=}SINX6#sx(IN6W*f9<vD4fydqz(8>QYj09Y=6^Yzw}>i9n&D3o2Yzu%8&9r z!8Zj6TSW!d1(IFB{EYmGj*O6oXJna10~}}_8l_nS-jk87!me5{kw83GwA+C!tLN;% z4E#YmPz7|HF|6$UNkaORM_B(4AK-s7@qU*AXSt(rPXn{b;Og6h$?@s&_@fQJa(YOB zba_#+j>C^>RySiiH;=xWlY=Wn<sbK{eZ&ga@<qQ%S(s`qQiSuL*Y0!sq@2afKG6{M zz1nu1ahSwK7=e7*?|nc&_pscG?SJBF@xRtwcG9pP72y{567rvn$9wD&tV_oO9Cs*Y zLE1q&UtPP{WI}fO=<ESzkQIEnRG>t->k34tRhn2EbJf8qpI7TUokDws>qWoELu11Z zeBx$$ubfmjxWL{wJ*eRDEb+t-o}-qpqZW(kqGpcR=%pK~b$|O%_O;m)Ib&7!Un7rK zEJPej*+c{5xXmGsz54Vz{`usTZ(rCR^H(-qZmYO?gFH$ek<%?N^J0G<H34N-`gjZ` zNH*RL>=<Go7qkP@DcWbycWpY|sc#~{Dp+^RnV@}+6|g(kqx>KfEv+pGP%OnwfXVBr z(w>vclBU-p5V9aDHj>fYoqPZLvTrDGMnfV8V74wLu{xcG5JQOG5NIP|+;}LhzGAF8 z>f^a>gi)~Fd2*dW<D1Okt8kv;q>knF5w~O=n^#XO4SM(%gay)zq+-Qla{SFa6(jV1 z-tkI#dc^8(l6f4&u%`B5S>Qu3LV=4j)MpXuq~G9m@aDa!{5R#xP}YtAWS5<)D;~WM zrm)dDgUYAZaFVf<MsL}j?{H;qU2sSQ9O}s#kT|Nt{vX2LGA!!wTNjpYk(LmUZlnc) z5u_22Zbm^$x+DZf5Tv_AQo2Vv1O|}q6bb2}o1un@Gydz{`<#94_tRYS`?j9A@3rn{ z#V~wFUqks*qO-+|4BAM`!h<4~ByBfkTlC0V4dH_UcAYgGog8GHDjy|5Uon0;rN+a7 zm&2MNNixVff<3<E_YjUjdbL$8$jG$5>0p7(@HKoudHRGnP2EQhruo#C-C!Y4+JJKX z>yeu-0MEA`82Q9dCw#A}jtyTXJ!xz9Al0g6l3WQJ^zp&b1X2eE2>5J;WchphUMCJ< z@PfhWx6n<h#EV!!{EJu!QWib<y<p<DsGmw>pq+J&2cpC<^&b_qi#2foe9QX^IMB{# z8TWQ}=GTnG2xiG|E2c*<g9c}ei|0#i;hjbH+2y6t!aF-&mEM`TJ0U-k!ZSa(Q1A<m zIod{23DD*=hvBLWSl99kZ=C&71^0MhYaxP;$?;K|w9pog65X24Z}BAC5vVY-GuBr< z0vMFb_@MO{;BZ#a@DnW$S+%40od^H{?&%9POzk<=Z#ho29|-`zC@ZtD0?(+SaT?FZ z4;`Urs^C>GJwBguKJ4bE<VUku3`aC&&Ul>D-@lb$#fEk)GtBUO@}vsVqSPQ&Fx<>r z$~r7TlEHSEa&L``fu9vYO~N6(nSU-{DDssa{A?V~9#_PbVXYtuTgVMF0K>(Cn({)2 zZ^VG`l<L_+#pz%gwXZfPh2?v>r&vnT_^Drif!2h-|E^$qwh{T>a1KpuP`L<NV>tq2 z@|-lWxTeq;o?ZvlZ4#jiYxxmwU*{dvqF?+6Nq`a0S6cRTeloaBiq9BM=<6&AKy<D6 z_e^zYTnrgJDm1`4?3U~cqc*RDY4Uc)(H?8AZ{LK+uexo&OFmxp-$}B|mZ6~LdXgEV z8M&=Y-Lo#<mh(bB>h?%p=UP@zSAK#paeYtSZI^(#m;2P7>J8%szMhjU=FZv>YW`j7 z^J<BS{o0WAjh!y)fA<0a&AHKap)Y*%0uIoqErUj+{5XsWbOTFI0N{cpQM+g5ZD*x0 z!$WcHTYRG+G(Q(5!z>escSz^0ZrXXG+3txvN*8h`nSFqONP6r(P)O32gF`Z~Zdps1 z_D0}CoGKZ*y$6TjSz%hW%9(_LV3@LxphdFEx7OeVT_F<W50vR5{*}HEH^sNS=WicQ z=3|4z-Bw#{7<D7B=Bv=EXd8Bqyuxit6n8fTN~%BaA&71X5#iM|t=d`M{a9G-HV}+8 z704xwY4d4X^qS<K4zb@Sw#0!Vz6*1DoP*m+zhUvq+qiRhvX%0ZIm3~y>9DtS+zuR; zZJf4Z&U`^%0rS_s{JYfU?Tvkqb`nk;edZHn%e}}?+7>p}r}~Q@yCpI#S~8)llT_+5 zPo@f!lQ$%yCv{%pX-4Cs+WMYTok`Li3B!S|B<rAMuQtX<4^edN8`!rX!Scy`E)+SR zc$2{#h#d(ll;@GQJ5**WzX6gI8<V8N^zB@|7SN|erP^`fqi^mB@0yT6&k{WFqV92` zOw)V7Qj-&M;Fnp@JAK2~uNT}a=7niq&&<3rSlrv>Eo^-lT_48h6cn&|X8b_ShaK4v zqr6@3K4jlqmB)F_dibDvVZvBdv}G(%!nzUp561$-c?g}G)rTN)yZ)QX^3W3UMqYfO zgB?KQsInY-(5pMp$n=Bs79RgO%-7^g-QAC>$HM=l!Pi4CSQEs?G*;%%s;%tUQKFV| zTKxXDxqR^OOqKRBNEN%yZ=Mc%oo$yiu9@bY!H=?DR$=7aUS@I|QDWA>7v~KPRlWMd z$-H0hiDI>*a@;A^D3f&Bb5Ak`C-{>Fjn?S%Ci6}=ctc(~Fa?BE`3-AK)_RCBV3<); zkR8tQhp0_yUnh3v$1df=a5M$m{p9?|vPy$NWIE-%kJ~1Z30CUAV}gI>U=OE7muRv$ zep#47`|SA^W^4VDrY}hSnE2Lc&zNgasYi_M>maMPYp`GS7`s)Xp17=sx-Rb1`afr% z#5sml6)+=zdDAD}J`hX@jCj+w!IhbMt58nKky!(5NCcjs9UyPHkU6O%Ao<3=1`Lfl z#_VdsO_S?_`|FXTY(W^fRgyzha5rL_h*nS%`5Yzq^pMw5x5#oPX42fyu@c5OfXda& z7L+j2=1<g=7lH(xg5X{M<~wKmcT=8*mZ{H<J21usB7BZKNdFz&p$;fc8y}4KZKL(c z^~6kV7x~(<fq5A-{z5xYn4M#0$*6grQRle#Mb@uKz=)0M2a@W^SN&bVY$O*l+DFS4 z+B<$}>9*o`1C6VAYZiA`l6&gqvI&l&JlesZ7<|9bE0)}nac3sq=ZIt>$bA9nB1OzG zw7WDY-{}LQQK}$CZVFVy!P)}wyuAepmW(xEgP%6!|4KjsHx)mfsW!ztSEGivX7;*) zZ@wtDi&}S8ilerI)4YOy5*hnDZ`eH`s7VfXy?z^z)B4899&jmEZ3XCin<~y4fKBy{ zZKQa%C?!kN2kwQW(+O4ooWZlX8a_Wcw{&7{a_^NcVdL!HNxEt%7o0bW7S2&t8Vu#S zt%+-(WPsy<B*Pp)Q|Q_Ie(nIhb1e<$Lv#;13>|mI-M`A|fl5L?8aamAYd9%fv`x26 zF&MwX`<JkSt$80iF8BF6JB7^Bcg`;9c^AWh(s43g0rd@d-*`vH;AZMhN+aI*>E%}O zJFugtAEoM^B=vYw(|z^s{qv@Ft&b335kF(9H00^-s2nG5mcwR-XCg#l8f7L*ZLcwI ztB46c3XwD&Y?v61MI4{(v*t&1+RlV_usjAM<EQ;5-4W~TN;I1ZCo~HFe{KpDp2f*F z7I@f1h49``lVCNTMf_xv(kPD>U6!2wP->9lS5c}^bj7aLLoJ6@Qr!5Kf{GK*BDlm= zXL$b4C4T~=iyxl`6*;vEq_$X8Q?nb$3^J4yP04M8<@ub74w(Kv-V|o((%@=2EP`}p z-x%+fp49<HTumWMNmW?B)v~sCFF;e@vC$5o{h9rt{o$v7k0(1_5~hvbD(wK|At+gF zs-3leRT+SuMCheFnpKjiH*8{fDwWOBxw4f(_k;E`Vg;re{7;(eVk8ea|D96p=0nPN zA-OSx!CvVcnGt{K4zS~8;H}Ka$<bHuF^7t+CvhRRf)@eroCb{i2u@XuzV@D35lSgr zeA(zoDlJj6fIj5WV=k9XTRo=5Grq_8IhBAGxq|n!P5{b*hXFJD50O_pNcQH>yP$Zb zEBas>RK!yOD|8G)rVe_7jN$6S4z+r6_8}gSyHbxDNr{)mr2aL0zkQA7cNyKPCGFuL z=U@VPKb|s`UwC>f!a9bQi#Ip|>e@LXDup95G6WKf;-r3=2S0k<h(Z`->_4os5*L1^ z*<V`Rj-pbY27<GSlzH|_A6KvI3@0Pk_R9eaz=viIhs@=Z!h6(e2>%VNysyZDL}U~j zjB3vH5+hBZmG5ju9GD8wG^mVDjtQ|j=N|MR_%mAhI_iwz!3`pGoTDF&%0X{QGfeoe z^Oj1yU-{!TIB%SLOu51L?;2$jal)<I8Vz&cKwVvxO8c0Dr<I(WVL*^sXUU^XK&jxa zPkJWQ&{9exE6@9UtE(>KavK)N+=3B(zHj0SfxA6wUn(SRXi$C7vR4>1sFAS!G-UpR zb2cD#Cx+1fsncFem?Oo6ZKMc{iWXb(B{G$*FAZmWDGH-Zu`H^=09W)UEVAKf-dpIh zJZ&9X&|)rd4Xh9%M{nyaj&kr2;r}K$gidO%K+^3M^gfn*XTS_P-yk)=zZ4tHO-#3d z4ronO$KKvi<Usm6s%CH~1iON&_k|@<$;ey7aM5T{dP1$~p%JDDFnubrkre2Ot*bpx zPf(KB{1D_b*0j;UCw7z}z&x0uNHG+(7E)VeOM3_GS8Xxa<vt7DyH<Slxhg4G_(#UV z#S6eb`|0)j%%xHW$G<`l$p!`-1}{Ei;32~6^FvTf>rCh<pj`(`Cw@V`mG{{GT*5Jc z1S)Of){w;VZ`n~m0QdZ>1^aCf{Zhr-ROmHV<<##lwzC(;#Znsl7r$mw!Cu)-iS`O$ z-qK9cZL!&d^V$AAX$ZaW1^%&0x}A-L*mMU-@bN$kYdCMV&I)0PJ}oTrG;2HH4~5^8 zRp_6>P;Fiz`nG!QI=wc1J=N~?6a;D8Ulpr0KS}BCB3BPar&NFrN1LXiGF;q(mw?^# zUFZyMVupJfsMQGaj6|sWi)di-;8o>Y^(O5t0vmsXf}+Upw?W~u+iBR+G3`Y$90dgy zwr#<v_lC@OYHL}xu@29O7@aQ~Se4G+&ZuI`=0*!1K|MtjAdbrTzlW`PqDSh2OLQUQ zqd4Dku{GgKryL2Ay<Y~%@0)Uiy_lxh-kL57P*9w?e^6UB?EyBJ0)$UZf5RCUS>QMr z0GUGjLFyhLF|c=YD~_6m(r#kBjZ?@v2m>YBvi*60eW7JmfuJw_UAI8#4&CK)Cs@1C z%=ST`omISX&WNM`eKT#F?8hT#mAUhV;+ahgtyZpLi-Z4i>r4U(--0Ze`QbmrXQ!eO zcD9Zjg?t_I)mE;B2hP5k5DJ&3((Js=)SrlRA44-5Euj~4tzeifJtjyT$tVoe`<W#& z=H_?N&5`T>T-N1VDnoK<QL!}C>rIT5nDj0KU23K>pRiWJLvo~2)N33P#W4qb%~zsH z=uDL;R$@eyS_8n1+?i|&{ae=){aWf=9uxC!>rL8zOxo<(4ZQ)XwwxS+jb3QMKCBxk z8rfWd+HbF4U4R(AXddOwlS1J;+j{8=cTVE@T6n{#d8s~*d)|{7uoQbMtB=pyy;fue zR9@>7dnDhc7^+Ln3`Ta@a1*vCz$Iq-xcN$PNc1~oUuw*!rnY*vI=<NOG;dLh2|FaW zOxADV$uLh*BCaS~S46&J$c(h#Pk)$USe$2I#(}RchP=Fr5rpB?$GTvml!PE67Rjhx z(EZRh)nj&S<wu;wA3wkCxWj}7$2pIhan1j3mI$haWZfVl$A;o&bsh-%V>glOa&&Yw zNi;FL^|R+P9jG(2`*n}h-=k`(HM%6b-_LOHeAwU65sIj|L7W;4MK$~@wB)1<F&YS6 z*{wL=k*XdY@I$%Fp6u>UwpcMQU9_ohZ~Da7+YQe{{erA&`fk4swO3~!K<#s}ek2vo z38zhm%rObA?iJOix21M}(g~F<Q7ZNj8eQU;_GD8t(jv~xG8&8y7v)My=65TgPU177 z%p6S||Hkr2x$E?~#f9fL$~2X#znnIOo}`!*+?DA;w>Uj?z=*$<nP_9Yx?LaCDv)F_ zp!yaN&&wuo3y2eYIfj5!@SjGee|3V3x%?_8h!F+8Q`^@c+&%ni4~EDOSbaE>$hzIH zl>G3kG7{qIwLMzv|9f_$gwC;*f{Ws*yW;acl*aRP!|*N&af?91<cvr>yV&*(n_PWb zRGyB!?VZysn*dB-?biw0J2=V9=Ss-V?wx>PxMe}<%vV_yA-EvBwIS2YXsFlda-QS+ z<Rxu53JxbnEWGr5R^G_$7BYqUjcFi(b|O^4Fm%eD;nmJM=qI{OC+>_T2#Xaqe{;8$ zqVulS>G$_HGWDe%79)A*KGNfu+YrCwH7*Rym>J%S-AQyj&)kFh$yrv;XV!ps`2GZ? zQNaEs8)6)zi_Pn-Gx6a{4L8o}mnoaFUKj69*SaOWcV98e2e!mL6zO@|Bqr$QP)j?^ zsN^5VJ>n<<)^$n071J^_3z8Of;r}ZQK(9NVKTP2fay?UNG3Nn#6&Q|h;kkbFmwM@H z0S}u`Nz<m(p3Dv#pjJE7t&Ip~i`2p9{5g9hgHZ*H#YvTZ8~sJSH(4g$sEkkSK}~lR zosEF=fU+yJRYsH&_jSa^=2Jb-1fhx&;F4MkHQ5}`2vvLO6A^*{^X=QyVgm3Jzo`;4 z`XmBMd968V-`ugUawAp&dz>GjX~xbExOk}g6PnL%+|QG_*-ZnoasFlezkfurm)syh zx1t;W{_vdjJ1$$71bc9|KOD9PZ@<}ykqm%2Fg|-<CE3(6)hEFgd=A&M65H@G%zgq( zSN%F_t~25ExsFul%%%|bQa=swTB@$$tZ429cC2AX!>clVv+J1?3de38f}|&78OSbG z>uREC&8O4_uhfgEQutyQI&t@9+e->CR8ac9;8)^TyiMn#LA__^Wzz-7T9&_$RhvPa z{)QI$;H{d52M93YD)0s^Bufuv)SW{C-N=+$>Ag3;=dXdU`LEFkHi+F33l77_(=*j9 zqvErH3k&kRqGYCzTr#^w!N?|RzwNOs8!@}l@1=SEzwpT!-a6H^mc%hhQ?j*xY@B}- z;JEql-;DV0nB?D{G-ioTSEITTAHQ(Eg=REIQE@MhW{Mrv4lvhq=lb=eTfR5NG#gAM z>sh3DvEs+)MlBJY(rL<kaquEje#fv_1gsmt-if*LX)NC=1lMjg3etDKo9t=ETdZlu z#F(uYW@;Pvwk#wX>re=G(&!M4{xl^Sm(^s@XJyA|g3q<?Z-)nOFx`A0p`>p0_#Vzv z#`*V2f({i?qlmP50|%}`bioHZs0?J#@y4DR<4aeDql?w=`!zuDBY`;x#|>+!Xh|Gj z?Ws=y>X|u{dGCPR&}jmrC3d3D8<9Rx;)nj&%*9@YXLhmGZTl7Qq~lhvo#Cse|HC5u z+dU&}7ok`?z*{{}Z~k4FApdSc_9FKA8kJd~Xv{Z&RDFeHVa0Tj9~Su$$spvxLTzLO z9zbZ#kwPa1)amer?y~N@9jouMN9l7F(+g|ufmZpaY4+4@O4R=#SLM7&R7QJfb5tD* z5qdMuMjZxOet521JUg$6%KND{ck>fVIzr|0M7;5gdnQTv;s<rSM5n2;Wu^|F20RD9 z{YI|BwBF8<tw(*ZNIfN%(c}!*s3z$t!GGDy|CsR)6Hoh<KRPK{@Nayjn2&GC>}xD) zf1f&E9Qlg>%+CALzrBXoRt}0#*~=`+2DoER_{V{xvWC}X9bEl0KG7o5=%;e&_v+&! zZ?_HNRyd=2GGFPMNX}wgQ+|FqaZNa+2zj9H)Dc^HKuv;)mXy(66Bs@{WTdS|Lq8h; z&vy86vTi}757JNo^85zLJ4gWXx06OUd!QDp4XT?$=iT;MM1W_B<S!UCca$aI@+?6q zC+EU>JX^Zo_mS^f(&?O$B@Ostc7}H!?|(Pz|N7^S+hW(-d~@0uYN5IDRnK3n(qwaE z(STSwE(7X^^r>$TFtZYyz3_Xt34<dr*j60=Oo-aEJW<n+H1;B;Tg$#<Us!jo7f)-4 zt$2WkTi7gG5Bz~m<UEJwjQWk01}QQ=kNu|~Syn8C$4Jaz*pt(VYN17-%HQBHFB}TG zt?2060|m@XD9B*yak4i~u>r*PypXREkA8P|Ns)SPjtIZw9_N**eIfbbN&qSOi;o}7 zlx1>Xhw1;ut$!=Jf8#K|2Wxh}hD}~<oK#KZ%9%5oLdlAmc3PPx3Ovo`e1fb>hIUrY z#VjlTf^{*Hs%p9Tk%CL!sh%dN(|M>*VZu&G-i)beFLpER<@VNOpB6u!nnEgqlw*#I zmMwJ|`a>j_3LX`o$VMFkFxPAVs6PH{&EcapO}bBLXn*{N($2k|3*C!NG}5=~>ous6 zh*tA{3I+M)W&*jaJjz|{<$Rzge;i<O^c<hdw84itcQD{`&J@l?w(86DU-~iq4@cAC z^S$}R8-rh!m==W2Z_}hQD>e)r4Q0%VM=*ss*}sM}195!WW6ZfNvS6Q<J~;s!dWjA` znXzpZun4!V4Fp19eO;cRnv{Y>R9Q7apcr`In-#jJ{#qU~Pgx3TaJhGrFrAT{|2huP z<C4A`PemBu+qdyhlN%P*(1DO$P$OtI6g`hm?L3G|fB^em&7m4=i!BJXz1wEhLK~)U z^nc~q)?tlh&6oQ!Brr;?nEtQW`G61>+I4fb*;rzLiXyJI=j`;9jo~Ymh_+u06q*sK zM#;>~<(YqD>|!+SWc}Sw0~A=ht)VEeSht~_zU{a{R0mAY(xTNS!W9&gGkvh`@7PFg zQumRQ56@J*ONwq(?yV=(AVJ<YSxc~^z$lb?cQo+GQ-F8kF?0G`^a1#CrfhNy?e$#n z4%CVBeHnG>Z88+hV)<MCftLq^&0xj=3yLef&V6mh%4KnM!wHWHCvUdkrE{Pzh>n>c zPtK`HuyNL8Qt5vo2h33nP<?&)yY`Qj;1{X*^Gr%l*}M_Q>i&a0vsNy$7pCA+Z@~Sv zIDu8J!M-`E<yMA49|c??R!_#q5t3D;+j2Z5+b!p<@4nFDH=e4QP46by3p{vd^SSor zqGj+dfoKSTF$Q}{y8(iW{~!t#L7TK38>kswSsRANBJC7mpZM_wDSQ<(8+W&Xes;MJ z`8B|@aKLpS1+GJeK3<q;StMploj7;58Tn>yQ9U5_{fWGfPbhKt4!PHTdeL67|KGj4 zH=o>6G8=VS-2TP@R1#^2af0nUwl8Vxa#wbTZ*lzCN9b-_OuH^+f!<qnc|wsDv<Poc zY~Z~uDg$13<iinAr%>73iJ3M}E<SbpWN`;&85mUzCf3gL1-BpO$zTxv6yWd>?SeAK zZ(KvSmiK;RUjpl@JPIcuAM4Lsd`+hP{kyM-U;;pTd`v)HVCvMj?q<s<?7t$x|8s@% zX>eQ8d*_L_CCXLohbt!dOB)L+qvb~q;~?~Z?yU??pFeUQG3Sl+OyN6G#0nIGddN-8 z!y2Y{VuCr98W6ceDQZ@pXOmI>P+d%xV0h8wiMjMWUX15PhtxrZYIFZcI|U4V!cIJt zd&JQ~in7hu;}X96iPj^uy~YFG{~R=z$6Wqy7acu?6Y6N)j73MZfZAxTdG*;DGQP%Z zB|=Cv4t!>h40MgrN%2X^3yJso_w&jBh1>r;b(6SQHM~&rp>qa(WGf%IxxrI@lhm{Z zcqx084xA9d(9-wU<I3F)7O`J|x6R9r_{N0(S6vqPof|K)X!M6^{l_=(=;-PN3?AQ{ zV{^B%l4aH;&GVA&jIuLul|Fz!itGYNME{K<>b%w#EHyNU(DnH!V~EY%1d6VZAC&@j z+dyB!0Y(nt!JQ$mu<Ce(36TAU3MZEdF1&Ff(6b2gfZAGzpTmVuOGMXSGS5$p68?W~ z<^N=n6QTQNS?~o9a6WH@(#xu_!82Ies>HtC)GD)y;!oF~LB0&DbT}VtLSF#uMyJuB z@(Zh?QETM)NS+y~zITqv#hSehbs7t1Mz}$ilh~yP_mL9L*dXf=mEQNg<ctxE)Z>kj z8&jyZ5cV>JR{j)570D;dUnLbso0DdfAwZ?UgT#0{fXzQ&pVll~Ksj!eiA)9_Rivuu z$!%$f#saoVk(8MZ?s|hd)=}Kt{nG!F3IEx!U3P4XO1@w1U0IuP<J7=BV{MyuCQ-qe z;WJUK`0Mn%JwIklI+BIdR>7lDD8rjS*pI0mPN$Grux+WNiajORu%HzPm8@v6F7xi^ zXzky26U2SgstEcl_BTc1{x@x1SP69$3e(%gy$3zZ<akwyGlt11tA1rHVBCS;$uIAy zutI>YyBj_3xbZKqjQ1uCOd$!c{tU3lg`~mrb`eWBmpLLe{~L{BhkPcS1@rp=cRZW2 zjX**qWBwh*X%}AY(Na5U6NcV@pP!ptj~O+W-&Y8hupd{(*Xii^xZ}NwiD2E_7p2Qc zJ0P&-@6HhUq5mpZ_}R9E;&x1F;-^ZsB$!ah^a~Jv%t&1br~z`^5fh{o6g3oiYoyp3 zQ3p^)r+lDz#c521Qgt;JRJ&LFtAP*!hV%$0u$O(2LH3z+%jkEsqHT!04#q##)al>t ze8BOVbxbm!NBIlZK2;O+OJ!4#dFu4P`Uuz|@~mB#71m>Xg6_}*J`ri*yb*C|gJ(O1 zmbBae;~5kY_;-5*@`bN%3vz_LN|l7H`KabcRhH+kAMy%w?dxTt9wA0k$Nl9VoVR_y z<<!mOfDxb^aGZ5yp!fq<e;EgOMdiuhDY7Dj3BQGn!0LYp9wMb~fMgY9aEN5bE*--x zBp4RWGniM@zgeSf$^_#1wA#&s?>4Q+3>ZQ`Nng?a@*rOSKL_f6Vw%Zk*k(2x0s6%L zWEIU`B|ELTP1(lr_HCYK@lqor;)Z`+oHP+Fr{It3Ao0+HaAh?Q!Fz1urEgL>f|(Gi ze$S6J%eM+S!UYJ#rJDyykbgvo5i#$njwZ5HTFEhPDTEqj{~8WFA}Y2szq#2$pH&)k zz(J@c!|e-X#p1)BZmDKa#o%T_Fgb}$4EeZ!m^wQ>39cg4BUa;we$HOi>QZQxqJ0kP ztw#3$gT?>NFnRVwsT6pC5P!vvt(CSDEqG$n$B<{l8kNsi5RzCjhFwErT|1F+ulBi_ z#k|HKhtRdhZK^l(i)763pMEbhQ*UCX8McC_oGG|lZ%=J@={Q0$3g~CLqlq68*AK2} zt{4DyZhu3^`Z5H#`NyxtJU4v*A@8aS^zkk73lcLfdlpmfQ;7hYf@*xGeF`vh9(X=0 zgl#7DCv)hS$tZ;92;c7)&`5_O`HD9cvrH+|i{2;al4icZeE$ce2^it-y9v-by;1c4 zuXf=)z(U_fVVQjA(ZhUhUw?4g$O8lxxNZ2%N#o4$VA4}$ax15YZ#(+T*I6*<&1`n$ z89|?3-fQ*ucXceni{JGIi#v`#eJXV{rN~6|2MXSVUu-FNQ!12TbUK>6SPF{KGX^Wn zEdn$}WBfDu?%+*1Jjci|^tY42ZjW=xO`g^~^;>#y2})`N+g=!x(9y#X^b7iR=EQJl zLYhn}(EvyW)3<v32`6|O_^T^WFG_q#|H14+-d3xHXh;^vBv@eRn>fDurNcjOlSwb( zqz)#FeZ+1o*VYS|XX8~XqT`!}wBts+c@{*MZNeDHo0Hj|5!sLiwtuZP@P6{KF|J(; zW!?!&Oh}4wFEK6q@g8qhNR^Df>iN=tf0ljny#MCe+BOSJ>(SAXq~GZSMtSQmWGs?Q zb6Z{vc~iY2|A1TNgpc5i^<d&_^Go@1zG_{fN{120xDCVe;Rb0)wj@Su@U|bpQ(PI` zP8RFI{T#S4Rz2;-cH->CWj#FLqi)o8eVO&zF2qWzH(2d3AA2I(zuslVVwt*(^^?oZ z<bA%1a+5)L@h^!sZLTL<Gm6sy-{VS2-}`j*Wfea^-)C%ByR0`F_A&b19(l;Z11CFj z8_)lS+T}Pvkl6voa-@9I#}v%pX1N{ge}B^|h-oHNbOiui0w%1Kf%K-{;}-JNOrIxd z5qCvqwmTv7aY&tQEL-c6FzOx0=L>n&m1!OdNVgYvRMFK7<oOJ16SetLh#)B<$st*$ z!Bnlo&w%NqAr8E{t#Auj17-6syg5(3TGnYUHwo%YGQ;^g(i3g_f!fr9&{M4He^RZ0 zHLl%w_8Z~$(`28?W*^dIa>ix(L7DX*i!!@22p4FM%kpwh9^qcYjSfMi7@fx!TBb_> zrwlT8$78BGM_zQS?+-euj3mn<H3XtPdAj^7{w?9><w?lyY2F1~c5X^<liPbBPr?F- zF3S>X!ixhn!tFb1qbv7U2fV@a@^hfw6JrF>Z(aGarMO?qp&E^cLPi6Si#-nL8DJm< z^sw$sGcEyTEP@i)L+ymqS#=pJnLsutLwnHod(Q?=p?Nj_Ig+JLxgOdQL2weu_lG8o za_^`EUH|Fl(LTanrXFT-wMvtU@@xn1c<zb0NmrY;gJFLIA*s%G)AUBBcnWW~7hV3{ z)XSvnVKxOe6<+SxgKopz*xAT_^}v@`cO1l?_lFg}THz`4j^+iGK9aCze?~IjUh8@y z(~FY1WBRa@INI)hDJ*p7c%Af9sws~m)A`zI=Xd(=k&VlO9+1ZZ_$rLgY8ejfJkfh* z{ioyTo7hRcIXN(k3>g=JK77_LSioDSxOnv9{hvcGmyvHRR)a_g_!51Z@cw&aywz&( zHCW$eCoLks@;iF6)~{ozv`nX*!6Tn+Pf2t#4XFdX{2@TM$bxdq-#>Yo^+IqSw8&90 zkoVAV^W-w+C<DOyc<^?(YqW2yL>A=-trZG7Q>bfQ?^Rb&hXit0sF8e7*V`_(OwAZ9 zj%rj#7JRdYuZ~8H{Og1e<5~q`<Ut?&&I*yTN2^@NiD0MFpFO@m7HdPkk@4JeZOwQ* ze#@dE%*9e7$g{d-%>be0(xaHJzb&Cbax|5@=iKb7s*|+U#P=rPp1*JOa%G0o(V)B* zt&}Yr79!W#+dqE<@L~C+3~*K7FSJXHB|a~?cRx9*&<I`RSd8-bs$NgM%#&2-wGiZh z2~#70*(l1&0hRkKpZ(R>(5us^637$F4%eH(^@`P9&_{*%iZe{#ibl|3RF`nmQX~cY zPxSrCvw>2HmW<vn(r(8VAA$y%vZOa@migZ=ei5;m72f;@a_<hMtqZg%7xjF{*E z$0z(>I#CP%Eh#`@STa1S-qq576I=5g#HY`jyt6B!eZF*IM{2PP<u>?P2_H82SQk#4 zuQQt%-TR|d(B2*ZBY5^!;&^y>d^mhvXavgDLH)$OsY9UR<#k<$JRSV=Q`>KOF)?Zt zX|W#oX}u$g&y-RwWb>3?l})bJA(2(9+nsh|20V*ndZS%bB5G=key)twFGx9VeP7oh z(TGcmCODSV68?eDV!q>y^G~4MTl*6ToYDs3exiwK6^JNDLl1NsYnOs)^P3lz?5P5= z$25j`j5pDPZt>rxjtCB=ls3T*=y!j1F=G<vFzre*wWMu*XO2eiy#xI@1-aC~^Rp&U z;xkW9>Ls1uO1uNbQzpbTp?w<H8RK054VFf&Q{(OS(T_UE-P3eC9f<bPe@>0j1S<|K z)eV4x@iqAZ^qK06V8C<!OR&~s+7e}iWoI@6Z0)7IrABSdAIT=6UcKC0LRNyP6l8;y zxH_P@t6lJE+!uN%_a&qXsJ>;-Qu4gNwJ~ikjW*&RK^v_+wwV3+tW?A^eDZ!S8p*iD zKf=Rq-Kvdmys*eMcpGT6NxaoAgqbI)LJ5Lv9?7SH(VH9jCTp{8YCNl-acY*PB`%(o zlLx}8i)QGQ5``dY5PCSBAZpop%MbU^p9>}X9n~S9+4V8tr|#v%7?;JE8`24-I}6$c za@-X5o8$$YC;2?O;YQboH3Me(kYJGEN1Ejy=r~j}ZX*bjt6)WeL8Zwvf}rn@z_f3L znZmdimk7xEXAX|8hDX4=X`k3PhXfi||7xUNJ*v;Ijj{>We%^_GW@(@KQJ4H4Bv zwvP-OFxaG742^T^ls=D)Rrha8*jR5gz1j`3(_cE?sCp*yF*2<u<-T>#w=rf+{o8mz zds#lz#i#=EGBPepl5woEcOvfl<2F^Q#?Cii?#rm_uyLp8D*)WCOsYH=io&C!pSnbU zAWjfmB$xSP&k+m|{1_al)pYeytm>ot(VJRXBK`F0E{Ha0=YqW8P~T-=d;o$Oc$Zw; z`x|J`wb2c^Sn+b^b+N8xwY=I+>knX8>AU)jUbYVjV*H+`@oWD|C)1hTa-{t=xZsT^ zdu1K6zEh#>DwVBcFM_9(+bvpH?XLOT&1cGRwlc!+MC!zGi+RIKI`BJd^yw74{^Qa` zii4v!BLEclk`JEskFZNn1l>R%5N(TyvRPfqYcacqI5#M-HDgA-d8$t8n+$_*0pjYn z@6#I{E+We^9;blL(GJbAVw3l|_89_mTDZvS(^L=XjTy>jw=-3Oga6qO@B1l5{)GQt zF<tGcD51_P4=j9bA~dQuHGu-<&6hFu;CuO0AGh~|vEXsx#Cw4L`Jp6yW`isym)~X9 zGLA5Bn)ga|c}3ttCh|ngbf+~wn6NxT8fCCP5iT8PS`6nFT#CWoATdE7m4V`-9tvEt z(h?VVWay|ypo05ZE{jnEVmOjqIA~4?vi8|Dx}Y9zeh*`pE*g{XIVt6ZC_b2b%78Ln z(fmj{c@~jnD(PJ|#wa&o6>!GMC_)K%mCx8?0DJn6l%4N{4^AbxUQ)Ek7yFbiX6_%% z?1Q~17>hG(-!4{oZG(p^bv6Z|U1ahJSKVJyge^vzz4B4$e~x5oMW48?YSm@^(W={% zE4og6ko=tQH;dtxDLT~J_yJ82A+b?lzK#KPpMCf>HT8#(NlNUJYvyUG1?SbVD^E0J zRm%Rj<Abl%4|TQ3iDyGAUgM)uz&ua8@zF@9zCCV<Q7=b7`=r3L#z1T%nNO~1x)X>I z%{PVXGhu(8)4y?3yKl81(CvD|?pJb<V}8xH?v5MjH)VOsQ5A1&8AME99~hti<VkjP zCnrhI<6oStp4xkiKwZ<9W>ZI8$Rc;Q9(-9bM&Hmktf3&<Tdh`YtD!)vOCW?MFWWDr zwZK3gzCw4JQW^2o#`^{OxpoGM<qPG*?Ea8)l1cR9-fC+?8i2-iUX`55V7kTo51x*l z7(ajeGa%G$@>y^spksaxuzsrVH^SH%|7j-)<s^u1EpoH{&WHjD9f1Y0gOHU`+&j)# z%9ao3>4QRijnE6PvAx=c_}16+u)zg;2P{hklew}VaWoNJ;)#>b6>)YnaD04xezB|* z{6xI_B8Pu4(5fCh=ifA!Wf;4^Yigh1MfcU@Rhm6bq1N;AJ)=j1U&pmDMXD8A{T@a= z?<B@O_dbcZ#1#?0n(TSaLcN>eNCejwo*u$021&j)lc<{PN7aEB$0e^yb8zksN`73q z#r<BrRbsrQf>FVBZh!>{&iy<kB;ykLhT9R8EG?9oo*a_eAU->PU~{LW=D_+bBn*GN z10QyO8!am#H$cF$13udekpI(Qa`XEx-rbkBw7HK&>Xhu)N<!R=>w-!;^ZxT<o>z4> zSDsb#R(Q5%p%4S{izj_5;-13KkrLwK`Q_iDt_5#)Ib3dO!V@N0nPaXglnh;-vUdfz zSw|LvEsh}yBuW+x--Cq8%&~aVjXPpnpP?u-unwB!kZKHGEwb41&9HEwIZ1Tx@lgW# zpW@XGXsv9(q-G_v_rw975CmUS;B>>S&({}9m;L5cRMQ)@8jh&!gbM|ZK(|jK&SIA6 zo?5l3196_aj?me$|9P`&V*hDf7wz_({W@wEc%ZWyzfwe*bcTHfF+pmkEUsX(R!D*d zVf;aSzYU4wKel-1y|)?xa;==k*?%7u`>|Kwvc2vS-|V^w)ax5&sU`C;`+D2oDu_lC z!z3s;gN7k&GVvE61*K`3Dae)h_4v-I$H%x9n-PeXN>nbUl>3=Xiyyq7E~=vQ6jps4 zS?E^99ZbpakHz<@3W0wPaOM8eBcpXtyZr0pd&8VwA|4l--5>8OCJgRO>qlg&(r`3> zsa$BixGW5U+9MSP8o1gF20phEYx>wF3)Xx1<OLaG29^;$zUx`8#-i%L4bsB5T7z?g za+UxNL1QgDgD4_65z^NT&4JL7_`b>s&7OrsooDcXqR!{l(WRSkZV3q@$K_5_7IIES zMI0hB4)Ienhpss3^8Jlx_-JZ`L^=!0{KDK%xHr1WN!6ovuN21%%T2H>!}QwI2{K#U zajH??HpTLI+3=e5{>Q0~DgN-g&9jurRD%*z=12UG$Q16Y466D3u0=@QKw0L!Dkbtc z+3CdSRz4mGYZ3V3d$G2uh+$oZn_MDjXG@DOVr!nj$G#>I1x=Iw_PMWPJtJ1BtC6d? z9#BM<`^n$t0w*f0f<D437;9<2#RaGV7&Uuh>g322)h2qlQk%BpUp)|S$^FVY&WzSm z<^Dhekyow55XV+S60qGcWyLIYuX4_vs;7hN&EBCx*~$fF@OAHM?RuBUTL@;W@3ek$ zL=}Dta0YG9`yG-W_?^F^G!wme65|Q+ab<viVBH%>lFyD1Ou4GAPM$~XG5z>X<33sm zQjh&^UwDxE(2#RokcTTVPoM6CvFxW+`DTW2+fIdvo-fkIYr|4wKg)8>bh&Rn(m?^? z2p!a(n+d3lcu3s!SM2T0H3-76$@YP}sTA0`DUH}8pRhsl8xq>*D!I4-M+0Uq{SLB9 z*?#1pb9(!sPOrv8z8Z<MWlMwvute`0TfGlh^(B>dYsc~Jux)9HRr~!7p$zI8I9_<| z4mX9>n~QM2@D01K)Yt>kKsv3d?d#?~Ar@UWbuT|;@?mO6z~-S&d*ILtRi^}X6H$9Y z?P*Z3Cer1pNmP*xGwU;?UOVz=UJr!r{W8Zy)zYxhy<S_pP{N(RE0g3&z3>P&!8d_K z^39zsSJ~!s!X8I5hcSkT@Qm2!(e5S=ujvDs5>SqE+QV*j=TDI5&Fd~+`j+(6u}K{5 zb>6Q*x1%SyK}4z}3`b7xtT=`CmLc;He|Z&{r(w?Z6RMeAeAvj<dN@QjuJqTDB>dYe z+ByQ*Kq3YE6Wa~W7C#FX_Jv~91?>hSFf+6iWfQXp`Y8zP(v*^qZ|z{})85N+mp6>f z(MECyeR+~TF$ai^oQH(?%NLv;YoE~x1pyD+W&xM)OU@a|z_c?E{mO<7W1FZ>|Ci6u zHY%DAg39$?R2xxzWf??wDF2zGm`=AKE;xcs7<?eyJzbfR!Y(-Zn6@rK27mXxt!=TB z+1c57Yr#jhJ^ryWkoLT?CpMN8wm&yg1I8;PLRpbib334bGtV(2WA%yBswDf2y=rK^ z^ff!j8{bXr1BJS3^YxRfxb$;4ITS+QNxad}ldF)?!m)~_`m!x~s3JmplyB}MpAPlh zi`JSXUrc+gsJ3r#=c|3m^1IXtsd{8{WzZRaC`>NReWf#b4c&YRbK|stCWKGF^j(As ze?!+#0VF`_mq2c~J$<UO;k+3#iwA@*-DkPYt}qRP`76NlDyS=UL$5GJ8x-gn$q{v? zAI@b?ug-MB!tnos)>^hxR|4<CO*;Go1DLpmZDlIR*}|UmJwb^W;?epc=_;OV5)ElZ zoq|yoU3=--uayD|juXo|Otah9R&%6fkEIAZ{`k=D`))onj{T`>+`BfXwq<<M|AP$p zQsojM5H{txHvi=sZeAF*Y7%pLBzAjv8kT?}n@P7~(E=g}hch4<{I5g11h?eHe2GvI zYmY5r==PZh+A;lY|EMfyOW-8n`pNob9n4PHT*h3lZ7^E}ml(PAKGLM!bdz5-T<u-0 z`4i5+dK)ytM+5tcpjbYl&^<m8VvI>>f2gF^oqS#CyKd>qVMGj@OmZ548`rgQ^?Vzr zdNy3^uTu;fu~~53d{WVjrft@0Z=$+|uqoc$*f5^OHET6SQF-uG96`~{&{fsj6XS}k zuqT5A?k9pXr>DQ@PCKJyu*N*Ib{(X{xLrT+*W8T*ZkTp|dg71+5Vq~0VM~*XWjYc5 zd40~8mt28%dz7-uPe&9x0LmT0A0lRc)LrKw-YnCsIfA05SCOTv-?b61$iJQXv|Nl8 zG67>LT@~I}gPI3L3qT9sp25M(VLHN=u@C~-nH%}~$^20t&51ia<{Wvi6V_es=NALZ z(9)cLGbcs6@fCf^$DYwF7k7$`SxSQ(0orI|+?Mv=njti21?H7#*BRfhKhre9AEV>s z@lWppwvwDgQQBGL`*O9eA<$d#-0n+Z2dC_P0}FBYUGmQ}?{>w$zH?=)s6D@9=?f)C zWlu4Kp0DQ8%UwREc0t^OpEWrlBc4EWe68U-E76xKyF{|Ez{lI2LnXa}B}Y1}u}P%6 zDK)z$8V}}z?y@LjXI$q%@zGJoM(3>v^dSt&w+*j*<BI^E+MSr(3hJr2>7$mf)I(Fy zLq-LCLjiJPF>myY7{+A9KX(depx!-=HPs3u_|&@b3H`|GC#}!HJxE!*kwWD&O-)S~ zO3f6*uPyr&^`$@FIypM76WnX$;peX(szM+FU9s|ltxU8}eXVA*S<i(FLX2u;w6@ox z$)Y{NUS1}H^^vrdk9%$s?5m=!8C~TloLUU>L^8(rUt2otSS$?l&&5|=JhUHDI@s3< z5tZ^V(Ja%IzINCnf`hA3t)m~ClBgW4qMN2{CQ(Drb?-)wSKM*WubO2wNDg&ya~4(; zo9jWLsM|?E0+Y>a|1^aTdVjFh*lqp^VTw@?3S5IK*W3FQWI+Ryrswt=n1|TyhM|C# zNR0lb6K;^A)ZkKplCW&p17&+5f1DS4e4m+v3>T$ornUaZ=}W;cu+iHmXhDUj`FgJ! zS_q6VOQIM^yqd0m8OoV+>~KI9?>#mu<qsgr{iMc8$n&vL`0Vz9qA+Zfji(zSY5JM} zo^NC(t$ggsyL)o)DM#FiArtHB6?d+dekC3$X)!C26GZ9Pw86F5;qA2+9D&YrZlTl} z%mLdICdQ0KRAsKn)ic2G*xf0?N`!QFuV>3wQp*8Yni8|*pO^(-G!1^a^SdwlGu<hv zuzN2b&z`vU9XL~tOwkScp$M6h%~MSH9|bvW334VXyQSUNn=Ei>BV`uoKfYuS`z)3J zQ<ZTVS{M`6|G_=MOqTvcBcJWvFS*F<sQJdMUQyC_Yj^{zZmUnpQaan~NNxd2w-Q8D zlL^J)aW`E>m1oVwT#QuM&%#)Qm_8pcTZ}!0ifElNyncWj%a*l(2`(<IH}s~8lS1R# zwF3s++#1ydZgW2oziB9DZ1~BL@5+yUj6fYg$Uoj#gXRuIwCZ!Q%GWkBJ>21BTcYr* zGCHbIJQ$<s@@!m2f6b#Q9Ze!cL?-7z3QO!uYx<*y$cUaS_mQoGQ>mj{y768bmb<S* zCnLaV9Kb*Y!@wtDP}%B70#_)9(Szew^w^;I3i<jEO&hM-)Rjz>pfI;a$CJPs(>vBW zi6~`de>nEVIRWuc(3Cw_us`1XsEE>*a36RzeFn2*)0`fpNr7NXm1nku!+0s(I`+7& z_`uIu4&FG>lL=5qG(U6U8nci29f|Jj0G<ugQw}U4oHKxKn9`QCw?Fo9yC2eA*6X)~ z-;Htc$@td-p(292B#le=0J!l_XJTlh81l#TL(-eRJ)pf!-;D2ssD*c8;sWXTF0Xo3 zr-}lVJ^?xN*5mc+!Lc!ABct@{PK}MS3=q*whtXSJttX*|%uu=c$K9)~zud9WkYs#= zod$=wvN>tjI=)dNB000_0q=vKb;q;yO*jTwg-s?t1zZ(}GbL&roJ{Ep(8&%~Z%Nvu zcO&j&zPs|Qju%|0ZhU`A%sT=&2bJTpI4SjEU<vrb|Lls~Ok?3|`LDTW;Yet}S1Bha zG*6IwjPpg>d}JqL4gpXA{)**C@2sGRklYAiU6ct6*M8pnOC3!wezS3pyNh@80ER@Z z^*2RhhzCz7{^i(Te8XZiXM1dk?AU$({=`38D<R>4XYA*VlkaQU!}1!sW2N+tH5Jq5 zjKy6Wn6~?s-Jz9h>ST1@2EY|fzU(#8(UJkWUiKpIJYSet*I%`|KhC*FHmtZXL%v>E z>3vWe;j#HsxS+0;mRnLTBthHTJ)IAya$xILgE^#+MKE&v4@|#`&qLVWqU2K=ASl)Z z@6bKs4A*KgVA|Fmb_IFIFcN+Zl>2E^Ql>j=h0Or#yyONAq}xEtTsA6Mn~7x+8!x^H zxo^|-7u})h7{&R(JFnk%=~^$_b+Vmz&w&02=5<A^ir#<mp_m>y4JBXTpnd%5LH`o7 zRrqi}1Jf$(sl5CY)O(aTA$#d(za<X5{h^Iy;J22C@Ug(e{oa=D1)Zh4Cs&(G_42OI zDF>d@f@qvZ7HEi!t^06{TQjV<2<LL2(XHJr`LmYf>Tse{eb*TiP!D|}nVF=&EzN70 ze9_rU5c<b!gW%SUVI$lm<36np5@A{?R*PoxRS;ty@23uLw@xy^>UQ%pY7Ix#5J(pG zTP40*pzjFgMaR6~`bl%+fkyBw3yyE2m~6qSFUAL#peKu0fk}I+nlL`qQ^MtWht@iQ zQ009?gQ7q+vdf>Ix&5HhId<|aP&K*wbd#EgvYCQs!d+)pE!~K>=;R77sXHI+3OhA% z`E)Q_+};gUSS!$f*V9H^esB%d%cKL5OKBb0iVvrQg!}2z21RdPz^(Nk#k-)$<mJ0( zVy3TCaPlVt4>l5_h+jMhof+?n9d<QM+jsiM^_h!;u2%e|nUjyOGj$NhBP}8PL)gT} z@Nt4#_#}}*_S4Wu<}HFd&GO;Covx%$g;zWh<sF{9P``qrpR>Gdk<9RohITDapd#bC zzj@)?1F#soJ6=~K#8d@hx%sLd;bS+KvZSdUs)<?Nu0mvj#(4Yo0jFI0tqkU1^m{Vl zOJPvznDbrtz3HC^wT8gTi~Z>wxv<~oxTm$S>ho7@pGtSmZtXJyf<c-Z8m|luZTYJZ z`+PHTd_P(qFbbQvh?KSWc+@C{LcEF>a92RKWG%nOGCUeNoo5b{z~t}lev9b+uy={1 zw!OsSf6`}O8pRt(T1)Bellz=nful+`Tqnq>l0D7RrvOW)9d1}f5_-2&kT?A*dZW%v z+{;NtcnGb2%Z_ASh)y1kJvuyD)Ds5rPYAoNzctX;qympM$+_rzQ8AdcXjLO3)C$Z} z2$YV1ofo#U$Yn1-yIYmiOmgYLGPI8tU<J(-UV{J=4M?GJ_>HQ%bNL#N;wKycRd?rk z^hj+4niK}=+~Yp`({|YF!6Y9@ts2jy^5zYZwq%3SFz6bFp5TX6a_{x!%!1HW=iCzW z-x^v7RUK#8BOK>9EoxWu>-OKZJ0Mq^5P5FsJ4gj6<$x(2{b0mJdgLgHJ;FWpN-nqx zcP_4>+QI7MB@jBE@g0$AzaUwq$_uPPEg&Z3f7b@5z6<*giC5!q45VA<J!=CPS~!~t z%*(F;pK0h@I0qaC1%90Xb-N0d9c!POS)Xvei-cJhU9<n#S3N3I_Vd8af6zZe9*C#& zBf=rK@6*{{g5Y+3L!yDrZ31Nf6=myUY=e$`oa(C7yk~f+MVuStRQx?u82a8x;Xwd; z;1k%s9fiNvO>l%K$Fvf;+G!E#)EaKGyTv7Y#tkL9A@U2}3b$<Wx+3jA9snNydEnlO zJ3qR2K&Untt9kmxYWQYig!X>v>(k{d_kjbzM@AH-H|`LKZ1qynwVO;GuYok>hfYt# z>3kvi>%He%ujSSpP7&p$EbH%`ifnNRW3}L0VqDF?M{_;NIvY0}4+jgEMR?NeHgM~H z<D3-A2E6tu4<tP1$WY-8WgViXt~QaQLEb7X@39MBF$kcMkG?FtD6q9baR)~M+=hA> zL5ENR`S+_V9y2;MUMZxH1{25;q^isT5jnNgZD(U&+--o%YZ={1`+!`F7%G;WuwcOt zryb4m&VjqO1{Oir&Ayw{@?UozMO}k7js0#wE73l0ji!-n6H8~AL}E;vu^!Wr{@gZ{ z^05$F6n8pVzDLjXL6B_n_OV60$*l*1@QP0)A2b#jOwmp$82Mg2E>?u<8#C`=cg&|( zQ7l^dE7#%Nu@c<$h5laGKTf&~zZq=)uHErF4~y*;1o*<K${ANfqudTYH6z^&(88D- zt06B-AEeK<{#jV3-`HCyHT+5N&E%@bY8`0D=<D=v3IsyTObjaSePKCo{c%mv&~INA z$gOUS!lh3ZUI`>R=^4xol<2(d5&J!*YR=p?+ViGHshAph2|4w5{76y4ZV^`sLYrRD zyB0<H=iNx78lX~so1nY)H-Q@mpx!aSk6ihB7Rb%0lzR9LHr#K1;?>!V?{D0K-5uDY zFpm_W?krBgI+MHm91eTOB|E(N%Ue?B0D3G?sYL@?y=>xS<hd%!?W5h>AM97Z&nK#e z-A3`}^{458*zXba9YVu-IFh_aSD}T%HC7V0T1qqJs*WOmrXV{%zeF`AiPOF=6w^ST z6WyvBpvSr3jp7wcx7C{i0|)9Uz|Y#(U!l{Vgxc!ueL<bUBO@a&{0h}|)6tb>5LM|@ z4?dk*1s>iymVfsGI9m*Ub?aSX<mp*gJsTY^y>y2Qvajq`LWSYWOx+s+&pGhT8xfpE zn4>xIj%tiXcLfAEn>;^{kU4u48UV>}WUELnf$r(Euc8WU`pRTY6I6aVuD>D{4cIQ2 z=u#NeoT(S36h2VA94WBOGLGo{MI7GHrn#%8xwIusK|j%A{3+N>gQlq(5c!U+YOsac z=EE*KkLpg~WJVLaWXudYb2>w+p&rr{`ZjRqN=iE$Sx(Zb;I;5xw*L5w7twa(do3b6 z+(k}lyjG;@>(MW7cE{@D*{?D@TKoe&-ZXYMHKpf&`GK>wQ&)XBi(Z^Lc^Pb@$DtOX z&qd8Yj#eBi6RK8Z2YmfMJe`GKRPomJ6$DgDr5mLLq$H$=PANgUQ@R^wDCzF*lx~n1 zy1TnOq=p(MUhe(8&;1il{LVgm?X|xPFr1?ft+f5^nSPza=gUE)ftV0Mu9sBT5mzH; ziwr_`1w8-V#5q}o`41!t%>&|xXP;vF8m?%jn6<(p!;ZiNx2{n#qhl_vQtv>({g`It z;{x*c_Z%wne{0c|(q<a<70bybT(!EF-}iwu9KJg;5cW3y*+06&2kZA>OfBGusL@{o zM27NY*lGi0%$Wh4#CSZmDsIN~`UlMN82nOFfXCz}ZX~xInm_C$FGvEHGCC<#89HG4 zRFs(mZ7#ponB2zCwx`UWZA{K9%_s2m+=<z4*uN-6T!eR?G&~?;Xf`RJ>ij6PXssVo z{!iwx?21_r^#jLbeUAahm`Pk-nFtH7mpqoofEues&k<Gyz66(LDdi)A*G|LU++uGR zh#C3(t|&g|7#>rmUiK8E6nr?pzTlt8gHk+HDp(P}LH&CH$9yekSRnr}rr%_%i?8ZX zf{App=zOW+;UOgiEn#U|*PDj|wloS$@an((D(4Y?UK*4;YGi4+_gpI?LX`?30#nS^ zXUPOa6>Vy|p?EKJ2K}5A4g^(rpn#AOGeX~t3Q18?<iV`$dPwob?ctpZ!!!lsH_XSf zC9VROWFstJMyfKNHk-S$Z+}5Jz0g<3(EiqWU@#M-ns<7@y)D!+1|haxUi+bWN|X{h zAfA9O0c_e#!J6qS8qJ;{fIBmxHOcorL|O~%fQ>hOq}-wK)xMia{8E+?;dPn22@yjr z`jvV*j&stOj@?sw;2RGauLIAss*esPBzK(sMvf3wtGAA4TOZGaJn*GQtvuY40@#1o zAgeP}#%vUUm4la}bt)HhxK1DB54+zDA>3I&s>AOqxVfScmqxzi;_n|R_)$M9Zl8Zg z%0<kB-w-}z?3ci>S5kh2Gt{(sQ1C-jKOC`%0jM-K|24hiB8SOpccQd4%!Ixw)~%j* zd1>-j&=ZhM<*wpdPT7C%T`2I_qxbNz-%YEx?k1R5-x%58@(OmyauXB{qNk2cvNVh3 zz`_ZMm-utiMZfWG>H6lHs@dp0gRowZUtP`RL0h17iiU6j1)cb9zh*gs!zYu+UXLS8 z``?Q2uRhs82_VL(!KlgO8ZHev>IU+B8J!So<#plP5eK(3<c@lG1GS5Vyg~c%Bm%Si zYzzZ|#%Mfb=%SJ-79h->8<x)sVH0xIMx=gljOT@014m8)V=VWO!mvLR5H?~$z20A3 zCQ)>OSs}^>1~GUHiXw+b{Yu7VfjdY+W`vdol}mMd&qv*!N2}kjK-J0gcpe`}k3>-K zlDqiB&6ei%R-_Ugm^PUf+oLj*3V*?A{M2pB=3Q$7j0L6P@$u;@&K}GQ_P%Jp>0s35 zvgQBMR(`~!*X{DwxUyihw+4jSmO7BU-1ba5Y9mekbzAB8+ImX1JznLh#CzZmnRgRJ zN1Ic5N;Pz5nkFkSqDd*cCWi`2ag59yviEXHEvmn}bB9Os_{P$c`aRC^NZcv`uAug| zQl8s(6`lw_8@3%g!VSb)=U4m@iEhJAUJjEVP5{U-4+D3bYf9&tebDL>K+eGDwT1wa z#upgTE%EXd0)&2@gAI4vzX&Maj0`MSH$2^b`zNBaTKJa}(~Rf8>}Jq<t*?jYKF&X> z59LVo_UoNl&8r<bL2v=@#B*Z@zC$d^v<Y9(GoT_d8A?8KC*3y9BaP;W&inrmtU7-6 zxCmVWlp-e@U~uP0u+Pt1D!6BVz2;Q_thH|?2U7=OPVRB+X(O!7_)_;#UQUt}Aa?_; z7U(2mo9+Bbqy|s$2lhHGA*m;A$liLDD_U+MbW3lmv2#>*!~Q!ae1o0IhW+43ro`q3 z8yI{nSGv*YAKdV6`KQ~KP|ci*=_Z-HA@h*_j!VQQ7Jr()Pxwh~RCK7w!{)-o1COj` z#T;z=5(7(>b866E=9Ij_+(BZ=7l><)v*^GXC_PRnIc$TfhflS38jt$+J|p;)6%A2! z{$}3s2|-o+l*jCNtpuo%0#Ow2B;Vuq<5D65N5N@2k@F5+$X14^PJUGRO(7z95bFoA z&#Twcg0S1_-TIg+(~3}e;NTzq?^&;_dN1nUNWFV2M>qFVW83MC{6Q3m$o8G0-455> zMR&z^t({>UI)kp17DNb2-Tx5YYM)T0h<bbaFxSjTA26CPGl|Jbq7B^k*a_m7_c0b8 z7V!0mzN)11CONcUSQ@?LH%C~Dd~5LGWB4KLCo0rmZ^14i?DQHMp&SV#F(KNn9D8Ek zC!%<zBSc8yf52sYy!qAhwcVAYKaA;n{)Y*iUfUVsz1oOfA)onq&DiSK({9JMkZNA| z8x;v)=j0XUo+k8mO`nc@gxW?8h|>3ptvdhpF4g&n#WVkuMS7TGc1nBD>D@a*883Y$ z8X`aGD^fBT2{*nr!{@LLgeseMP%}sHO)g>2TuxphyU9in#^LWPmDOw&$hWO$tazC9 zCO0|A;}S<06VqY7;G&1Npc~`sd6SY_&<LTg<7bUp5><T#)||Z?=r_ZEKt0_;@xOwY zAIFHTvd4)(QY#`R{~kFh@}MfUN(b>Wwzok8iPc7A<p#)9Veijn17&nR1|uv_H)*CK ze}fN`SoduD%BS(8h@Z$x;q2S<xon^EB~90_z?eC}L~(bb&%>0)Fo1`7*hv$tvp9S! zsh0RmV}yn^DWIuaNC%Z!;F@D)>BnIm_<JrueEUS%dqF;D$M|fMzWVE1D$%tFa6z@j z@6Q$9!i!*jcRA+ThCfWnP2l@Q4`D9$3NAo*x%c)v)@^cL2ScA^POoPHRmw`<RPI-< z4rvX6dPPiyV7aj|+{`sDE2PLf+0ivpYZ|SR+ej11@uM>LL`oyg5+(P2e;d!X2mxo| zzRA$h_EEWAG&SFJ)|zr8d=)3Z@D~Qpe01O3RjW+>?k6>dw@=H{L~M6Oe>n*E<z0PJ zAp~>ob@N((an&DEUs#BMTe-29cg+p|(i^l$wj3*;k9y`)RU<VdfhW>;i=MwumXw|K zRyVf--QqnfyiK8n%dNY8QzS$t4#hXwrp1dtQ?`z>J9w+sd&`=|>~7ZZwf)M_(%vIa zh0Ix#_4Yh!V-6MfK@?Ll4NCC^QE<r~K^7~}@>u)oBh_!*y~U^Tv|$hrq#v8&t^%@2 z;7h`{gLJ&kA%vf3)RY9bGpU*ze9z>0iRxXft@Y~<bFcq+#-*GYO^?EFO)%&+E7>%2 zK1cx;-T+&8h+;-s?1J=$mEx<TVPbu`otbQ)JJAG~0niN{;jRshDPSXz8rfW)s^;y( z73Cw5?G3Jn8qXxk5+{xee|pm}mt_3Ra`h<sLy~tOW|ON&6gkvMy{7?3t{ml@f1C_R zL{xssq<JbQXu3;Tl!1fj5gM(VBb6ftyaiPB3K^j<mwlwopEhTdqv07mMj!%ksI6c? z6bAZqCtu;`Nvxy6CZvU!L8{M_clxc;zau_P9w|7kmr3pgW)aMF5&0STiT3|{B6Lx& zOn7T|c|K7-+bAzcBBE~YuQYH^tA*DAITPH%_GefF$6I`dH4AoVQTf;hWgNye5w|-Y zY}AsMC+SMu1?`yk1G%EUvHg-9S}1QwzjpKU8X22Z$iM4Z`=c~kW>YS_uOcYmNx1a# z_VFxmgqk1!Bm`}d<(0nIgkkGP3jK{sH+)3&Xw7e<74OShrKoOgMbk=7EZAS0aVa%6 zWQWjkKl0?U0EOW_ouV-d7}YmrV-VsOnvV+IS-#2hrU*Yb#pQnr`1wv*5|7MrvRT$d z)>wWx_?hb8pU*-g@1BZ1vqRAWuPZpeX>mz8xV5kQAYvKrT;ucO6;%Vy1V&yHL&xhA zMci%DGo5<TH0<xF3}oRCGxpFDEYV_Rb$cxOAhTL#I;@SDc4lG}4&}HteZ-ua9q(a) zNKlzS7&|GXW<%&C#RU~m$ADO>r$i}l?@3`5PIE)`+-E)!2`)cj8UKMQRcTUohUNdc zJuE2)&je<ivdj_+lq-06T`KVvjXL@<6xlotE?otE+C`G|LO+5vD7!qFg#;pvgCIis zyF#%F%fwVwuN`m3M2cUqCMKUuzw*$Y?z<;8VbJxnw(}HVr~{JZA?GHu2fKeiU1Cr8 zylJD45OzHO%n)RXN5N3{oF*v@tQddEim}6<@DY7?zNUrE@O@Q3v$Z96%9j@vfbJCf zz_<ZV2CXAb@kD@F7%JOdYu+`xMi*oKq2J=ewY_B@-VmE`q;71HGm<D#U(<tIa|7dJ zfE<*F$6pTl_qv;P%w(}X_hO$Y{6)Fr<)qx^>g4HQ0|7pi2VuXjqCA1Px|TMu$%nc} z<r{HzjB<A%TrbW|9Z*a%w+Sl!vOCY*JtI+GlKZBF+(Q{M1gPs<ds$F$^4f?+i3Xc( zm#dP}5)A^ad%9O|2uVpv&uq%u+XbZsa&3GrpLG^v8Oylt{9HSY%!#p?JyjsEbKO0$ zxy|tnV#$v7*++4xj7o~7nzW04uSN4HoPwRe5oNZT<hp^WDPK#hX0go1R>inCs1FlE zig0@q3WXT<1fiHZ^~fuqI4=!;EAwSP+4*8>vl3lE{$f*)hwM3&{H4VAKT42`FGmqn zKYKcJtaLC3rrd{vR1zpEvaf9iw5Ath)93xG-}@fN{Pq61f9Tm+mlZi%1efGf2SP)y z<&c#_BGqg9M`>TyUq|bx-yZq51A94OQ&Q~>8Rd?t4#qb;iEJ5Y=O2pNWh<jfZGV}A zSSixhyrz7fIXvm7<tpkwP4v?<<HNE$oMT1T%t6!NKvtr9zBKWwvvCs*%JLK=OxCTH zAKL<>hKG)4$t=|}xGema$B{#Ux5&OQ7i(LJYN;IFawZkkNoQ~>rQE2P-G#o)^ZS`K z{@2URtrh;$3mp)F2{SmN1t(i`&3^?P(_W#Dab4pTZ3ZO}5G3kBmBi#?Hipi()n#3t z|BhR;5dHN{3#QuM&rIu}1ex=_=9YiU;IkvgnJus~A^k*lu)o)QUgV6HoI0hH{#VqW zpeKw;zTM!Df}G`M5=t}HQYI!WlcDAuw3P$FUckhaP-WHE$7z|bA__LOHGbEfczpv- zzB&Hhc>@`VHO=3BNP$%fj+WJOM4H;2C(D7Xt13m%!h$R>H+-*;Q1y}R3yXOtrYt8q zOSmQ*V`sV$IfnBtWFd)4?5^k2qDErg%o(W|)25Ku{oEj+@>i+-R+IJdQ2a+T>kCjZ z(tIxYTJX$VPA*6`ZFy)kFaFc*<nl2<9Z2)84EeVPL<C`uA>fD4RPC}A>)nb5JOXYr z(jumviwmyHQdH!;8VBX41ixlj_^XO!hb(rT--?x4%E-^_(C<fFA?dSYbSF7NDjHn8 z+_ylwSz43ViHYf9F1DO2a;u4pKT2|af3@i*+m`X<vegeAYX9o>G9Dh0`9{W*`9)lz zK$vMO1LVc(<Z0(2=&OMU^}7x^RmyLvn@E!Fd~b1g5@<6~q?1kj)XX&>APxV>NQY?& z``mbJ%Ex5wiJ-dKo2veLG>JXVt?N6MnONB>i&*P|246tGAQ?HX2WL|D>1HgG0P|E> z@tZ(T6~rtHl3+0U4fe5xVNa%Ije>bl1b>R};8<GtAMlOG%j9P5?6i5YC;H}D5Wz@! zDPXvJUYD=KIWFzP1+q|O(NAibG3)O2VnKdg`YjtgR0sR;3N-|sG3D>rR-5?KHIWqR zjWu(3LjxBOSDgNs%@x8iJ@(z1M%i}XzI*uk$BH;9ipKjpQ;P9(`Nyd=gw9fSqK1=C zh)AU@<IwQ1WU!R7$q1+&nbnHu|M|bVCXIU1`vACg$A?sG4LZU)s;VaOEYtAkjWX%_ z3SAS~D5WM#0&Xr5UfqhOS`j@1liUMVp{V`g&OEgLw2r;7NSUlz-;}s?(EN%VZ2aDS zo!w<lRj*+9LQ+$S&6MK(H0RpLV00p8a<{{=B6eB{!1(GX?UkT&E9fG}k#SZsWKy?^ z+sFl!y@p!B3H|6}d*!k#jzxDBlv700`1ZRd-KgRk7;@UK0qhUHoTvsw>)31hUHK~Q z49-gJ^y>2O<$CT%9R}sH=3Iul^BjcNrLdTU;*Jb$ZG=UBr0L^KCXv{D8Pwpimj7TK zJr*sP5J293rIs|<KS=x6#moUovHrQ$57$bWJ)dl3VC|be8Z3=@KGK1h^QpdBhEBrc zhuE|mOvXpDM`W)~)lBP5`o2fHonm;h+6VNVmyDfb2<1`;_1NTahknPW4<<6?IWW5* z1|vHJk)DqlhiC+mF6TX)*|(OJ-bN~8%>8?YBnuc|{g50p#0qV$MGz(BT$xzx(9eMS zVt-#9&Odo(uOv2I<1wlbD_(%Sn!Z4{163HtUts?rTds$Qw7W?e@D+&qL1%cTil(Ut za3DDZ1xSB;4~(ilwySSS$TVEzhszht_4kj}F~<IcLSa;nL;mj&f2jwSF!z=>yPdll zny6~2vpsqv6hvk%SUpjF50sR?t~?G`03m6grQD^nsZ@ZY%tMGH`RrM?zll64osucZ znDY&6$RN92P_&?<>ozjT+Ug4~?0etww;$CKuT9^H*WN8UlW7-Dvrgn0x-3H8$VEaw zW~W{wmE;Xh3~S_xu60mlmT>lCJ{>C~S=pSWAl2VEx4+s*ZOR2R{@}TB@z_npYe7@m z)VG6(sQI^{Dd2Ekf`i2~aZe}uJ)v&u>Rr*wp+WQZQrl}twVyvf&Q6r%RxA+40@r@( zKJZSe*hmk#2l!-G^)RmaKA|6qLnBK(6)xS~paKf63|&YxZo^xgCvH-zAFBB~_MoN! z#$s#>mSPv*+RBp|E9qoco*VV6BKmn_<hHi3so~|r$Dv=-9p#T}hm2#=pT-r0*qwUb zCE9$EfcvACX7Q10t!aG>JZz&pxHDDILL*Kcd|Ay4{i9>uD(UPfj(#0Nn2Ui?ueKcy zbaEyLk0#7(h)zHiB;#Ufeu4VdX_{v2<<D|gJ=Cm;o8&txI|=C4_E8G(L(=a-hl+gk zs5Eg7;4h`1QB21m%xP~N((pA?SM`;VoCRHfjp(1B%I*!Z=1?4`*`Are^JPO+Utb7` z!(NAv)N>f?&yN-IsBdW+amaByc01>Nt-~;!^4l2tzQYx2_`ufKh(3sul3#YO3?$f8 zM_R6tK6PDb7dr1S0J1s?h~W(L_}hkzlTYOQndO^&?+x#)<)1&|oL{9wY*{FN?i`<* zWYhAPK0j&_-XLmsMaAW>Rv-(FYET=xAwBrIl$-N0eficzU%_;E*!bw4lm|OyuCiwo zl2Pcu=ynbWlMlXE=HW^{>%z>4NVRy!YVh?X`3@KK<B7>6bX@ngq+8)yRFi>s(wv+h zM|BWq%kQsaMEE&#O>wN(Bx(3@uXc^=p^9QKd(2l3`&6n_>@*%slc#GNnFIsJvF|xE zBo4tjF~K<y>u@(CP7QqZ^2!tg$s-G+p*bz$O}4DZ)}6B<uZpEIz0dI+RtV$BEyK!V znpi-Q7h5uNH@EvP+l|lsc0X76Sc7WSAA2=AS5a^&B~lS7d+gcr3+jUPZx~Ux47P?x z0N~$*E0L2S#PC(W+GT0;ACD>UH<dQf`s>9;c=t=oV+MTl)_Poe1z#x*NWz2Xc8gZR zF>*XJag-*DR?Su~Y+mvjG%Tvk;I`erFCYUz-6hhG7G<2PoUZQAi#n}o)3lgOlkkUC zm_efk#w=+xaX$}lmn}VhTA<uj&mUesN>Po8{|e+7>SE;nuGvByIIEe>w_RgDD|N=U zo7?!R(dF<N>{q~H%|Ge$gD*S|F!#g%oXx&#o1ZUu&vh-RKE&{3i{56#G2ne5JLuTM z^g~Il#Gk05ryAfobHy?_=%C^noDF9`-zhuly+QqssGkB?gMNotv0GLk;;y59-tq?$ zB@#a|%k8*J<@|KoLax!z1k06zUP{B*$aXChM309FR~loOoxihfHib9sH%NAKeaTu& zc_@I0S4ut%I_oG8UN0hd=u-RiT!ZR-p5!&%8z@<XLX1|X=xtVkSmPXsY96zph6s)( z+|8G$P}%Xp%bAhNOng+RQhIm;s*XcTu<)1KFf~a*MtiP<8sFn-MFc7NN;{>1(ol6F zy#bQ$O7I(Wp0-Jr<F0y577;yLCA)l-p#Ww&q)pn}dGy3%)d|RM)0`yNfHPYX8?>V` z=d5=>sX=eVuy*z`cT7eNG@voJ01M3$5aDdsR38I4<_Z*de_Q=9i`0Y<&fqpbxHRjT zmL~1Tz5Wi8lN;%6iO{mMHr@1DFpch<1qtEU>jq}g&7m4a0j7<M;=iRcCrY=>)+?B< zSnh}0W;(p`f{a^ev2i~!D_M7&>TWzy>n~|ZE{G8~8j_sKolG8KoGZ;!ws-yg5f91g ze64yDKmDVff_aIjfgX3DN79C@FvKsacm`Fo*^%fEZ`e^_Qr(_DF`w;Qsl&P|jW<yb zAPO8C?T`)|lU~sb254rZL=ML+hY7EAVBr$abwu_XpJyT&R6D!5kNZDn`VXYMo21GD z+k-a77yZ&_&SxEmwFSI63)77Pmn8uz@(%v!i-v#rYUpLKF#@ew^RZ(k{{&Ld{*gD0 zGI?Ro_xj%~wmu-r=eP!=__Gj<mvY^sXS(j;9g_y@V2tYpnW*a@Y(Y7I@0poLwUNad z*Yrof(5s7R=7AgY&xAhw8k)p&FWTCz_Ovhb0;UP6`Y6`IORz@Zk*$Yjurt*~L+Dhe zpibcnajCbdHKGNUBkaoW8_ZSlQJ~?f@7g22dUSegXjRDL?mEJZ@dTC$4_)*cPe{H! zD81VqBeh4ZwWtsAZZIeq76>!fyzK=rSdqh1eg1NL7~8&8Z2Mr>U+H~j7U4+F*SEjw z5}tT@6_e+Bg@x5@Yne!+2n1RdF^XYa9Fgl?l{7&u5D@`5EjMVQ0)iM!Gt(si419F# z9%@QqVTUe}Co*9dV)T0&6)JM;_x$?#M?YccO3}7CvsL;)2X6v2C1ep?di^P<-{V#A zh%pxLL)biElZBk)lN;3H{r$3%tU<^6XJ6BjRT7(8D4WkV8~XclWbJ!+f<9uuMbi75 zT<L3HX|+{f#L)oB_s};!A&G3^0McMBVBjDRA;yaaR7bUrhBf+(SNYX<SW9`450MFg zphmFQ@C4ZDb>A!Hru8hrgI#T+$v%hW_P}do7WiMpbY%e*GuVL_2L+w{$MyLyNm$O0 zO7D}_P-IBSM6aZl=mB*MxFr+EASjtG8{7AzLuyCoSsBZ!6rHGn)sZ&x-<PDOJB{8y zThGkIA?tNxmaLY?&C|`pTAzcPzX_GMO#6sdt^*_b{?E=|;KZL$gi1sYl`I9i9^SDH z9v5RCmOCn{2Y@}s8M5(6d5K7s*9p(%kIE0<J*_vfBr|=(>HKvjjrT%sRxPypXC=zs zFKw@L$4tXbmQ2n79iJNk&x2Z~8S0<QWmP8p$a&h^UWaU!BLDGS?tdoL2ZdNcBjJvj z7Afl1W)kFZhy#f}-;YRRJNG1`+cHQOX@d*fg3Wqh@BV!0A~gd;<Dck%{r_B7m6s|e z{CHg<31oj9DjHrVVJGo68DY9P|CVu85IXTtv~vFO)vItmzvY29I?;O2@9z2=;f1uL z<r{`hFUdXJoG)Us!zy!h7}w}~v;es~WA4ef0=nw9ZKy%%e^gXjh*rPZ^iR|K-tKBz z?~7O{I5NJ)eg6$Z+2nT90rpN2pU4@dvMLIZ@W5@*zg<wMH#(1-UgI3tqQ9nkY%uE# z4IT|RvsOPILe!CPmrf{=J?V`0`$VSbS%Myemos8mV<34LRNdBwpaQC?aS|a?zQ2dw zGJ2J(S6zDyEl0tg^h$|9p}UR-bd1*hB;MBy7I_+MzFV|VLFWjI`bvS3H)^|D5WUr8 zUGLW!?u1O~t3D+?6q~fU{5V5ZeZ|J-J@1$SS84G6`rU#?7hH8)p&(M>jQbKZ>Of}2 z)DbW#`Eo=2s&;+I#9(AVccug#s87X1t;6u+d)7nb{$MyCWd(2cY$gNM{z?2!mWQPP zJoGg!$lM&))X_CitfiA&K*LrtX(T%dtRafrKtzjW!a89Q7Im_n0`(v%B??_;xQ6lS zfJTc}=p<ev$Xp+UMe_9(DsQMw$LEPi-p8;tjASZ@Px2oGkktd(hh?gY#-311lCtm4 zP<z2zB4+ioo?&7nCSB_}WxVzuW$iynnmtktnXhH#2n|@4kTE|!iYi!hC!K|6IoAer zAmHL_jT+<ij~_zgz(pT)vh^ZpGHD&#Ezx3mat>8*Rctn@?yZ>;<eyR%`o3F?4>s?% zHa;~nye%l~llky1^K%dMaKX>nQ}n0;VOGovu?M;m?oV<|WdrG(+c`RJd@Y`WQFX(l z!f0;6H{h{$|B0$c?e_$UAWHT@ox&eE=cC}Huioxf4Qw_=>}bo`xBBNsHY<*qcv6uT zR9}1P>r?v()I%1l`wl)R#`ZsepJ=}Y?XL3tmHlEYH$3-NW`CP7G*iaMah}p4JmCFI z(HF-LZTgyF6zP2*sKuG!BgrW53$qW!IvzevI!7=fhoM&K^omydBVFO>%t(Lqv1&1r ziubhO*x`v!CG#HJ-!on~NkJgo)5Fk3KMLQX=1Pz;OsPdt1@XO#vj)W9{KEZuwv+5W zKY&@Szm3;vznVa+wc)}L*wF37{Fnu|u1$fi>Q%t)Qo9jq2s&|0x%;Z_5g`Hzibind z9L+CV*|4b5G~Np24^>N(g`_{-{i9dAE9al(44gE`S>NtW4&<)kTY#G8XF!_F)X&ZA z?p39S8{96V@5hGv0>+<wvs-0rZk(x*rbOo?Hj_+*b?wt5!IEB~kllV@{N_A(<+{n` zeno_kUScn$DD##@91A{ciKKP<UpK6cdbP`UHCYQ0kdKJEzr1qP6Jj<Hj2v|R!)$$k z$yMq|Z!J1|L0R!emGdCr->X?+wS4WIZLV(xX`@RSI%|z#Iq$fS_0yb!jjxKv*l2C0 z@Nah|sRr!zw>6wT^5`o8Nm?-hQI~2(7>P?Hp+8fN<2Z2ar?)!Z+3vWW;P-#n^u8>< zS{Y)El*P2K<?SaWXR|5=d-S^q|Iy-N=gRW<y_)s-u7?sRs%`SM{-)uA?coz{$dAC& z2O|q<U*-TEhTyB<L5mm%E8VXPmS5MLd6OsHA!tlZNbl{Ct2W=nj6h5Q5Rz_B#xDG$ zPx9&>QA4(%u>0XL^MVIn>c1tA47*3?LjQ8T)X7uuZ-Wt@W*$d0tQ4U0?*xZPQ16qc zS*M@+QCi03xJ5)7bM9gd_GZVqP5`wL(YL4cvZk+p#2-QTIS&UB(qYTp!6O=5|J;R6 zUeSvlgI2JK3Ys0v#(FB7Pcid8!>cF2Xy7$%!Xh^M$2qmTw*oVRkavbS>MdzCkzBk* zXy4wKiXcZyX?x1?sA@q2SnU@#oHW-AfJ^ebD?0j5AQ6Dv{5qdnF@Yo78DTpjhT9=b z*hCG7e+CpJ?2MVR2%1T_-(4+_mO4(UE<^y2f4zd{0Cy`w5t3SLfe`>$8V_XrO(?I= zDn(13Qdfrw>9#(N!@ll&*M{4tg5Okq7k3)$RXE<jd$T=VMITjiw{7G5XZPOF!?(`O zUvIJ`g>Up>ht6J>_!I*Rw*Bt*$mH4P{$T2yVfEllS&xg5Cjs4;a0dH!%1u4JJ%_l$ zt{$I$Mm7xw_1AqN2;J8$pQ4+fxbx>-REV>w&@M>Kmu``Rh&{q8k0*?<;4DiNHweo? z!%;-r>>VJ^(Uf8r`3b_UO=PV->y`_e=Uit5dHJgd8z9tzcW$d+GIzHC5a@R?Mb*Ph zMa<(bn~LmtLl1p|2c+!U`us5r*!pJwebINwDq_^<{rzMk9ssVNH~a(=LoHeGJNbI+ zt!LXON~#fdl~${6^j<8f^n=>Hqhyp-8MQ0{4Tfin7O{qIsnzK`TZqoPT47U=wz4{M zWq#L4$xl`bMm)@KB{mK|NLGVT<yRM#E9(}mG_k;wM}Ba{0`IyIrv39p$Bos7>mP9l z?ujF(RV_?T`odD#E$LY)2W_!i-##sw;~<<Po-@MIcDM2e%9-442je2QTYg>lrwW_U zn=71$%q0_Y-BJ1>`qp(lP;OzLRxueLRe6V9Awl#^=miGo8mRBff$>~*6L0VYbcI7z z!OR_YY@X$Nx@evm!kDx4id}ufh1_xF!!54YSL3THX+2365*sU-{Xc)v&h(wfHX!+~ z<Pdv>UW%EPX2i!SIbE_7T^{ffTIZQ43q0;aTq&NEzfYpx`vmakA`Ios_+#Hob_`a1 z8ZCXBwQTT=Cb$1PXYj%IUwJ<`7f$D<rN+hGWerJ+sjXyu{Cu>nUNY}2FLXXZM>59j zq2NRl9Sz)ne^%{|ShODdqFeh*n6=gPWmSt04thMGR=eY#9q<8j&mst>ROgt$hL!2W zSf$(WE`pGypKcd3)lfIjbd=JY2rm;)wG{=4xyL5dl5<HrmHvA=<x5}PD3M|JzP!WZ z*!CK~?sfCdlxXFg#l{>8*8Cayezkzt82U`X_2TZ*wAC(VtN2t5YGwS<5rQUK$qvky zRW5ii*@l0^W)SRYvRtb!!_?z%Txl1<43aw)L7F3<FaA?JrsaXn*`~?mJG(2kN3Gz9 zd!ut_C8K!&kMUw&!RP97cPCPUAD<MK0U?JudbKvf!76UkN|e0V@`P;tGiLQ1spYlA zVNg^7N96<tADIb~Fh2QY<89bz>3u74TtS}W%AbGiO%ywQMJWbMDG0NYL~>oO!yh}k z0sZo<-PHdglGhx_pRBk!MnoY9Jjdl9C(n#u-LJSNt^6{)s-8S*9|1u(w@Tv(7GBm& zm&n33l~no7v}TdJoUlBSVu=}=cIIL!0De`^#JKbr;$syK8Fz;8UmM2cxReO#tBQ{^ zxL2wZ6asQGhi4ErW~sdtNd=5ViKMf#GkX#`i$O>|y7SL?hxhqfc-PE`;H0|KmsLLV zZc!ulfOaqV%|bZlzV&%fXXf}Y+pCwp=0BcS<y+F|(G@!JM+sSb%p#JFCR%_fTyP@W zji{Aqn8Drl(?RBM4Z|zg@0OjqG~&ellbpTuz$KMEb>(5?39fDL$BFJCC&uLhcJJvV z&Gs#)FM7NfH1)S(!8heBArJbW9|Nv0P60tJl{@`6wI0jH(6b`qp`>EIf<u$z_($Ri z??;1~7gbU^b+1ONQltEJT^S_k8N&t^L0QL}PX>Z;jdGau2n*kA(B{dZ<>vfp?fn)< z;^Hg3CyF5hcL#>MZ!+oZbx@_QcC%4UU{zPV=j;?97K}(@frSR8?ZRThMPl-HIWDgI zi*qD*uOE%NUnE;tAm!{-PfkG$Andm>wLYA*1edz@JazFo$=uMDwBdk918z54eskzz z$T!rIiEaXU*53U7QHSHXkGj*$MqTwJxT~~HX9n)S1aKS#l4w_W3y>bVBVWDte=LaK zl;n$0y=Rvf(tuLT?!hdZKv_wENAL>xe+J_e^a|goa`&A<2jiSJ=L^r6-#>L>^&t`9 z?6<5u3h-G>u9k4!bu~2P-e025c-*R2?-QYTI8aO7<rD+c%hA7Tov(`@0l@XR<ervt zs{N5DgvV$}W2+{<xAl>ut^iX?lsax?2UIboi7{w6b4~>ygUzri9;^vXOZ7Y-Cp3e6 zv*n@G-n^y%zS}Bs60|qoPR_}K34-K+WVi1Pr@0he$_`B}eVR$Q2({}!eK>iw^@I#| zynx~hgGO~?J*RKivSYJQ3#uWTTN?uZ2Jy%O{O@0c#Z!bD8CH15Q|cYoys(GuJ%x6O zzggUE@#11|is$4&Z2oiN<3UYeh~NmB_HXmvclg-y!@*StKNH)d8i{h)czGw^+8_}2 zWF!DD8A4|~UYkrc5Oz}9eQK%`=RK?R_*dZBV~F1m?})&>%)<ah59U0)5$3V}APg2@ z0#E2b@5X16>q46lg3VrQK>|cr182B`euI>7Lc5{1FLfi|p}4<Ob|MxP53tkr5J&a) zpvb>OIMU!Ge$T^1VPZKr=zR5ldjr`*u=piCph38R{d|C7djXp--G_qxIve{~ET8$I ztrUTs2nb>~3+oKba$8^Z+&yaE5{9|Jhqs0UUzZ~Sun=;B`p6UcH)67%9EVQz&2mxU zo6S)|ZZV3FDB+b$ev{)=0rJ8R3WCrh&~`8k?Lj3HY59AesHzz8MLrQY(f@4=FC6pe z^iT8?2z2zdb4<XNm@ffLweesHHSY3j`kr85F#eTTZp4@bCOG@~)#z4VnOp)~fnP<$ zW9e4&Dh|lnJpHn>uJi>J@UrA#91j^4<G32w=Ee&}k?U!@%*x12^5o}8_B|0z`SxIo zZQCV%fYp_W>q7u|92Rdu);I5jGYXa)O)G5|4?g=9=|v%=1)#Ksqh*5~je&C1$EBo% zhd$8x9?@*y;WT4?fD4`kzkR5%YX~9@n)7H9fGGb10t~n@Jw45<&w#lnIPUH{w*`A2 zbLbl;G=3cnQUg6(TZ5S<6$3nC&UO0&`-|U{ION#MT)H=re&192wKYdNm29kzTML~w zja)IDM}hWe2Yyqha}bf!kkp!;Aj1ZcM!s|wXe7<H>{-HBY|^YRVLN+_Q8{xK$V~s& z9QH=|e&}B}El{qf5-tdDcy7=5GYpJwM$a^%d4*DmjI3*zg7JMb@t#`;wH^CoqyGJ} zfi0CeWV%0<^0}?4izAN}?v!?ZIm#yrd%igi42U#J<!WN{Dq@ei))5$MSddcuOmK-= zS1gv;e8~(WepI!R&-JWG>_(04k7@jLjd4PtS0)A?9**K2i5ZOVc_fzHaN>F~$n~T^ z6<SunovQb{=L1lX=m>0)L%y+?TcIdkrZ^C}@Rod^P}Udy6sz}>+I*1|B<F{BJhO}6 zna@AT(x!d{AN1Lb9V#=JEsS=ugs_VKYXnltA!|#6H*)7y%F%4>5kJWzQDWJK5dp*J z<L9s5q|6NA;-M~u!f$^NPNiJPG|}!%Oipql=%jhM$#xI)1CBW@j1R{01eqfor3^f? zko$^%U+rSnjUmM1Ie)!nrI;Qa-qancJV-a$V*nW|-{I~}QV5XMn~!x>JUVj->R5|r zB1`t8yY~<cn8-N%q7<0y(YNn-RY8{g0lS$#G(7bnIlAV08@F<GbexORBYAYAxun&L z{gbs6Kj4Ak^>BTO`PkNiRR>=jV_fRNF`2RO;OXY@W+$w15k#~P#(WA<eKMKor}5~t ztC<N}{QJk4e5sz|RHLd(b+V!l+A(NL7YqZ)<={1vKO`e9|H+L+EC8^1y;{Z~o9Tit z>JKAD*c82F=_<=Q*sUh|iA(D}QcJF%QxiNMNsPF}(ug@hI8rsyan*$m+{rRr7LaXq zXU-#<l&v~h)JMzgXM+wb_IS5TGJi+8Q9T#wMK06>4MQxZe|>#p?%*Wt6B^gx6RE?F z=UYg1;B@hA0`XZOQml$J4jwX=9ih@8DQij2Mm#+1Y)8k4KRy_p|MfG{cK;p{){F@! zGiC!%=f0X7U0$I&MoSg%XsaYE`+2Qn;E00ZX5SC}Ik|mop>DLkA=Zp-E&!ctP69U} z29K>K?B((PkbS1f(Sy@?aDMYrN*{F^X%c<=NtrEqww0zeUMXf=x;AEi?g{Kd|2U3e z5o7GjN>$k7A-vGy>HLdK8f>#Ey1G)81pbZj@UiGi<_uN6MU2FSsrpH90TDy#fuE$7 zZa#F%h)ZGwa4wRn%o_;gChK)>3}@?yX?U7_-+wbbxd-CGnDK|%!k@=4+teDS9ePjR zD|ha<_R`RpqRBK}-5#fm%A(fv*Pr0f@DD5QWDD&NDA~X}w2D=Y*Q^q>_7jMY6AP4l zY9n7Ig}tMCVZ*4lb+egiX4cobwlA5H<%e!9+y}_`QLqUu(f1x$ZQxYkXkmOAl?BKS zo3EwosAP_!|GnauG&wV5f^-EO5B^g8iG<{;tUsv=L1XWa(2?hRNs)+L3xnh#mfu5# zFb5n__%d>BGOU?Z<avjGc(nAvsv8G2$1=u*C2~Rkbi&J0oHCT_pG9fQBI4uFqWVgZ znF&)6;D0_+Z|uJ4aSy92$J)u-drD!%3PtLJparx7vGkjyf>NVAS6wD5zU`-Y0mJ=h zIbBE#@fzCZkk0A8-<NJ~%qo+JKVJU`aq(fR>kr%Q)KqL%K|#yP+717Dmg>?TA>WN* zFCz0;;G*>ggT&I$i-3c-&W}Hf{<31hi+4K;^n^Es8#|v!$L2zEv80sxFuwFqe0w!1 zIue(&8N((7lMa#Y;Wsq7JGS45)=8nFD=g)u@PO_lZ637x1V?D0?x1O`hlLzs#_ehi z-}U8aK7O;mV)U_RD5bf$Zryw?Xeo_bBQ)(n4kF>NKchioBzU2X{6h&CuKI3BE7)a} z?JW`>(?PaqaIf!U;T`mHM>|~F%@^01H<~(|-0j}!eH<Vce6YQGb=SNZY=9Zb*MYEy zKPg=$`$TZ@s5sE+Yr;*&b`tU$XshT85P+vE0f&1HBqrF`t~?>^G4t2X@bUVpfe`P% zpz{|)nF;K<yI~RNcs`U2DB!6q9~#Ouq9Ww201(YLri5B>eHySC5kNk6m>RhkleEb} zD5mFpxt|G(`M7`(tARe{6e8^UtNYtbx^mkQ#<%ujW{QIX!hkGx73j7*oYa0_%V7hV zc(Bjba&qI5%1jgW6VW&8&e+A1EGnIY(RQ-XBGV7U&>!fv=NcyN^|*eV8r%pxJ>tZ* z<D`yI>iGckI23Q;?ahr84%Q1XQSx1%F*&YAbc42#9rxlb@YBtnStiuAmERY|>oWi` z>B|TmD*OhMA9c8Kx8(M2cr@Vt(?PE;e^}Kg<3fi}&i*!?LyDRBglEf5lv*w|J^x5g zY;N^EDp5Y7#A4Rr+pWEYdRj`hHj;;rpaiK2z3U;?WXSI9_?5ApDn`EWajP*Y&?Os4 zEwdB<A28Ch<5?AZNlWBx@hGRfoGV>CK3(MX39pV`l?<7WG5@TMHG7eBtZbv%R}J># z(F4K`*BaDZR~jgjL1p6hPdB=&oPBE6ZQH4nN<W}4Zw#{*Z=SN-tEAy7)KWo9-6Ge* zV6G=zX*)bX<R`eA;wyrin{x;7%cf7V_}pFel$EHln;{nK4*3<Ok#L=1<K6rL`Onq3 zfcEJva>uXZvqU*U=+DV9c5!My1_i642y`hX@1_<k(0uu3NSMLCRIKNc$0d#^l|eTT z<8bu9^FR8Sd-M^>Fkq&~Zm`SXx_W>VKp^Gt)S+#ksq;Ma{md^WX0vSJBThdHpo%r! z&vcPz4fV?+D<<R6g_&4$-X;Y+A}xAvF*mQ|d4_=fC8r0W4^-IUg<6Hsg*w{sX2lF6 z<~+anZVW!<bhc~I%Q6VtUh>l<^bYpP=PV<yohsJra0lf_l_#Ck<G(shg(T>BcC=s< zZf7CUAgxLJM~Ias#ZKa)P3IwH9R5*+4@Q0`8q4FYO8mracoLvUn&<jRwS!Z8%ApRO zV1NJfZgNb2|8L#A9-BlR#NoaY+ZG8pm?P3e+LW2WgoJ?&0wl$`?R}Sxb_io5(K^;9 zQAi!h^0-5*isW@c*`IeE8>l>Uf;#N5Vx+ABCszUgDU@JlP`;HD8pLED)OeON<IQ!z z+J?nRe|grrp|u6WZ>6VO1~*cgVKnXZgR8s4=p&+*4BX;jm5#ScrDY$?bouCt_9OSw ze)_`;Zk3cGN#lA=6<>W*+bW#-`J5CadgI^)!rJn5YGNvlf{`383lMeOIK49$a;mE% zHES?&l;xOQ!c<2ccmS1_VVRNR$7VYXVjVI~dcY42_Y4<Q3(3ooCm$4zGhmUG<szOW zS5r!(qa!NXDq+bkm3_2N+g57d@V+Vn%^R<&PM;T`L7j-3+l%ETz;EX51E>A9IY$~x z4Z8%3>vEe|_iTU7iFqqF;SN&C25U9o8~Uh*dw?ioDZ;&fblKo<P2I2)zj>@q9O(<q z=xp)e8xyThbns%s9Z7`!DriQ3xj_1cwy9~Kjgb+f7ri+4!};RQNdv8&0JC>E@UB$l zK*RPFNeL;p+20xvn&&MGbMDb@rG-0~gCNb$Z^Ojnc0>_kpPT#^5X*(wXeTm=2k7BE z6DS&(38OdyWCNXWCf~I=y)0HF?&jRrZEb`qq1#v)wyp;}pWlexOx-$Yiba1?ZB+tX zrzNZMr0e?nL*jJx=qOW*nSH2$4gb@k`b}@L$TzjvV|I|TfpPQ#SRax2Qan~E>vwC` zCWj(vSo@hlH-YvH$a+S^uA7M=4x@Ix>F?i4gmt**M6wTU>x%-6zs@y+zImhM93jk~ zs<-68jF~PBRfNgI3B$C#3&I@)NncWmm`dWM&5~|$<;$k44?H9Pd)onx@L}cu$;`5- zq!!`u2s-aSvSmvROWrxpD;+t6-sh~kHk6?1>@76XxzA-CbyR~i_AEb$8ddH}H`N^Q zLfvZ6S&1=7I&em|DWTz10T~*UgLpZf6c?4&A4Gy<L8CNFuExxr9&uZtq7)xGnNGgw zVb(%ICI@^?=3xB#+|y3*HUC$57@ySq9;vkP*KT?qa5s2SeX{Cu-PR4oms=2E_noH; zvh8fWKXBk)inX#{6KM`fwY0QuR@(`dYajl;%e&VvAP3<LFC{+d23pq$HlO;kk@xPp z>uwK`<|raEb%3FIf}d|TMC@J$wRlyA?A`gim92nzsg<x$r=%~?bTNyd9gB1uy!q@Q zbkl^PVZN+zBC`ewA+>qDO>r#hVj)%u$?4Kqe*!G2!tpnR=x2>o2POO;=JX<CHJum` zm*s5I8a<3rVb2^H4-a3Ge+EoXEnBxau2;z3^zf{QTOvE-fP&NNs#p%YlMk?`pLk2% z*fLk_i-@4)TZP{4WnBcC(1>ycqHNaB)^Y2YW{&Ct_z>sEV=3f~*9o(c#s6K4e@T#c z@y-)oa&0Yv`3jTz@hI$(Srr9-ueh&;hhDnKggYE6>Arp6AYOC8l8;nA;)gl-av&0* zoHqW{*`1#l!2ejJ)@G4A3{|<+?)1oa?HB!@1QBVAWI?;id_U1aL%nXz+u0GiXyq;M zz8%k|q~y~qIh;7OU&L@PLCU>F?e9<;@<6vjG1C^=18sxmZv#I5K_cW^qs*tR1YK_0 z-5^3|k(Qo3as4*Qi#w>$jaYp|!820TZu7h=o}B>Pd6Ax*=}r%5z4Gwf4UbDOfP6_& z4IjpbrDhVY`y=`{(;f{1fbO>!%`dU6C^Upk*?bi!OF$a#yiaZ3hoFBO%bVdQk?>pc zGFARM@G}Djz&|>2!)S#V9ghCYTv_gtqr@w~?>$=LexJTo-IgxbMaSh}PFh1haFUyg zZ33Pd`P(U_u1e4@d9*-E&!cMv;w>%=4n@vaz4oWC<c;oo6Uu(Wq)^^inT_|Ur*+#F z`}*qi0$maRy%Jl7hhdNt9%~GqEDWEFPP>#~%6{7~%?<BjF{L~P1uE<MvveLyVjp<6 z(umpSe$jBck=0gXeZhLRlz$T`lY_c2ZoF_Lz!-mS==~{?yq$O#refu*O@+0~a2qAL zrmuW>clqqtpqRYaS|-&!P8yu8;!nzHf%Ll$c@(fR;Sejext(`c33(6g>YuHQKUHF= zNE+vvZ|`8=a66TRB91d(3##~=+l{C9RZhvtx7xZJ*d;8*`y(DJe+lcKnQmJ(g#XdL zi{T9$oVR)p$AGjIfKJ6-sKJRFdGI0z)kGV`jWVM3hFXA;4Q1Eaq<8TsGne7<EgMUl zDDb5`68rNupNx4Z1Yc3v3p$ZwYK*pA#%=Ph7;87>R-&X5a}@L5WOSg>W4m=<vvY^; zY%bY%4)lD!?0+fjd#d}xO^!om>!-ghja237m#A_OSCg|x-Gi!<1sWU)H1Y*Q4mCQ0 z=1&(4*P#kaL+8x*8rLR58N_rt*}%_Ky->&e@Xyu_9l6toZ>h4k=^hh;9ps0I;rChW zl-EASA}x937;d&b=_wk9kJlD8RyX>Ir<m2VGtX60?-U>+|7`i^tOra|P;!yZJ`Y3l znb`(m%be^$8LD2(RL|gr;HVJ3bFxNo5=|KSgL;tgX#)L3Fe86K2z_`a++<(rVi+Nu zMMG}&!u_v_1L70l&CQoD%e6Gm9Se`AbqW%Dvb_eSTpb+Qc)Ac*t+3R7Sn4~)2={*E zUN#;D5T{sP)b5m4A}xp@&ujk!2$r>CwJ~ck7i94~B<U7HfH?kZ&do!`NAgeu%lUje zm=g+vB;6qn4R?+QQvf>ic&f<k4mjtuJNvoUm7rZo^ShhFv91=QM@5!m<lBl(kI)qc zx`ed&nlZV1ierQR(In6a-Y&8@bk4<8`B)zr@Dom^xJ%n;E?rg-?6u$?*$kDo#db|H zYkG6^bS<5$-`Y_L^S6DW^r0}K1(!||AjDkB0vAD&XpwJHPb>eRuxce$hrIc9Ch8Vd z4^l&}P|hp=<?NIJi$A7q4qy09jv*ifSCXVE(DVHZN?(gj%X+g-$uG^E9Ck7Wg?|uu zVTEsPmRy!hQCAfvEYlFGBc43_C$5_EVEr~X3SVz*_3GtlEAu*jfmnm`OWnuAp!c`c zPj1&C*X)tZc|Rqy1zj?2Kf0#4e2{+27dI)p;gUT&FF!^sZKGPq)x)o&jG^X(8S@-c z9@_TOk}fG#un1N`bMl6Pi;>^L`P{0)fQ@hA=CA*4505~C4g|Xzhys=HO@<Ox{hu(a zFMwUT;c|haLit}^)_I_ZX#((69wLxn&5r3ruQlmPX-%-?poO=+ioqk;UC+-ufCBRD zocgvb3o9n27lz(R+_S#&e0ax|hF;*U@Kq1q2+qA)DBxA=PNBnzFL73S>~5`c_F1e_ zU!#+I)i@vvSyxCDX6O@cZF`OwD7bjhCqb-g=Zn6r<9hh8P+f45nwYv^IY}O&L%9*+ z?sH5XeRC>TSck{)>s{S&$`H_2hep`-=*38@1XGc;Fgo@S_xoPmH#Z7yD4qM71RrOA zlRA07Zi$*YEF9)GfMcH63k1_Zbz`$*7cAI=9U@S>H)UHdxW=H4GGTQlaPL^ZgQ*OV z|3U`v{gg)j{#?}X8L!o7ipY1wv+G~)UJJ$zdy`1H*YtK=C^kVm0x#;AnD^Ifr!}m? zK<>z%-Yrco5C@SZ#c#>Qo6Nd{m>pj5N|~i824`X*qJWoC+QAWjR6_#EXBnta@_#G< z6UX&+fW*TrF8k)2nUXgi!D3EQgkI+NVn8J~JJ~PS0cM><1E`9A#7G+Pfpj2$>}Dn> z>BTXFk_X!z?9!e1rgJkw)W`cOswL>KV4Xc6!B=cK4v86SDMxxYK}FrZrP>uo6D{l- zY(%3awbo$S;=g_i_iouV`8ZpaFxMeSYKwn$;+lT=qehh{8)Ft{o8+hcP)^i0d%fTJ z4K|di6&JdmsZ0$1oVaJZw5y}W=)}C457O@e%>!E|rM0iwfcFtCtQll4;!1>Q0RHz% zQ)3Ab5z5_TT+-;vDV3JHa*!09A?9-H`LPjDNlgBg+Jh913C2F&WSm}lQfAurS4DS@ zRKpz3l*yn8RY-Egj2GF+{n>8k0z<5-*Nb^U30C_Vm%^Ahm{cboG~v=eL}TZ`o^X3A zPpr^c`D0SZNJ)uV{@{|M42kP|l0zgbWV7a&f%v+K>Q#_f%T)|`&=u`$J|`G{8*s2i zk^anmLowr-1y_0Tm<I+SF(LcedPjgyVEm~(*dKTRG{wtJ2O_&Uk)#VRu$aw_D2c(W z)-bZzSMm^27(G8ewW=P$sV=F0`Hp)lSSK-6mJQ145#VK<>GMhEgD*gf@I}t-|KsT_ z*rMQ~cCDfyN=Qq0cXvtWkkSlDcS{Z<g3?{0NSAas4Bg$`9U{X}12c1Y&-uRd5B9#U z9cw-7S@%*SYYLvvQL{U=9tMh^Mu-4iC$o0G={8RaG2DrpU^79P1*X2C3t05C4V_TU zE0jkFhE!E$HE^cufBKls8yPR8HEB`?Sk9hGpB1B!VowirAxZU8(8m5?)YB^y^jCs? zVU!_HY^o__oVlg(_g%98_lP5>RT1owhCP^^YcqwyU@1>P^T%oTnWB=fXvS#M%+dY= zb~1Adg*6B105aztgWC#uYhYZRlnYL=*TV-*26ue=jO)@?exYYY5`8qm<-z$fj)D>h zo+iRGX%VysT*AC^9})D11)7T7mxC-plew>yU0mu<#OS1z&b`&s^z5!X(5L5~MMS|Z z)?#VK;0bdg5mgP!rVjmX9f8-%`}Z_!Cz>t^&_;J3eOWT|?axa3XAlzi_vd%RgnL+9 zLSdN_r-_5UA+@_Dnq*&sORRrR5T87y^$I)af}ys3=!X;_-uVoqcycz@FGRz?T(5^{ zyXnHMugPP7rOz2$(4qWBCktJL$3W<)-58Z73eMO0<3fDJlZ&xUSlT2ew<@zX*<0oD zLz=KH4l&Wcc9xrv=oV;UQAnAmNC35Kc~7nj_f?0Z7;)T%oCStkXwh?!$=j*#!R*En zhHyYGzEA2SeyRTFeV}sVo+Ssy$Bu|~G2rluBTkr|t%vx9K!IIBUgh0Oj1i4jE_)Z^ z&hL^`Z<2*wxedjs@_Pog>^r-q?%uh?viy9)Uq~1@4G^`ki2A)&it@wJw)s6PeXV0s zPwf<+-PPBB<+ng^KM!#|g2+8IC1%%7o7euh1-qei(@~X2#kBn5)S-1PpogPR&Zad~ z%*{}iKc$4s$r$;<Hl9eOP;}&GBXYY-;G7ecKd`#AIWN5<>dsXLj!?ACf3CruCRgNq ziW)Bzul^beg(`%E?sG@4W)`{^0u`MYqejj4>CT`iYc6gV#^6+KlNNddi}slgB)O(g z2Fj_+r2Afav}66Md4s~Wa6;Cr%;^Up#U)_T?>usha0Tdzew{tjRte6B0rZhO`%UmC zHFyKnswDl*j(nyPo^RGvz7#>1#hm6@8)o<5Q7g+g%FP)1CO8vW0jTt2N2%gGZl2D^ zEG0f>7HkzHu@}Fz4NfJ?BHKDKKH(_{_*i0fLapIyc+Z@J-YdU(hYy;D!G_)Rg12ci zA16m3C(ipmuzm5Ms3k}&GUH&MBqgH03_Pidl4m803*|c9oGs4o@mvkx7s3ryO0^t~ zKK%_caxLp!qf3vfuDC479m_iE#l_XrM3f5LcE9i$?Mcq9Aso3lphnA1*r2~LXi3tv z8GZ-HCViGE5>^1W64~HE@BQiLvQJ!I;qYE6%*kYai@$0lTii-D?9Xd<RJ{`ZC`JC` ziRK>&`+Y-?mJdix5oZau(%9Iu-5%XY56-pi9JTfuBpnEZ7cA5uF!4{plrtogbV;xO zBPAzHb@@-pC|QX_d0l*pdyc!iyEEH1YU>O2!BB)rtUb|C3n!vhXbp19E^+D394Tql z(nZ2_aTT$jbuTr_|24~;p%B`S?lR2tym}S6DiOo>+TJ+YJNQ`qMiNx1b0SPZ|DX~h z6KtmOvU3cFGBk);QT{7`s&ohU{@*fNgZeyJp*%@3FiC0<9-p2~PdP-cD2m4A_u^T` zR<^Sf$z*m7GrC#QJIpT~tgDXVEhM<F?QTV@A+qd{E{^cZ6YnEdMdX+>Va&vVBl`;z ziK@Q~m3W3Wb|Sinwl$aI_|9Wqi4F&bwBX_hQ1$*D%&lpwB0F<K5+2x0VLuqaOeXG4 zwj@I!?w(u}p%!-IiSM+E&U>buPVBW+jJIW)0)HeB_4C9$bT_&0_wqW%WJsq{>JG~| z61M!B9Efq{x^7J=MBl?H?6-vdfuLyFYChk0rwQOOleo%$q;Pw__|M%t*kO$b@lRe; z<eD-DuirG}qh^*34b`U2<LN8c9zA9h@^^7gcBF)cVH$OP6+_@j!J?T{M48jQf^?zX zb44WhrV_2IGS3n07O1hRu?n+JPRN>ip^V+3Ohc&s6I)9gkMO0eUN!AJ^(zNinU{nG zm^0#GFO@Gqx<bp=ffpC3PX60Y&_iw8vfkH?Wl+;trl^bU#G3fw1Xg%{Os6>$+5PbC zr-MbcXh8OKDTYfb>Sq&`C6UiFG`EM>U~wCokXMt<=S$fxC!0?Q!N;5Zli>|FRGSP? z>~>`MHwe+@SqIf^Wjr}s$=+eCU@x7R_7zQ067U-ovTN+GtjOchX`Xwp@8nk@`|~wu zW?{6h_A19f2t>s8?2_*Bq+GBoXFti$t|ss_;RD7KY5rPBlR2=vK3Jzb$>3t;a1^{W z4T3dfS9Vm)%sh$?2cN}dqai<=+R4VrpoteezuBFrZV8dupWmuM+QbX+%iz$($_zU$ z7q-!Tk^R@_9sEA&3%-C0my8DRT)Ma0<flSzx>*Xrurv2nAM+etm5l3eKWm1|VTLg~ z!bzqDVQc8=nFyhqQT)ty{&ex5*Kb>1YOQqzXJ+&r;^0yjE4#Z<N@3hkMB{<lLDlwh zf+DQ`0v4>yVbjIqg7DhSfDMa0Y;}CicG7&jUt@#O<r~W8zXl6;9jD?aCsR#Sm4(qj ztvuY+;$st|9|J#YGp)mV198B#DVamEJU9(@@l0+}`3LI3`yOPC1cLAK=ttnd8NlBW z=51^fE%WR!+Hpn-3H2?V=s8+ykDqO@JtTcuO#>4Z8b15c$j(^<m2peXf_06o@Nm_1 zW5lD&DNys-w817JJ7j0vU#7wE__HB$j{lm|EUHrx1%k6Vi!#sgt6CW!437ZeB=K0r zs!i6%Y$GamgqH<gMy(%Vg+N<;oaxI`;HO2Yq4NQop&x5=hViwW{)U}?lx#oRED>*< zN5&O_V#*2t8v>w-3h3MPEMDvs?qW)A%7gx&M*>6Jm)Bn%zTL(o=7-0P`RG&VG4_N> zJy=2w|MvEidi8J{sgig|XK45cbvaJHNg0$s8#vs(n_n8^o7mLpZf%cLkn`7pTWS5w zWT=4y6c=*vj)r~dRm=>GzK*k}Ss2l#&tmC&6<OkW-sGc=IehICpMuPzghn<OrANoo z_&#HY-4&XV6gVK<AdgPf9?PnP&=!e`3uUaygAD-wS~Bn)!b(eyXdSTf;vEgu990c? zY-K8YG;(8+7BO`BHw_alql+D@w#_fkdo#YA8A+;-OoAlU38YqKTzvUs4C^JV<SV8y z@4!RYKj@}S7LG80BOaX3!Oy<K5?1FL#_tX){BA4!w+<_b?IzfREz%VkQu{gtvta?A z4g$Kd^YSxpeILax#zQ7d8OG>u_wueXfr!L(=NJh;{MJb3kHifa#nuKW{Q*TFJSq*? zELQlmIUp99)J$|D@LC_6t`!j(T#ks|-ATV6O{+8QRX!J|Xpt0s;8a9erm~-JAJ84R zamXovB=}m^GJ&X5wJ2@CJ;ApuaP5;(Z!bE~5XT)#`UmyV{AD?NG3V=+<>dD3Q($uu zzJezko|43G<{R}=&%Dgqw?u``)J6d{sZu5<KpX9E4XAgw35_;~ewxe(<C&_h@bPiU zrJ{QhPOy#2pXlh(J#}uj1k<I&eYv3@(D(%iyKZu}7?W394)}784s3$pHlmdg0NFm7 zsS!{&>o&9RJ*`XyGg;W_B+Ny~Zv=H+ZY)|_^7p?+v<9H(Nhw`Y5&Y_yzeMfvao*=p z)-VXik8r~|aLd3^MN|di$MWp`rStU$s2)i;Ewcxw&{US&C&+4kW7mp@NGP?B`?%S3 z&Bx*oJmx;#evuVo$)!X_Z0{xuCDe}N|8hQ1>!N;<&H2}XJW2Pog6NX&FV%=H+Hfes z5g0{eRXaKz`9Gt+E<fL4ZhQ^8a6E)fwpJd-)4U{mE%46X!p%WuQXUBq$RBhe++2RJ zUphKnr&S8PyK!(jZlyh4DUWuK$DH8-2UJf(ZoNEIui8k8@HE$B`|Bw<Iu-t?zO$wE zDVfKFFP>x?)0no0pu=u?5rH<ls=okSkFBZNz%eMGx5l@s%LyVf?cE+nw2X54^P@Z! zej8k=$>+17lv&ZYY<T}j^smW5lIPYcw4ry6^s#hUO*f!(#*R1tqceJ(ibj`(D}yA1 zX;hfT{n+GYrV%IXaO|ZJ|EA)>EH{{bmX!H=aje^EGvHn5y)7RLEly}s+<>-Ovxh75 z(Ze~QUW8}@(QMF#Gi@NZu5vG~k<E}<*)$JkQ7@)?yI<dCXR#lTi+MIl(ukNosI&Z| zdJ%zW%FsCjrx@hsBL~B4gjiL%qNnvxR>ys_#GooAezHLLRG}Kl+?@M84uEO;irW6M zj=DGyb$GSkduP}GHr@TrZRPhb5VLuU1nH@+&jJ=t{byd)!W7Pv%e9)d`pELvq`bz= zq?$%t{9nSROwd<@1cl=#$7$4crJ$<2q)IY{%U41e&3Di8WVzPA9~H385MbUe9QVd< z$HvLr>!!gnv)T``hy)`exY>6)GdzxxD?&<%;jyN+MuCR{B(5JQrPX-}Y{#0rJ8q7m zzo4gH%Ujol_Ti!!eghyvbCkV&%`r1YoIw-L^4)1nVq@rePRS+<szLI5w;L*X$BSOW ztyq%z#IA~z>6m+HPVD#BRI|hgc>Uj@BIA)}z(;*nj0u8!A_<I9!7zi#dmOZ+9v1Ej z88Zh_ZEx9+Z>0I4uqR@CXxsU)TmLi;2#8cBRpVY|2iwqH8p03O^nTi^{_Cwff~G(I zbTDX#>W*#bIcb*L{&nGN&At)xC@+&YMa*{PvFCn=25}q?8jmhIAH;~$9dc)BhW@2+ zmbO-R!`rP&beL$dZ6Xwj`BZMG@LQX^^RZl%#XQwc&1N_<ZRGIN{zjVAsq|_3#ewR1 zvXz>F!icnK#6I~k(&80g2SL>Y6WCM?{d&?`hrjfS_|tSiu!O>kWABlo5>0!VY}C(u zgKAr%kI?+;@%;&-vZWL(E-%qz3#^%(^6I6eAJ$2Wc<@iHk_ff;1kId?XeoYj5cay* zIjh>?C<N2SbUWt@{}7b8d~XD2gpw1IAe5U_cd#e(;RE+y-hsMQ=~cpg1LB77_Ha*4 zo8lIu7(w>*{ILA3Bw)gTi5K4K7cbEeemTCqOl`hgEXAo8gyP!J!9nI`k;X!#=O+ai zz;16OwS+!S<RJM<&F_P0VV<4uIjFDgtAgPGqXb>+wt^fIpJU$GaYut0fSk+nR({K) z7r}ViXXk_vPIJlG^`RxMVtdw<PWO8Os$~CzVzmac<5N7E-M3mWX;e)Pt@$=uR=F+Z zZJbt>iYz3b;43Rn^-AB{tv%YydBFnqs{4Gwq{B6DG^$&VByV)yiIEr}4LiwJ%2qb~ z+Gi9+<aFejrrvtH$8A)Tb^~~GutUD4HUT9VqIqr75T!|aWf+xXhdLFqRN#d?qxs7e zAhw_Urr%fYGdlN=y3h0Ygk|k_)YD-8^S%|fd}>XVL(k8pN^{Z<Pn|LAhZ^coyZO;s zi0wIMQ(CP{8M1%nNdyh-cszdGtj05G9^7nIVAq;wLImj51u-g_2H|=iO6f#cW#@xP zSgiJ;HjmDQ4Ua#$I{fE9aTwPUo{qfaCerp2Ksur*N4ZThDlgErx+SlPJ?=G9!RaAr zUDv?7!z0!6JOBaR9v-6DXO_d1G0k$AE!dAvMjwMc*;bDO@%p0uifhCFfnO?+hu>!S zfWcEggzbj4|D}Pejfa4vcC{lbF{g3VqbC%C4f>!oE&M=l{RC69bXiAIUd7;i$O(}_ z3qilBM$a4c%~N5O5^@Q=oxVpnNyme4cE!E^s#8fdoR`UVBw)2uDG>VUO%_ne<DCVS z=X*xRSo{=|#~99kd$K|CB5OX`uW6%jAFlw)T5s`>_Z94SRH4X;HE>>9_{nqmW-3bD z)O6H9I<?qfOAMSlB8@hPf)bTWAKP%8NXaMpsG<&<*_H_Pb6I^Ui-nFYHK3y&h29+k zY)37s$JkaHU;+a2am;Vf7c|@%_jlF9`_DK_9))Kj8&dCy1oky9u&y6hVypPvOzWiI zG~->o4n~yVB0X_Vzq_6;@IX3=&wq3dVt*iC6hq!w*Z~rL7Xh&HXb0Cdhc+GHlyj)y z!S%>PyZHX&<mQ(zLfwNsPP2E-b+pQuh7XsK6+vPS;25)uDOFVI6`>-ugthsF=Zu1D zht8GS<ZzYVHCA~t2e?Da#H@~lTWLtlBoE)ZY%4@H`o@R%w1ma@ia*eL%}{FF9TCqX zqW(A9?_weyLKGqyn4FpEj8iPO@_IZNO3k+SgD<$l%f$3<f*r;2-fVGUflPCIWB%R0 zrZO@tC<fV57P@`DbrDDP`f5Y8uJlD3ay#_pxo$*gfNigJ=j%`Fh0B8d-xGiT3QhGA zHEi)@TENN<%iWMk41Bl!EdR`A*m!JgmxhRv0^t?-F0sg#zgs;oANXtOEn-(xBnyIh zdeUO2$7gpjcq!UX{nSh>XGMZ_{`-sQqr07krCZDnmCi)4xOvj(qQ$`oJ_D}QyZpc- z*@!w}me8~}b-7xTADwbI(>ja1u8#%_AJd3wz)pg9^<ih7-eX?;aKrm?&C<=Ox)_HL z&Ef&|U6;RUv4*;H82PQD@FXCb^YDHdua`cnzxcC!7b^y4Fn#*UU$s={^>(sRky)u+ zHz9lxp0Rt?K8>sZFJ-q~$8z;bMcwp7WxJm#C-CkCs0nW=uI|Ut3m7-NC^v4;fVk*F z`F^#ofGw<-3rh!MdM>BEn(!FY+cbhn_JqCZ6PjJS!zQx_cULfhBE6h{tVdef(J$k2 zJ6nm{rseuK{{BH5)<N36FV#oR`w<DE?xtoDsb%+;gy}<yKOQVS{_wsnBIm^mKbhyh z^zf4y@Bn8shyj|oe#I;Ny2rzC5Guy%nX3Hjvs`>}lZD5+Kt3U0PXoesG&uBtl#ZEB zu;tO`dlC?PaTB!;v81zufx!f!Fu`}fGMfmmGhKQnJ0s|^L*X_*GLts;aMP{kM+7tP zdtuiUL(=vyJexC#M8tEgcj@*#junoDQ$YgD?{w*Q-G9Vzt+R4})$dc^Tup&kYa6|b zrN!3)xC4W2)`IVg^9?>q2+d4K9|VovvBdB`U@LqUo|v%iaH?eKJL!*3G+;y|C{|@< zIxw0mNWU^l@mT*TCMCqFWDZd|8r&Zsz}Lr#92!24-oI+XuY8}~E=;nELlq~L0?7>^ zAo*nY<<k|H$3cHJQaOoX20}1Y@0iy=RK*y-t`kzu{cDuB7Qj>|nB#sOG&VXLnDEa~ zGmBB$H=#(w1QvPnQF38C2v;91JP)Aw;zU*G6JxrxK2LGp-qjnXxe97@2K&#Lc5$2! z&%C-mXU!5t763baI1jwyB_?F|q0Ynac})eLCbNx{k}*(JBChhx?lDK$wnuuN+8|Ml zxs#sfsb6A$WrR>O1;H%eKg3e?kcxQ=OtG#TYKOHmu8~)cG}PTmbtG<214j2av`>WQ z>R)-;RrM6q$Teg560iwz^%ko&t(=jTF0A<KX`~Ws1g1I{*Zmx{Tub2K+Eumdfi622 z2Mk)PsZ)J5T@4S}3Ql<R{xTkXK@gK6Kn!Y`_Sd*a=g8~`3uF;9dWe5-9e2c&{{D=g z0b`VSI?rpeart7RyBSR>-@y0<S!tuia`9WOf`I-huREEEJN-I~ho(BpvFRP6I>8KL zgx8;kN)^MVZ)%eV+=DAf0$v))khsr{yM_;HMq&%nb@hwLq3_d+!=;+5`))dYbEq^Z zz)Dx$db221U&y45vSE`4X4!`A!P#ZYMU>GLv2Q|KOatx+q+dT#=7VF84@A9EVCZ~R zCuJI=lKkB(vfJ-xDP1{G0JltS4)`4OaPW!dywJ4%plinnR5)(#tb`mxh9=g3#teU= z?&~_p^mw~oU)!qk0?w|&SwHZV{)G+Y_JXk&JS<9F*NcDPkwvTQ35MV-LN(ZV+$bqi z_R4BZ+`LIZ3lYJ+wKYMOyzExbZ9z0fiZtSaR2rG{4X&3I<y@Xn;cLo}OrfKT7^KVR z-yR=qzrM4lnUcu~nUqCC-f0RPFEz*gwVKVlyjzq~KU)S|oGnXc_!0-W_0(WgYkr|j zczg26H1qFyq9Q=t-2G3CZ^jb%kC(HG0c4B$kC*OGXmbuuf<Y90f~3~f*%pW*?(5D| zkNlicO7QQ`Qc8$o?7`IAjc>XQ+q}RS@;cl-H8(w)&`JrS+kRFQGCcDul1cIKgc?2W zrEU8l26xY(E(!kA98vt`VQD{+f0yEYLxW0xQ~{N$fZ_i55(w;-7jN)o_}HjM&0?iB zQz5mL7`*^b*!_L2?dbI-?Oac{5*|o!M`<$>bKHy9me=l!AQMgKDbmX4@Q9qc6cDQP z4%N1o{pcYueCeysd_?ZMWOOgC2Fbt4=0*BtYWf(xKEoYH8=b`sMtF_X2mtj<Ggq4+ z0oNWvMl4URgn(DaF$fYx5(#*_!zfZ*%Eucv&p-j<7N)1b+BK5(K1`e9VcD@RMHb?i zT`890fz)O@`uXD$6Ol@nc?^#fy!fx<A6MIQmEx%=D8}SIeE5o>nB1AYTqw=7GK|)I z!Y&ie>3j=C$BqhFyI=hR`MqeC!2gt!2+};z(@<Ievd$N{v#wJU5E&M?TM?)(@aw)T zmS|6Ksgo5wsEV8HMm`8`)iElpO?u);ovx6h1z4{PTwaa~mMj^6`N}pf5~*~<!sS4* zpu{K79;6NHT|?EnX^IKCXEY0%R#%_?%Q~2fEX)@95$g7BwA%mNnS*6qHoKgV;oGT} zS&w9eYBP^fi7@*0j=_Gcw@jkJd1|4`vmFE3cx~Hht0Oh!02inQcCACWH-8lkGe7Fz zk8S>#wyXc|1I@ipcc`srGkK54GYS7K3mAuKWQCKhmHA@l&~ajqO~zen;PFRi4q8p9 zP>wM5*XA|t`o|0-(uiWT%9wzQc{yq{`+=W&)Po&jN2VrCm<sczD-MRfVtXR=Y7RT0 z*1t{TIs=kz#oS@v+TcXPZtZV2M)X3Xl6sR>7UlCY29tp5!=m}(l9-N@C5DK%mfrW# zQoQc!zfB{#E(EWf5s!fCERiQXMW<QA$dOmZB`pTk7gH|j;<aEzvedZfo*f-xjFx`d z=3L@0?LgJh)xj>pCn$x{1cu8~Ma9yBdlsQRwD9UdZ+bENx~2eF^I1yDm>m?+`9!$^ zwmcltCHlw}{2Wdh?_`oZ%-j+ELxS${3`A;2Dv(myTTET<<%e0-t-tZ3{ey)K>pcij z3{ya*C>ZL~2gRIAJp(nDh76yaN^_B0p%+;aW0*`Ee(k4*#D2?^BwXCf{81p|+`;4N zPU3lfNBD}?*#IR48eP>v#_?M+XwJl^ILIT@ZZ<QZ7lOfbaQ8I15bH{=uDs=6kv|qo z)%GS?h85k-`+sbA7+w7F9Z*HFW|VK5T&sLyOq&d#X8-W#J!lT^Xpq!C5;X8h9oc3$ z#Cvu3ozw7cnwW!6LZ|5=`m}+1z|lxxU5%K_?qntDg!s4w$-hvATF1CiGVONU5T*l9 zb2uB?v*{_aOQ*)qgINd4z#i+0yVaJ0clLr9?U4}o^*0ko?h^KmmLG5R2#M;}<g;Iw z2mR#d`P9SXoZ0a`QD%E)^54b`v2mqYpCyl_-UY>EFk+P#@ify)r=tPlvY#IG7=N_6 zk}dL4;$EwD6InY*^`+CqmM)vykv8o#Y4T0AKpuEoo9S5cRsQ$e?F{1sP;DcYq0p~5 z#fbp6oxztEl{GialCL3;@{VAMmK!&+<W5SEC}4DPtQW&+$^7;4Nffle;;z7S^>jp; zT*~0@02steT!X_&CuM+|BW?j3OinMw*PRf`ON-hGC=wA`I^dnVO5Wc8ysRut{8AVl z?>Ap&Zp<{>1g@mkqrIAaJ{9irD1KikJ*ebJ!qw1}s;24*>?f*|>hfG^yi}qN*=P(W zv1|_tMqDVPPQa_q;4BJx8?2`t?@f<nw+}9$?BN{)8uF7((*4Bqt0&`z&|_N;Mx7`? zYf2>N;51-x$#mkg{tGZBXwYhJ;I_IwOlNM-3K@PsBXYeBqv;p$q5j6Zjz9GLw#(Yg z*+MGR@+UiZ5oxuLTMQfMs{dxFGT3w!`mlVvEfU^fxootZxb?W)_Wl*VIjc|~?n_0A zdg{h8!zi+u@-dT$+l7{P&I^Id_fn2Db!DzKnGafN*cX;Ytm#aZE6PSfuJmBJ1^bxu ziCjHA=+Q%fxA*V0TIo`Zq<T3-vTw3R5C-jkpOOq(pe&keX5>PokUDL^nc{6!eB9}g zlo%)6*pF}}%8OOpHwLo(ojkb3%g7hZg}FF2^(8NlE{2qUz(-MvG!Var<yza^qFCm4 zTZnYwpW9DK>=?e3AvbSx8MSk6+{-jICF9*MEpRFGwsL0+uj4j4pe^sFHtk@O2+Z%) zey^FR`ACy-r6|JVMr#_HI#j!M;MA-rsZ8twwocl3z-&;nm;;%6PexGSV$pVaOUFZV zX`3adwB~-g1v8%pPeupt;}<!eqb<3Fq_j9fF7fxOI%2agd-p}lSur86oeg{A>F$&K zU(5osMqpVK&LV_p%+w=QA7&FqI$G*K`WGJ;6F}~W!8=}{4V;<9rq;2hI;d}w6zdPN zO#ILr$n6S5_p$P5Gc}Vf<15c)$*Ry9WM1K`2ush>s`gw5AHQ;NS+f{9*G2g+Wn0_< zI*w2}(`pH-97czCgElU&hRHjg-6O1AT`S`)<Fog>q7I=3si~<4Ls7HJRV3EBkDE6; zu=&<B!m*K&54KFVoNF4iTW-Rvd@=;~IoQ~G?xbygjrSt{FW*~N%qg({`x7OUG7x#& zh>^VGcg{Harg0?a?x5gleeBrd`up{)L@eA~vMLUEQEH`H(_Oh0FbXUx$*4fXsg}K1 zRZ=P3Kbm>jNmM<=!ONQz6Y>*0!FZLDO+Sb=Ad%$Vz89O6e;V{z_OdvL3JX~dW&()> z*Yc|lwf5r1wzF8q>?ogO%>Pua34Ti{XBOb~@tZZjqb8LZpCJ~m#x{es0P!bwJ4%NA zn7(JOEBW>Ia3*Pp`KBIGxT`2gWHqcelPasoy>|RWwc^hQynSx&ZJkI{{Oa1GjCSnq zsYFmBEiM+nAu%@)e{etg&4?D@&<GV`)*K)1@1Ty_O1~I4Y0QiAyrtm#B9==abKm|V zdLUn<jk&k;acA*Ug*q#M94hPp&^s7Eqa)WmqGSaF(5Er4%HR#ZM%Qv`+Z`w*1U&zK z(NaYZz<u9cwKbUI`!iFEt1d2&+Lfi-aokVk@AqyrQE|Cr)6%NVE?0Yw!z@lg?2o8& zte4qKuR;gT;#Cl$tC1pMRjy7{LTMhvngh=$s)0gw-&1qULm$JYsFMOM$E>ADig`8f zQez>d8vdD=udMgnZ!}703_B6`6WZG9%ybx~nDk_131?a2IQgxMQy#|Qcdj6w=Hk^u zwL2_&%IBoRHin}C%+rCm)Zv}SGYU=!W;<N@_yWg;WHu9*o+l5SlC^QR<qz+F?_pcc znA<$<RJfmaul_RLL038X?X$&arQ_3n*%+I58}X~3CN0lzUwORlX(K-SJSxpa)PZrU z@Zy%7y>d>1KJA->lAoU%sQ8vNDiY%&-dU_9g=?7s%$JU)R?Z@;ow`aN?}SSi_>ZP} z*u&fOhVm<ww<l4m9)4^wz;^LNe23@l;2t7i`8FtcS<s^}^1ATaRJBt4d&xw?Pr`%I z_>{lz6G%Vs4$?TzmlvobcXR?ijrEyMFszILZgi#shh(g^7V{YHlSNjoSVkMN$b;tV zxC$5;>AyYHV`sb5*u74*8n=ZG!iBB18h@St$^0Y9Qx6a;ZS(~4I303cOJ_V>$7Ooc ze77Fy-Wg@IIgW!+PD4hwpwQO#590losqt#!<O3}CL~eu<h$dGQ`uc}#{)2!TQ-ZQl zEyI4qrtvY*C%fu*$9Kz}J<KCUAYEvUhMjeGCu^pE<10ZvH%GT}uq79XsQaUzwLWo9 zL1%`~r+08qrj$Ev@$o8aaSdJZ@eek5tAE0^^qV3tvUhQQJD=+**k%eDd_w$uk%qB4 z*Q|0h3d&TqzfC<^gt*EvZC7i9mLQQPEt*8l=?2-|N5rM_n3M?`A4)97m}@~)5pqh` zboC0x_rhsz1Bwe}Jg4!?bZTB={|Ie)hb3zhw2ah2q_^^aBq#N=f76dmGj~iJNk?_s z-@&=<vf1MFJHG>j%|Vx%=IsVmE9|IdLKx*-dZ21*eo0bY9%4*lmGQFZcA{T?0_S|# zh8_g>to9it4dcpGXe}&QIZMnICd`gHqs`~_SI1c`RLbVBY^q!y>NspB(VuuX5p4C_ z%^;ZTa>Ucfpl>;`VAFR_<ZpccTV&HzaeHQAhZrP=AJ$qku6;;#k-Jy<ULc3uF{;Tk zTcuSkW3meT#1i8D`LKh%6VpKqzua@+Nx!I&w{&Re_{EwG{l=<BY$NI|;6o?}v?uzk zh>Cr5@8|58Sk9r^#4&NldMd@xOm+QT>{8|WRqm0&&}lk!(1(=w2=tidS#7(S759q! z9@%koAt&&|)@ff}CqhaI_}~x~9p`qj5x<#Ohu&IRT3Q`+@0scKw`GB}jJ-PD#_9_O zB;4IBOd;Y*S)fW`R*Y;waj?uw=WBAx7tS9(R+myiZzsM4=YXrI8uZ>&HI^(i!}k`+ z`(Ivj+k-<8kqwm#JfBC9tyR#JY>2YlRfXT_&Ec(Z4cs889?|r`^5Awa0jsDwH!(|J z%)dDFvAeaYTB;37L{49m=N)hTm_TZ<z!<B)+8VL;0Gj-8JNH|^1=k5tRenb7MlxsF zi`*RKR##7D8W~RjCg`&-&M$K?XvX_ypkbt>q(c)6#@B7qFCWi?f1|%gH3{Yjbw)l| z42)(}FeZo`6>dvC;QU7WSUcY8OAY4D`gc>$(55&)jC0y^Rzv64>s(I>|M~0wq@|n! zLw21;;Hf4YitjqB@@&PYXPKs@mN#Oca%%A`btOPd_$XzuQw7uXg<72x$GfIe<Mszh znavEu0`vj4+tRM>(qU`vk?-HB?symAJGzMnBGR(kuR7ciVnaPgU^GJwM2-I_r9$qS zJPk5<=YJEfmOg^+V>{owt3%gxki-=Xw6woPdg@ET=Tk~(c1<4l3i;I8VR|4#A~}d( z_rskv!7Ym_MMQqwGVXAn8PFtFk?Yrbri_ve->pim>F;9d!DWy>1$Vq1iYj}I5jM1W zv&U@)r<GbaR8uvpM%7?=6ak+&gfqNlr0(!S_xlz<O{=M7tpY^kq1hbjy9Rj$;`(AS z{)ad>xPYlaR(j4f{EZlCSqovFC}0;qaifr2M-a^=eFTCjIPc@UDnB!{Z2agB80|b> zwz4|~Ql_g5lh0><*&~#?sMke(z~1+s5}Z*inm#U8z+zO6Mn)e(LYH4*mjgsac8;`_ zqieyz2)EMRVD0kKpRs8PeMb59+QARP4QEV<WcIx}QycKZ?B&U9I@DJMWg1*lTaTsh z?3N@Q=fcccCqA>sYOMf^k`=C40dr>Ckzc>3$c~uPTanZ^{`TVrSbK!lIBP71hOzS_ zUvcL7a0bA%wliz8&tv3Q-m-SZsWh3;?rsyw%=j>)3$sRdpYsHT)1I@bRJ4%bpDGnW z3B@Y2`%|N;JK0x@-OhO$%6m##wRpd4q}x`IpBo>qgb#ixi;5yjZhu#yDvs*b(^B>G z(p=PTgva77+Pu$mFPO?FYW1GL?a2_#d40h>In9-qT!0Bl&ealBDb1((n6&12R@Ax; zI6_1R^^?r8d62};_*gXbvl!>}d;awX4Pcpydy#;@Q&hB4fMe8@ixQG@5%RH|g_TP| z6GCAS9GAcK{{KlSl6fHpKoAkVVvI~cYa04OTSiPxVDOC38MjbHexUTYw9@X)Zr<ed zqLj0@=~=_yYikGq{d9IHqgAO`Cy=cnE)=l1Fzt`|+3CX_w?Hthyh>5rltS64{?xP? zsgB&F5^a2p4hOC!MM}CwqC_?SRb4dY+vgxjrh0)F08X)t74^grq#0;t+U(Ue;5>50 z0u6g58@A>6y@9lW*-5F0rixYtNR{B2_>2ho_B?+6ErII;v~6+J<vbqUsxWWiW|PqN zhuK5E8T2GOduQ$h=Jr0Ui_Sj*+3{{#nt+nBii&@I+kJvPA7Bpaak*YIBTY#w!$S-; zvsqoo7R|rBtg<nJ**%l`h_>W}A({hApbyt3!-#sU^6ir;*Bu2v({86Q3=q`~=0s~Q z{?N6VHRJr{7HovJQb(I5y)4QfQY%X#vWTxMG^MsbbhDB^o_H~L-B3qtjvvF3#g(}} z<N0AiRv|Dg;Vakr8Ws^aLugWjEQS-vvRZQXJ-YsLQZPaKC$&8!aU(<Wk90ht%#HNB z4Zg^y4lt9acj1@FRJ!~|$r5p=_3i%kss_|oels;*bu=GfQx>yQz}=ycF74)m;^x9Q zS5;AhJaz=nzx08}ae<>3Xo|V?Oc<*EDNQ$ZCjL2ztU&rCN#P&2@5r>Cc7NL}p3y-S z5VY71SEw0?78G~^7%{l-eN%!(q%s1L%ES(`0;^T1ycw<9H&?<_k^S)W1b!?d{G{$h zun8<#XSSjvgFm9W5^+w7Sj~D8t-#jfaQJTy6c1(8v1Bta=|sS%s>nHX4c{+)B%5E* z(6z`VwM7aa3foLX;LYD0orY3EkZ(N#p$3&1PbbJj5#NsZngYeBel$MMt(UJ1aU9hd z%O_9^>i50qUS>$*D@FRlc8A-}Y4@LU#=!Hc3g{;1IpBOK|Dy79E~4Lq_1;xd6iqK+ z2GCso@h24)nEXaMvdotu@O*RMp$$R)@kX|EI~bv+th&pgKIp%Con4()dBYrR|KLEN zbHsw>(~9)4rKEITpi9nVygXKdOV?HdmZh)fOKm<beojX0pS4w*($$fBtYG-#h#ptR zA88@|3JM>}xJ%0Q@K+bW22pKVs5##Y3siC!kxg@|S=%{y^=1&4d?v|wbP_&a^C+GR zo)<y{BA%rZhy7Q9dx3qXja>q~0@KZ9A@J0_S8o2^vdmIJK?{jCQFF2#FR{h+nO9xW zvjEtCosYRDx(KV{QvacsiQAAw+{)y`lx<N-_Z(&2ms_uT@ut$DFAy02{iwBXZ9n<( z>~;lCet&rr&bB;$v)Dm9^u>1qDMH^_fiNI-aYB(Er~Za2tb$VuzY_VF+yK>b4e7L( zl(9B*VV}yCMKg!0z6P>Pee0s{d%w;1;17a-6}F%v!WywsT#}TR5Pd|iPsjC?KQ5!> zM49O5^l)>C)^(c%Oo5vdDOLo`>Z%=`oLop{&m#*%awREWAaClwqdlV3$h3aN&E}+@ z#oKMlwF-L`g?{zDP$cCX9&fItWv>hE*~+0T2cNq)Y}J7D&OQR&uTI_K0HU>2*q<<u z0$Zzne@+5Wodku2k4El)vu!52RdKkWOSbpXPWw(~NU|+!lnTXx>B=^A(*s_~?$f~z z8Q&~}^(u^B4rE@>k=}nK|3G$&KT`Y9!3b7@lNdOHZ$#)7So3;sns(tA5y4mHEU0x^ zX|I3E1)kE4#$13Vo9%Ev9|y5kFO~LzpPwcql9Lx=m0;ux$?&Ud7PDaFHQ0BEI#Ffx zss**afovd1o0o1(wY`zHg*VoKD~_EGw36q>?HjmAkQgvP#}LvOr84Z2lh~t+jfFyk zsx5FUqX<@!Q)B!5_kRf|NrAHeS!JH$v(CKd!czTIedL??z=bCH^+D*$$5!gYY^$rY zF+}I-kWN)uar_X$YjL|apU}8O`-=~)uvrbf&%L2D=Prx^EYpGYu*B+JVIC@lekyUw z+Ap0|^s_NfS{QJiHIMj$t^_Rm@b)ae4!5lrshBB|_`MPIFlk_B*VZq?{!kUMa0BE` zROEP=Y%((nR{G{}z69<!@y%<p`u2GRqDCxKB~6=Sa-&pY0xjiVG-=7dC}dqm<9+;m z?jBk2Fk)hm4M>n<V`d)A)FWDRlbv8g>^18oSgF-D2soAbUThqkt^CSFe>~T4!Kg>B z3g*ZXVKe+(Px|fcgfp!;?V5qu)uo+uMf2M9n@)qib*M|t;?2*fD-#hD3Hy+yt;@G} zHsws%JL**Eu%;7w-&rx2lPMX94wLpp2(N}ylwz3Q*ZtGSE`O{@(8n;0`<UQJSxHF$ z)GHNn^37IudF=ImBb0<Vt>xr95IMqt6@33Ty|exH$Plsm3O?*WN+GaU>z-lCwRm#4 zk-xdrXJjbEA2x}8>F~ZsG7;_`DG7RA*R+Rfzea7!NN28LU}$g*epPVNUU{b&1bQ`c zqOT<Sew>X`b4;G=HkfRr!*|L0&a&&!6lF6yoF!<5LMxyAgYap5Oy-+u@upvOP<*p9 z+<X?2vaJ2!c0i?=5rk9W6r<#rlsPv>_x8&F6pTB&*cQgNLDKzS=y02Y*jzjcU*=um z8#TV*dHvrj@{(-nEm^fk3C>adzW0i`smZZR;=k=jFB6{C=v6yPBiHJLvs21JD(SnK zUAUcs!q+^QU!DPLcMH4XvhLem??x=H{<xDPNruYF#aJD}HQpRIHeMfZO_WAS-FWIB zX(Y4z_=!9l?-T^M_!WL=%n~pAa5Wy&vDDgBvu*{R(mE8<I^ZJzv$DAjnL^Ib+mlk^ zyf1J^Vb(2Ix-{6K#?t~NLuG4`Ey2AT-y%mRkIx`Fse`^n3aiqKy(LZV-M>4;K^k1U zcGtf=g0>smV`|e~vqW6CTAy@}+D2L65BbevC7J^QI<s?f*}59os)1bBW~VXVb0Clb zo59_!{E6D9S=EqoG*`>`%te%ilpp8OY3{e|XV$(d=>E?cs9aRSt2v1Jr%?;S3c8E^ zE}hJdE*9J>>~IVxMZ;au`g{-g%H|oZm&ernQId`f>S`9k&cRNT8rG)ouQ-nx9m@&6 zvHE(^{D`^rrO^cWa>)UH9C|yLBD<Fas<wUBFb9zYNV5iV#EBULw}k0M1yj`{q`)bw zt?&*S@RKhLn*5xIJL9+naUO*fF9NLmwnsg@K<t^fh=>G=II_LfHr@EryeA?sCq&1X zj}hRmBE%15GfDk-XoiZ#DE$~z(ovgvo*&X-it;T$*x^V$8^lRbv3MI>gE~(Gm#{NY z_@`vh=-b?Scj6v_anq&A*+=z2wZSv#P9v3I#6>zPdJfgs2;sRM!MY0V>gxl2womh6 z`@d)BvB^nh@>Os|*0=q^{w#4%`FjVXsE}LW?eA}!b`^!@EN7AC9n~F0cX{v;!Pn7q z&$2(6u#1O{RQMa#SrU|<9P6pX7h5qdcj5!iXI@Fxw$dq3s~=Z%TV75`@Q#3vtqjfN z8GKCcZjQv2B^CVc=tL+kzJsc!xqFl*A+gw|ry>=dR2oJE?oi$q<rNK>!J3zZVi1aw znKt!ybXmXI;{|ZyjP>LyRa#Fs&gY(7%h1?~JA!s0v^*2}eyQoyl^r#(@`><(#7fNv zo9vDzX^Qb}C_0Y3L9pfWGL(DNBu4+6Pf>4JjMNb2a(HxXN#&i7rV6s5OfE_r!9H&C zb-rIP?Po$(==K=<xo<g2F@?lMaeIMoZcZRSYa*Ts5pL-|36nHLk!!d5ut%xA(bix7 zqF7n6QL(9ob)0Isw$km!{ZV)|A-mPQQzZV^oho_c5wG=2bl+WD$bvmcV1lV{gnGx5 zIxU@hXxsK+e7rxQ(imE<kgc;rQim|uqSkHOVXqoG=Ec6ymx$%I(c%J90R^+lOI048 zKr&S>Dd5@1z(lEIPjaheRA>L)UJ{}lsh0N9Mwt{LvPeqy#n;`Zl=J=-`LqE!jFXov zwWJo|&^X@+6D(1ag3UYWU3<E#?h-k?2M<(zdhf^Q{^WFK!pPwAcjqpl$_&Mc`=1xY zicERG=%BE04UK8TRL{0)EMT}~n#sX^0o~r_e9YV<A;qDwuhf|u#UZ~n-skZ{!^>0T zi0Lq$R7Cc2Wot=xRETe2Sy@T;qnXF&n60-*7aEAb!h)|gPy;uc{c)X0PB7@Q();aK z;rHU7wU7ZKx{Ws@n`N(n?r;qXcTH7Q3s7-&#R;mD4#JMkj?w7ku<n3_$f3?xvwtsw z9c_i+&<t@+pY-e56NqyjSy!hH%8dPKzBV{8@9`G%K?#+5R&x{l_UwYB4CS!1q-`cA z$;bZ)>bDm8-<q*x*>mB}zC&WkXuf(XfQyC+Pg~LknaSZ_vAmW^vDz~{W85!6x0mLj zYv1SyACprmoo)+;q8&Lv`<QE<qfM8KzRMZ>>qJkMUCFN|S&>%UJq?qRU%bLS`2o*c zLc@RIi7RZri~O<eQ3n{ZAmqxX&d%&Oxp06Jsr@VCpXfie9z6mylYH~?>LyzD=a!5F zil1dZ=I9Rfo>Q&1j1kgH0q%c|5^uM({q0(Y{M4KvWMM88yzf72j&|QPTiiVzjFFkq z9Dz6tBsZS|zylRvRE|RMw(V;xI#>8%@7=KxK_sM*iyTz+aH2S_x`rCpbze?qrwmtp zH+469c|mf~_Xn-R*740v!b9;-o3TK?t4aq2X$fSY-(`QByD|7+{;eJ%NUyTHZWi_R z0Sv=vcMJ*`Qr06o3EV#SgU3<tOmVoxa8>xrl0<3!1FY6d>sr5L(n0P!U7q#cCLVD5 z^^dwiuZ;CDOx?w^T9XCp);%eTzSw7VNStmqW7|=Iv88r9YV!TQU;TY}hiew_{<rV> z6mw;JlWXttpjj*+H6#NB2eyFGi@*=>T>H-U1(*FejZP1?S`oK{YM8qku|iupkKeyA z1A>1i5p#4M*)8l$JA`8OOj~@2L6V{gaQ3+=#`n&$?%sVECc#lSQIj)Y-FWt4=vtbX zOXLMV``>}*(5sBDfy}m#dND|+jB+uq5;5|(&f%T=J|Y!!v7M9>Yk8YGc9_RIg#;*L zZC+T0N)39RZoy-|JLZRO1K(dT4W!Gl@b}}Gn|BP0f_+mY3ynwYVqw?-U~DcB6b;AO zo$$ZdeaN4Q(VtBl-li40@u%#s<N0N19N+&n)Fp9q)Cra`KO5bl%ogo_2}nPH?R?ua z;EJCAlFb^1hh8P09?r|<=SN8Wzxe?+c7bQ3@)Iikyr@n**Ifc~P%JnrlR;`F2DRxQ z%js`XA#6=o(cK&j9#4{Jvr#+b$p$@>Vg49xQ{cj&8NT}PGt+NRir~emqE8j6@pHse z0L`Iv4BTI|y{{XpkSg(7J%%=o$#11Y<O;<(Io}t@i?5V{pCi`u!A^f?npfO&P{a>c zo7yM=`mz?Y2l9I9G8j<)L9UGT;dDb|-rctdg*^gxONX4Zu1!S@z`uh63ZpwN$4ICC zujzYpPR0bMuyH5ouej=!<>%}63$fZc+_pozk&<m6^iz|2i;BAbJMJc~4q6o2+TA?; zzlYmY&DR)5P~#XI*vyxfw^Y3|(6)>$>!X*hKrr8cdAn~y=QONjc^85y!$7s!;}90M zxD!K^E@u#SzOKq2aTmN*vvdtE8}?ZjPPMzdz{jxPYk^lu{tybgBl-_ot*eLhS& z(E+v1^y^}=w)?JK??AKx+A$UrqwclQrRukt{o7TpRMi(kw#bwm;6YHe`ZUbL@4BaI zXJNh+T&bln8fBChez-$o2k42F4n)I-WPEb^$G?Dh*ax<~6E27ybW72u6`<N381L=5 z@8d^NWeVNNNhAutJ;YY_j_A+Eqv>CHWp190^i#Lk@P8W-?q7`a_&UDIY6Ceo8kD5c z=ah~>vzv~z;V#)(V3hxNDE*lT2YiMn(c-{0al8wCA2{Ik7G&ez?=<sv>Nv#C0GX63 zec)t>By`yL#DhNgG=1fi8uBI_agHZZ=PxvIc1|H)0|z4Je0k2=ALv9B)k#D5-8esq ze)~6P6TUlqU6p@uV3pfH@#**waixQGKZ2Ino*zdQ&FIF>H^j^>P6((BL`xOckZpyr zv-V{#9VV$dr9XT7f$g1xtg1aGu^hbU!-n%1cU_+$`~}Z@$YWV)jfE%=E(Zs#HjSfh z`ow3o_S~$Jt=NzVfyBH0DlGI#y>PlQ(jcnvFf}K93ElRfiX#(>*;hN1Hzf$#OUhjC zEUVGYVM~tHTx~q2tmI90Q8lMR@TAII^)>&&54&TVYrQyKGE9HJ0)h|qY~WDhVBS9R zH?;0(^EKG;9t%U3FXLSQjz<63*f6&e+wH|*53iJqq|d(o@u)aD?d#vN+|ZOl5)%49 zZX(Ij=c4(ozUSX(YWbvktKH(<cA|nGxB9T~0c%%s)Mi7Svto%P=D)<Fg<?OCS8{6K zXw*?=CXb|veM%Y2y~egRvEj$;39UB#x5b$*<h$LK>Fg~7gcp$Av?42f=`HEqU~<#@ zRZe0Vgn6Tz^SG(2ap{nNE|*d19B%BA$J;REeu>`en)d(6-yPphBjN?)B^Qu+4-iTR zFyCk;%I3EX!Og>F7qWD8Mff3`NvxXe#7W!C=v(D_YYob~adE!-{|kD>&maB;h#!G| z7_Qa}Q|Q-}_s@8{k=JNF^hjd2Nc$aaq+bu5w%Ql^#V?&@P?+wP4tm&2Pe$%TEVOaP zqgoz|+IT_mjyr_L;*K~8#js(o^W8}^3=&9N$2Bp-;e&C!3Vk<rjxm^Re)ry6PRd0q zd67#4Q=RC`^K(mhq{@+vbA%Y!+m+$3B3y$k?BBJjzp3<^|2_GYc{evV0*5OrfC=Z* zfmfFCZncU+R<IZw${sP<af^i|c1@;xiYF`?o=Oz!2fZQxcYQV4lMaw32SUz@{qD|r z-bg(#cWSt70i_4_V(KoTOnA@}v*Hoy<x8RM4{Hx2gN6pC4x!WAaJsRee{G7JhNyFo zX5ZX2LGN#yI!GJ8?N4GgdQ>kdeAh==?6acpuTH9Af69j5()V7uBfCy(mNN0Bl&_i9 z|Ca>--l?IO1c4-iohZV2;qY{hi#302L-<~5%s$PF1HKDv!*bz-5_s|T%D3Z~U#KYD z^u7Gnxcxp!&XIJ;x9q>gnX1|GURC$Zsy>_+`$stlg;U^^=0F;h1SePY>R|9+chY!C zxgFVJDDn8Iq6p0MG}C7sqGem(?x`h({F%NMZ8{lA)Z^jjXhfRU-ttc48^6bu@-*#~ zTil?{WF^7<N7%3Qjp%OgPmxj|26u-U_YEHpUI?U)b&V_jT0_D`f>6K_a$V#l=@0J} zy`cNYE06A1z~1{q;Fq^|ZU4Src_3erY?Y;(4^YH)o`5&4nf=Qjr{PWYeLRo-XgfWd zgY+nWQf`S`i7apygv2{I1akOq&I{6`ToJ_bx2X)g{2qf%6o$WR{c-Kk8T^?9)S+A& z!}1IC0BA1)&tfOHTZlD!T814ngcWJ|mdXl`<aXtAofUx|PQ`z$%tFu)8VyjZGZ0RK zC3Fz^5kWTDKZ0l~@H8wIvGqT9vm+-22J<c`F3wE^efH9Quc4t~zr!EOIVsQI@85Uk zwuJk0J9XW&QEg%62F_1kB&B>+<|ia$hW7y^m+4&VOchH>3AZiEFgS8Ph}~uk{yMtD z{^OWIO2ZoGzYw)dPoIm;tr(1bRrY8$T`l8R^^O&smNw#RH@dlf{oe&$M~CB{0H=^I z9`ccH<PT-YblPf2eKP!u`x76m{#yy+jzizTWRmxXaf*Q+U1}iCsS*4CWaW45f?MKM zk6s+o=lz2{{TpuFn>RC7m*;K#wK2LKcYYU&8{b}fSJedlp8r)&DYS)5=IXLjjj(=( zgX&fDgO?^xM>{>3P;sAUg*#Q-+*3RrUcXv$d;NbHd#j*0;%{9vgy8NFEQH{0!5M-( z!5snw3+~P&xD(txNFccD-~`u%paTr<gAOpvT+Z2h-&?op)cxODFJ1l8FTHyG`jho7 zomiC=dqkIdEgC%}QWP7wvGinhIeM1_@U`)*8P9$EVY7U7t;4dFbTW%PSfKF4?uzNn zVB_UdxSr`Dh+Z3Zu|S0947VQ^KjKAPhO;*tEG8a<V7rBu^SeBT8@XVMBx?L~MJbUB zZLP0N69%P?3<byY6(x@P<c*_+5f}rx?rTgKTisCw{fAGr!|)NnCtSdLAIrdN0r#`X z8xf8!K&N&g@%p$#F$O+jPZIX|3Y#YAiJBY;5$CuF<AX3hkR!^OG&kdcys_RQK_g*) zS8XiC6+{|C(VniO@IP0)h)!WqX*UkU1^f=W<bWzV4LS0-N*U!lWrHfl>d+5}gQS*C znE6o{XL`c?_f0l<5nsWe3rUH9y*{NU)tqZHC(iblqCJAXV`$KPQMf()EUc~my(4yk z_Mzl0!DR0pjoO@Nx<Rc}FxLD$qSXQ^?<w1#G&@tl7CMwH3a5noj8GdcLqy=I4>*z! zq<d?g?-LvBL@kg)euzx40Qry2TwAFyPem{H@o6zk;UE|~xeaX;OE#>{0XXtUz3tO4 zy!aRyp@Oc%z_+$r<w?khx|7lOniB5o%#cVbSH5#n3FVcff+supyH>c)=w=Q@;h@m7 zF7bGk-cyj(MM$B?lRjj6S<iiI!u?zxLc{Pf(8$lF8o}}BW6Axbtoz>>mVU|J6s31| zi+U_K7S>7;Vb{t7mX2|~C}J-POTL<*Ss>$2-UZwE+PAWRFb?Mg&AdZ<so#_;WHW5M zYR=QAa28E?f3SM@IOHtgg;skxtE|}d5eurllu;`f(Ymv=G-f`F%P#ctNP%T8W|3gm zo04<Go>;@3iy^ibHF1`LZtl*1$-~&EuC0)glM5DF{oiml6`mL5*RNM+4o3Rs3Klw; z&|*KqFN6t^IvV~!@<bz<sqx~Q6iY$JiKc9oY@sVzk*EwQ;`$)dXW9pgRMDg&xM?k( zFw<gBQ&86HM>a~vVSHl+%2Q7z@CL95<hl#fb7ya^0Wy2F!tsbEa(3z1fMjA<)uX$R zJOe~x>%p^m74@O31bCN6q~PtXSA;~CJnYjk<#zCRqzC&s+zLN~<5o!8+bD0LNkm&t zb;yazBLUj2?{jk5EfHg3@ayKZPu3(y_wvDQXJ)7@<R+Gc{~KL<eC=kf!R6)5Ik9ni zoj9UVmfAl<fwQ3>Wa8d%FXjny6>scrd-r&x6uT%MU!lp=aZJd*0TbZ17|t}6jK0w1 z5wQa_Vj|n^NsDpk4+jE&Vh>joEgcNH@d0lyto&$0dfo`R7{)J|15sQjS4#}shn6lg z#b1xAi&E*_o@20a<w%K$+n$*e77v+s9(+}%k77%GEVlZC+kG+b2y=3#+IHOj?$Ku{ zf^@XA)XgChENBh7#h2o8R=|#k*`Lhf#-L49HZsPZW-K9rMpo%>*4$kYsr*#%TnQ1e zy8QSqVw~^1MpMhF=mxVQslOo=qsU`d(eKux&id>~{lH_T1vcyuhNbn*-*rZ=`1Xx` zt*mvDyGVdGFgLxd&bp=~=cAC}<p=<JqU!na_v6SSCyn3aPm$wrWqWf8RC;n<#%!p1 zOt9M~k#(Q)?9f!ETETByIi%%TDIvCy)lDvN^cpzxL1-7JR2;wSfLg>(1^~LqYN9*d z4~`T)=WK=#Fuj)w-X-f6Y9#d5V~7{Ibi);}Q&D~2|9qH~uwv8|#}F=j5I2u>JB^BH z->Roms~q_i6%s1Ta~}s~md3N^0JLlV%jn45T6^3t3ekDb9df826#NhY+gY{7D@47# z=CPXGu@|HB&i}xYfi~xB;6oarY*&Cbn_L$3=<t&agjjwNgc(=ZwUqqnfyWh&9neUF z8<PduZC4G6BsusUkkFR2cE#+HdyDruP>x(m(O;J*>$ch=FU+ZQ#e>rK&^yB*utd`5 zF1P(^()H~`1%071OGZ>QO*1=^E^4zo^&3k^a{BEDB`ehW=hS;R(a)IaQC9A^{(fbb z(lQ2O4Wz0fnj!sEpW6oA`q}yxcyKTru$B4&nIX}EhZh3aqf*i5ba{stlpp8<XyT4T zgi$ojgp*Eh2>g5yGkmsIoz)A&^jp0w*{SfT3W;b{f((+l=%>&Vcfs1nQ$LBDCbS`c z4n)gWe-@GbR!tD&qX4p2)r~RVaQn2}2sHdTSMpCJ9No$|<~Pr+`jB?3;-Qjo$PXZS z{J5wB@`ieUtL08gHbfp3B_&zl&_2({&DG0NoS}Wt2{rPD)v$xuM%^jN%!9Yv)i%7h zXi@4fm(l3$*hIL~N#;Zj=@f?OYIA_73N_^Woa-xeH%7+@-Y@n3Qy!cq$x)&3w<}UB zZ9h2U3xZzZ)BR09q?-}T{V2WlK=#jgA$%xp<2UUh?GzKo1%g_j;YTHQ&n<vt0e?Gh zE_&^c;mw(&A5a<Pi)ed#mME@;*x{@Aaizqsf(~DbqfA&>+8UOagQ=x&HWwG)ewTwB zFNNRD9ZkM5+CFOAUT6ahttCX<Mp$@?kUcTegfkM*oZZ?uhJ|cJ{$c&;AZO~KiF-IB z`KtQ;r`yp&%lpo^UuX}+oPaclvbh89#|ePm#Ip;!vDhBZwikfougAInTIOa(UZa)l z*PH)=q<YG~#ZTfsZ>#YnY|a3E5qvLL)Sw*v9k;4mi#yBzj{rd-y`YX_aIaII*#t=5 zdTmJLiOn@n+6MU<$42#LQ++=R94JB)pF-3oR}i7I%&1ZKwYMVVDAO|O&;pGtsw8Eb z@`+<30{^f&DBFUk;WPt8c;a@CaqU};sPU3v<=8^_{f%r}LcDxB*MB<Sday7xC2j_M zDVjp;<G28~|0!l<q&Kf4(QkbV4}ja-kndSp_5$loO-*a!m9EmEp8stmY(ziF&YRiA ze$V_D<*7CAV}pCc-D&YLr)l8*o%3^8Y<qy8{wzmQ0r$1oWNDgnSl6!KZmkLDv<{#S z7zHpL5}N-d{pxg|Tqbj-U(5-S^<HM}>fjDMth^)%*~I-lF?ehuzZ-7>DaEKAE;h0X zy(`fYB3PmmMyq?xG?IUB*X{FHCC{y&_GP1?`-`=2U{f&^0?r@;@asV;CK_A>j9~Or z72bT{L2VGuR2x0SgRk0yV}BlFy05{2%iC9nPVt6X_Sp#bwU925)BNh|fZf`+rD^kT zB;4IgHgCPo`M{$*;YC*5mPx{NczGImp&j5Yk1&_buY_sV3@(y3G`0SPgzsgFl+3}G zo~A*QbA2Y~mjz{?JT&`r(_J?yJ;%omw^Db$a$ea+EN$)5)5Pc?oAs0^hhDiY<qL1m zb^!*Xz+mv1Y~|qb0{&o|e&8iFrGr!;S>jWsv`o9LKAVfE(lpLUoCPi8?hJ11=8NC4 zhoAv^?<+_qw0f{ppcduaOdM13saWZS$Wgf>bX9=)jr+0jWWW=asYS-r`rJDpId>j{ z2J!C^H^}Eu9X8W}92zrANRypX-38MHC+t#kaC407^W0v(m=H=GcrnCN{5lg7Q#d8; zx5-H(Dl<)zguW1gVFYo1A6!#6^=UqrXRB%6bu-*W&Cyt4H16`q^))_yGTSXp03_`~ zl6li~_bHm!6^YTL0#eQ%Dk_~RMH{pn@^icvwjO5BWX=jmq`3DLX9w=Df|)rjl-ZvJ zE-jsy0P+YtuV3TY6>hUs7#@4sDExB()WIb9YrUeUB$@W}sa@Fpkg`l<f~&-o*!d>2 zrew6hMr%6YuJVfNQAhT!kD9}6aOf$0F#7n!>yN^HUBF9{Wpg~(c&3}sab@Tx7wD+6 z%POyV)KC*S=N8KUx?z{c4KOuWl*P0FisA!zE^X;(5ZM2w(rI`QRUAaek4O`st)rB} z;^%|5<M?mUm(btXUWW%lODP5Sy1M6Q7kBfLVJz{9!Www4m7D52xPUQAiH8_HzvJ#= zd-Ho=HM$Tf+sAOp2YfrssEu1Ob0ps#wIdTCb56oGyu~xmpTIT*gq@ny6G{1l>eHq( zhUH2>JMH|&C01=AKNZM?vo=p6aZ9-!b|4yWMdLo|kk2;9`=G&`L>AX5Xht+r`Fqtx zV)-$@*y{$o5P4mv3VI?kh3WSMuyE%D1k0H(1CIT&Uk@x@T;!SXPUZP-XTF0$_R0Kq zn^7;qB&<YkT)MCFv1y)mkDnuQXyx(tgHbgnd#DsWEJPfEYW2GWW4{~iTt}dQfZ1&` z^h^P6FXHK%l6~R-VI3!4e}7U{Rc$HMG`{^GD)PS=?Efu?KXv>R7&dgekE{K^PEnYG z^?^e5rRT0)M}8|kYmO%#g?KJsbxxM+*)iJh5j0fM*DfMLm6)nMAKU<Ejy&e!{gY+D zM|aX$G5k2~&$=lIghx!>lu7w3BrFp#yLbW*{!b=dz_Wm$pZhU><<fpxnrck%EMJ_T z1iXY4Jke=%Uub0J^S&QqcVm<!$V|+ST$=F8jb$@HXo&jP^lRZeZ9rM2s&v)T;6k2m zt9q*4@Vp++$3rEu^&!8~YQFFbIa`0ks8@j~OU4daNB?u$W}z}&(iuKw$}3_2A=S~> zYd(D<a9s_~ehx}d_uo^KbGd^qzPK|bt!^@G6us1wm3|BNKGwY33a<G0bowl4nCo`T zRIC9Zak0;(c&%BUCLmAg_cIGpL0{DupIOLK4)uE&WpOX30wK&EDDw>?2IAuoEicdE za2cBSE)w`T9%9_cbrRNHVxJswD~aozSP)!aB?!Igul=`H)~C4S(|J2`oV1C5b%T?3 zg|_jj$em(S!SD8YLGiWRWg~c81EXsFFhLuipS|V-d3N4IMmpi4$eB$@%P&gp5Irj0 zU9#1nNq5TXZtm1!(T8Q&{IcS*<i41tzPUWd!^^uvN|X)ir*r|gmMPx(b;D~*Ccau9 z!w{<^!eV?~joZ54mG7|Hwi!*E)~b<|VN$KzmT`!QR_-Q=ao|dSSdZhDrFq@+?+$&W zCs)LDb>?32Zz5U$Ep2nGL`1kO`c*U6Q?q;2wuEJA{4r91K7x*JuW_~&&Xg6BO!H}o zLJG%qJ&6A}FVq4NPr=66Rs#=R#Ljp(_ES{ZtCD>v10>)1+}9j*IVvoFEpYXl@jFl0 zP5loY6zqiV{%GeRcHi=?{A7gQxQblt&4Qrr$$X!cJB=S!bR@*ar`j>-e>v6*G9<%I zZ0qrJ-?lGp^2z#7i5Ya#6;hE}woB}{)xwBq)nwkrTTa5p+_QSyr{{z{QULhbId7_^ zA4Tr}RntDFg?~vYLm9WY$KpPeWg(x+e<9;_iMUwdaJ!{kpBZL6r^MmbDtuI20hDrj z{Q`bdq7g8l>yDe7YJIS{UvjnjCECDA6$XMkuRYtw-S_PK9hXZ%5UXjYCs2fw1$odz zUjKV-qHf^fqsW7oSc8O-dcNA6v!}gSuNc%WOWj+3!2){F<_1qE;7y#}niJW-Jl`q_ zGn?MKsDAl>+y1fe{#`LUySw3g5iWi!!hhxcrV{l7E#{H*M~szP)W;!NlRmls8tgtF zQBOsCtRU9s;<C1OmzZ@USGRM0_|kd)r6KP(Crl`)g-8vX$Z#_6-C_wW{Xi}f0@eHu zn_zTtuBwEv%J7dDC*JJ`Hc5FUS$9Vi6vYL{`MNd1XkcxP{eH`NYLUl4pd!_ks76qT zUxA$|iEdao1*8?EIm!d##KxAm1jGxwL#%PQm?1?vPyzFMzZ@tgUAESz`iv+nw7T`U zs8?JMqj0KBw`D;<dyt&?(hEPgG>y&^Mc7&9-QcF0M&}iJ7T#YbPa!$b0U5(R&=o%( z6L%Lm0^Tof>_Cy{FduGt9e%rWCn5A&;WjR+x`(wQB=PImOcx5p+E>8FB_2<PLxuza z$C3e`UNKJZB@}%Uc*$-aIE~Y9daua|t|#Zv|22GLElNF6Y~y1_nJMx3ux~S{{|gwi z&j#+d3^se1M@o!f%4psToQVi5)wW4u(gP>?&lclwuO6?KjPsJOm7FuBJYRQ@T5M4Z zZ>2@Or|KZI>og5EwdhKuIWU~OaP2G;sX%v+&J!0?CP`iAr2qCXarK4`C06L~!K)aN zkFR#-mh^(Oee-GZe4C^7qsZ?E4Wm{yM8UE|16rD<zn4Yv{S<c%YNuO3c<rYX6bgP4 zp@NF;n&Nz0#{jnB7P~(nTTvm#M!9rg_d*OGxMle;RgHyN)S%2mh>1$UTpnYjfzveZ z?K-z5H|<JJZ;|ybj~_xT$T6~P^V-g(EjtFkD^Z_+H5u$fNc8g4siPk}f&w~#!?Wq1 zZxQru2{|CZGkux&h3;uv`1u34U}RIE!W}N+DIkTIIBkF8;VH?U?i~gG&eqXz96>Q) zwj3d)aeGMWHtx4!x7&{^p}@Yll{_~jPqOaj_oTggxXgs)KZ-IcS&lP_RJBPTzCC`A z3+Oq-ngnZq+w<3id=oz(8gv!*bZz?i%FEafUPH!rso3HyOF585T`-`+o$$}lB%viU zL8!BEBY=udknGZJtJKg8skwHOD-K-@HU1U+$RqN>U-I7j5awf$*l43Kha0RJg&*BI z(N!-{7o$XjUC0B}Mu6Psd=W0~UhTK{Oos3s<kre@NDL^rk*W^t(fNVnbYu`gaEx1q zPe*<T?$S9SGSC?9nz*dDnIPx9pE;$pbMvs33<Y<0XQ(;~U5#ejM$~ObEqUUX%*J=V zoS6g?wZV73z_(-M{jOuj3g81Y|IG;g*EXg9ZG!$U%;o=eqe~O@efjz03#-|)U#RTp zQySohjre?p`ceLszPAmlo1b=e%>0tyY5)?*4^yf8!8Dx)25nX)aN*|^uQHr}33vgJ zsMi#B;rNahv(1nGw-+9Z53|VJC=(4@yoB5eJTW4I+N`s(So{x#T`z!U)A<^>QR4U4 z+1NpMd`@|H2BtTETsKE3u%SZ+loWbcwo;E+f)-fr*6wt72T)#Cbb_@<=J6PVN+RPV zklA4W=it-vRadYdzDJOhqz~HO1bx)`RtsFLJLsGic7>yQF*J-2jAs30^9g^@Re}rx zZfnV)7Y4;eO;aabe|#CRQ}7i$6#%xaQBq_E%^uoaM$NrLI5mUobIwoJ6!#d;8*-sx zj^);8t`&rT%VHil1eWBk3pbkRN8(TR8AzuI@o7ZKJ4D02=Za&pPh;Ns5Ou`ODw+{Z z3jJe>xmq*r^!!S=<gYU;D@T<#xzRG(wXRiJ-vKy)aJceIhutX2v#!YRaLa&wt=Tje zQdrzBp)1v@4B-~jom7z2)A9(!p1f&Q{Lk@^<q31%TjT$J?ABQQ&{j+#?3{JIBF+M9 zFHLg%wtwh_{Do(73wt{o;#P?BW)jVQW6+Jv4Dn;FHUA*eUjThWC+?c1DB*F*O~XC0 zzh$2kGJ0A^!-Kq#HtkV^MIXc;`k4w23%DjU5#G7wT=A9Wxm-sWkP71~g}RL-L1LH6 zHEn+O=iCd>=E^9D3_4(Rd1GvJbxUOU!>H^&ardj<DH#Ms(--vLmNY{_gJuip#D7sb zCC-e0weo-<!{fj+>vpfB!z{5I+&n&S_VR)d^tzc5(F%)LO$lHfZ>`^%3wOi83it;G z`R3>v$wXF~sS)EvOIN`_X%rPk_*=zauS>wk^`(5ubKzac<$HU#H+_-M$Szqd#Vzmc zKC~lq-vi0aH=Vn!$@>J*n1t|1B~S44^Rh|ZIl&S87XAMUyoLk(n2@kijdx#VYmJvP z;4+q54@=Nx_5DwV#uD499cp@S`4&S$A6>TRzwNN#Q*5n2@(dNdisBg(bwo|-el;^= z)uo;G2eqK|0H^Llpu_5{fh1H$g5mUUlBW_AU05n`8XU5<!fK7*YmM$A;ZnrZA<K;4 z0hd~HEf8w;Ukg=~;&xWIP`ThWN5CrlZtW_pbqO>I-%%T3m_}D16fjDm^aF}KK|@vh zN3au?bGO#`4p894u1FEioiGXek5BVxfT2v|q56OS!)*K?+V{VtIRBeDw|k}zD&d}X zP_I{DEn_?A=zwUFrqfBU+quHo+dTUdZszea_jj`i$A>3xWD*j(|89HWsx20%Pmjsa z#9k9FD@UzxwRR;6<EmsS!^T9d)5VDgIw~N&gWpsE??~Oh_)KQV)M5yQqNZ;2{e*-W zF~eV~o_Bo3XThMxzv*kP4k3{6&yRb9>h9VTMV1bh=1D|L65q$(v;z}2&*4b=Qg5)r z*r!iOWNzYFE>d@6GrWYiV@sVymN$bs&lLP;Mm!^c1JE^)sxLD=PaYh9Jo!^B<L*~> z12-O~vMwc296Bi^Ay1fZ?0$J#r>=gegC-|V<Tzg6gVxK}3X1=9C=!GX=QL*)Y2NY( z%;fY9i=P+uWO?oLMu%7hhiNl@U_+;mfpUkZu;qZQNZvSo{%7g&Z(uFdboYF7l@rK} zrD&Rk&uQ)+SL7V+T-a+PzdZRk`!sugslX6^-rbHaOta`r{jfs6PGf|=e^d)P&m5y7 z`kU)5R~FdI3iGGM;;D1_{rUGRZ~vhC^v}CChuu)Ow%O%)7Vhl$I>{`akDs=AM6Pyn z^?_#L3l*Ekt+jn?dh$y6Ozyq{g~H6NTDXxpgc?qAl?+%<BWlt}FP9_rf>viBn%`wg zm^(stZ`vlegD9>Lrhubvt+Ci)r!Q0yaet|}oj%eRXn>dxqcHsK!moyjr{~g}qrLsR z(B{rf&O*^^Sly!(P9UW)c-knmHC3oS2<S;Gl=2frC#o*X4v82$98Pl7L0~q?kdAEG zX~?%$74jz|Ve|Z)vEnFUk~p*qqP80Q^Vw=RQ7oGnED2f)VZN7FIU=df#OAskyxeP! z{Js8^$JBSKab0&{L$5pKETwc8*ntr@(Qn>oij~)&EF>5i6&-jY&*}dR4JeH|&P`Hu z2P2s`w@D(gJyxYds9zt?E@pil53Ml|h<2XFDRJGM2_(Zlhe$udj;)i294kcR1!h8% zita7Gluj8G#Eqf%VMb!wd&G8S5D~vY2H%^dg<WqA+S+3lHyS+Yz7(MP)zvIASS)7y zQ;gISF%kEwza0vjZpQLifA}6l5^`bfBIn!nK~h4P9sp>MYx0lfGnSx1D8hHb8OT52 z|H`fun33|rF82U8?kh2zrKA0>lT4~sBe%ZEjZ@>Y5-w$@zjypL9vQH0UHnJ5n85wj zf4jN=pKkm=jN87%FVfc92u<sY&P1uUsF^579y4hEw?kIs?fk8gqW<EAMEd3kCu3<m z;zh9n+A(BP-S~T_+C~aG9%q-Mue>xk)$-%`fg3ivZZ}$)*i{7;Zt=y(>v3HT3YsU* z6X3XCxKx&FR{D9d=rJ^RaP88W?uR%YZS)4;HHjkKFqOKc1RLfhG5VeOTa?nmz}II8 z;tN^PF+q_y(f0k8vMisuH{Gz&La{svjmJm%wU+39xrGmdb#jan-FSuW=!r!ns>RQ$ zLB|iB-}AbOG6*a3{au(f5plfDh5MMK@qK6&^sZ^6=}B>r8a>^psk4hy0YT7UWYlTp z2P5c@ZhdmA9HfH9cT3^Yk+E~p!spb_>pC37P&mU@|3}tPh7Rh?qn8LR<D`HB`RZbg zGVIBx8Qe6pM*6!!kA8;)Uaf1cVL$9*lScAP&u)%hf$KjX4FEt?j~RFk;{fEwwQjU7 z>1h97!cQO+b!2lje6FvDQXp9lj3X61cPpEBHT|X+X&;oDyl{`>DON(mQ*s{4VPJqT z&)aF{_r06DEVUwX5qGAk4VkGXu-k|u(*$A+9^7A=NH@bB5kAi!_Hn$6T*S_skHNQN zfu;x73)wcXrw=s$+CpPrR+`3}Xi`l){gdcW_Phu5hHYv6{hdjlXOS8B?;B}`>Je51 zCKWp!YvznK2YP#RQ7V9n5nu9!pI_K6)`D_boc(=-%82oYQ8xqMXQ!<DTbr1*6{lNg zku%ML!N{h+wc@M`yK$_2?mGwK2&-M;DdOTNVv$?R?u)v*(iSE@R>;I00YkRUX+~yV z^jZOT8_#oC$he)ioVM~yP3BIi#N7~w;-n3m%R=bJd>5~!8lJ7hgKyXtx*F_^sBT-> z>$6Z4-LSao`7p}b@%a-7Q8+ism$^kL_NSDvq{9kN3Vzp=h3Fgf+gXpOS>%!K<VnDQ z?oaR}lI6_MP-d_1URA>CZMgzs3q(BX+gvFjSUbnyyq-`!^r&SsqTiW@UdGqwALRc4 zmkVtfuI2b&iLp*|D01;;FHV&W%_R%HGn>{8cpb48eN3ou_iH2BDJ&ipV{<_mS7D+b z2jm-3e!W4diQK$$#H8Jboo8<Oe3q$TeUjRKQ>_Tmm)*vfx*sjs4xRY_9FPCqkm6O} zro{@xaF)oQ%*LqWG#Tw4ZNKjiD!@f>kIYuyl(he`FBpb?Um2#M)WFQ-b!5P(4Su8G z@KG!5r^^f-uqgY@dwVLGrx793#tCW(!GHX2#~IECc6YCx{IaYpznWqqqDzNG9@Zq{ z7P}pjq*79Pg8eWn`+<AaZ6EBQe{dGK#lgkI!R4U)CExFvcjPXC<I2QQaqh!LgEW=| zLI-dM`Cd~s4%YXPy*q7!OdL~(!<!<GANaV<I;&)&Q>QpX#ZnMYn{T{F`#<?MI+`gg z{A#(G$eKgMq$-shnhalE*XhvY;}SjS-%eIyCiRxx2OT(#(cz*DVg>UakSc(lIBm&A z%_G%CWhwfazymikwfsFfXH+(oB?reLw-6wNFJ6}5U^F$VEA`p{e)>|ZA;d0Aw%Eb% zi-S-|uppE$;ayS<(BA1g#{!@B3V)dV_lLVf;RPzYZsRoHKeL~vO*rEC_pb$XlS7F^ z33I-1kUGN#Ozm89A1vNe8+f^EaH8NLZ&X?Dmu!BMW&7;R98~N=n62P2cS?bfmm>+( z6JU|Y1bRThK2`?$^p}&&jOH5nt|zoqO{_u6?Zz@|&dJ?sc)ae?waPlI@y!VAN`o1s zhf7zf$-+f~wXumJw78J%aP&s9&fI^Q>ijyqGeEOYZbnG5hOC7RiN1E#;z-LOv2k;J zHTS22XWHue{A$Ja{?Tv<mpTOy_LJ*A;_o)rmz!uImPEDI6!1ad-rB3{4C9@a0|HT( z*Gb$GmvbuIkhWI@JwMde9uHyA-`UqpZAjAMf}HG8DsP;NApj@Us6`O2Q<U(Q4Qs%a z?T{~REF%vL3-N$Yas6(avE2MCPQ@209Y&=IR`a!%RB)4?Oy4dwo}SvHPKvV1I?Eqz zMk|r>r!o1xs1eG?RkkM%0qEncBIm(=j6zB*p_<&w4P7JMS4w?wWn==oM85zm&V*gY zdusG&py+gK4N!6x$g0x=AF#ac3Hcx=p{-)|o!O+mv;BYMUjLtc^68nmrXO&ncd>g@ z;;v|Mj$3;mG1qRafL6+I8{vpYdSr*{>x>8XM-9Ldr3_)GYW?t;`rFXe{u7a>bGpbz z7xMSJHzZT^BA@9jm0$Z~PPe>b{9PULdnfjD&7rW>?ppTyH2We6+{x|6P;&SORYkCZ zXo4F~@TueVcZ}o9YlU*^ec`{J8a*#Oh*)#^9&hh>{Vp=0KUq_1&VUan_$)!H7dv+0 zF^u<&j3p{0r>qa?Kh{E|@UkC*JmKcbDkP?ruZHvfl5zoZ*hMwf2&LZY(;~I~-m0R$ zekt?iYv$4!J;JHP{(;zZjq+H+B*$jot;LYf=hfVY`@nmd;#!e|e{A7Fv=!i+j9q0q zAeK3z9A&e>fw3N$gpBvK;~84>wdn6z%8#El0%pz(>g99IKpugx_$mN?Dte=-@7Iv~ zt~Se^VNJ>@!s!8=drin%GF#0~8x{kx{0IK>9|LPC-S|CE#2NDCWW-8t3LwmL$*aUe z25v7JW`ZrTG;9ZlO<3C&R?ibXXH5xR*^tt#H-l7=LcsULq+!c2{=B?UqF~Zb4?i*b zraG`7s%<?{5le*wW0sTEC-9asBw~MK+A2TH|7y<~vDT3_(_}WY<WILZRp@xPwKwyu zr5QucZ1}#=*ZbiN5GKTAB4rCL3MD-(iY_8`url~W_K$3i%qg1N=cMOX(Lt5r2l>U8 zu%55a+wiNtzMMx(=N9@FzJ~PQ$oBLkc^Uea8U#f5m`-cc6!qNb5E%8lXJ<lM@WR6f zp+!VVrCk0Yngt<{xNxg~$-sazG4orI4TNnnssKZ98kDQ4_tlaa<#wfymFyXe!Jrky zPj+lndxG5C87B9A5I9-|XBb(u=coMe+=M<q|0CJ~$ZGPmJ)nT`8xB|wg#ODK2W=S) z73RZil6}&7PaTBCob5><y`}|B7g!248CO!202^)|fuo5MFDuX4lyEm<mt5k2Mhdt( z;OtmY5<p+nyBuNw28(Lab)-mHLRg`MJAdyZoUy4w<nBmUxS!q;(4RfJ@i|QnmSfP{ zUllJRMgK&ju;Krc@zbpTBk0=qLu5k9mt1{3sW9PmA`x+}mcCmG+ShF1L(uXcjn<DW z#Xq2<u&%g|G5wd%SNy>-;qwPdcz$G`*;d4f#X{3|;O3O#G3n9zpFN4(I=aP05`Zz> zN6N#kTqAbY^75wm3T4~1Z&GtXrsj?k0@iHg+{V!nI22Y0IQ_r2a!9&?IgvDG|I7bW zz$&y9iWG#JLf7DE&`)4FAt<voDA5BqM|D;lrw2K6kEzFPXZcG|%ya~Dhx=C)&pSxJ zFc&;(8-O1HSu4{Z7TuSe`#m$}HSg;lKco~S!NW+8q=)_)<dBe5tTvJisTsn`$<$ol zzKy80r$~Vz1<hCKN%P1>Y4H`E_xCGkCRgidxlhKdE|Yp$K5ve1Z;wZtPf3=uSbp{j z&v}uyFGv<V`mJ++4!q32&EwZEYA6P06jM01mbkvnd-o&&ojVOX2^1ruuv}RoyAc-i zSQK-Jw^!>LzJyZ5MO!DrNaozA+`Y%F>HvU-v?1`H(obBJDbiFiFahK9lCD{U7rtI2 z&I|2vZ}o{s0WIjR8y++akSr;$7c2C0lu<1JqNj6zdf1=ajgN_c{O;##vt;}UXgmls zmg}N_pV1+wAaiw3e{|)<hAs})?A%fkEmOVxuZ735?c}e&3d^-o6SPf=m=6yPQ;{1q z7{nDGW=9%;KIWV~;;*~=dA+wvRyYV5v@8co+_I1GjPaU0hrX-iwFp2P-Ke%{k&%N> zU$lmR(@&Cfz9sIc+(B69rgJ0YI+qv1`9D_9mH`CFm)C^?*J{^spWn_1*V#{?uE~K7 zSRrW8x(%oo4F_T5*m-cZx{e$_PIU_DFkG{MrFLN-?t_;NIkBkG5jJ^4zS!(*XO%B~ ztyo~?*j^|(ii^Hi=!@$vzlum1E$r~CIwnEqxi*<`t=q*zB~4I5Gg5INTD5s1QE@!w zhTYDD+Xpt@uUOzxaSEFIp{G(n#Xr;WW&+>8x0lbMQkWaeHJitmr!ZNx*~;3e1m81{ zPx^T43kz~EVW-cP2P%@hdEZFz+NW15<%N3WcKeZwaC%WjQsBH#UDd&_Hj3?ng<NX@ z$hM1X^@lJ*6zv*lpu)~<Q2Ru3Gh=O~R}OVO3OD-wLn|V64Plilz@-V-X<kfQL{8Ck zD`^moy8@S_On>?*+!SuQ8g?tmksn2CM~D=R4&9qbm`!}`?O}T4DS&1hDl3^}>6&u` zEd_p5Ky$wq)O})v2?4CjQQVe6>Rh_q+t=!MprmN)mr{=|-gHlRYsr^cTjZRC|Do#d zxHf}q(H7SAj6P7_Z(UX342%^T*i$s_6fJ80D|LN*2L~?p?JARX;8|Dxb9fQCm_De* zCPVD|*Nmmes}1Ag&+CF@meE2{f^|G2lY01S1I+ha0Q!pJ*Y=_M>|M&!6ct;QO#A)# zXuU`bQj-S|PAxa6BERoyZ&LcheUVQ$v3nm7z#AFTFnM|X^yXLg*WAZ$X*CrVXtcLn z9r;?!HccjabjrbOA<kR!ES^xGV*N~l0W7lceO={)a|%iiie3qz;?QOS@CS&64dH<r zmovvXN7K{%aworLoc?a+;Xv3!!d4@g`mVs3*z7F-<P|TcIpx}6*tDb*SeZXS`#b-t zaK?|9{)eEJX45AdzVsLnx4Rp)3^DTOIWR#_`IaIN@y=fcxF`2I_vgIvcC9eC0HRIM zHBPajjw$I<WVigT;jqHN4>-x;ck{>KVlV6NVmKZRb~D&ygu%i4&~1Bg&!0pccQ-nL znv;qewu4YdWK#w@i*w6nlOI4Q3EGQX*rIrdAFdu02dICfeHyU@p4&;Jz4kiqf@|a& z*OT!B5?u?sR(W0zxj*=uwJ(0JMp`08W<C(ZSAd}Eg_R(;WLL$Fksb$ZcdzrM;Zyz; zmGOry|3%QYCx>eP3pM}tsM8^jHP3rwE8_lyXC+bgZN@AR#orteqtv*2Guj*#u;Yj< zNjE@71G{B7uEqOPLrR4U5Q(cxYD6=IUEycl=HS`|tAQ7JYip;b0^hL}x7ILyy<FpS zrqE<{=Gs8s^pNReKM6WCou@)C5x~bE-|G;<3Bk;BNb7du3Spu(x&t1|w~v7cD{FMN zeTrW7u>57vt1o}6KC_0l!^eE<nFx@0u!FzmA{KF}X=W+zX5l;jL@z14a|=DP8+51y zU=*W9k|sqzsMsSPoHZ>AUP9AHRh#0(H(!*c?|>g{0MzeGMJi3vIG{!Ux}_f#v)|5~ z5X;kQgo1eE-;FgDi1;ww0kwGa4`0x5&&hc&=KDE7ZzUkeR?)g*-{WIqcm(6vTf~5_ zIjL#L4}d3Cy7_>LDpv<8vip>W_H@PyDd^(9c74z_tKBpdH&U1uFX~r<?9yF=o_L$m zW+=dambQ8kG48Ir^7=AjNJD*%(1ovBST1U)UfTnWaS&P3#Azd1b~nPJ-u`>%NtWnK zs}U8TSHL+e2E#Z1p*E2uIQFt~40v9`IgmMV^xb~z#j>D+%)F==%guudcbh>Van#pP zJxWiiM7m(nM5$x`y!q`<KR*8&EXiKDn5yK<8n^nk9`wh$yS(&jmjIO@|HFfa=e*<t zbhmODY9}GIsq|wi0L^Y4-pIo!vg{kOhu^%<O<_%T2lln<g#c)UTcrqH&Hd;Re_Am| z@<a(uS+p3C$B&$}?mBlP<8H9GzdzpoHm9TnQ4sKQBkMv{6madMbjz~czMmbD6kuQF z)#=*f(lN-C=;(@WpIb+s{rgdJ$|U=3%gf7z?Z&SE!gIwsyz(kgk&l*BX>BB-qmMuC zBh-sjKq{GBqy0C6tqKE23hX(td#*yOi~Cc4ed`Mr;@M$R?czC$yeMH^hI*KK3FgBR zNr|YGvGpw`Qvn^?OM!e_)2?&3o$l?h3+${5*gmC)i-~T{3hrqB%A}?L9Dim|sH5gd zbl@JZ_y+0VvwcqWEJZ*zhHi^kF$0T*9+`KJjI&;LqLGOQlfO=Yc&I>ARjaI*6EGX^ z{;H+9E>YVFu4?wheAh;*b$eL>uY)p;7&S+;xq62jQH?)f{N;KbjGAM98{_aAvOW37 z%#o^KAy4r5Ze)VxMv=hzT41fN9djvVqPTB>Z>f0MrZ7iRdmGhF{m!^N<tp25bBa2E z+U#c<Ng(BU!k0u>{ua)|>pw0eD4&O_OZWX*irJSaX;CJ~)1*llmJu<Nm>=pJaJ${D zT{*O$!o-=uwBE0n=eTVd_vB849e;@h<OLE}k*c=>jq-f%J`QbktyP+D*uQuUzZOZX zF~)6BZ{mY3CQ6`d25ld}uBB;4LcSAbO`uk+54Ju@QHaDy)@uP5EfADq1~&4pZ_XU@ ziG!O4n=-d9lnmx4YLKU}fXRh-GZNZk9b1Begn0y@8c-&4-EudXviqD@kl0UhcBcuM zj20^Qxve}W#l@d66!p0hTdL;X3!g+SitKyHows~$Ud09Mz9t5VSJ2f+K=-hLvlxCy zRb^6ULoo_OmL_h=%zdPOYzBF<C*?`>=;<X5G3ry(MqG_OVC@O+2V<X8(3un-6ufY? zsisv4C`|rD<J;Cju5ODj6ZQ1hdVC^jD}18RqdEL>d(?2Pj_%7lXr_KGLisnwZuZws z+8|<=BP_4r7*QzIfywc^U-WmbdB$ucIvf7Pl6Aq6+9U=CRW$TIO9<nyu_J|t79p{9 z!e!Quf8Uq>gtC7~-hWRQB!{Cb-U8t6*YS(?CJw9;PW;J>U1#dfUsX0-@4qa!20oR; z6`+c~zuTW}LQj&758swF?w(;tAo-#`pgx25VdlNMmZ-Ntd9N3BBFHoJkT|Yo@Sf!g zruMgeWae7`>Ee8E&`k&^PH5-sRo6z23^^tCaxg@L)|k}0-(0@qW_bM{rad8Ny)Wk* za2kATuIEiv7dr=Li0ke!KR@gn2|CtyWN%aVPS7xpisF5s$IRGR|K3zCpX-LiwMc1H zYSgr%=a0@bGse-1ckeS<884IUxcx{n7p10x<5Z><$82BFsbiJ0U@)NaENK`gbtUff z2gD=!Z>4lkJ<3oNB^d9@%VId%(U(BquzbCCxyfe$5RPjOf6~Y}iV3chP$U^W=jeCq z>UozEl~)4_eyOgKG+ZwE8MC4r`%F$Dx40%nN-sofeqOx0=A6TRu!=ogb{El)m&^oX zT)zFM{xUga&)`67o3;Bb2`|f;B}es!B=TJG`a@XA43&P!Q+2*Kd6mSSsTB&LS(NoU z^}dHeLbQA8jJ288-8LT<k!wLKQJdhxH03BVN^!N=1t{t=MV633Fx5x#l>0Fw8u?lR z-1#;D=x~zF!xllSn9vWlnoD=t;$io;(V$4KuM)D45`MhrnEN3NdXC++ZNJ!vn=RAQ z<Hk)>=y0BZ?ye5Hosw9HnF#h^7lwEdB>t>~5Xvu*kRr{RK{Yyvux3WYuDwXBh8b37 z9ikeqAfCR?t*eKo@&T`9?SgEYW3-i#2ErN0mhpAK8vgY!ns<xb?zrw3%Y}E>s;<Ms z3KgJTCTXQ_-j4^}>g`2|`29NHF5Yk7r%r5gaux8Yiq=MTT<+Y`$=U@qAIf^EIq|C! zvSg%=ytDNAENsxFpEoNlp;%x_ZU>S*2zufH0Nvbe*2<G+8N|%F#t`5H5xj(lUWXjY zC|lEpY(&k%hj4D11n)tOrjVZ=sZ+<2t8U=&U2xi|!^31aqTLPmFM&APA+eT7?H268 zBD~A0Wi64D+>GCni_XbxLx;H(yl6p+wZp{U@xB32PCvXJBxB&*b@}<R>GxK{=}?{S z>T)F1z(A&}UkvcQ|DmR-onq;;yL^T9+K9nye<EHytZs<$v}#k^N7jAt=U_v~HK1cr zF^1EcaRU}e<+UV}^6rZV1^IM4x{#jBH)(2?BD-v#v%t??oAfQnE<4u&A-qMzUr0yl z_}0mtQY8fQ7fm2Od(~51!yJ?|qdS7}OToDN2z1h#pcU=g6$mYX!NPnpK)0ap6ay{! z*Yt|}9vib54&7;dKxT+-S^_#x<Vf|HrGes86;`#oxbLlV{tc&CbNkl`Soq{9pb<!f zI}|u^COvWO<iWrc$m}wdMTfCnXr2GdC;dBGGcu%3W00$co%*-W*aYb9vF-LqIg1Hc z|JysYJ<zj$B8(vO)3^Ur>kWP4=iOmq-bY1Vhx1CxTmBB$WAeEoY5E_<MCtn9ff?KL zcbPI3p$FV~ta7liLrm^*RSj{hR8?&CHBr*3Z;II^X{G^M?C!$*pJ<rA<cC&x=tHWt zgg4vmiBzXmL<tjK@I2J{K{VR!FXCW<wA`(RR3CT$O*D8fFZmUL=O)L!i(@O24`%5H zS>Vw|zIl7(Zg1u8DV4QDG}h;!=-oHt`Sm<+*k-Phip3)}jS~7t>7)x}v>DC|K=bN} z;!}<XFtEomR%`UGbUY4~9Oh4n+lh*_baNVq?g=(W4?`nT4wrfvp{M)x3@ep)&^qv) z5$EHjk?DLbiYg8Af%b8;psjasprS7FRzTSar(2OcWo<Y%-RG$O;~OUJbz6{9igp<_ zufgPfArM2iX#MKI0>v&w0%MTJIb9K`#bNQcBb(Mniv<M-p&^EaY0I{8Fv;-SR0>7* zkxu=+z{Nj3ilRrXijrd}?HppUsXh9JY^xKJVF2pyJiJ?Zn=!`NS^lH6r~1~Q`3Lz? zx8Sy8cYa!V1%=*?1;~mmL)?*axAIvYIFMS+vi0}9RW<RbR%^nR6Wn*2++>KKW>4gZ zn~W#;U4gOeTB}C%X9OFx3A(+;B~ln?h+T37qmaLUst%;>IoT+<zkd#qXs%WuNX`U? za}8guT71XWfavOyYHG~^W6r5lmgI`cfw(sxSA4`fQa(Qli}>R1#dofKn!-07;+HVj z=(=Nsi=F7EG3I<8o1nL6UE4?ByDXfByrLQ^I|cz7<$v+p0&TFxV}N_;znW?GMiG&z zuhZ>R`upLnh_Tx{L-~2n$J&ZiFe3R?6f`%G+Z@;V{0Ys108-28U>|vXEoK^%lu<YI zFYZow-5ScyI@}q@xpf5M7xQ&2tOwqipQeyE$TbQkN*u}z8az5KpTAqY&WQi~A;2Ua zex`RVaAQ_$Hiqn>e{X%YL?D7|J04GE@+AAcV|bxw44>5&OqjNwGD=?t5z^>4h?5%m z<6Jr?@7@1;x8^*0%up0aTC%%&?FAMAHa*42;L4Bd3Rs_3J&7tw;fzPu`TV@;hn11I z&j3uaxq_eLCO-cLf$zok5CP)G>FyR10_oj<NTv?L#d-HSR%gTSZ!OTREpb__E~3DY zzooYn9OTPJ;rgvTrq*i`K>mV`L#GUpr<zRB23#rAP_+M4w~H_5MoROye!^$4?;Z9v z&tqM;)|3B0a6KQgFG9+uo$NJK_upq~YWny7>sL(dg^|M>H!&uW?s$y{f@-@1D)_Ob zUibW!x;0`|nfn8AZSkcaWU3f#k6OJUDx4OrL=I#sZ#<_INPqgh!QZnA_cY#zfV_#P zA=9j<RSl){Vz{H_4M@44CwQ>?eX@Tk=~JN|mD*kG&A&EHn>{{vexCp`D%^3zxvW@~ z&hAKY=DJf6Xn1`OEC*q}qaM{(aIk}W^7AKazvbc&lO?2j?YADdWC<cU*N^>n=@s;< zdekiZDaFX|kt%vS@HfD!+k4&PmtpGI6N@P!M-x4}!A4S|tG2*{$NpXuaNzqZmBc{A z>ffhu|G11#r+b3Btobp8!eyIZzqEYZ{~n9g*#RaVZ%G}KP0>Pq?19V6Fz{>k--07| z1<F5ZD7dF3IS-ALJeE3K$vRu^wcWe!3xj+6^SFi^ESyN*|Ik-h7>rO&jG2a-z_E_e z;&;~C9?qqZuui5di6=!;8{k?aKk6<uO=P5AM+65$yKpQ2<zbQq#a8Z5c!-(JS*uY8 z)$XydY#2KYPV>txD9LA1tqVcK+5=bsv7D=Kb=cVQdn-9lenM9+VSJ4~hcJ&n_oRDg z!D791^R~?n4uM-O#xhMbuyKq?8KeDS_xyYXZ)-quo27m$VPY>bZn^wB`dPuE+XPMo zj{Fms`N>-WS6*kiwwgZta=2_}`Vr{$uH27GU}kJyO7&qMW@c=QqhEE*tN~nB@GvfK z45FV8<`_+;U$QNBilNkZXY@>G$0$~Fr+c9+!=41|f}wZMUA@T@&uCte2&V_b#OE8| zTP-JXIGe^@?PERC>&5^iHZRi?FBcm^yN@jr{Q?3?$W}X1CPMDXvRB)zRd0RZmsdOo z>sMaNR5JC_|DpO^j5bf(zzXY~-da_<Y^&ZkCgOD^v^rzHd@33o1pppV+F{^~nFux! z0W#Gm)2O{x@MV664?G7R)EKioOr^M?@HpH>Gi&_s`{0a3EIv0K$2azt91kd~Oyb!P ziIU4aO|nAX4@NPE!^cwnr}0G4^pOsgEBRbPj48qcz&?S>*N}j#LdF$Vh2cOQ`q}4S zJg*y@g0juA?H%Rc_?}T7tBz0{^t%z15jklDkIdT;Ze-|ng&;a1Uy4^jv6YrjD3ZB* zHb!w;uNP(J7C@&+AHaGGPMSXam7aCG;YPDy5@$F>@z#0$mmT%VXkPTk&%!#XpM2hd z>7W$O$$P@z#tlY4v>xszEdpy1!{hW{6?Sj9-td2#-QZmSYsZ`Ta3d={F%RzAK&FVq zbJt}MWtEU*?2Wnz;Kl6gzvaZ<WMga{SBpR*n%Q=ys%KuV@@>jlS1l6Rg6Nt7lm+26 z+gl78R5TsCw1GT?=1Q#94Uh>zsP(I7SHc$(w_xfg*BKZEn;w<W@u5hk<RbVu$6iMb z*?Vj8@{!(@`jMg!WO)CjQm??{X&O;?J0n?8X;}K6{X06BEW<kGF^6QA=|}GW*#%(n z=zA+H4XE8s1f1FT|JEp%Lcy80p!xUo3mFp+B?YRw`I3(&%eL=oUY^*2lS#U*?S0AL zkvF~Cfy(Jd;g{Gu=vEh7lT*P<(k*c`TQ6br|33W?xPlC?d4BE!1PFT$)|C+c|9Gj+ zTcrmIAG+91qT7Y-&*Bvr%zyJ6(B;SO9eHYexPRz|eB6*{rdoSmr28r%=)QH_TE5fo zHMyr>t0y~~h12A{gSlCMSN$p+FRyt_LrOW7qmu=i+_d;k<$~|c5P$i04)<JQg^0Er z6ZfgEKmE~6{tM&m*Pa;Ddlsa5*d8_G9qf$X8uJrI9|T+TWUPVMM|rc%CDpH3B=od` z#l+7S5!&j`>{>k2FT2c;-+=Xi)$cbzAzBdc){2=uFmMC;Szvi#bsFp=itwEJg7LWe zDG!XGK??%-nnsUCC*Z{(&Q*xvPXUG>;GPr>@9L?Yb&<7L2h$CIUXft%dB7uBxJQ(i z;dXI;t=5ws>cF@dKp50lo}1A$>_5+%Z)iTPea!-Y1F=B@Vp<^#2!#xCjkWEt@N|J$ z|MC0-7fYr#QxGC4==*rWHhR9B?f49<W~mvMOT7m}N^dEf?Z65uVtLunHvZjPw%U!O zULRsn8el4tJiez~R6(Rw;V_GWM=tnL|2rdm{}{>fw_DbnUrGD>!SvQqx`Pjzlp*|; zaru~9M;}t>QD>tM3H*l$dy;)z$g0}<IvDPvm8Z3L|8lolw_fV(4Cn?YtC1N6Byzgs zHI`Mitga{i>Zt@MNBk!cn~?JY(DL;!-mM<%ka%OBte`Qcd#z^naG=VRlJWD2drRa` zXl93U4|4HMwDWSUT8N(LM>98nt(7wcr@Q;n*ronHMfxFSlVMMsMh+oGEMj5gsS9*Q zT4fO9qAyIN&^de8&7;kj8PdCed`@EZp)%Hdd<j;|id??x9b7AX|EBc|S%zM1xUIV8 z0F`9d)?$Xx{S>wFPr_x38yM&pvJdbN&<w!yJBoIZ&@24+1m*Gd(u@buSdfBCp))?} zySwLf<sA@EWKDhovXxOKw3=TM7=ofI+TGd3rN;IJ+_LS*6##E~m>C4I9^FufQg^ya zAF``|9P!arem@FMD9qR%)=Gk{x-`5)a9i+dps)X}v*6hw{7+|*P&9-W&dKSz9!PQ1 zPyroeJVRJhzywZ(5XE1nT=`}sUf%5#KtL$`{|f~;a7Q=#V#%_UuFRHCG5dIx79SL- zpYhfAg@0`R%MA!?uw+#QlObAL+7GoTS{TM-7xVV2TqA{qCaS6n4?d%2!)t>92<?i+ z0nifOV7}cMo6vgnb`D0}2D!O)f*a(<k_Z3lT9)sb#ds<Av+_w^bbP6a9e|`6x0D1E zVmZg@;p-2D^GL)&_coOy{6)vx_%Z1BucqGUjYRO49z)R_y?*x<cXS=F$@+_mt~U5D zkWW5Z(tTN~rF9@X`%ffe|4Wd=xBIL8QkV5kR=p}xZEbDXpcBF=Ko}|4{pKJ1e(W%G zTWh2CY|Lg1I?%-!hlB1i)fXr>g?4bMhEjHFccC(ta6mICX2pIfG2R{{{k2kQmYpOK zM~xaq^o`#C#nxK|#I-f+qAP+E+%>p+aOvP71P|`+H15#B-61#x3mV+5gS%UBX*{?~ z%jI8t?|aTY_dNDXKa4SF&8p8T2utW9orR7(D+tPovB#HdVXQq`H9UONiTo_zY|iGU zG^)?n2%bjtJ{0lvg>~`4qqX3dOg(+~0Kvn9I{*jH^7ZdGXZ}zxHXYCYO4Y(kuHJ@D ze<)=t+j0<C%{fM^c(1#wB#b+bRIgM0*`%A?)-Z2}ooEdC_LyffC8+6QprbaGOJoMe z!H1%VV@l(*KRLU6DrNN~u~n>dKe56HSx>|G>!<<d@8SNAa*8xEThu4i|8-Sp5TG|a z^Z=Lv3Vqbh0EIt#c_X%jey20~F^1pQT)@k{t_}lM{C|FlxCiRdKTzMCeI<c%=?y=z zp)6n2;NG}fL{i}-O()SM(}jUjF1+5TS`n<N?tC-Io8iS7{P3Hbstud2s$cv<P~+`$ zhX6@a%rx8r&6DDm4pts?=tP5S%6bE6Va~C~|Eu`jf;|?n=mh7A2hYU+g5K5;(mlTl z6Pd_c1e0MurxN`%YgS@MVabcVm1JWGWt<7#%g@qlG+`VJA2Z<iGIEyOqx|KA$@lAg z4yUAVBP?Xde-Dx18{s{02b=;}7~EPq5*Z(Z4EUd02o6Vu)Z}q*KSGR1EFv$U3u|G& zXvYB`#QxVQOwW&W*@XS)3`jS?{F><S2*4_$Q0?IU?ZN5_uAB9vsMJ|*j#NitNjjhl zk=gJ?kl}_gmC5<XT*j2tDhz^?u~<C4$MpN%v{4DBQ61`J(Ic_4Qnl`2%$Q)=@6Fic z+Mfw;pCj&wpNvUBy$>BV`G97?ICB2*op0(KOL1woU+W&Hh%HkZh0W7cM-HR!=yIY{ zJipmxkTsXG=dCd^en7TD47p-vBc)*{3jBjoEto7c-!JU0R08k6{?a}n<^sBXtu>`1 z&fa$|I1YI5M!l}#M(k$b>~C(v=w6Ih%ZC&j+c3UP5DKCXF^ed)JvJ65SP5e%-yN@a z`kkKg+h-%SoV4Km2|vwttA>PPj(M16_1BB=?H)S$yky+a32qL{K=Iy6nMT)wjL#P6 zMraY#U9HIQ9=ILf{+7k6^Dk*f=0?C@MXSVV#9GXkvthGeeMT1~e9{c>_@g}gUoTIM z`k+Cu<1WFJAbgJ!k;~h{Rf!{nfy_2j%kWrS+rCuGE#rzz3<kmQqHfN|&%$n(gI#<M z)_PUE1!$$V|F}5Jd>*n8*75ohYa*@`Y`+x6Kl^V%{`Yk=FR~#49mS$gQ44ZmOc`hE zhdxGRv)a-U?HfBOmzP`q_XCf5Zv5{d%w^+1vBP>1g;{^@O@XItteu;~g-UyTF*#OQ zsCs(D!i($$LI{#{jhXI*UQ90wylYbSd@r|I(q#EsDMHjp>59_Q5ibIEySHmH^Rw-5 z;ge3hUu(h3QWF+_ivkvw*J0f{XsPTwdNal?Fh^;t@N9>YG-gvSvjSLyGJ@*{ahf?i zzLP=36^+O6fcobz#F+8>#3K~|MkYNo|24H-=apu~R~g^S`L$Ql>vUw%_jn+|$n)(7 zplj>prYD;&o%YX~<J@=zfzg#8<y$N0(L{rxBJJ<3E53{C;I;=_Lv(cw4OL(8RheqR z>(3=bH0_7GdqAQ7rl0%x`>428K+qio?OaA6=`?dU6nDbgfcnG&al1h;%@;+2Pl86; zxLCWkEWsF&t52DR|8;Y~Rm`Ww|8wC2yR^X3uRrcyQgzH1*mu~cTsL5Dc<80}RCNE` znE02%gBbPgNBlgnDSZ1t=gP&#>$Pb3zO^Zwa6jJ^PPqXP!us>9<&EH#4!xhcfKx)T zvuICb5f~$<w$5<gcgl!oRU0o0UFoy{JWt;H4BapIoiZ0L*GoLr#PVZTA>FIh3^oU? z8snN^OBUOAw5&?0q}`*K!RfyN^-8s%c}CY&dG=;pu4WbKkz@w7im|yr7sNo2zO`6% za>?f(Z*SW?eC2Eq2<s<=T&KUD0;fru%u#X|w@brHErpWP@0h1nm9xu-bl6;JYn7=2 zg#lPtkJ3XZ-e!ix!=B<BFH>BvNWJ=}i^##nu3-=`7IDXx)b#;wUGqS()FgqU6n`8G zQ8|oM9%_~!>&q^@%d9bjoKG9q+d|X41(Iq>@_oi*Y%imcRumX!FDY8GM@=%dGJk6v zve)Gr6c!os->EbeYJJQhfa~V@kVeS};Sz}19$ZK_$&EfR6TN(iD+9t_ib(#7<bTRY zrM03ryp=A*21A_Tw1D(KXO6pXYzjX*xHN@30?B-fP|vBiVQihC@cZ*E(4Tuav9iiU zOOc-`=6=d*m`Ru?%~*~{&V&8gx$&C^+8;~OZ4<5`Y1UKyrxAnGRSNhYY-cf*vIJyP ztfIXnOXJsP{*IDgOt0eCS#>ba9PLMv;dZ+{qm&h~mFD&4T`bY*^oYlD9B=4->MvU! z0Iwk=;j1sYERI8dMFn9@?8!;)$>;c&bDudkDgF>w;EK?`VAD+7e~t%Nl6!f0Ztx?N zNakup%pwL<gRZItbrDrh33R`zEDGH%4^K4dp7D=2-KHmct8Wo>rwP81Lednvouf{E zb_hUkzQ3gum*f`s{shdSR`Xk{(zu1YVC9zoPIL$y_TY6J?|mV<n9ZL?l9iI41J%im za+vyCBL-JTy1kG|Wbu-Ka|}qo>)0Nl#vFFe8m5Z=wHodi3*9(KSe{3<oh>rH{ER2^ zN!`08jJb=3Z$iCCuN)KTGA0{6$fWppxxf6Mu|1PdG#salJlh|nFCZBK2O-W*rD)f0 zKx8y84dcJ{34d_&0*W@Z$&L88FuS|;awD+*_xoW!ffI}H!e<MnsW@yTc(1)#e_G*$ zF+1UKy16l0O}^<K_>$h7B<(B#8?othN92-3x^X-0&Dj{wY@_#53Nts-`?BM_n3zjG z^=mk*i4hxN1<JDts@zb}Uz70oO0{flQN)Mf`P0f=ARXrCc42AA@=8#Gtw#9SdF}}j zBm%H{0-h`n%>kw6&N|>@%xe7IN*bIz@DVNJRn@Or9vYy<-%WEw?zJ`LpL*_cr{act zm5P_2+T@CM(x608G^HY=o4g`<eOGVZ@}`4Qs#xJ;bGO$i*z1<73I+oH0k@JGX_88l z0RwMT_u6q5v|mA{svi#gpI<o<AdvyV7{<N#eUl#<IE{Z9cas3DwJgMXH{vd*4(Z=& zj-u?b>^9$)A(#$i^=zZ8yoNSyBw1f^!EB2@*_mhCAUI3xjo@upd*e?eUg+O+2`5S8 zqokE(A9L6p9&A|xN2<QT-hQTXecf@{3%Rmd@qs59OzN_e<QK^uyDZ%Q${Em``>dw7 zC)Ug~6LMXiTolH&8nkEOT*2eyzTW%YR9_Tl$>4QzuZYJM@b2BeWe@O9!W8;{YpGto zFuuU~XIjL`z>K>8Gv;~zHY_^^4!v}|IV(oSgJPdByE2Xm(x3NAT!34t%Dq~OvB)fm zoQVyLKyI%-K68&5oIfXSQq|6q^Dy;|kO<&ZBon&y1Tq*oh>miXuMy<LC7pv~?l-C9 zh^fISFf#9t8?G1ZB5P2IW**M=?f@Ngmsl}DIxq?}PL<x)o%qeAYFJFc+(02H6oduV z-qk%BI-kmbKPQ4NXTQoqD@zJ9zJ4{MzG`WoGDdW483$kKm1$w>HNpDsh|hB`h#iUj zk$B8&mJpl|2iw2;skdr^SVf2iW;|~0=HVbsm}BUVUja%Y_+`N_Dxrq&{@*%KjKW`) z-u4*g!yQhb1N`bPaE*t*+hsrG=@I>M?*@1cqdf2|PiPSQF$ZLpGhH`Oh~qXZ5m&J5 zf?W}uW-m4@bGo$>NFsE7kA;ZL>bU+~j~Kgac^Z10OeHAUT&8r~jy8TL?VFZWW=Pld z5#~rsLkA0oX*7NucuIQbF?9*4-SI7ROF&h?86;|a=>5U>md=k)g}srEP5Jf6FEM#) z4%{413m;)jsb&JxZ1-gO|67x6Lu+L&nE?uWw9WuU+$UVX2{!<J&n^C#J%|hKOYn4G z!(44gjDaY_1rw3Yq^3|vUWjX6raN5l-M&c*-J-DhDeFJy8Tii1E#{XkoI^!pE~SM_ zK1*98%eooxPufLv5r(5hT&84GbG%FybZ6e&)orbv-tgvC=-%Nq9^+Zzj(23O#Y-es z3?dLdkZtrEn0nEIS<L^#)CCW3BwzqQDGpcM*a6fF5@VN-OYEJWFt3irdag4d+;c9C zrDl%EsC^hm&yk)hsn)@{7o}o$pPufm=Mlgw?J)0EC@wslO)9qdB44ek`I-FboB{s9 zxZnijHwKqo3P|`%?T?etDU5zUWdwOjI<e;%asnm8c`WLAHNj+ptp?k6u|CICpisom zy%@(CBa7%#A|9$JOx`te$mT{pxCywVd6xyRH@cxv<yyX)!?PrX;g!qY>wvm2MRCP7 zNxuhofTGYL310pjcBZ2orno9Y*|mXj-vV!oBQ?2!!3PsdQ4R(8Xkm^X^s_QwyNL$h z)(AzY83|dM^wPV%V|?j7tou|&(O&uwfZKN1CDY4#%KvIR3T)E{gSioflpliTImQ7K zm^t#R*rzt%|MzMO#0u|0)K0;;?hH7$)H8@{k_R{%<uTd^SOo0c;%gnVwUr9xtEH4; z=6BK<hO$&@4qD_%xJCeb{f`(AKM$~aNr@8%$3~+ad#wW5#*k)E>b2nCREFY*dgE4c zR=)=~`f@l+rT4WKecbcyq`#cf32Td4x>`DttuxMDDI*vgOt#J6iUA&&Lz+XJ{Wnvb zopGrwTihkI94F<Hk~P&1wp>3BqJM#27>++NkYAb&IGcoc9?sS?s>|k>u2w92-=9v^ zxohAOa2a9p>*argkZEo(Aka~k<Ya$YDuA+R>&L?f=6K*^<vMcu1Z+lFM}(tAdT~!s zt3Q&=vPJ?e0@bq#xK!E?>)QFIS0~1axNJc;yd|pLPd#N`Hs<qHso&)h3yMT0x8EI# zzgGlHV-*_pPfbyif=x!P^UcvuiyaGj2;^_A<O>4Eq%rpM+wk1JPiIoA$d+U^snKx6 zk27doo|PJ#Yg*y%64XTQ=f?LXp_FUUaSW_1Ah4kLB7>$^Ru)AzQLJSHzKLf(H&c2s z=iM3Kfcwzcac?pY75U|miXzkXKD8p=4te;~CJRVA$&(=-Qb#s76cDU%y_A(ZO0j~+ z<Y|NaGA-`aeu<DP_(JZWFHD`Ut3NL1V2?F>Oce%607j2m*=)-+J}wuORADsN6_(t| zb1ce2mmWy~clP7D4QOdtqVLxAPk;hugc(%&+K6vcfUL+c@@85~Hv5u5jGR9uq^zHj zr#5G-<znM>#LCA!S7a~K+`3;7j04jJf$F!Vnlf|BOg}VllcSyzfKO=G-yP}c!Ngik zjCS8yCQ0^gp@!s^`o?u{V-~GyjmCZ`PgHzjxTSnlR2karFY=GHG=U%FZ^xW}r%i$1 z&>ltnusl$<`O5MJW1mx!s3kUa11wOH4xx><LC=SIOyVtrnOWy8K^*mzF-)M~8mq~n z@G3hY_?ku)SOiY`VA<pE4*=n6!Ee|WuhQuUG}sE%Dw~DsiSGT$W(=OCPd#Tuy2A)$ zWp8D(Y{!y;7w}dVodFF1q+dK%z^>f0(o@Di>CbPZcqG0yKLwFXM3%y)8Jxv-c+p$! zJ7nOM1I;4vD<_+U$x(5_<xwnkQhANuz`Z<#lWD6=8dW|qw+V5wH+KoQo~!l8m+$v> zp>TfS5!xHBU@kIDOYQ3p*_~+gyCZh4hDX8E8^{!2sKwZ}l(=e6z<5?%$-tPoo2S5M z?V6A`iiA9{rTU5LwVbd*hDv7x_Lv8<=8*&@^U0NWW%E^R?JZSOSY%TMFrZ=GKlzma zhm~mBuU&r%emU>BI5ecv_vCw~I#Rj?-rEm|eR=SvC35%^F0|?sC7rPAy+J@&1vdbs zFowUEX5O_$_|M!yo3!W>Q^yH2ppV{P3`e=%u+nK^YGyS`J@?sPddrCbQyzwd@;DJb zNLDaz20XOu?(7gtikOxcF;o;Qzw<{0Sa?6apszBgA^y`UC+kn0?(L!F2dhzbcHItA zw#Dj!^3uFxA}WTKs4;3{Z&C-JWFfurLNe%f5MCbd+)7kh9{{HJg}M2HQ$A+*0)2>` za)ef-k!Nf-v2K7P2t(rEVJiVf_n&dg20Gt5hGlxs4G%w1@rH*#Mj(f9BkGqe{*M_K z1tGnC3C`e)IOp;WGd1Wg0IM^1V(41Qid@>L@RcWIBn6NjgbPTfqD*D3^LE1aux?s; zs1A1BPLcT3<azw>p@cT`2Z15{I1|F}&dvNU=A;k5@^c{^8{~e#la|O1*CC8QdZz_i zw;cUmHYIos%6GLTYP!-5x>v+>U!yI$5PTOm#7(F6@6`XqcbqkkS31S^2YPZeOyNb& zO5xWq<IeS)bH!>{o5W96QM8wfSB4j1&*a!|DBu3Fm4}w<8J7#|B!~~eH!^qSKg>>a z9_o@kSQzpfpC<g)SR%;i7uWCSB&AOH>nQBZ=o~gIw`Trl;O~rhk7*zcMz%!s!W>tz zTLx;VGc+jdd_5tL$tZ~B81)#Z(41IA)#n6)u?YyxyDeNXd4;f^2+R_ol=-xkmkHjQ zuc?;l3oLT|+Yd2@K4E*8*>f-@9N5MNtUV-#|MrM`(WV@KMLGDq!Pr-8_awXjPm7sR zAnaJ-M&$Ul|EIUMragbDslSv$(<bN|L>b;5ctpET?wzk>(@=a3$4D_YG1(J%z>bo8 zB8M>wnm;YI{3xHaOf6Q{fgsi~9Adg6<aE(8)tz}ZjNv%(;@`yZpym30$ITfQ%H-iS zC=P>3Lq=(d*FSnVrhkPIA!Q7J8kQ%?^ZDm5Emrm_m65kX@~LG?S*xVEFoH-9W9x9_ zGdUVA)WLnz_HX&{!g(>a{xC7^<Oa$YFkfrOcA(#Oz?Y8P7fBof_6h7ecDPn1Uv(2r zwNwWMV#q+<zYKdL$-BM!WO4nn#PODp%KVbhc&k0$(Rs>i)T^h9guiEVW#YGeK99<` z5Nn!1S!u;ct2>8H<IL8-kjpY}WBnXN{2L?@^R-NaVYB>Uql?#i3ukdGd6>Yqie#r% zzoDHjHqio$-k08D!XNooAFH16ho|4{l6HaGrW&pbp0j87;q6OUy1rx0%jmesIlCDW ze;g+w(=aUqJAVDO_AP16Gg*t5eN;BUI{an3n?%mVLpq6Dpd#nn{W}05+DQj4agph! zJmqIRqhHnQwI+=RV{YC}IkfMS*3)1`(Zi0Q_|nv=ED;L+c~BfS7Zk8_&cW0Ba)DPI ze~WP?g*iRT;<}F$45@pH6`Ox(GBxW?89QoW=&EIiAG3bg|8sKq`6FCyn&74dKAq{f z7(4Yk4zPm3{r9nQ`oy8ht!F<Tz;X%q_Bwh)F(pfn-s|PUXYZP1SqU4cJM2T5er~kq zQQAX3be@NQ18rrF+!yNSx<hJq92@dvAy_T@+lb!Bp&cY?x=D`wt#piIo`Kd+iDjOD zvS2BPmE6sixJF>eXM@|#a;(L4z=xZ_6-o1Wcz<-qPxrh0nIeWiE(DqZq^648A?teC z6^&1Y@WTh*J})oPEL|$w?WkJJY}8$w7_(7r@wYEPUIDB;A{0(MnE&6E#jYM_pZb4c zH@(lq)<gTy8Tw_acmItfN}FDTZC0AId;GtNiePx*KTo~VNN4Tr5qnF9_&}om1;EH! zO?yB4<8`_~el~^g_q%vWseSebGCHUUSs%@xO^LI&{(vfSvb+IVc09!>LFrA&rR`*M zieEW@=!D?k?70m^*<$OgleO0BEU#834f+c;){tI!FH5yG(YK1!qXy`B&#i(LZn%Hb zY`C?lV!ptW#HWi_ZOf(~t=w2Y!^^&4LD96Ed#@E6JV(J9Jow0OfB-Nrs<p&J+O@cP zIaNA#f0%V%?0%slQ|TiUlKrI8M#I655r-L?A?9j++!%6R#M#gX=NK+my%of#T9VOu zFWy2c9-FCnm1W263yHD`*{X89a4|d24%C(n&v(ke-)6`8_<lrPWT^uIa{~0!{U&~P zdQu2`a!tuM9A-&x5eLYO;T|u3yQ-2PStADItpab2@zQZCUZ3`3$=?yh1!a4z6S1dm zJQ*=M)DQF`s`rXhLz^pt<0TwoaE2xD3v&vNN5OGFS>{vCjM2f~M>l`UcIE?0H}vEm zptBzLXY*Bwl0C~-31#i9{jC{bIF(7L3A2k?KsF^?HRD8(d>*N0Pl!89pc6GdJvM|Y z0Hs~1EUloBjO$N=AC9iSp*Tf%FB!$W8j7qB6oqofSBjwWHRJ2ZX}_01kUKKe*pPFW z)y3iWOJ}Aaimnp|qo!O3zGrHRz%azc5PybIE_o`KPfSUq=ogU89dH$IAYKNevh1bc zt~>fm;-6?Vzdg)nDx-<&C=diI2l-2eF%p!=NmrPi@XT)uh;QGaMtQ-<U+M>AT*hdx z7vR-@`(>-V;!={3M+->CEM6oZmJTgHk$05Zi#9FaxJ>fMjdDV2&SJM4cypCx)7yk? z2fpyVGMH;+CA$xZ=dlLSeHIFnUv}Eu50^$`?wpku@^{hDgDxQG0a;q^qVpsJPc_pu zuZimh`8f4TZ--8oZWS;5&wGoeA#v15wtKH<HiNef9dX%Si(Ns-oClCfb+&_fia7ME z2tF8)g7(h(;fzhFipo>{7lcekGs%`GPFKV~K=*bGRR-wa;|CLFh>I*sE3Xgp2XZTj zJ{g$1;d7YjngkewD3KdIpb(NlxHHGktWL(zBZ2#wGaEUI6uOPK2L^(u#Ff}dMq+o& z%3_f*YBRKP@*3OKH~EM!#ve||ILroAujd0>F9*kF;(TqAFzOCmCUF-owyKn@w39g0 zgE4O7%kYg&)P`t&vuL)uc3{9o&^2i+=RO#$m(f-Gvgq~Gs*k0(xE@T_*RRR$_OT^2 zH~6YK+7YKavt-wOAm>revLfEYpW=|hO{8D%5A{s^Vz5`g?u?absj#_*C%>-<R6~RQ zhXKZbam4~mq3@=s#XbI|9(tjQ;xyv`Vd;JU6)0;KN5p@KrfGXaZv^^(un^G)>MCLz zF=h%lv3SEZihk&Q=Ex<~xg!N$^Z*_xa^|wIrG0;ph2&P6^+u@)XdT76=@Ya-r8B6i zg(YB5UF|SovG%7HEd2LvqMHx#{ES3nn)!70&^xk6MnO|(JB#;mwdloGsXq61^<-h_ zDM{?}CSrM~kn?HZ{6<Rnz>P^v*pa2)t=aTCT+IfOaLP*)`931Qn8go{pV4N<mf*7z zojGNAX!{yN9&CGA6y7;uj?~~CyK2`N5Ve~2K5!1SwrlFOYb*oEPlqS7cfZ2VTLi*K zxb6fyM;a!K$Xo&8;`c<12NveHTt(B$aEl)GKvT=Wd#W=nqP`&M?vGGNsmtax)5U0M zLtQ{0I@I4Zh4K_Q$dGV5$dZnz7n~`|r+A#4@qwVk)Lt~nJ44>xZ>43DUpxjF#x?DB z?O#0CMJ6UoUeqVr4t+}X+L$vo@nLjp;ppQNx7U%RfN(#`Q&MEsz{B?74dXL7N^bR} zl0O4A`(2XN^~;|P^X_{>z%u@8e65I}p^H(bhD4=xP}`5ppmVKfzWo(VnxD#`f$0bI zPCgL-KqMqRYK@`LbzzAK<D#-KI0@4s#=4H<bEo%QHjnB02QiN!!-pyBY@V5x0gAO4 z8iyD)zxswIO=4Opu>~90U*q23xYaribByoC(|<1YE{S}xNgyjA^I0R&%u^`m(&YIW z{a1m7o?;k&RI9)~#d6yfZm2A%@8Z&}&XfFhTqk^q)3!$p4Kr5s;MMrBMWg#mOs$9P z`5{%r_Bp5N&yc#H*h?-syM!!^1ZWW<-Mq0BGySEPt<^v?q#@hyaXprPX*+OyG$$U{ zYc0xJ0*+;0+Vw3@s^mSdEIP46mjdc|r#G%PYsWQ+eFIlT35Kf=(fw0@DcooUB1ELR zHaSl?a+wW|Dh+2|lI696nDgKt;%yDyHhx?qmdI4W!&__uXV~~z;Ucc{9+OYMPfj>0 zUOFU@AyW?xWpsWBsqN*MI3IVZ+1mAst#Y-)%<FCLD=NPkqRcuPeDiQM$w_hsLHL`B zxEg`pE^R*2H**BWV1&;ygtxQ<!l>y(pQreg0FsD6^VsGqWEH(2g@lcSo`iVG$qFBD zcrwH=6MX!t*8W+3tJ^U{%;(v-YCFsUBAnp?@>6Sg0$a`c_P1zIH^Y{E7d=l^AZdP6 z36X_pt0&O7<zcgI!)b7m%>Ey!z*E@->m+3?WZ5cWGf<QYYQZM~E=obGf?sU;IW$yg zOATt(V&e`y2zKB?mi$AuTh@b61|4a!hyzj6L!P;By7t1)Yx_+OPPuLmT3qgA$uvkK zxeq7Kd9DXgcx<Lmz0dyU^V~TBe%9duZC?!KT9&;1$9XXxe;0QuSM?Nm_qJxSiOd$F zHFfHCh{YCu{XDXII!y%$bo)OzH2bNf{!WjBl4wwOP+I4DQMomd42YQ4#iM`C=P&Gx zDZSD(7Z&kS6__oOV$f3lGPJgmSb!I_j?H2axAdoQr`2)FRm?1Qm0Gc%>)#=2>Nf5_ z^!&egd|iZ<H{9+!?ti+R0Z*L&=BRp~wY?FT=bJr<9|xwUx8Pymtv1$`InnG7J1<Em zzKPg9=ds)0y1hBct^|5GzYAqEB&=!nm9oF7g>Xq$?IbzXh0BUOolpD~S&olj=>ztD z0Bm>Pjo3T83%echmcG@)?tIhLpCeQh4j$qsmlFdCKj+}9s(bXiDGn6^8{Vje4iOWn z9B`d3=%A$t?L{5^T<VUqOt^)#_&0{o5xx`6`L-Y5sq~-%auHxOa-pqA-{B;qVqI*T z`luoAV4T$++Y<bkt^Fsq_ezJT+0{h>`dCNbUw>p_-3)Uf;4p6ERY%(AJ<+ou2h-4z zgyTWuzkaQ#N}Wxs1+{BI{hcg8KXc*r=>#5Mtm4~oH4Kpo_ChqA_0!3u+(GUeEo~>d zv0_oS;is*HeN5HY$%jqy9fuEBbW~6;7!!CaszJX1U2yJw6PfZ^WeGa+Y_^bjoos;l zrwi>&j7d21$@Q)~VJH5O<<ARIm1qS-;}?#27NHE<qqI7ZZOi-Q;kX+W?{Du!qX2V@ z*%lx(53=Y1K4eI!o(Mf>{HVOgP-1(bTx~+B$%a-+V!6=I*dM3E`cK%tt~h$>ZjBJ= z?COj|jJQm~b{Ot?1IJV7vfiIw2rRrV!&4rcLOo0L1*<G5u5|dqcxo%fI3lSM)lB4> z`c)K+Z>@vw4KK%TZ6#Wc%%o-I>92tqW@KHmPC9C!SjKSYYQ0-WT#FztH5X(y-J?qA z45zW5`Pjn}RxxGY+*Kk1-vNBcn&~Y6(u)PGx|d20nI7tD7!T2kr}z2cf%ePavPtwB zV%v)1D=vdJ15SD8wL2~xe;LeyA(_BdW_pQn$ZXUtV60ZGi9_AY;9&~!fIBH(C6XY< z9^E)w4UPsSt&~E}$o&djO4Q{(`|NBM2c(C3pZQHNrd_Hl#-DH%{{<M1c&_4U#^CbY ze#}`@IbD3uZMv_{l^nX$lBd2tsoVsvSQ9^xN{0U(-2UD}o~aagO5FqN%JNNnTmXlt z4CW>@w$z`tzNwk|c}l4Z<$ikQKa98h9LZ$06-~!Ro-<pA?s1WTV%$4ilsWL8z_DME zd6<HMvRs@36qTB#H91o_%n;qcM;|$ZT)_piZf<%1PJn20%>~)6u7*%SQ96n?9<hrn zcwwW?G`yf<5VvUAWHQVf2(G#Py*e}ZWP&;M4nz#rE9vKcJj%w0Oz|h!i6snzKQulr z{i@DQ*^im>kGxe*4b5xA+gkt~U$?Y&O9$z%-6J_2`{PJ<-PE}^c6yWKsa~6CDW6b@ zJulS!1P_8(va_@nOUhkb>>EbY%&ejfuej=cUx$mo6r~$q@oOYbJ57#sKxTy{1Ci50 z;@6?hWhb^Xu@n*!u~~1{0;ylk*DB_5d~}MxV!3i+nN^A#FG@jjGD4s0&gdIQkw{)> z*@(M?eYCrx`2W<EzB-;*uzz#tL4vr*|FlCXgWL$rYhZK81srz+-22RAoZt8CbpdF# zHY>OQtEPfo6YVP!k+b1#XgCZX4oJ^AwHs)W4yqLYv2FeU!E&!M#)zQWz_K>Hj+8_b z2^0OCm-#57Jk$PqajT={ah*tbmt?kueQ5R(;{uj*ehItBsJkgW6_P=cDqiAKRKu=Z z`g-sf0~v3T+c`%;SCw=UM>0Ixox@g3b#Nt?+w`El^3SpZznS@>`nt=X!su{-ZwHlq z>4)=<h?!#8mw6Mtg7@$Z+4Fx|6CgjDUFpXd&0Rh(^f|BE8=I9c67T+Ie_yQiE1_>7 zalj4e5aCL^5#i#d<;{X#5B`QU)$uogvF7CQG<&oD<6gw}>|6<@#?KIw7yg3DNMP8z z{3OYCjnp*gYL@hrd1xkV@_uzy+f0EI0b|v4`9bk0;8eTfY&*9guh3&#URk;yM>ON< zg_5t=^a|_V*$pUyoW|Kn4cWIFN~!gj*yD;Fh9k8ALZ-tc<y{P8FN;uieuzD#4+MEs zWz1`vq%6MUs2aFGAO8@)W8iz8pwn(5vASb0p36tAm=2UbMNJL7a{Oso&$vSBjK9CW zF%zK3Q7%Sh93u>@%f&a=V(GFZ{myCdO?Y#P28Q&&Q}|1&*^Seltjaz@Ps}+M7-;i8 z%WfiqMjLS~R1Wgn7y1G0UI=DO(6skO4_7r=4dREOcZ#Rq?yYV{W6N!^yyD66@mX3s z|A>}iL1FBbAmpeo(nn+!su6lxnzD#Y+Y@QM2D=R6G?vavVX*^!jyeU*8&~?h%J7st zqI|Tr1P&~YJ5(7q(Z1fLFmU{G5#P<`d<mh>4ib%bITc{#(w=G3mvmUh;rK46<NnQ8 zt=XO@{Nu<I(2$#<K(Mv8&40wdvPIZ!-=rs);m>bA3CaT@-un3r`c>pFWM`h<gAgT` znae<Jqi(qIn!~46A2`wx_3|d4!tebBz;VkgOB;fxBrIO+6fnEGuHnqLzg{4~Mw5JN z4chwSfLU&`tmM#uAtW#b%X@NjFv<(jlM4<bpSL1h)Dca`EY!5RR*$%b8SIP?CFi^T zsJ8aU6Z*b=b#*~ZIHMb(dp>^kvC;CLk!Y$CBqD;{+S`M(cLW5P89brpYXeR4>pLmA z9&f#%e4xCLDRF0XPT9?7y+nfB$nG;=rozV96+z$Bg2o3o>$G^Ux*r`QQXi}7(fNMn zYA<rS8~k9KEKzdrDQ8=jDk#G-vUo6n=<$S<{TB!l1|M<>dJ__d`u`(%S16X1avT>a z|65a4r~N-F7GFjJEJTc-D$JwCRg-Y?eQ74W8@&E-e@;SU@AXyfU8PQhWw)Co<w_kk zGWhOY;7A~00NKxumjbhvu$Sw0){YgivnA3r^CM9DgN-UV%92x``GNm?TuwHI%hC=N zv7@&RIt`r%TuTKhEXlfXz*xB^Qs|YstXB&KO(_J|qp}^iBUG4&PK-;7Dc}4N{`T{Z zG3Jl~FP@>85xW3oOU?!vO8TdsWobDG%Gp2Bzv*T#-zfj46Lgsw$;ol40zp~btBna+ za*<8?i!HI(u|WsNu{SC>#o`+GMcu_I!Hh!8>-=nw3a7(_uSYreSkHjW?ZfX>Zgqc% z;B=A_QpPJ+-O)c-D<I?Xsf|A#hnY3M%DnF16MpV!y;NzuD0Y3NDf$Z0cEqinp6YiC z(f;AqW%udGn@7%HDdK}E1qaWiM`k3!IAAAn?$+kRo%|xhUts77o;=zN@tc+ERtX-9 zHM3Sp$2w2L=7Fa&V=&gLr9HSPasJWRk%uPkXwdMJA-0t4rc}<ja<UFP;eZYo`i_UR z-)yBJ`7QapeBV=(i|T0+rDG+6qFEYfzCK}o>Kx--(645(Ld&VyW>m@iMp4U}%$Z_g z2DT5Pf7;yAehi>S=Gf>Gen5+9kTo+osEB%M85cXvzp<p=c43P#CzWpSMfstF2kPT{ zzl6YpZLXlo5@u#R;hl%te=W+HaVJhc2z~$0<AH-g@Z}WX8_3h9mr{d4wNQqYwF%77 zv+4ij^T1|GYO~Z{{YPjv57b;ky(dqU+WNZwjVep({34^^5>CoV{;{3jR-NEek(yF7 z+M<34@;kLs&vzfruQRMCB;-Y$piu=G9O^R(z2}h&>&7vf$`TO!DkQeAMp4$CaZzI) z)14K6t~@TQ@NiKqkzPkXkOv!{Jo`+-N1%q87xPw4C+Q9#mzns59Wri8FN4iT)%hw7 zly~F;JI0RlWvh#E6F-S>`QdGlgp2BP1L_D0J>ocWewm`dTeWM|1ZiPH^)8a{H$IQ2 z3EpbO$6l{6$>!`*?>hFs<Ql-nw4KefPK+bm;~HDqI(%Ti5+1K|FVdN@vYIsLTi|Z( zl+hJbL$6wqWGX#qb(c(oW<{`6tLBO6Q?S0ymsN?$2ix-Ca_xxJp>BgDYy6wsIHq+j z0K?848m+|&|D++q>jP>*HlSmcWBdZd|AzxU2!i)Q*~S5VP|;3M=snlH9O=L0y)bq# zq5$X7_y)N{v`2vX1ZztoT%q;xo@aB@ipg4E{lclKn1Y%x=bFTIc6j<SkbPurk`jl! zHgjk%0C1;kFw-T>s-W?jL>HUOnV9yt-R()?J<5;;X&X~v1P&d$svcI=xWiefY8EQ; z)a!$tqU@C|?`=-9>NdO$Tppng?uo>9CDGW}%9*cg5~&ra+lA<O?MVBw(75thT*MpY z9{sUF$Qfv!2T{v78%*V+DM*p!DPm-NynZxlwMFA@<MCJK3#A987ZZyRjd{LUbl@*6 znbqe(^O(I3Jj14ai+Y)OWeBj)_arXQp0kjh8P-q|M>8kUnN8wZm;XSH7-t6$A6OEk zMdmAoCtt<AnL~rc{gf1?a2aNx4DuV4b-Ce~h51rlA3Dd*G4(l9c>vRk{iKkK63>&j zR5)6mdC$6|{zSVMgDuI}^aqC*02LM~bjHtg3erhkV|wiQ|BSD0dFrB0Hvtk-s=%fS zI<mB7kpz54ja)nEZhN$?!R|aC6!(liYp3IHra4zQsi{@_m{C*MkB|^;aHDJ3rvEuv za)HYX0S@B3g@WaOk@`$YJ8A}erV%!F8MD-lK4(KFFhu?FM4Z~E+?}j7uZ&jbxOzuv z(}8Jn`)5_H@rx40+%s=1)S=n3<;auhDQDkHA}L-p{AEd22ioz2<AfQ&>O*~%Ym@dQ zuMfvDFGaM4CmSleOTkB2TzBb5csQ*=;qEb^yxu%Q)5K9h-9hThYFb9R4JbCI82;97 zmeHHQ0rUnk&?8@7+_8HJbyK2*6vRmEZmXF5CF%U@4?qHqEg19U=Q5kiNj_BqaO6C3 zZK`AEHy`#V_{-cQq@9QK-ea~wQ?BqWvt#o@#{JeOjj1|5vS}oC-qzr0JDK3xt1LO8 zQTdz#b-Jtcx{jwuLPvTysA}si{id{q1_4q;0MdxTT25Me1~lta72Cy#mE>hrB-RxE z&>!Q>PCBf6F_DL)4*w%)aax;8#2KX4>lu_2oPIH4d!kO|zeu3Be#dXO%VvON@T<8I z=+{&KiX$k9*G1EQV*jfcJeC{*mvOWzSb8I{;3$4ZXO0LAa;?0?PLni>sW)FE@%Hc7 zWv=LD>U!2nA99wU+5sy_>uKf6XAO8rmZOE3;HhM-_79(neNezZ9Pmz^WkjVVgrtu{ z@0YH<G_t-tfOB#v91h}BTPIxuAO`w?$Om~*O&JBQ)6u2;ZQfjMT1gfh+9<Fqg~WO= zZe$QCF<X;^(bv2x1n^Sj*CKLAUVen;HPcqP<WN*aT>^w3dO9Cb_s7B=%0P6Fyj{z8 z{yUX}joW9u@6Zx;He|D?y`HjquchiG%S!$OMw$Y%f`b$0wE>$UvhdoMEsFLe{v7xK z?S1pIlur@`E+MX)5^n;7<3~YHCzPl<<$W%f(4-i`OF`M#P74>IGgc#p>6`IY9$`0z zZc_2_BPU>vODwp8vO2r<`$uKXB<`ETJb4fbU4X&x-d??T$z+t-pb~@CC!!WzWw8F= zlNB@9XS#ffCg~Tmaho2{_0ynnRAhzw5+FU^oquIKx&Z%$op8)L6&Zq~Dv~Wu4nS_* zblq?{+A3KxL(Os6*e-3ytoIY}B`jI&^TTc{zMD25fQ?0=l{KcxlYI~8^Mn~sSCCNm zw^T5BHexy>8TIMO7e`4Xp3lK(BX1wa6IpVonM}z5z6{CbMG{<YA|-NY-kYK5fc(<< zo@Y|*&Z?9yt?g++K_|0E;Nt0%nBPH(oK!k(R5RCWT*6XN&*>D`K_s}zC!(lQ__wSa zXmQ_ws)i`}G{LV_$8exU!?XEaoFZ8fyRvY#(_rq;PCjkIq4yoBcQ933^u(<xbq}7a z)Hrl1kPMBTLafFoz5+C-UBjOdYMBohV@TWWjoS>DEsZZRK5Zo7)}E2NARJHj4bt;p zmgMV`0*V1{^^Yw9q6i_0zwi}+TKu=d)THSS{0-g8D+jnGO?C%b!$U~OiNjz+3(en! z21hYL1(t8?xzkoD%yz%}i3i=etF&n8OxC-)WtTS!kBi*jMtu-?FR$#6cPBU+Kksy9 z3?HFzAS$td@8VNZmQgG9Lz5_l?+j98nPV<*ZBmzHxTA6$!b{gR?Jz>qZtynUP3E6s z2F-WK!nxeaUj*sKzk*N0PiY$gf=ie%73oj^(dv@t0k$72g+ur8G5=NRI-ojW*<s!h z@8>tl|1Wu&Fn9Pp@ctVr97WJ}B^^%e$Bqc&a<wIz#F_ZU|0<rb&xvT)O8Pr7;h(RW zzT90#tSlTR@MTcj#$oL>kjQs}bF667L4=Sz;=Z&BF9XSKw(T``Vmf%$a@)iWPc)VS z<h5Tq>Ynor8|gwjYBVfOdaumv^~OWCh89jU3m^gB@nYGEZqh3{Uq3hP^QtL~AUQG> zHm4<W{C=00Pr_%}f|oV}osYSc@+XvNRlqR8I!-IcNO{2j&OoH&pr?oIRjR8v`}euw zVF#tnP@H%pl;Ih{{m2(F=F5E%3ASoPE@Dd~o)EjGb|DO)v)PrMGg%LFjgAlAA}p<* zVTp4e7V*KD2J0|TxU9%}^K_F@udOXN;qSn`j?I!s^%3-BNsQ?h@b6b)(W3BnVVL7o za)F{?+RK=|s(JT{-&TU?Tm>SS={db=DNH{VY-DRq_(q@|=_tS290Lt6At3htXZ6?q z;oU2*TcGV5!dlu28WjCP9kn60*R$f^!>H50aAOiK3Kgp-!{(;D&pFuLOfQl&r=gzr zzc}4V!odskG~t+PFnj=QE*SAhCMcy?<BNYyzz4@mNqRBp3PPROR0uK}sXlG^9ht+v zT!<cnPx^50#94!2kY8b~rTQ3OnJ3@!HMc3H#|O@LiyfVMe#<KbvVZ+yg6Y$s<ur1N zbU~b2{(GU=;EOz0lMNbMBlG~!Pm5itZv;y-O)WD+=k0P3u1m^j9!8_S1qi||P2YG$ zp|khoCqbc>OmF_2-l>pTQSXrQECmuw^=<a^|1;Jy>kl2%0pTnP`3s#AYZ^*v6_5vv z#h~xhdO8sR22uC|Cy{7BQNfYs!C5pt?7Piig6EebhLD7D5xD~G-WH1@zS?7y1{{Z( ze<uoHAFj8vrV1Jn8gtDD<jr%gfMyEqzQs$8Y6Hz!y$t1c-37C8j4>j~bWfN+TD|z& zRd0`m6;hI2C?72u1Qzj>_hLKnWtvo(v&Pc{I>iYD{piaXo<z_EF4C3$4>IXP-?jGj zi>~EgxiseW`M=o7%?Ic6=zqEA>oyW7_SFxaeC983V)WZ|tfZKV3l^G#Y<Q==GX8ES zjqp&{N7R*0XR3%i#<5vQe~ugOXE91j&h{0u6jk_~3o7Fy@KbpbsR$71GTmGpSLRPJ znU#zIse+XU?JnfJE|PXwtjxj*ype7KZ5SZlpgZo^omxl9tKa^NxbbD$*)7V27h2QG zyQb7}UtQHins-n_F3`Frx<^yTH(e5wXfwUxv?94~lCQ0&>CP`dN%1N)g9h0#{|d^j z#r|GqqOyxMWTi>uYv+9=UN*jS<`pST!u_=4RKKex^;Qf~*1lWj5vf&dBj6INS@`31 zyZh;<k0a9Sk8$PeP9WE><N<~$4~m$3ty0E66{-t&jFBmyvCX7t!V!&NY~#P5gpwm~ zh{Hl7kxMc3m5a$0Q|$W^2l$Q1D7jo42aHdl<W1L~zEj>18@kSdfNxy##60rqufm(~ zFAu>>I!2fWTYuUaQbx_0mkXJy?@QWcpYFRm*;r4JK|HDOa;5ei&uzZE5Pg@ycjxA5 zr5%=!7GmC3x;ZyE#D{O+55y)VG{9v2@t1oihCp+!9RAGx&dzP<?aTQOK)nwOyEu=( z24G&vVh-*VIl}|$^C?AJ4;|eVt*aB3w5+Dk<p#<O*W}lHkAM<ML9y`!PTdKRA4j#X ztt4J-VSM$N#VL6mo`GtWgQW=kbaZI*mEd<$(Ie^@$KMexc~RFVk@8DFWf*9P<wF>Z zyCZn0yAxVA0x?no*G?XuD<Oo2Uc2WGj*IVc$gN!wg782n51w*MCsb1vdC0(@|GW@? zC?q#r5A<oDv8?mS4Z7`3wJo+5B(ylG&<AVrOq|vzCd{a#1MTZri6ms6*k@Hzu06C4 zHtv308yEJz+VN6SpAl(Lbi{uD+KgQ;x<P^;-dcvQk=e18uYMr3rq{R3%p`!Tjpaj5 z9tH_H{gz@<Twv&-Cp{;XN%_o__mXD$W%fFBueSk-8R0)dIC14eLoxP%p|(&Y%qW}w zlDS0Y@k#ytMX5{h|FExQOnv|Lg(2Uk_C5IT7Y5kv9QyytmS4a|f<Q!!7duQAII^)M zRT3<0<f#4$ge(8Ln{6c@?Fj$--+z9MGbXwYlO`goMjTw_`jUP9FvUK1#w!+>IyTnR zB_wi65&PhaD{vuHkrS(=)3EF34<8L6`CvgIaIjq?pMoK~%RvvqXHsB<)I`M!!~4a1 zox5w8ZNbw_8Nx{T>M_O5xUxYaCq#%iZ+OPn58xeBe{M%kEr)R_tx2tMYQfjofi$ZM zXW@SUaqbLQjvXF@AXPC>_A|e2{BgJsVY3BLesOe}<Z)Ub*DXi2!3+;%H%Mf@!cDep z{G|0)<exWmRq}p6_TJT)^$=0*$!3uggTnt}*~g;%%9#!@lFZLq+v_WHhE*-0W{+fK z8X$(Zm$IvN-u_K`Tl6q_QloB+ko)7~IdRX7)I3QNZC1xga<x;MaXZIqadBAptFpVV z0Xu<4VGgHszU=)pJ!~L9$RW<-g;G@fCz(ARG|y?+mY6%31V1{3hcW4slX)G!8&tDJ z^v|UbnbCneQd8Q{D$~b%N^7tN_(O(7tlKY{P;QNI_wv>DWOFD{h5%jbAB%piQDDkd z;vxDYfkdX_w$=@~HC8Vb_|*SG-qSyG#O5Zqu{d7)nIgO%7GVnQ<)7XT%!~o_c*uM8 zv$4|aEYQ4hZd|NOekA@C0m3|GMnz`QM7LOJp820F0OC$$3jGD=ua8Oa$5rqQF30PB zReacn5I_yFx#9D=q903o2rDkhs0#@hzBHWDV#45N1Y5_F8`}KrQTK@xF}r|m`g087 zm2H1{JZ`De1r_xdx-t8Dct@asmk-iFJfjg|OrFs3iiu3m&AEVlZmcE67><YZX7Q4f zcys1+cF=OW+ioN}#k}|vy2suE&JPaz?}yq{)@TW&eSc|FHiBW6<N94_t8FG-wx_J) z`A@jvh5*!;a4n@{{A%Wv8}Pt|Wn2|X`}QH5oXKcTTLu))Y_L+x9^Y~MMop$O>US~m zIaX#H=|k(3!l5TLO6YW6W9E2I_@~jvrTp-jik8wDh&K#rY+o_<9MlG(rg_05hv!lh zcFxCjn@{(=gJaIo?Hc4ubM4KqeW`F;#oa>UCi1()2$tSGqU!r2RDgb@d7rm1CI2P| zEKd@fiw{xX7Vs;A`wnU(zS)Pz(_x{-0Fbyz@t#ECMjT%cI453xwh{BbVsGra<v+8T z`0xxg5Tj~owhb~ZECEwZy&&@TrKV2LW7~y^811Xsj%LtDM>ydO%n4AKj94LthwT#s z;uXfU>G(oKjcn!hEt36XE3wj=U1pJ0j;vO6GXpW-^QWf&QIjn{vB9q%wxjt9{t;V8 zc|aAyd}O#vSk2+Y;|NiHnFyx@EX_aKfc|%^B#ZgQCizq8UyWA|z)fPp+B^d^hP(|6 z(R%T*%)DeM{>L%;*Jfc0^pO8-ynFP>hSL5X-L`gwo4jp(kGrm|Ae-zls@}DVzA_S~ zXNZmVywIjS;{28kl!w>(*UI*5j}I^)O~-#m%^*OZD%iDrK(*0AgmuZ`+nsn#Z&%U2 zDW9zjv`PB&E`h;Xo9z+GO%Klst2{Lm_YLMsb!jIQ^2cI&a^fr$&+s1GJ&|18=w_X; ziv%hFnxmRK2NMhl)<jfT#uN!9Fjcyp{PP8u3-9nriuyw;aGk(Jj_6+L(q@2d>LgNb z;ZDAMzL43d1b31YUUI2YKz@G(X}U-p1JI!bkVjR>)YCNK!o^Q*DGG$Ptv46mcziA` zAW0};({FflmS>G57JJI-|M+|J!IE>wr(NzNx_vKGHffoI{8OkT`_-8nF=3ElUJ>!7 zpr5czN4q+wPNs8l&r|KXHR}WD#1Q41=D-4c<E~_>q{3ZRt=9hQSBII5e~4ny?fSzR zg30s?2k~U%OweBP&SM6n3)R>oUkeZ%b=}whKI=w2Pi8*fahNC-URYb*uZw!^HwwG` z%=K~0r&^kROjx>P`W~=q#ZacD8d;d^sB?#n`5wjk$0m&uC=nJFHmY9Hf!^0juRN=? z=|641NnhI7Jh)S>T}-xJOhf1F$?QjVzg@hpU*u_8ux!>xq;I}SH`U{j5G&ZBFls#N zO5!+)(^n&pRNWb-!>Spal83;tj!1QnZnQjL2TGiFnvOZv0u!#CPy6s&lhXd=@20M+ zeX{;m(vllA=}6{$%@wxu-OzbrDK8`ddFxlVsEEy$si0A_L_M}A=7YN2KpK<TQt!uP zG|l79M)eV65dyWers7oq_tRpYdQKR6>|kw+gy5*~5rpSq+kRO7s!SZ|y@Wpdm}hbd zL-_DoDCk-`UK(5NC!9?^WZJxAV%ny`@#3!=kgp;Ni~GdAvG@xNyt_=n<fJPn*e8H* zireV3okp;6vTwtxH`I61pEg>y<U+O3{r2&3pv-f(Plr`k=WHi{v+ux*I=kTV&QjiV zESx_{J24^aR&m;C=#9%D|B~6be{=tDfl}BAiKiqb7x@^UuL<yEty|m^uEe!=RWiyx z!}7aS>XZ2|xqtdJ?U1g#Rn?DzS4%Ro9ksBXO5=MB6!CMM$9LX!zs7(?JqifphMJTF zf9n)6DVMC~KS{K1Onw6PcR#{R8j_<0I`r-5IoN+pEV^XFU~N_nV=QH#O8<oW0*Iaa z^F0Gc&m2|rEt#v-h~riqA~?YaeB|lLg$RWo#qhX~gz!<ucXzhhf!-+1Ew77t?%ItG zRn@7Rj_2i4uuvf94sS+BmF@?o!PJ8iN|LkQ!%AGHGGXZw8IvzE#HhM+h_QJK-{sEU zv$c)M;X9$z={L?$G^Q1{S8T0C^y*rHNfzS**tVWQl?U}Ni7A)ZuMb1PjU3raLM89G z8?-3-itDm;QMDcmD?eEBjNCb(Q9R1S#;6KmZCGZ{F))=AknI~6XcVO8C)Q6Sr4Kt$ zx=C=^D`lb`Xv({gQ`$+eGy-Rd+66|ql<xwggkgir5VA$HKPh%=Rz8K~Si8P^$e)N} zDHm08pFnSu-SUjFUgSh2b**E@(Q-S&X)4}T2NGj4XNRRbiG=)v#pOga$FPoO=+`70 zhxsb`^YvlW)Sznri_R~<_B!vvRL@iiBzH}VTEU8tn!Qo2z*jE>YIE6BQLco4Eao8l zf4KSzzbM<LZAB0P0SW1l?(UEUB&0zagr!5eq*>|i?rx;JmPWdzrMr8H-Tm->?)Q0r z-}@h2=XsqobIdWv%xIX~(rno6Wk=&lXRa%1#y?LwIPT?GACqx=*#A91*MiHtAHXHl z<a&FQ0MF@kHJ<I!t^OETwVf><i>P^@j=vy>EXl+G@+rnS-#Er1aGO4*1z*P|DAefB zcZ8Ih&KoufdR%@`Vfr#_xeomKp%gs)Fu^w2h|dtaj)(3ig3xJ;0=I^yzZhkjwUc1r z-Ybe3JWiXa&2HcuVU-Mb)40bxbmfy`dq5WCShWhkLK!x2T$sytQNXjlXHM=<--*{0 zeP=CNRk~)HAHz^D-eIpbnEOWA&U~f$JFh;Wg}G=3@SVcL_)D7$g2lX%0;?kHvC9}X z0R-})ZA52tBd8vGwKcCknOp0{-K>NN2gQl;au<)Bo1sI#lH|L!ZgQUxA)mG3YrAVd z=o#o@E9JriP(SXXb97<Xh+mH$AFv#?$`fjK8b#>#MWc>q<YxsOS8o2I9=ZDXsL5Uv zKH@OdkH6)|RN1wv1P-?}z1!%^{N_-X#0>$hld&M!6u(VkL<vM1LMf%DDQOwdcUuoH zo=hLwv`c9{b|TZyswNo$bjlQP?Xa=PwJMwphf1Y+zXX1g$q6Voa=#zCkj~O7SS7;h zoh-ys1W6ZrgivgD!>YL#<E}65W*)_upRNfr=33%F)9^Po<*dcV#ZrIFGC*XvrvOrN zj6>r~HN&NyukC`yWcq;o*hJ3$v8QiE*ecl6d<=7T2foQD&Y#^Q)$rtF5?!c8eLYH@ zj;v1|M1D`m=@4^ZJ6D>ZeO?p4dODx}@-g%q9^1f-i)(+^T>aw9<8({A0Zk;e(POp+ zW_OyW5zD<-8WVkTuN3+2(S;}RybXk&lD_MY^*7)~S55%E)MzA^NrN|3gSQ@VzE8}8 z8et%Klll2h9#gg4$@$i;lzK9^qm`wa<5EK*X0+J{64`mXt?clho~yohWNk#jsEp-L z0!!+fn7WHq=(5Tu31yun#@_YsP1O`MBOHu%(q}?bONSjpwkC%0$<DSZyu)gFE0`Db zN((F{LW!TvSNbvhB--20g|Y@73bi8vSszDk*=2zG?lm(&OKJk+;0DLgqv&Q>*wI8Y zED9FPoINbH1460HQn*RdX^;iy<u#O8@jqsfDj6gsWx{MGWFDehG$%P~jrvg|i1{!+ zM%8m+UzgwW_2_knzHjDJP{K2o5D{_hcF$U`%UxMKV329GV|=F_AE}PUVKYDp=>CN4 z{FBH<8EoqUWBoPJ2f$@vkUkfO2V5o__vcA!Rad;7yZUY5pv_}l<KA0cQ@e4QoLt$J z7l>99L~LO?l9X3%g2r985w)LP2A>NzHyU_yoUPOkYGHCxp0-AtZBl3(_9)GR!?o@^ zA^`QUnL@d0`zfP}q4J>1Lb=$r5+tJe1SeXpAvP6wAsV~QgHe{&#>mknno64n%j{3x z_+<ex8Fl7#8dFCjzS`f^0odnLx<RL<bM;pT;ck=><A)iC1$v||M|0vZkB6$R%boJ- zG}e;`9&bMTopza&jslW{h7}2`mA7Mucmhp!Ti|m&5_J%pFooDHX@G!TMpO`OB()kK z4;_^<{gs|&;tqu40sc*yuO1)=2EYD#JM`u2?;%$?UNxU?>Vu;zw*JvlE=Zb8R#4d@ zqC!h(#sWM|l8eJ;Lw5W9ob-&Di}x0L?v2e3K3932ER?B`5#Hc+vdYao!6Z%*Ev;^~ z@}eQExvl=?qpm!Z%_yC5V$Uw-f?F@r!!Plt#vw}^Y-VKF=yDXP<k!evk?hBM3oWJN z`3-O-EO|5clhqakRAhhAhGxG*CcOHdy`6ax7vZPfMs|X#^4c;yE=YVJ>Hzo3Tu@Sj zrDrzPI)ABjgJFiq8uMm>Z1xjjbQchaq%@q(s3#!=w7Auc1)?{6n-g6XY={}WV2YKy zu>+Dn_l6oLa-J~lU=%*jDk$vJ?J#+5HmVz*w&I%oJSX^u*lt`TlBRC{LLe(s1J$_H z%*Jwv`u@7O4al6?n|bkND)RM}8o~u1)^Vz6kY-rmjJZMg;a7R68FSQ`H>KeL^SfF+ znF!62D$a+MoLV0_VTO)GHhQ(fCQj^FS6?Qe<4%C8@k65p2HKZy=c(j03scxPv7Y_A z&IGK#(N81~+JB4xn7sfWxS)#yJHT>LR5L*R_r<>n9blyYMmrsg!5co!FdgP4un<`u z+|c*}{Faat@nost)6L<^)vqc1q>i<RQrGeWW}>y*jLfV)K4*Am{kGMW-|{a%_s<r$ z++IQ3LxI=D)ar^n!JKd%M-(^3?n+x8#S!5m-zZzjn`-U!)={d0EOgns>`-ux>^7EC zG#qldmn*gU`l)&4hKpwXswn}GJXk@*y`xQzC#*NkUjDQRn;8bG6*K58qtN8|4i}xX zJTa+5v*`i%&8}nGLD*UXyj_6eW?mxPIbN-V^Sds!Kk`uc^`+)gq}BN{ggE13B(AMm zgxBh)0`l<YAtoa#=52x7<a~4uyvM^rap{Xntqe{`yk<^uqu9JlBoU7?RXC_2h-FGv zNX3`!XP^Uu7aIH``l=}#QOslT_9!S0eShs-QYse}RD80e8+3uAX%MavY4eI<qw4Xn zCOYpdwKFu)f6Kw(C@q2hmt@@UEJ+<lA2zr+_hMc{xFI(J*~Qh-bk-545k)Tf>Dm_` zUmpP6Yj&;u{j6d?r0uv0;|6H{5h|o#Qk2t^)0ReK(PA1Zd%EE{qI6n_b3O#1aV0`0 z`kWj^N>3Z$ruhKMdn%yfM197y-{m4et^5lWpDqsH94%$b#D5Jt)B#nlxeT*{Ye@r2 z34MI+cUx+$7kAhyR^PH%2?Rd0t1oQN9+<EvkX~=bWNqE<#cQ`MLAFdsNxZQ^pRl8P zQI&S&^WV9oHHwOW_iLPM9vH&d-27zUdcLQ(WRxLR$@s)RenOX(ap~1V7&lV<k*R}7 z8M(Yq4eYt&RUf*87$MBoN=$`4N1LRdZOZ?;OKY3_W@1e3#BG@R|2|8sJ)i^Z;L4XD zerp==8^ZyLH4k)v63(wp!9T1Gvz>uranl_a-1uroHKnRTGAzEnr;EN!Xm*ModU9H; za3p-IfhEGk`ii4CebWooIpNe{&<U^o5;!h)#X;m(ED2MAPr(+1D{`N@Zkukop0=*{ zDj13&LK>hIAehfA`dcWV45}XCO>iQ3-VpLg5-itt=D*r#8QwZK!m*KvJb6`h7n8MY z-k+`1Q+3R)VGTbVDcB>QhyUz}*>dfQ6hFB^R9yH%*IS{g7X7ew2&cQKItJ1Bad4+U z@;#7KZR0Qh;Gn9k2MoxoH!_$Ia|(u16DvV9S-?3qD>A1VivCHh+As7?_QT?n4;1PN z$}aIOYGwN6H$nke{cC<EJno6()*l6NBqd@91<~^cKfHG>IG(R$bQACT(qJK9K+Esz z5+_U7<rs35j?oxy%53vQrIatN<()sh5YkzQBcG1<^sHHj<^O-)fHyt#Dw-cYz0E!j z*m@GG1T5h9-DrLV4cs(MVCKUO^KZZ@cjhx4*6qaFBnaCpb@@Y%OO_24(ZG5~Za|vA zi_{`bs?-_Yt|dzx_jN=Iei>CqqFp9#k5PsF%dA{ugILfkn54No09z>5M&j{t{Fd*r zFx|fHx=-0*Cv+jT%3!2kuW>L!F)?lbMt2FgxWx0DmE-v3*NflKKLwInZcqEaYtD?_ z4lX}(jeTqc-MRu=;Y@vI$S|bj<0d{uAyd$7Zme!qs#+$l&C>1(*cxucKy}XnjSj^# z`B?!vY5r_~29IRT2G79aIL)s3+$9DQ)_0n?8T{Z&_Fs|~I6|Ixbs}!r<&3@u9sKq` z2JYZ?@}{I5x%&dRUgg*t^_0h?*cGaNF{lcm*Sb#}&txPWb!=^qkM2ZDYz#l@rZHUk z9L|Ri3_A2u$K5(&ZpoD*@{4@FXVcfUfzRZJ>A?T^-r%32P$Lr1*590C^J!-H=6}8K zKe>iukM(nDVO*VWqZ-T31c@%qeX5yqlFIHD!!{am&{qR3%e=Gi#WzKXk!hL_y7D8| zi^_A(H5dJwaf%;aKNfYeQ^HF?X=3$Y`A?AX+ho;gLTJ@Vz@fF4F4PCVf!a#xbobHW z<oUw$&;K~xa6I|PLY$AON408kOYg7P*_tSp&hChxHZTV_yD%a-ZPc&_ZrO|zDV<SV z%xcaK;f~ebXG}F6-RXFsZrB;!`CesI>kZ>g6?)zoJ=lqYjLIyXI%lmxR=fz_L`v0- z;?Er#(-&Aw{b@$;!{(7cDmg-}Lk!I2P}V+(!CGWL+no@W^zETZ>)nvs>jm!6f@^dO zVu(bvbHq=T%Zt&qjqW=#;<)U?&BvE6wj&7l7hXwMMWYW2?5cStDhX$Did>X$ptc&0 zaoV~T&u<J=4_<&7!FxOB9<Kfdy5J&%EsurKh^;D{-Tr&&43GmV;a)bUKR-O`KUh)8 z@<Sy!AKu;0bV&zwgyGvoq@TJ_{rMHwrgZd4PXN+ZJcSn_n}^1*t=mZG8;L#~AFW7E z_rXNu(f|A{@cwl{8;P?ADmOZJZWVIu`l<}S4}w(-r5&QMQvJ<P7t;heCFszvtXhzh zM#fhK4qrR2GP&EbhuLbMeBchsHi1h<R_o3iS1+GMp@@8MC?4LWK`XPi>TXN{rqV(d zU<LKr1)$Q)y;C@S>3m8hAOT=_4=jW~R}xA<Q<zXp;#`NBKndoouYAfd6Hi&@b~qiW z4NME66jijFs7W;*=DjwQLO&yNEBL9$a^#n`?GFH7Tt>5PttFLharu)3e&%7q%no*^ z#lfMllNPPO;`K63qxPU3>as3EB(6J-<^;B=d98dcYKNf03;B`hP@4crSS6D!wiI+k z>c5`*n?=}GwA2(oOcw1KRtNz9!V2>Y(BO^qS5W_r`B#ur63O$oM#3favlRsP(Zz{v zVzNhRyW6b{3jk<IxsrZAaq2bR{rEVtk%V}U$rIU_FdTmW9w+5TLaq(TC{9|;tRM4b z^h5M5{&MyW#<M%A%7LGULNSG8j_6%3-aP_Kx4~Sng)<9FRoS4yNCq3`#m_YUvk=oD z24w6Rp5gRN&Q&u0&{@6r1;WH<DP}`U5z1+ewauZ0b_vU1?0zNs&I1~<SO5?94f)B0 zjvo)Fol*@{8;<=SxHK4~NF2TeDMxvJK>y?$1NVG;<Nrpc17oA-18POUf`J2Yah#O^ z|Df1NZfcAv6Q*#ZZ}GC@d`Q0=jmn(M-P{iel&arK-9N~^_*6u;V{UKo(S5cK2Q|@k zZJ1JdTS>B|Gw<0i(~L1Tf+zizDP*d0aRV3NeXu()2TY4?RDt#?d4{7;fW6JkCe4A8 zAY#(Mxu!b`OUQPI*eVsB*V7gJuKr{H3~s=jodF7+JG3&hk5ka^d`da`A-Cce&_?7C zumrRQ{hL5-LWuXs(?~2&$yps>J7FPLN{1BBS=3U<5oXh?4yzeWH3ulo$G*S+Pa59K zwgECMZbu1@bfpR(=SFukZ2Q3h;v`RJ$e7?&bv|Lz?AE_1ctaPhy%>~r+`TV0-XD+@ zge!DuW6?v|@C#t^te+L!_&Ak%@Og+r0@_BI2Sv&cIbpj6$n52`xt3DU+=Ah!kS&py z4Lmj!7Fc~<@nWz?k_av_%ZIU_qk5T51jxI7KiB7X=FIPF!@$XjL${^A9h?&+97Z1$ z1JsspGtr79{t5201OIY7{{D(vZ_*`5K%0>CnrD*_xvJuaM_ipX!`8pXZi)Z<HlNQX zwGNuPbWz11K9l<0sxwEO(oNg1?S5(;pPUf-@J7@XE%i<IzE^qLLH*l+&%Dj3tBnl^ zKEGKm`AnZr5=xVVb)uAJK=nmvnywKr?>}pVS`*T53|H;vH-gKRpWCs)11_Y?3cL^M z)rNf{$|>tmOv4(!idXyB=7yjD7VhZfe4a0<20vigjZ5169TGSQ7%GlrjaTKqCJ}vh z=5Py84YVI7oqk^fSLj5<8YD-L5&1K4!8Z=rd<u`G_#3fx&7S!xBBFvfz_$LsaeFCE zC;4v{jC@2gI(6yv0IX123Se_5E<a9tO6?t8wQQW&=JK@;y&3bddHyNuT}hU&4RGj+ z=++U~*)rDS*C8koSI!xrbkIFx1>+u{8WXCr+9<RqI~~rZ2m7^l!pYH~&;T3JFj7zL zbjS|Q6aS7cV_f41^*mvdTq?9$<aNxr1=T|(AD0VGs{C&Dip)Bmc_KJcY0N6TO(--} z=8<ad7zUKjz@%Vd9pq*RaGsim7>Oo^3`p0jmVS{Z<-@B>-u?h!!{j-flk|VMQLdwp z?v12Je%{*<)2sS4pX2O;bj75srEHNd;m2ve`^b0mW=P_BFPsk~R0T;0Su$;@w>IxU z+~Nxj*;dezJA$I+2JSu~{e%Xgi>?-9G=D&>^TP~%i2^DWwNcn&-HrroHrS{A<Fkom zr%6t0{QHKsAo&!k`9<id4o{JP5mMOI1V7v?``5j1(t8J}7^%f-p^CUGBTXfE^I=Bk z^FO9CaRgF{Zf6LNyp>2A5OldXUcE2wDwfYPL-aT&xrM*f>ZMk-DUd%;>B@0N)}+gg zCL>*Q6v){h8c2Ncjh~QSgzyEI<cZKd+h9DnJnEZde~JDH{ac_R0e}i#R)~fz4bxZ! zNJHVEDfk!R#pf~p_%l)Apy)fx!9Ovb6EM){`{YfOhS<Y7<&J&&_BLT|Haq7;g%i34 zFnJH~Y4n4*Crqgk{tKYn1_wT7H*l?W-wP$@^hS9agIPUuo%U91J_Y}*zE_Dh)=qNy zsSD!)u7u<1TKguk=xhwIX~4N3w+M>8IhJ!cQJr(I76)je6nF=w-r5LLRcJS*)9~d& z{6rC$)G7MsiM6~fKg^Y5K+NG1idTz3wqI&yN4j@X-2Xarav`J}%Emylzi#%M9_}DH zv2MfL$gL^`_Ge0VwA4BLzZM&ERMiaI-Y57c4PdHn*k;=U#nRZe8s@M5ij&>px=MUu z2ip$SVb(6XB%N%P(3QCF(J4V~j4>#}BtrSp><N(lu$xvFZIANCf#n;bk1+hpHw{Rf zRON7XIzU?oQaB6;kAjcOAFFZD8TcAL+QPgNBMfkU!f|DPM*i|3bOkjv;B(ok*Irug zzrM|10uC<)c6bCv-SGGhfXbjyw&m<ON#(AhDOmE>VtkWmnK3H*xEpr3|1tb|y5w3F ze2AcV$IgCPbJHX)Pql|zJwQD^OFY`+Mi~qfX?8kh6b}fZv><FD6qF9W*0E9oe1EF> zSiCO5+sI2B7rcZuv%_3t2U&bm^*dcF@I}CejbLFW17YZ!xS$SN`3aaEI55#NULL2y zo)T2Xd<ZaBuO;O}O;!019Lm2nuySsUd%ojy<&Z5U63{BfEaN|<_cP(`oliUK08`*O zUuOUNpcg=2L5s;d)|>07q5omhkb&RebWqIPP@A%*$lEzT-o-r<r6V%TPO<*dsz>>_ z?HD%m^d#BgCIig&eHBH#jYV~P-oVO&pGd`BZ)vw_x_mQ?1-!2o-~AE)1xyCj3>YK) zT2wFjH8HxD8ej8XJ~_MT2|n_~^qYBrZq|(`zot4O>Km?I-h=D%&FvRouR7zT@Lk+d z5ghG#7#Ixm&8y}p(kyi+zR)nUSs;oojl>UBD2IYT_jL)7=i$)2Jg^aSg;yf4@OZUe zHxMLe-$mqlgP=#ET@O$IIzu_!by^z=Ueun3(`nqEJfUZECV~WUHHn(I4{tijsqBt} zTHjmMnEb{am2jHPbma>|<-Z|JN=RhDX68Tt0JP%z{rXq7jc6WZj<TJ-<Y~B?BwWiu zIMl6(JS#5_T|Fd4mBYuQ(QA+@WM{X)%_IEaR*;)f!MytV<3>F%n7Y_jM>N1$jw&R_ zdQ1C-)L&Rrtn$n6KUj+VCT648hx-;RVv(ZQ6O;RgG79jo<C)%O_$M{1;M#nksswWz zh8!s=#%(^NCw+*1^`0W#Kuu{1E{Zt?>W7Q(*!KLj3(mFt-vMS_WU*(X*-Si@)GTDC z*W7pSjN=5BQi|GiM1OI7_TK89o@Gb0QlO@G9{`W6{k|?Jx!Y;08!>%qfxxGC;K1GN z-GRhqCDfa%EBLG1CT#N6-{jHJSs~h`tj$m4ba^%wEpV4d%^8&#ETOuB1FcJN@0z`P z%?v&D8Os@91_nz$nc#*{J%Vc)s@7YHf&CRSS5p;d4bAr1Mfz(RY-J2Lrr#f9Z<Llh zpgO|5X2NE^jY1`SOS>^KnodP<mJ-ulL~gbhy7CqP6fnpi9P!)D9bS&FV=-f)2V<-V z-_HL$4Hw#zg^Bdo_u35e#Z7Mu@AR>jD8+C)s+2o0%~C?c+yiOb-R4xt-|Y*5L>MLc zGm1l<#5MgGSYcV_G3^koJh~z6MUwk8JcZlOaw&o@bC3*|{s>uU1sSw!`4&*p`%(qV zJ9|jQ_a@jgXRpVNur1}Ue~r@`rpmA=-VaH5kw@|47vK;$V373wWMb*FHRzD)+7AEh zr~<^nRMSay3#frd{x!RQb3U$d@Ycg8=!-r1e=AHZbQ0Hqr{}ECX~()JIr2M|9BJ## z{_lpik<pusKJ=crdhG%=xD9jgH1-k&%3z2ct@<v*E<XkhME>*oT<Vhq%p)_0-@>Bo zvzAsG>-b0sar7|vt9#6Id`$Dlkpws>6}0iacsh18TAls5z@t>YGThpDOs)p+n#Tl& zzU<vm)(_;e-IdY^!sCGg>p%-k@D-i-+YODxh3dpzy32Vhw4Zvzu~{+iyQ!gT7NF;` zh<imB&kgl|Hmfd@iS10PV#SAi@YgAAOrXKn@Hu}?gRaN2*tvZt9KKrA-zV^I>m|}N zPtDt9Ag*BYAs`8(fAU(=>(Gy;obx+XZ@Y=-%WjK@)Z%O*7<JaWYUYE3-&z9y{Eh_g z?K$&fq2WDsTNK&6cvBzw+MLeU8iViV>$D35O>w8GF)^~-EoSz6T|kwOFXYhTdO|5G zD^cmsa8tFS3S;w2GYrJxm~|qXd?rHg=k1jK1oN`b<1~q?mMUSC@Cc0m%Yrz-{vn?T z_ttdS&W+KKXI^VQ7XhF7r<JbAqlwWaj!N)>QwR(>t@}B|Uy!-ablBDtYx8ang${PJ z$@}++rtmQ2{oz`x+<VbtHYFeN=pkGrpW%ByqLH6RALubAw5j=M9UbIVWhTx<D0lPo z;l6x0Ms)?(hObJ&=!#=E($EdmBc89@baKj{BPTtpa5(>Zv+QZ4IC`Mm4&-M!@_RB> zGomQ-w#UxZ#!rWbnxwe;L8n7pLmL|wn*F=zK~^5SS)0SNhd+Xp52<dKxeq%E7Knsi zb7GrW<1}LLOo8=DpKAbLo^YZzfvTw)Ysr=(6yIR9nvcV11;Hm*Bv8=CwO>q6P+PmN z%<JA+KBaNRZI{nBQlkN_7J}0yoag*;BHK>}O(T!8igl^ca&&%#CIX2Hckc`bcSl=H z3!jVqG(9v$(3Wwxa=p9(l~LI${G`TpPq8G~sw8#OY#1m)4(#M3q3TSFoI4Odtj7Ch z`-f!Nx`k9H0ash#Cw64bj25pu_aDO32R6pC$Zt1?Ms*sx`NqLxD)J6rMWkx4!3IzE z?L1Fh%=A1jwz(|=R|U_)G0^8o5@?s0rSYO1j31_ljL%Qowwt_IPRidkTv_E|nXXjK z@mkEwCn~njIbF;ZNJ>mdZ;k2ZSN>s6kz|TYtXR8%JfzE{eDtKi<ESdhc`10@N%!4W zy%-f#p&wAnHDEL?9RK6hA1(r}Ln~{2Fapys>ST_K75AhNyx=>Ia3qh@;1=-HTDRM9 z%3$_B<H9#h5=Uja*$GkppM5I@@XLej%{f;oqk(D8B{_<;nJCQF7L>Ai=V?Eeh6Nts z^IMi1JCZkLPdr?J{v$hYYrzpQiZqwQh))YrhlnnrDMQ%SbnKj&hBqV;B)51{irUuW zjs<9wUXQCaXO+5nX~S2fPs#G6{&#=w2~;)DO<j<XO0>0z6?pB!c3FgSSdNBAz<6~7 zN<G+q+rP~KlL<(-enEmvy?GZ~?B+HYSLr!=IJY>cV(5pTc55()SZu9NSR20a{sBR0 zym+lxhAqfh8V@6&t~P;w%J3a0a9<4mS`n+GihQchsr$Rzvq|b-d9n%9eWEU9B3AE< zI^ncIk*QI0rC*8?b9!GQ8%O`H#|dKGVM~1e-eCsOA-sAa-qg8x>Gi@Uk#6B74|kPM z$L(uk3#INiKbR1@jBJPHAFi$BW=zL_aS#9s-<UFu#HzM&Eb)vTI!zy@cXlsa#B-S6 zQZg68(9nnt()I3oSZP)1{XbV}hgi;Z_G||#3Pzfr-={b%<mnUIG`)+oXuEOKlDTcN zzmynmCUQRxU$zz_E!VGGil86OhKRs!ZY@S<Fw3y$sto0hm)z|db#L{ItSHjqBwioI zpxM_`uW!O;=rb=l^xdtfcWXpc?{B6o*Ird`nRVmw8h|<zaXy!SgDg#!a_y~$JCJK< zhAubP01c#6NGr5PM11LT<Ji>pO}$Gmzs@eS(-5VGFqTTprK~$F=Jc!S4=@u<GRniZ zUwN^Af87L^m1%mpbUa0Pa>N<$F|_eoJ#Db60wy!(7ONG8^C5ScYiRK`j*{}hyF@44 z)}?fVP<-C$xc0DsqIZ7vx5JpzjoCAliQGySJMRGh!0cjP;$`45Xu*E~#`j-15q70C z*7y(8+x%O0@IO?q>os6u)MD!zY(HEp^G~85|Ked$d@lHmJ9Xj*2KOq9bhxy@zU;*S z(&Ks;IJ$bc+FC5&GivZwDMNJ5qnSs4JdQ$P^5!CRX=58j{_v80SENw@rcsM;i}!K! zVi&z?hKAq@wzCkWXh=&i6#!4ZyY6o6u)~ZJo7j5)v(=?PU=NWofJ6`~Jh3AKVT#P& z#)A~m2?t~@-}cZKr8`aG4HCVT2|!)kdeFQ$Y<ZjsC8x$EOWF$bUe3KU8MyNfF<tB# zq1@D_=pY@r+<3o`WU9@7Eo?mpMcIuzb(k<7gMvSi<?BR*SJml;1cT-f=pyOjXE)qD z=i(Q_0cHsaz~)N0GN2%-hw*KPJsXMrDjgxzJhbbH>KyTC(|#^6tSe_Z4)atr8kiY0 zuTD19U0?9@;pesca(W5n;ZyO}R9&>_M7nfEF~|VW-sweuTbEsgEyh97Km%N_oN3)m z7^Kyh)+|clc&db3HSaw^RiaV!VbtLhBZC{AophU+{=q`_&1o55dK#MyVJWID+6g^N z6Q`1odaRs8_&&|Jnr9VbSeJC=VHeScd*27ue%s-JB=4Rct=x82UMXifEP@vCUGw@C z@wJ5wy#{P`HzLmMH$rF%fJ_Vs10r5zjR!nkj{R&X3`XsOTV}^=eM<gX`t)~NOBcL! ztF|7s57b$;I^U0?LMNEU>0s%9LLsX+XA)y!T0d&;GQ^geXp9#0j2aqwDYX{g<uWAA zwQX*G&Oxbq+ockmF|tNnUJt^F(-Po+8SUjl6}42G)Jwec;pno;0SLyi-&`dRm@R9% z{$5r-qYOMw_VEMQ_dcliH+8%ZPi3_U1K$7&$+s37+cw^hfJvPOGyGmN{=oGsB<K;@ z?hB1LyLxA~I{yON$p0pqAzX|bce*31uM8PuaCp8-!v7VUDi3kvaOvgo&E4I_Kug=t zd06#6)z>*2{I9p;4?BSU@jH&~ZN1!Hg(9{uI*<1q3qjxM9_GDxar6NE*{z@uCG}6) z#o+FoQ=6}En0vWAn?&ty{86zVe6uX>e#}S~>vDi_UHU6(?a2CV>sO=EC)qR*h$1IV z+Nx^oE-N`BYn9G=@Y=pw{HToM9$$aGeIP$|bx)O)3m=~&1cvQlT15WYN?o|n7$saq zMwgkmW?Lu(ZjOuSIV|PJL;4~rJ_v$4PF>!L*a2qqU#9-#RM1enJ%H|4FH64m9xI-) z-$%wbT2>|FMWuC}gcB-7^><bNJW==g18*UU0N3ECqx3~~PrNoR?_eGI{6P>itC@`q z`)i54<omb>z+=M@WCVk`m^V8mb)o4r^@I}p@=Vyi*W$wBt#B#RYp*^D>>8Y8N-5vl zr;!f+j!&^uZ_s0Hr0Yz0K0w3sc<Zi*0iQ0KUsG`G#dA5PV{0dN524Y%q(Cxd=Tqn| zcp0zm)yys@Cm<Ew^b07<zAE{TT;rMD`-^;|gT7?<LYl_6AnB=JA?-c8y#EWd4w<(8 zrZd(S=WKEV|5A+;o1olWn`z%a$&uW@1j_XF;AwEiJm2xJ-$L8IjC1$9ml^T%ag)3X zCUatZxcR6<a9i3n!+(5CSMyol1CB2?yEJUumHttsN1-AeLg3{TQHoC!IHj4lwYGNQ zh6fMz2L)r$t#&($71eB6dOM6WfO&jyvI_6ADK@J5Bev_Q;<ca9DPL07cMaoD<ZS8t zDv`Er6##B~9XxSD;G0}eO30g8Y#PKB-CFlEC7lhTAzaJ}fl~p_j)TR_Bj{&Dwlc|1 zlf554@A!h&BWa|@AZdRJ;TIFrEfsVyJ@+IVBa~sdUxY7MK|CRVa}<`GEb4`M;7&9? zUKu_+!|&%(qZRlb^ztWZ@KJN<P1=|1l^y=;6HnCEvzaWE*ZbAl57{@{Nc^`+(J8E< z)BLq-i~J`kl?!5!r)EPr$5-oFy}|r#<Bj|~7cwvNabV|rBMt{c!TgvA7%l6f-25=C zQGAUgsNv$9jIT~|87Yf>dGe1pJp#p9VNgM9^QWB^h3|n(sN2JQ9M124y&rLWUOJjA ze-%mi()lnf{xK^OM-bWI&!3M<HzUSszF@^3Z3gPN<RImWm!*NpMg8|ltkCF=pKW$V zSV;r^IBczN%wrnKnAqPS^R&IoKQNc)F3Y%Zb?xQtupA6}b?p2NkaVPsHQ2Y8W!gFq zW~7~e2d;wkFS|#Oue{fF!jUVuS&XfJ%zV%t$vn^a{tID7d5|@EU$wG(Fdv<-M&x!n zS7Cm}zJF(LE5s(GvVPVZ;{Dj#>@({a{Mmv9{*G>LC5$+V+yqi&sRUINK+<bm9X}Ms zeNz5#?*wq+qWPSVq_17Hmjg-!YsalIMz5=n0P}y!^nQ0`POFDB*cs9Eqncc-Kd+_j z5IVHN8DSb<pxFWKwF5W04}_-}M5MA2lOp?MZd|(ym-?`|M?iCu9q8ihRhg|qQC{EE z=Ay-_pAN)fyy+j@S}c}}W}%;ME9ysspX`L%G4-`R1aqlsSMhv*`=S+P(yw5nw-KGI zRhBIko3|!q{(wDWwu(GzZFz)^aLsVdIoUc{Y~ejp1JnJbc0t|9T7h7$FqXAGnGRl_ zXs8&xl!iQ)ZTZA9`rDOuSLWnn9+UkLL%qrj&3O+Ja?S<{reRh}(E8K;FhJzUY2$l( zu0L-LZw_2HS{RLum7Xt^#(nOAuJcWb{EA6gQM`QsmVeip)n_7ml*n9Tt@@lFh~kfQ zAu!Sa7c(>BeWs7*_XJO+#+q+uX_Im=_Cq_pJ@`FEz@Bp`%?^DCRFvEeo}^jBhG?2A zpDjmZ(v`fF0VSHmOXaU<$cKi<tcg|dW?sL|wwVu0WvtMbwjeEW?#@xw!J{B8(k&CE z`Y-EEcMJY2)ci;2mAo7704tSo{kO7Y8A<S0o@t|)un$_$g0k^i+x6f(Y1*`3wr!;2 zDBu}j@H=Iv{&Jjcp<^eH#OQe8zjlurK3{Or^Qp<W>xXnq792wni&{l>;-mi*)7ziJ z{Uu>Bl$qnbayZSA-7>%0?`+@Nk9t}OCz)LV`EkuNuKj8>F4q7lk<qrKKaT9k{c4f6 z&d(QDNI3jjr|-?>{bn5XP8mty>bR?_E=%iqBjo+&PRW!XA1qhgw_dE=X%OWjySNG> zdO9!g=YP@m*-T^#RqK=I7J{L`NvdiKIQIMtm=WELg@Nk7l%0?>e8fnTId23{Jxs$c zG&QjQfGpnSSEesV{mFEA=9Q`Af2*H~vscEU3X-F@>HqNjLul@DvFYDr*d;0$ga3p^ z7h3(Rlog`!$@sJOe1tcOrm6`_-Qvy454SCm%@tqsAaCE=!a9z}`jhsrgfKbwCz$jr zc<)8eileYkujpHkeF3io*4`fXXrqa5MmtejEv{?eL(vuHB<$M94_*z{xTh_L*k672 z05#t)N2*y6hPr0xlRJ4eW8T(+pT{~k`P=hlSCF}bA0kmcV|u^fTlp@e54Yx)#UJgy zo{!p+A)`CfH^90=$GJ$Z{-UmU^1FFGO#0$}#q@Ku2c9cNJJwxi;y}rAtImDk)qb^| zv+?KLoGpggdoSV7H@b6|^@~j5knffX7{g5VcuMAPSb6r4u7xuPUm(pMaJ~g{qq;&* zzO7u|qPBaE`AGdlnBNLYHrHNZMO*7hrNhi^`7E;j5N&4IXY<Pb)k(8ax29X)@xm2i z7hf3k#{=dzK6)=<-cM=$N@5N)a-^jlH1L2iNO&Qk(94SIr6S)bfnUCo&tx7#YXF^2 zr~5ANS4T^b@Wmo_yHL(E<RJs#pPswQQy?`xUxmv~E`c>^(6fTuPEi8s<RD1Mc5srz zxLU`Br=ITc-8`Zb%E#6f8-Dg%uQ}bgYWdZ|cj$|dW!7kbj>pN&>#e$bD}HyTUUSTh z!)9s&V%LC$tyYi`Bk(?@G9?;+;+ysTG<?6*V~p;lIOM#HmB9Lf8+N`xQ1Cpk1?Y|c zTb{^oEgn1!pXfd9=4bE?xlQAzNsA4M!4bOubI0z)voWvO4V7+SpPC^Eo0`!Ok}u=+ z5KbDHj;@kXp4@zhT^X4yCC*~okm0mh4XJ!6x?%%Gc;f)S3m#goxb(hQvPF_YKcsyV z#7#!V+nv7+tX{P&;2_65-jHEfI(?RP+*GBlWOeWW9W0>P4e$2A30??DH0`c8V$BTH z1&g*|E%CO_!-?h$-q!CuO#CX<U%FonZm?BNp!4KQ%=_kQU~j+P6S@r>sZETx$Gq9N z|8y}F!4pL}E3f=$Ui$-=!ud3*qsHi-GornyZVntb;qFA6#Ht<EAC7N4Md^)a_)ra# z>Q`aNIsWX(sTKRa=8zH*&JunXZ6|^e%@ob>(bfY6#}<rWp5@BZ>2t(tp{4?{=wk1k zIy<+}m92v13(80lD>lybaqq;2@!$@iC!shCmXlts1_T&D%UBZzokf<U6445feG)9l z|40BMa6_=~(<w_c|EF;GuM4Z%ef?Y<Z}BZs&R|;%n8@CGV){$yrlV6;0yZDQ^CkYO zZJtvwd)srlN1%0M?ScMw>Z;qP^W4;Q)vGRcy6aHRY#ZAWIS!2W5`f}LKIyk$V~!wI zkTl7Mv+VPI>uGniSZ-uey5tAiwwg)PHQyA@Ll2UbFt({pC+KS1)|n0BD92r7EJ0fm zR*{vW;6_XOMH$&a>dM8qlEXM_q&%KXoNg0KRLcd2aCO^{R8eYIgG*nm8b??dJ^Pqw zs#2AOetNIN4UM#6deGBLikDYZ6*jFT7WbQApZnBAt8G%lwU;UUhdLzFI&6q?`6il4 zl5}Jt>0HOgUaDnoWP;?Y!0kvl*Sv7JHfy!=k7-Q%i5-t_iciU6{O#|fE7_sT5VSc- zrU5bh>p>LH`i(Pb6m2=8-PvUn<fowMm#n}pJpPoQyC_^qdLE4W3c<Ayrt>V-d_)=^ zF9)q55Q{86XZjlk+mS+uCm)JlYnn>2*r%*0qpXW{?{4<54p7eE4JPb0uWHQ3*)uNf zb(#Dz%pM!^Rg<ScM^CskyQ(|mSw?R2!%}}x`GdeogJpAx9Ga;+5h4C8i&!0Y2jy6N zMQ6vC$dI<()RBmc#^8K7(8CQH_L>33xvc|~xpCIVGGg+%jvMLbT3&X=t>i#Gc7u(P z>a1f_Uz0un?X3M>+q_w0BACE4!}~oSfB^C|`H}5P(w33ne9Vcjh4jjySV*MbU5FPi z;X<P0JHN+ze!a00wpT4}U2|Myryg^qmRnD=xm}OdhGFos`>=`mwAp=O6NzmIiObBE z+qvertmW(BO9rpoE+BiH%EuFrtHI`{A7fB4qvCHy(LQ&ZK8;pFzHzMxuIR-aZ+uRb zzdEgY&EyAs+-V?ewqL^=#in^_pWa~miQ6g%9ha5?G1UZgd9GWF_+>Ja+*3^|Zlbw( zQ9b4@gSG3$NQ%Qz=)N)_`(9vwa_8NCb^MPTUCCAQM})HsS9acVTF;-+uRL#f1gDRT zvqwK<IP6U<qxYK59~BVxb~YJxsVs-JPYu~Q&{q=8Y75XS=|$~z&IaMWy6WI6?vP`~ zhF(<*G+za*PD+ph|Lj7>hNKBIK6hL#;_AO&fuUYOYQGE(CC~=`wvWt4tk*G?(m$fI zKPmhONmt{Mx5bayIUVf`#T?h9s@-aa?&O9Dwcoa>)UOg9W{<_Z9i?~$>@^QFQU1*0 zhLa4OXe@R+eDl_O-MPL><^fR|%So5yhc1A~;$F60_k{NY9j9*5zG_PNpA26ikCU*0 zr;bi%A14yW9u+C+&35>K8ur)+Aq9>Nx=$nf?2!iU_rf+(zJV$gIGPdkmC@q*StF&* zf7<t6NQENyuI3Q(Ip2N_|1;RNjNc{?ZpBW1(xCg239`NNp1PaX)54hY2pfX639n#n z@8a+kGG|6WDq^S>Q_Q}zSe$aF_$ZiZn=jPUL}aks%1Ta^tPc=ib#zjvODT@k(T7xy z)_upnZ&Um$Bl%bCy99YRn9UEHe)n&^@1NpB@9%{FZEndRuqlAyk1g`<tanaCHXx?G zSwK)hXuXPFeYxeBHe54c;CgkNT0RyB@o1Y?FQf<Z;5c<^gn8e6r6zET<x&JOca-d$ z-}(O`oyJesWu%C(w6XrJaqhS>)-7vmg7R@}E#ZDW3qPTIt#gUYoUFh#^XCXT{kD`J zU9fAv+&FuQ0BD3ZCL^ewVe(g`bX?c<W$l-Qq$I<O41w31{rXK$5{a1c?*#a9&Z?PN zkTTEZ=ljiM**VM&wSPzse&S4bA(+8rd&U#kzOnEXP2^<;>LFKou&u=}k`b=RpCfB; zbUSNy`om0~n5x5ER0dj8?h-@7!>;W%wc1N8J&$v6DI*`{%x4d{-t`WQHSS5g_xnzw zQt8ifyU9kVl6`QkOtMsgQ|a~aQ65Fad+)>R2rRR)zF4=wXv&yQh}!Xx_uJw^iFpuA zan-?FNJ$CZ6BAff&s>rEP-^$<9R+f7-r37B(!t^Gl2yqChtwYQ*T7L7oy%ngF+6{x zTx{5mX?acBO`ARIQL?0}hvXLv5zhopT55H(9<>JeJ;dXeg&ck?5mT|@5(EYE?O4l) z*7z`jTSu0i!Vze|V(9i7nf$GfJ~N?U?nF1K#H{EFEOm6WNAR`iSBmfe_RcC;vSHuq zrwAa?@>YcZy)5`<ID7YXP7QnOcMcdD`$PZ43CGwxRhG*(1_huEX0^rV%~t)8+|?AF zW!o-W9JO)8pv^ly)J?;G_M=F?xII8S8%(3yDQhzOEIEq^(DxFosvDVTK9rPM){ES$ zeBiOrF*27ana@a5{~)?Hf8iGWlhE9@1b*o!9&G%L>D3iyW!7~p)GWECBC{u=v|^-c z!01>LX#5mVs->grjWJYhUAP2kKxn1kEWCt2L~%5KI|~}6w8Q>#e>AseW>hj*DCf>N zTAC8+Ahg)0w)AjI*JTa$gpPcd)BM@*hvd{hx4-keUeDq)%|Q5VmH9kC=<5h>y);s4 zN*h%vNl@gp3{{0l<ZOTOc|xHZebqGV(se)Ts9A<BtkkfV!`7V!)DVjZ>(T{uCwg9> zA#ajg1B(l&?Kjh<OQX>jK~lV%Eu+3*dgRq5T1>9QDg#$!JX}Ca?o*Gc6pcz0MdA)y zrXZ?a=#PRjl+ldm26S5azJO31c9+Aq%vEy(<<XG5vN&19scK%PtWmBk`Q*O$yzK0~ zY7-<QbVUY8WDu*~Ff)G=SW?naB!pK~FdBF3mO>$3+tnfDU)AoQPvEN9G3Z%a#5L)L z``5S!{!upS<qnx;fW9@7?5#Z)@|pfoOw{kVeg%!3<+S9TPQlN^?|~~se5+Rc;Cc?c zt|0H0YsiIUEwS)VJuGj2YKWewY0CY@^7Ay>Huh%t7Qs%J-(+nV{&+z^QF!6d%g?A@ z@~*3-q}#sZ+l=F)xLab)Ua{|(Jq=*jX#V@w!MrrDx1(ig*?4|+jb}Nb^KGQBpf6m0 zEOJh+G+Lx?zv`)L-aGZQ2LP**QD{Zobef*9{VkuTB8(*TBVsjo7Ea*k(sH7WzCyv9 zt9nIxJ8x{SKOr4)g{~AaFa%l*{87iT?a?V8O}SGLJxG2x6Z9jt=`x-2_s&^AHdign z;HZk-mcZ}+kMqK|;Cq^nblu-Hu9<yf&A<aJ$)`VndK|;kNh=Pltt;-VN`9G9-JmuC zy3-|VQkby9?O?F|x(j$Kl=6#AbhoMWX}3)gu7}<uF6+l5_Id`RRz~sMA9V5v@XSVw zf^5lQ)R#f&#_0{T3;Zu@qf#p}xcP{gd))dRmh)Pq3=*M2!`b=qLc??wyzeEtvItet z%YD{JFG)^~p?@BE`D`TOKmnUT?AjARh(R8f7IpbK+c}P|?;h~hGFT29HV{vbVpvo@ zbySm*t|mJn<0{dHjr_T*kD4kPBExG6`*B(RD^OUB_8gZlzj4z?_WOONj_G5aLQ4Sh zgaV%S<Cm*tG8Q+-@%kPwwm9j-MDAF2T4Un(;&7z?qyY&vlC@Z{O`_P+2hfmV<_o(b zkiZd3WkkVKK`f$izPTjgf%_K}o#Y>nj!9<3B*RLU@iLQ^&P%O?Pq=yK5eOrLC^jGB z?Hj)?enq(cO7847PVSEY`B3u1BJ=s3Rw@4IIR~wMY++)0hlENGtwPaD>}xpf;W{~T z_7eM_Spa2De7vdEbb4`@;cro}WF#4jPcVv4{&>zCtiW&a<?(Q)@S_w_9EfG#Ry>8V zPh=&Y4SjE-(<703wAf@LB1_RPnK!!}hm-PI1t6F$2Bl2lk#K!kDKKyA=QpgeQ`JuW z8VDf2`{TbR`yp&DQmmGFtq8Om-k7XlQ6W}?4e|_5dm{kqCddE~WkHIcrx2k?U<k;- zr8r9M#Tmi!{_mV{ua`Xr<R+^0{QUJtOtd?%sOxi^y*xUyoi};+j2QIAyu*AKQ}$_) z-c-H5uDy`;T5d)a+9`X5KV{0PN5m>)GECh<2|8f^U$rG0GBNZB=f9@<k2=;W^8LR} zHzERIM|M}H67W~Z(zoHn;qZP&Q=Cr3`P~661XsjwZ`IiMh|WSiC$aBM7EN&+Msn{h zI<H{-`EZ<0hgv;+5+`dV&xT}!IJ;D#tjcb~;{95C?9f@nqxml2y>|B(1uMVJv!(q+ zf4p|fuu7E}W8Q6h;Fgdd=RHL={W!S?jiXgl&!54p<i)<jm7n+?E;}`^&|l-ldD4TY z>+RoRWie0Ac4rmTv;Sy*)9%rC>0;^rtA;<s)zHgn=oLf)+;Fo~$M4>3FLOJLQ^N!u zS}O(Ry;=C2tT4a=9+R#k)y7}xd(aXfZOhrK88kxX;K*TaVaa{b2EWnsdRotJaS{8_ z9kM~(ly_%4R<nnGW)Qf+Fv8h#f1}&Z4ki8SRNubfcQ@j{NACN*UwS>&QrMx^_i_*N z$1fKmc@5!svY#=2M}_u|rO{>xhtC&mYLc8^3)>k_c9NsEiI*yWe23TG{qVE@;l!Pl zuf{9B*6A*5|6Zt5DuSS=28S%SAoOdH?TwNSp`-Rw`~zkx3TPvhMCwOKLuPOYwM&{J zi!_E(9fNeWPht_yf@okWAr#re?@n3UC;#0skdENK&Xo8~;?oW^rdPNZcoN=&!iN%C zfdc1|u>aE<6fLl&Cy?%95xQCNptN7%>Po2?4*6nidQU2te<}g@t#f?Un(15~pco=p zlocjB&n1jJpJ<S_W-`oHM(arv(jNg{mz*kOu5ETqO;U#?T9qw<#netK>oR0Yor^0a zIVV?QpfVXqpQ=Q&tefTqnkRT`esr|nzV(jZdc;e`LOYrGW!~%_We~5N2!5}JZ)6fS zP%I3)%@zLwzx~jHo}`pC7T&-U+<+rVQJzpd*vX@em<SGoy()g|9y$~=2C%<)iy#<M zSs>w;HPJfu4UVA5dt9LE^aFL~hu)RczUR?ei+V`(<h?1997iYh06J%f{-ob20yd&e zmyw{msbef1&h-#$y5jGlub=xYOS~xaUmJNx7EAx5)csduX(JKxEFXve8^@kI(k3$h zsZ2g+#WrH$qs_2cVTSjAg@4sp_du_lCFiPVp>9%!*>w5iNSv-4M(8lzr1`vSKRKLX zkZz_;FVJ;hLfYe6S@?P~lON89fLb5dhPCVHk0Fq5g{8!*g5^5g{!PpbLr7^1LP_WV zs`+rQ%OUv3IGk@#-XsY=p(<>2pbjC{X%68b4MbZLpLoS;n#MlE4==?^0W(H6WqZHC z{JPo{ryqj#+2Hn~NmM|8vmj{{md4MPxs7Wtg(rD<>|f`3H9m{F5>_md6&$N{&aLsI z^<+UWQF};*nK7G$x%??xe=X8Q>`gc6cODpzn9Id$GPiTqukQ}UKevp2cktsbrL<nV zlJ#nL#1Qc~)qoYLQqr9NanHQiyTc20Ft8E-0A9>$Uf-~*HdtwEKFag&fQ2Rx%<w-o z`Lolg!esTWZXN-?&g!t-+Wy{SiXWx=5q7BYKr;V+SPm{`UZT2>=e9=PFxw>R)oWxO zw6!jd$2uQEHL5*;00Nq3wNJKt%#CMJp$_c@O@1gLBs4<OeTP7cFoQyaVQu>lCL3E3 z1~m>~*J8ILLx{$bY^KC*S7MgK>m!<UcA79cW!&QJ*;D_Fr2XlJAt|h2hmbH8=TYf` z)Y5WVQ39hP6gUKY;EkU+$9GpTdE{*Idn^0h(5);g_8q>1*wLK%^Wyc2^1@Li{rF}P z&@KbVP<6<775y6ylbzrzPnkg4`|o=+-IzGsp4?j#F&w`*@qc%}iaMk_06AK_ewYF` zVC>mLf6437x|FGk$vi2M-eU+(Yd1aRec&id031xFn6JghlN2E)Y6&eADUXaL0H_P` zIzo*xn@0_(uaK0YD~{7)-@mW38JGoKnnP4eE3KYuA#Dd!oLaV9@#lM)?k|@LbaWGJ z-k@ZhtDpJJWqzkFV1~)0*77xA_bfil@75V)I^w~*7<;EE+e4&7_F_sQOev$I@ucpu z8Xj?W?$~M29Fz(~!`2&Z<7Nnwd<HiP4&CLP9}ca-6Xb$`&z3|gk|=PH+;as&pt(uR z*m9t~qo&KLr<Er4N{MSxOHmb*{D~TG5!G+4vD!<2_WPWjR*nv?)7YD2dqicOZMN0F z9n-3Ep?@Xz|COJ8a$<@^e)zYAq3Hn;sM7bhM`Ll5qY}{aU9BzT=xiSZDTK1s_9zG- zPAp1kAzG~`IwCdcn2LuK4g&^P@sIdixNX{TvjHv~x7K=qw`sztlyH+bj?Do+R5GZp zPD9#*WdU#HH#Mmn`l^bb)Di9J)}atLSwf-w^%p!3arJM*lbR)VPgPsvShDYw8{d+T zY}#$K```l;2d&MnJsdb6$UC_Xk4|*nJ`vKKUB8v-6JM`mA%X0dE@~>(57i%tbrIg? zX7n$#-I@Ao5zQa#`04d9!6tV!Nd8Qd{!--mVY(IpqK7ZB*-!Lmb0$w%{_e-YH=IZ+ zLlby(b5`Ia$nCSS&XH1Rpv%l_MihcpVv;FL43>jFvTwh<1947m9_jr8+b(~cd^}99 z-hOWO?|t#vYP2n-*$<OC)nPbpumt3T&71E>7Gjs{OsNmj=8*Y9czG56)kJ_f_+tcS zlE$t!bKBFlDXYGKCn29~gxkIE!KbqgI~aX|{V`g+!-=6#t}Vw)LXG5+1>9mMT?7*} z3e?$5bPxHaGU^bdEzH?XCJ2cqy*??=#AcG6qcZk{bFJ^~p?y`CH-U^0FBE4e?xYq^ zPD?+xOjKl_Xl@v7<98DrSA#J#A>x)A#yIcsG;c(>9D-bY@-#EKNK;ewc{O@tt%CDi ze7En3;6c9OM(A(SC7`YT!twv3>Mb0iYP;@XK>=w2=@OLgZbqd<O1h*|x}`_DyIZ=u zbI75)L%O?j;=}uXp6C62f5FVT&UN-)d#|<Ee&=#HDs|qmkH;|y+Ein1Rf!<2PF)%) zPVI2IM~7+KmrVRJ`-o~xEBF0XPHA;LoyR(j!XRo0hI}mP&^rnYBqXE+2hnRmTCP#Y z_*VIM<>GLJj29g&Ceh+$%mC|=*VVeNd>p>a9UJ*0n2VIwcQ>skKU@8sp3h+dUPaz+ zyXp9&O6NWKhnuE>7!R=iELct$uRIoDP*!O|3!>3iG$HvF1{sv0G+QdC3X-w7acv`5 zDv#ksjx;)98!$=(QM0vuY>bsxh1$NBtg989QtM@?22_7N)Ju#%uUug--OkERVlYB` zFa`B0E!D!iubBn7&Og0oqvfGlHtTt-*F^+;Ny~XQq)bjEN9D#DM>NTGBxxc|A)y<8 zT$hL&*A%R|{#oVvnBzZ^^=BoGA)NGi1|!5Cl22e|vyK<R509qU{M*f)6{s?Btqs09 zGw#Cq54N+1j(Sgep*<I0GWU8bjkO25qh?JUp|%OcuZ#eN7XaDl9-WX>j>_)=%|k{- z3l&%-hxCYkEcEQyM%&ve?+4RQ&yffV6K@YcD8_IxHXkW={pQ5dc#m^Wm@6?XiOiNV z*1APAFl$5i0mG75w-sWZ&bd<jYPT)MuYSfKa3$S&j}~w6Frq1oH_M$mUtDU1&Ujc7 zl0{UN9&CBAKew%c>dV3B`>>v3IwqB`x=Z@rPdU|3gZaF&VYs?!;L_P1HgvXF$#j1u z2_7=GcdEYW#Q=(MRyz@EAe!Xl7+J@k_jh3^%+GjwT40$;EB7e8;1HntVQbF4D*5Z+ z#!kP{3+gl9?HqMehA*k)y{DH8t+d}i{mg-Y&jAY{#{%~em_0i7Z(i81cw(fW!le~3 zJN0F9<3I`uP9+<4j!QrL0a{FA!mA%Eud=$8-rEx9R&uJ%fiiJ>Cdb_w*(01mo?uxI zCC^&-8y0~Lkl|*(q|Bq9cCyq1?w=4|zLxNin89>J6@i5G&n(9tOGx1Y^=WrdA<-JX zVjAvrpz2d;B!NMXy8MxM-ByC?HRx3({KmY)a7u!JkV{WQYw`s5UPe+n{mUrtROk-+ z<#nq}9jfiCSGDoh+eGP*OtArP%$fUI=KieBWbx*6N;co1xp0Md{or!}8-W8ig{}HK z+XhaUz)5RB3vN_4|D!Kml{gx%F+S`Q=gwsKz3;amO|?bx(C(qA=RFW!u#&9qtKZU% zhH6f&3$-CS`4C@a@2Zzn*1v$EKYU|hOjd@rGcmQQd@EDD=fsXUV_r_5Y4m6-`}L&3 zYkZrps&t>|DpeS_)0nsWfEVf$e8my1gn<VkC-hN*siOVQi|(uxgPcoyUnmPov%OJ$ z?S*HQ08ysLv{2QW3XiZ21iTNi5evhCQ#Y8^Yom|fbjRrh{8S;a+ygum`!w~xqPtUG zv?(Rs=>#yaUGWwHrH>!)A~HS(|2Rrqb4ahF`r){eJ?icUW2zQrd-tVK6H+cLizn;$ zIqo980cE2^ZOCME;mGbLn!%l2m9+iU+$n@0&YW|9w!YYoy2`hOz{HwrIPduVyFnSd zT%-IsWU?&hmajGJHf+3aBY(e6o0~KuN200V7hoxs5dC+Od#29t$;kH26XlV%5xg{p z>VE>aue;%?!r;GSh?Z90s%D?rm2brV*YgC`!TVZv<nD35hm#th;$o-Memqr|k^BVG zCSmKVe{)OxOJTfga2^yceYLxphMn0TkfFV0fgiDDDshMaaeUR-_9aO}^!LzsG0Ni+ zu0-<i7<loVb^e7RD`^)swnzGfy2O`6I!a`xzRbOqh!{PufS5{Q-`d8C2tU@nW>QpZ zEW4~u)Hz@+Ll|I~7QqScfMj%;ShY*1bua5;+iaQx2qttrDd1A9eA2;^8HkC(?lGng zE*M31!a-=I-*h@jiQ09K2PnP6@MS;u2g+-c@%@$=C`29rpwO*HJ@L`tHosZ0!z_+{ zc4DIb{(b)Fvt3qZe~T+p-0pbK{asdHz*8M~?N!e=pQnqV0XIqQ*fI)7u23Zu{mxw5 zjjP40Dhq4kxe?;9CtEj;_eTiAi#wm=K3XtPEET@U7;DF@^t!~~WoDAl)MTLTaAULa z)O&bbBZzQLmAhDBv48aIHyv6t8}_qb3nt#KCD_RiJKtF6nkbnUOSxQgy7ehatOns; zlR(sQmA)9j$VI+ARau^c^E5SDJW&fG$V1d^0F*(uZn0^!j7`3WJzLa9k9+l!T(gxm znjnww{)M7xfe*Fd%>*B_Y|*3nBf5wvN(1OuJDOKe!a%g5bxS<9HWPZ&N{0RtrBgLc zcar+s)3DatH}<UA%JT+yIe7NtL2=c2Z5a5aiTbda%JaE6zD?hwwa%}8Lwyv5It+HT zfPu(y@^BozsJ?+DiURWaY;tT>-U&s*BzX=Q?hD^=s&RRHqK~Y%$8j^fcsBcidKn&U zq9ji|k{z;3%QN6gHsGJ?FWT`D*k=~N(Uy#W+6b)Wp%am+Wf}$jZihL0H-SWXZ*;<w zCKek`4Z|CE#CEM+0jClUcdQQKfu!zDp~%mFdMd$bc&3Iav$J%rI}PaPX`(CPZ;_qT zD%4&^V5BLvxlzlvKUs%oT{2{Xs`)IAomvPJf-ru*!8n?!duQ-a&0Bu`o5Xfe+V{n0 zw5#C&OWu0<CqkmDtL_5-J3z!mkPsUm?FhKGzphJEUDU@OU2S4)xZ3kVIGmK{tsg6l ziz2Ow_Wei31WW!3*&FlT2B6}sspkF;eNbO-@<9v!rGf(ENH7=5dPpTfj+HgTa&RO3 z`4;mtZ&WTG84BO@IgO;<;9DnoDf8XPp)q(~E@;>36dsK<Q{_X26W6TnOqWg%9m;r@ z%eN~XNPsq($&B<yf<Kwkz1KMM4mav<gC+_VZGKGeloD?Gd5nE7-J(DX?(FP9`JL*6 z3`@Dh^^cr8n*!S4LuH5@@QE3v<Q7dF1wKUEe*Vh&vL^iN(>!v+rSO2oh}vf;6Hga+ z8Z~MV>vLkhbreXs9HPAIt3G~N$o&1sO^3z7XIXL~#7dFJqG9pHI-kMVhhk;4L#LFn zU|l!*2U+iFr0E@Jy7;MM{?@}lo}R`?&WHnXS%Q^N83#Us_a@gjXbOeI|M4h##@jB3 zdeB1Wxc|ZKe<uB(i5IW(-}ukdwEuBdc;<SG6jqWUY{%(*2XBPaNDYWJCbcjI5t6@` zel2ziY-5>>OJm>Fe19E%h5e~iGNO9t^pE|C5TYHwz~1B8?Cat!%3C}he;pQ3<!)-* z0Qs@c`R5I($~W97A7bWBe=rt8rCpyOEeM1}Jm<#8HKV)>JJFd<CS^qf#9z9delb-{ zbMKP9)j`@C^w78;D#A~Nwh+40M|I-gqqti&5|i+*5r9O^q6x?IvwNV=mUc$BOKe{; z$6b>>#S_caUVv%*;6^-W6iOOKV=|&97i%^BKNb{U_~OA!<$L8<UO(zW(WQ1&sbX7R z?*Mh36{lXGcsmnScnC4HtyM1OzADC}2wa6FYSo5%25znxwdgO?(iDN$su?ZXFy)Da zSMCe#kjDi4(=3ksIbM$SeiCYs+S2Nyr!R}-eaZ?^z@QE2p*RUCzY(qe1~ctn4S!Zb zjC>a`Tl;vXla}jlfN&XhWYidEgBh>Pf4RzWzm?dBIQ;CA-p<y&zubZgF7qjDVFkm= z)3RMg-4{HMGVJZLjxMI|kpx%bvW;%W>3$*~VR1h%%W}QRrmyxEvWbi>SYBUugvE5l zwYeTS)#Zpj0U6rA=<!?}p^xwVdBBEGBbY12M_KgEPOMpde6$UZ3-lboe24Rm_)OyL zk5;z4H^ODf?59D3W&JgZz4ewL@G|OWL@KkRxQn?5=kSV5DNKIiR-1Yr7g6qNqvq<t zEEi^mx&2twMeJ-??WMyK904v^$*W9uI*mYQkW{{Gv?mtX!=lF-(ZCSbMI`lA{)EWW z8|AyuuC5J*0DQbs6wO+*|KY){Xxc&Vx{;Swsw?aKR8Gq7Dkm2Bd=B8EPk)M^J;XLr zK>BcAX`K^)KLxmuF3g?c*^B-of>JZN-4f<8fI08{e(>qH^>F0=>X~jq-ek_Qs3}Tr z84;ws`bA2-49f)ng|Una)PqrB1L^+zGW~1pPux!&)M2IVbUxwtdTrQxqXJEZ2YS$T z5UUWHHgA~^;^A-8c3i9GEg$}?R2Y$np48drhw>3>dIM>WQs^+O?qSodP1+(skD)D3 z(52_yi7H1kwKJvnS_i@<dZ=P~f3C(z@9y!kdlUB@A9=I2VXL42rubXZITRL02YV=C zDI#2pf8Y0N6o$n6tk%paUbMlfAk|LYs9bY>kF)6tB+fCPIx@w0c>jcEQXR$bb~pMh zgHGwHl&7~+zD4c}7+&-w`Mjic!G@(sWmPSlHp}5zDOc5KRCRO+*s#5|tqZrCGfClU zi2wTJ_+l@sH=lAI_(kz^74TDul{EcoJ!PQod_)wo{~bzZ1k~jZ!O601NTkqNpiO^z zXxBJE%4v6)J=m%;Bo9`nNY~n^RgXB>H`eh{-%y|Qn>zt(7GB37E#Z%YyUKX$NX=D~ zXY+Q6^YrlFR!RToae?=w7lHRbZQQd78u+1+fWRJ_jj#M2I7zVi$i-a0^_T|pe^$rw zL)nficsKM<dm<FQ9U+T(1LRJZtp`R_!d22$L0^o9y%pAHWunee{a++AqpS}8grSE` z)t+}!xnnJG%`L>3RtQFqui@8B2vZ_at&w|E4=b}$0TOKd1Xr%n-VzOp?ZLR%H|Lbw zgK(8NeU2Phbu%~!E3+2;-5eNrB_rB8rSyF<&&4@Xci*a%?LIFwJyzyt=%HUfxuR?1 z_ohjVXq#M@lQb>YVLB`Onkb22!h=FPym>rhkQ|tt>6a?4Ie~kF_8~Yu<{7Py-gZwK zN^LrPUv;^zD0oRYdtltF<ew!Dza^S#IKAW7Z9jf(8upEv;b`;Lpe$^$>A3^w)RDYf ziN<8UfMa&@XVsMsf*G9T_qZCNhz|FW*P^EjIq<9#-h6eu{h42P0*Dr5)JckWv3<5| zoS^40(_?Fs8CX58*M%w6h%A&HGjTkH5(VU?R3IBSaxzw#g`qtwp2iKp%Re{iyVVoF z{>q&2I&)cHe*Hkd)CXbr+nERZ&4%62tf1d{J#f2|Vk{<euzRgJHsdrP4r_t}38v=D zI2e)DYp-VSkGmX$511w7+tiZEtGQ=s4o`ha=f}E-UykXgUJ<5?q5a15o-d8a(yD$; zA|LM!@{{MH&o;h4^Ptd8BG2j?1;iDime9B`D?zM^VC@iU^<N^DSpnF{88+fNTVLr6 zldj4l+FS&eUyGs96cx*vgk61(?zUFw99X2(UzY}P!a^!~wG3}tZfRuMS_wR!C(x!Y zlm;aFMaT7bmw%e@V(KUvFy>9R4<`!SO9|65ILj;@hwV{r`{y_Oh8vv{McON@_?5mY ztlM3A>x3Iv#3d;)sH-!L*a72Ai+hcq-LlSbVF6H5&xh{q(vq@unqmr9)JW4WuJHn! zDA6SW5nOj@5Ru^_wkqqE^iZADduhf5nt*dZ_i)0iyF|uikm8Qy@5_|I34ciJr3YNu zSF~rXZzrQ~c>~ifq~Tt(l;^e^YTD|4sedyLJI%sNG+GSyk;N7;t`2R@M1?PTz#|%# z+4Kc~I_j6kiKjnc!D=y&blJ6VP7%%?K9j?ZXdkZghg$WeV*W1moi&swFJ8i^YqXQZ zw@B}coaA%#ENIs-M?z^4nLTxFCI~6{@_>71EqnqJYChO*JZYhRsLE;9-&?NxdnpEm zu7R_hpg)ptF69ej1&!d*Nir*64{^(_qevgVt}NR@SPj7+^Q@lMtd3sROH#YlJ8Y)n z#n?w68R};w_1d@OR1U^nm}>2c<4Z4>vNUZ}q84;~%Gj*X*s&z)`>uA{1k?5_GZ`iM zuSG<0R0uTcW}_Ou!;kYX)%0w!oXTULlgFF=5GR^Ru&1{n4l+%0uXp|%ES`zs{{tcr zY8W9_Uz*dG@@K2WT9!1ca*v-V+OxuG@zp)j`k<3%f{f!1tz*r+FBJc8bJG2qKbCpB zz)?3Oj@!;O^1F8`(Ng;4rX|5xXI(&kI+5xYYCLU`Nr%kmJQ)s;O$^waJk=q$ZRle_ z$oxumpV&2LTWp_(ixvUEUhY1LEzOUC%hl9pY-A<%W-=#F9zR9)b8Zq%8KJK)kQA<( zED~{fNu*&gip$MZ9JA5rjx*e(kFW57`{Q(h^GNk+YEj;qiX2Vmz1Te)S!C|vSpc25 zRo16uxGCif9AT%jn@M=T!Q}!&R<E;Vy+Gb?G%d%aBg}V(afBG)N2jVn7@?R|$b}0{ zN?`5EkwCBJZ4?|zVv+F9RWn!VkxAOuu4B5<3)~4K(BG&*v#BWqZ}RX=<Vd`<F;Q9S zMZN*K(3mQu1enZPWSh?_#S_kpg%vo<VJY%Sd8_@=&?<nb8+64VXvFA|B6;3u$(Oej z={1_}Afxn^=irHy7s3;gd7Nq094IS`)bO~i&CNo?;TDJ1V2IMTYGqV`++l1*5<dfQ z@v=EtxD~^>q`d2}Ezn#;DMMS5>J`|9NhkOR7r{jymBQ1us?^C6&$mVwxow#Y`I=B@ ze$seP-T}IK|H^Aj7iJdICGi5trs@y4Pd<9|=$bM{gW;mEY^L;5Gtxl$bBE(&VJA_I z6GZ347Sr1M(br*S_l$B>XVAK`K>OYClZN8T=P$M*FkSWG%fp;1Pb3FR?vH=mXJbG< zmtpWww>S<<20iWm_B6q?`rjwgPgv>uYgyjkALc88Oi*lA(C?&?4BvpT`_zH9x1nK{ zmnv!^GmH*L_qUhmak!Ocz^`TtzhT2wc9+J?Y-N&9W1s2+F~5~IIdJigUU}A<!%K&n z1XSW0WS(U1>7cf(){Sm>XK6JL>da|j(vHK5h2}h8uSj$9@<=ZIBFeSl&zj#7X#SA8 z;jVFmc87dJa^-Ltz0I%DMHE`dv<o+b5we=Nb*xF!+96jdj3=H3st}-$?}Xkmn1@8R zHp21Y=eO6Q#MnHjTUq)a;-b7(kU8Bwu^wFL!iVTpws20nao`_pFCafOM%)!@m6_-_ zca3yKO=T&f)}V=W;s>wZ*b8AY343@MM)z+g+4*j$rdc3=?r0nS@YcRnE!Cyqo>>?+ zA@da!)%RWc;HS0I1-^en7!9IqB&0a#uX5Bv+v-g<G==0l;o-ZthHxXO%`wn=<jdp_ z@_xz^>PXO>8TcWH7;#xV{l8{QD0_1MX>eFu2JHhU1iyMG!z<t>1JQ&N6*@vHmAd2t z0+(<*(_33ltDU3(xb^trfwZUC-I?6-vz^{OHPZt!_qg);<F)IY>fn%*l(|V@$tuAl zRq;^Vdk*c<Ug8f{7{V{$Y!_K}mV9+0TW(ydMnSUuenGqukA>voPs`t4qWx%dQx5&h zIjnBcCSIJ~f(}!FR`8=VS=LY8YrKKJ8L7jaZRVf8-olrjlm@mrG8f;}w&`yS(x#jv z^|X31kBwr$LV&TXFfgOE<A?G2z{II$Bbu5}bp9?m-Zn<rrs%OI-nLjacc+ub<?~iG zr(X+WNv9aMf~sk^L|#zd<Qiqq#+=)t*bDjmfowjx!t$B^1A)cpX#R>f`KTfJRN>a= zap~J5F{k45ybX0%1P{uVe;om5J}!73C)F<4{N*IEp9UA6&BLU`iZRPt`u{cB`A4k# zY>ekA9DKyaB3{3`vu=*=P|mjX$o1DiYy)%xB<3_8ply%AZ&SGJv@-UACf%7F&Jtbg zPs7j2GUJ(1(v+Y>uf=Ng?Z^~x!VQFQg=AYOM-Sd`CLcUdJY;R?-6A3Xz>@(UY}w5r zKtvcz)`0~O8w#~u_~2vI&RyWys4n@}I`{&N?-Zs$o{+xX!Zb9dRcT(W`hqWE`(0Hh zCi`;uylz}9t}6@Cv9=yn7r2YvBDM_rtrhcyXvmECCsNzqns(0ItACu~6Z$UT?S8Gf z6z@hufBWi0gZ_vkd4!sW(~#idV<w76gtCxW;<kb*Ji>UuBzUco&)O<(#&^FBB@R$l zy2$TfptTY2vv#qMRrZCoKhK^TM#e_Q#>P&^I?g;kf#}Dhf%|&l06tCwU^i^(RhRVp z-K=C_ePr;BR2j$+s`;G_{3vuwSq*2j`C<f@28tbn>QyF6hkD?hgO|(Kpf9JR`~!el zaX+C2r>30fe5EtmOcC|Sz2i4BqWiv|s@!$guz#$4(_jH?%2IUt%O~KgsQteGQwX^5 z2|HJ}<kd+qBl{I`tmDiY77hOif^%j0k*|AV-vE{><<0Ihmq5D<@S3q(YaYSzW)%JC z!hzO_0^U>>5qv{4Ipkxm)FCG#6BIq>nJi|qEZRm-a@C6s1S&q~H<;Qgf}fa%y`Px( zmFcPA6M%>aBA@}V2qpD%4{Yfg=SpD&R1KSG`FiD7-nzou`^YqxRSlcd2!=`>gAC!s zPiN-<W@~tuOVy}AomI_<rIRI+dDusQ`~^}rRxV^==#;rp%3(ITPM^7qBt?;4xjNm^ z*QlevHr|e(<&X7y3;j$pd68L8$ePGw^J&^fS?%0zrRGlcZYF6B)WXQ3s$O6_t2kE} zKO4vav(gyA;!vvM$Q<+$vsM&7R#4=P1>-L0NuOC(!vhD{a?T{%%;7sKRW@<ZJ%q?( zpxFDTen@Ylg4E)@!p|eK+QdVf?&oDB5|YEmlAGBaUOpCN0$!zbkFsGMNbmRUHzw1N z@fziaX&Kw+zDYNJT_QUS;Bg;sX>SOiamW0fq^+DhKA(xBNeseS=p4Fr?-ZZf1x)d{ zCLR=<ynhc#R4{y`rGmG=+Yf?>!3`k+P!3CqTfV;+#R!UXRH*@6VicTPtA+<d)sF%7 zqLI+X@9Y~ub6*(Yp{XO5+}%5w9$hSc_sNk;GqsO7YW|<(MTX;0BDKE=E<(s_6OD<d zk=J)pN+nd0^g4^<v$q4_NW#ds(BEs;(|Shx1r~M|K-#T;E-EOeeBjt0GrkJ2mItkO zOrWU)m^Q>Vvn>HLnu@kK)oTUM(2wE1$64w!88-XeNI3YFkIzeS2ZG7`_McuQaE5pI z)Tmt7H(#vpS(c3e$=R#xeraD(#?XEIBkr%RN{wlmQG@Fy;or4X>6xi=uvbb}`RzbT z%&jqOxJ$rb<y#mp-<sO&K?#H8y!7SA2>w^3*J3cGmj|Es^+-}UVBIi(Xv9NM?nf7n z-8Bv1Kewu(BI@SnF~AUx|1`b;41#}>PcGO7ZfMmLqdb(Rntze!cAJdN6%QXmpf3zb zH+N_rJTUX&ySh85zz}#*{)MnqUw?2^zb~}3cf)yp_q|`^_X4-^n%AV)4A>#G+Y0rs zp<x$hl3*+G1<J*MkxWj*oXI{6<g-CAC(9Mt?cMM=pk%RAxr|Jq*ug0=B_6$C@qOSQ zg}mcgpVXziTujfO`t~b_NdAY6OPs31=*4&O6m5)Kc*uwo-P2fW8U-z%0Na$0gj;OK z3JYt=Ktou>O;BZdlYfmfF5#C3$**g#LvIM@qpM*~<RSk)r%9SD7g{wukH`>C4hzcP z2gdXl3Ix$Y#S>Z3>Zy&-ZJW3ZnN0t1UyBqwcsw#PO^ftF$Nbxz)WYl~PuhmiRMTt( ze9p&zAIEN}Q$Jt1Vw3{H0#*qfj+1Ej6hwUIutDm!p|%<peIiU~-1>(P0e?U2JWQHf zzOdzYIe`ld=&CdkrHEw**tK%ML?x}QOt!{nEETsDwm1(c?deSjsjFRGbY6IQkbFJI zAcl4eypd+Kq1uwOvmnGNOyul8SU$o)Eu2RX97LL!Z$+AAMXr5MKzAl=TtnA*t;KYC z;91;ZcW}r(yg*AXIrw0OqUON*W<i(j3(;1Ws~UNCw0veEzI>P)4d)~}#toaPpQwqx z7uhBD^Lrw^?LVn4Gk^ZFsdgzxA2{IP$M<u3)v)k?Pp(hZ@EBn9_ta=NfH8E10x0Bx ze2eb@Db~KONnE337MpWub<%ZSIk%w<3O{Lt2O9IN<9FV&xtJ$(5yj%J?51%km<LXg zhyL@<%yQp@^%k;>U3*{_r<x>JQP4;N)HJ!xu6V3Os{&lER8TmFz?+mx&DDG34w@$S z86CX5A*+t*P^Cq|aK+5X8rR_bpRbodoDvGEkO>)XUr`#|=clNRi4Ol14v0h@r2g-f zsL%H+moS88BdPz*8N^3t3qZTGH&2xdKrn21ulG5UO2E-ue-opmOwy7x;WR{(n{XJc zg(fk{**j*ZOphM_5_Z01aQm^rNY6A+gOBESyO`<X8DNa8;&7MC+>PQjG_r&L{L^u? z<{EwXx$lhG=);T+;|-|({sCJ<7zfjc80{6|G)FhjJGt79x-O%FJb&ceFgcg-{R^hg z_urE`)(y^1)gvPd@3~P8Zb&ssa_OotGJkSCImnX67YmlYf<}Y5KU}kcDR15#WA}gl zd)4`^In8hDWJW-&!5YACSk<u5n?g$;mT4nshRfUk1iOD;R{j=n(y;y^u)rhQM4s#9 zWgWR)Q0nQf5to}IvAz%zVFwG^s~;46l1*;(40A(W8TQ2$o=(K9EG#E6z|ur>B(IQg z&UoQiS=Vu6Q$$r4G%6rrZ})X&M+E^-eSJ|mA=ynt&9L!9#G#%SriDaff#@~pccq>V z?B=FcQK%64ZE3)nA8fod%P&=+J~_i_VZ@hj%_<-VeHw`HWlhA>`2o0g67}T&;al@W zJ*x4<naRP6ulA<&3ZMs#rqY+juCW(5Rxd%U6{1&KkoL0A)ohr@32wW=cuI=YdAn+N zD_nH{1b%Mt-_VcxMEW;()&*!u?GqeD<&YUdcPz)BQ-CS`|5Cuer*Z<EysZ}qdOj5% zkV+ik3_(AQ$v<9=DUYu^U2qW@#hFi8+YK`}YCae>G$}b3$A8^L|FrhXkdp~VZa}a5 zH?DNlb<8i>LRU8N68q)E^2q`@(z;ccmaH<4-{6!!@ss4WE%NC?3b%ISr)6Fb!-Wya z5ij&>bYFc-o{|oxYqKiAa_aYGtDhnTrCGBoUL-shtux+-=LAz5bLOp3XRF#EB6w_% z(mwEj_~5X(I2}r)F1GPz$Z4XvMvN}4<+bhM0lB1zoO8+%puJCNQ)wkW*^U>FG41uS z_HB2z6CGqM2v4L?rFl+RAdxZ)##)OTJTvq_?cuzYsI=j6y%{HY9JLh|9+@Uj0d zkZLHLqPf+phI4P}lb$R9r_G39C`0RMcc6vznQ%6_+jlZyK*!`1Avrt%K;;nZ6KaEQ z>{3Uq+hv&tL2N@n^NB3E=HN@8m7bjn^lMT9hwTlgYt-j|1d-ff=;AcrIPQDyXCz-d zi{GxXjzem^1)ScB)Gy~Bbl-yyWXALgA*J?r>j^PN9xW7}gxJwDzw#&HZYnPE%)}*D z?vIJr*vUq6E~$>?@S5B4P5^eEjUulOR`WF0yk`&8c?dwNY4tOX1UM7+()~mGz0{N= z<yBZAP@ql;SmH*0tyO+j0yTL03I+x&F_Y(Dc?=v^9wYas9LGBis!<|BX`g_|r?Anl z=GETBg5;0bvV3e>VEl*o2eyeF<|Ze$EAT7uN;twWv!98eZ9u8yte~=9Eo|7?!ZDLT zpgY4mIQNrqvBy0FnIO&r+3Q5Q;{9Ae*X!i^V7gja;iVc*(%QMC9I(>hjQNA3#`8`3 z8?OEdx>m;j=C1neH%Hj4<#pgq2gW%)Ei>@r^xSeaEb{*Wecbr)utbJY0q#XVX3}k1 zO+MEKG)7|!i9CN%tq+$uQO%pliADh?x+M@5E8>**m2bP%G?4Y~yT7Rw{t99*dG;R_ zy1pvPyr*(_|BE5FRPl~wBJ1Mf)jE&<V{%IJ`!1H*TcGn}t*C*ABx2lZ0i;YsCKul9 zH2XyvJ{qkX8kA!!S6t*e*IuAUQv&|JLmG~dcW-zIwA_#p)HcX%Uw~;+DmLnl8w?d$ zjK~S|ut3$dL0V4%pSr~LeXnoFA=_Su5|Qp4(@PaPcd-L&9ReTnrX9@{sf{E+Lbp<} z!`qcji21#EHc5%7Gsm_!Qn7R=Ges$6W<$2$ZM`4(0`(7YhxA@r6kMw}gmOcp)ucFN z^kA4bv$#mh*MbG}Ppx#I+gry-%V<CUxGcM)^FfM{%W2xLSt8<8%dV!qkHZ1-Upn4J zcMhozq~N7OO@h?i<;W0j#)sSzAC8bxWb85sNv3{N{`bv1C&PbG#q82A^jF@0znEt@ z`A^Bw&=m?*Us66K_!l;17eDBk7pB^qFUGqijWau@4&s>o(5cgC@ZW^6SD-3KtuyrK z{_IKi-MO-n7c7lu)W}AA)ob#zyRc84fZ5{p3Xb^?9Rg_}ukQV_W|L7bzh^AvuQ)dH za8Z^HW+)lsatJA|PByN%^7{O}ntSy!fV77VfY%sB78J$trZBd0wx%cH^V5~NDouKh zdL&v8TNkVJQ&Izjbehe!Qj)za?^a`vBU?zU04?BFTe&@4-A`*1W-GgPGrlsg``RUT zjlv74vP`N>yGbAp2tpeIci>bR<`05hWy(;Gk1RpkT5nteAGG7)kn7=ZKiofMs+os4 zG^j9EMh}mI!;%~!kz`>}m)ef$$5E?wu~*Ak+fR*xC6-XDF9b92t7(N^G-`%?Tl$kr z=ON&#KYaZdouXUnOujo*Dm`GULCZU2XZ#8q`;ny}d^C?cp@wuwr<yE3F7yb_Hw|-` zdh1rE5o49m6brHBNawvDQ}5q+Zxs;7Mlm8fqb#9&`t#+E#LpxU__M*)sFhy>^4k+V zsDHnG7Y+8-7HZrCbRv$!=?Wj?n|^`#wdv?^y`c&Uz)hw8_pE6OC4a({Spf%#=o%^Z z!iFC5O&VE(KHj8mnn>A3*Q=MZ=CZH=t)6^ozeKLAR5T%G;Qa6-Gm}{+lprx71R2n_ z?UZVg;MWn-)k|&Q#`yooqO)35bCip?Lj+n4k)bz9<%$16AHA?)j6Bb_YIr!bk$2`a z4i)Yf(hX&4u(=O}u;IFKVdabV7tCVZp*H*Qjd2!gDxHUG6MsZ@{CN0G$VrxovJHM@ zjLm*a>nG#9^NW++Puhgo4!K7#^QP~*f7OYEm58>&!tPB*k>J3i!}YS!-7?8N&RNbW z*?^v|K9dANAvD)UlzdO5zvV%I|DKw{m{`w{#S)0`(wcB>L!%U<ME^z$a;q(3lt4Jk zhXQY;gHwAYtx;GgNXK;?z}Tk7muv-Cm9~2PmE)~H!B)o$(onZchd{hXMm6l?i|;58 z&u$mC8iWBuZ#l+U26ioTKu%9t5gNZ?^|_II57LO$w=#$oxkfN=k};1&RYym=0SWKu zol6|S?jmew)>!165XJ*_<to4&qfyBMtmYv1JP4#~e!1T?`VBA;YxR~u2Hw=ky*^cX z$T;o%<L9AL;MA{>dCrcQi!}<5)v3-X4wEEg-0^L|ZNapChm}qRGK!wv3+$RUTO^GM zdydlGw@YUxz89VennRozb&o9R4vRF2r!BJ^M2{~ijEhtJuW~s%TpY@w?9P|oBfFM# z^^B?rI3X3EU4AYW1*b~!ClCyg%^YZdrzsZw;YM&o40IsjT76gf>+3a@NPhXsQL)fl zrme#XCw`8T{@6pkSu+twR{DaW)sno!Yv~wt1frVf2vZpP&Gz#@<!a1Ee84Q-vF&qq zrYlA(!2U60%=mA87M4prm(|b~dDD2tWeCr{d2VkQ!lilE8-#AxHh}lH5Vo0SQ?k_K zPl*qrUI6-Oc^pR#!YPRmCK=Lz!Lx|Iyu};yNmI9L-R74h1yNno*dYH&WwYPIkFD!w zq|RJDAAi2Q7y-Ak2?x+g$$zxY1Q{sJkz3l<zVvSTdfUUNWlXFUvjec4Rp=w_$poJ_ z(q8@yVpN>XW)Un~cxhQSN!Z?Us7VQ%l?D4__v=Hp%V2+8y?V{Bk5_(aI`8aHdGI*d zP(8ZIrm_=c&CcYS9GO%v4Utc>TVrIpIq^%%RY)em06pWp#|5Sa4#@MS0@u1B5MsbH z{7L?DNJnbR)_#L(!H=%eU=ih#(P|Ws;9+o6@1E@leS67+b{5NKyP!iPV2I)Flo_Py z$TVqkqdE}~byPGcUx~odJO7m&?L<BA9XwUxVoF(IbLXyrRzTG--#g8q6Wl(jWw$v( zmJxn57A}3(p0P9xJLr;Pa8PF7td_cfEGyU7iUqBb8ulX`<>t=A(jlaigs`_YFhbRv zxSPr$TqwgCNUl9OsAld@F=0mA_c4<TZXe;%)SyJ`q#lcHhM+;BhXo^7Z!(}<*gJA} zTYqxo+W-recvu^QtK$NY10r{bw83~U_L=rcS7gF0LUl6#d)+{aKy64MG<WAK!R3Ry zC#N@a!R*dt&dVd_`MJ>0NA)NMTTq0;UP89SlgXr6fb8eUPwCQ%hoYXCQNj<LtChQ@ zBMu1~_E5@AI#SjsEYF<r^m4<VcMOFA4SG#wckBmH`*=BWt%jHtZq@?*?cAuX0Q+OM z&BG?J<brpp_wPXVrkTAYczQ@~(e${%%81}+6~llVzCIVy^2n9mpBye0ESEdvRZEP+ z*}@$A@lY)*fSlXS6VcTMb8PX)dC{5K*dBp;;HlY}AtX=BAyX<y*V3?AZG?Fe1S!L2 zfAq89j{n(fQOX(=iWCm86gzp_Hg118_O?D`;gXE5GD0#+o{a7$VZWv1ahk?hq2|jQ z0;eqBc?vI#@rVr5I-v^rKZ{=<M>s8GhX*QBApIg?aM2q<(egscZ=bYWP6Ff_7I2T8 zCh<hX8S2_fbzCwaRFXj6xCiSh&#Z*|x+uSWizPh~oLtd2&_q_c9VIL-Q8#R(MJ#l2 z;gi1k^IH#VMLlIR!Pzvy9sXArZVzVHwJ%esRbpU}+eQ^w+*)CInw(a-z*vz?bE*RS z@dnDp65UJ~+Tr1nw&7ER`=hdI9^mJccGDTG@Ek#JS!1yTQG{=eV!5(5J^QW4Shm&I zn(V1bii~6hff?Bz56Xz{`<bADwTO9L%7BE#;zG=dk9)IfV)LBZG$q8zTs!Z>$%QD+ zI<63CN0ZT2xPM#hcrSQ97m%~wPVx1i$6QpRJMgla0^`#nldb;Bll3<~kH|s$S(D|b z>hbh(c6UT;BQd0w>wTX{{6oM^Od^daES_s8W5e|{fREz`D?=4r+er%*%C}0?E~Kgf zA2xkGRw*D$1C1&i>n+S0ZQwXD@s#r^;xsr(Vw~*WK56$Ga`chjxtu|o#`DWt%x9$^ z&lFcCXEMupWhpzLap6CK#TYE!bd%>p^!o8I?cbJI6~F*!1lxd+T-lZZ459c(&()aa z=Q?QM>HkxtqG;2ko#in+=xq<0k7W;17!Mw(pMR%KN<m-xW5z2(JGghrWq;Nw%C9fX z<<fz{M#f7@iY+Xda9QrKXJw3{IW!>WhEs^WL<IDlGgBA%z%z)phNUhV_Jp<a_TV`C zBk<7?*mIgj?jK}r>JpSUixX!C@`WfKkp?-gHIXpcx{@84e7WLx+TyV*n&2XP>c)VW zyl<bjqCH(M;6siwaY~Z8=+3UKy5Q~S+z7PUapdi)5F8j9?SyLIb*<YoAN&*$^|*QG z#4zx=*9SG~dE~F*fgEO3?8GoZH%e%>&iy?gfsa~`08+Krm{#VqR)d2mvioqr@A#gA z^`hVQl>DRnR?6ZTr|0A08z<E?bZ(z&xBv=h;ex2`!}sEWh`8_R&jYBrtlbo)=<2)s zAHI1bpURwc{sL`HFROvGTH!AU(Z2Rc!}dLJC53^Ek819)%{$Qa<r*!n5!z5G_|J1m z!~nQ9@sK2weQ+bzC}^O#$2zce<`QjhCxoq7J3@H2gan+gjxxe=*wTG(2I7KpVC_<i z@W2{i@1gO7|JMk?K&V&2qc&!|n8qjj45gw!vb(13{$A?KGtQ-F`N@(LLRBB>%b@j@ zhG(LrTT~`x9s;7|52UvtzAuEsTXw&dId|@8PBF!eF$$geUfj95%#muAC_c^STS-!+ zpW{;Njl#4rQNElZuXMw-P=SZHVsR0!xF$!n9l+kw<4W&@t6?C8<o74-GQd3=ow|c_ z=D^#S?fb)yelro@@}=Ytq2KaP=+;qw9tYH8ZNFC<f&ZzEvzs){c%4=cLcW8S5W2{` z)Su8f+sMqisd6yDUnwmtkAMrAA-C%5VN`;!pu=CmSqBfF3ih1gt+88ouVOiN!@JLT zweUbjksTtg$5)36<lKU$FEz474n@fWdy2;iiA7?Jy-<T&u7<)2e^aha{(z<=Toq?B zVK1SI*^sNhxVgQ*UpqLKvYVYKpH!tolk7c+Xfco~^SVAt<ho8E<}b~%LZxzg*YzZ% zj@_#z)$yY@(!)Ry*5<REDg>OEw$A;8cUhp9Jw7TM+#h?ZUClbe>rFbTaH*Cla;Ec( z7K;0{oFpjNy(9f4Fr~@tqix}MHGIQa$4+JZ#9ljAk(Lp1NSW;1Q&Hr$?c}t0YRogV z^us6s!`gk!(G@Zf;kK}&AqQ-fHu7j6K9|nXd;+WP*FW#53^P6|;!3ON6TP;(u41?k z8_Xw&q5$E0JFN~^3`>vM49~!H?3S134GQtEeN_#L!GK21mqBfNH5^coGyCI32zzPm z7!nb{3gBeemELI61%4^d;Tt6KNFjf?+@J_g8YS^Nih}V3u0qEUpMcAFut=^Tt3dhK z`kV6o@ou9ht1y6P=l&At+4uEWQ(yer<ms3vyQEtoWeS&7Z#mlmy#-Yj%~Lm=MmTsQ ziKwOpvC93Rn5op-{dX)iqF9_D+keOa6W$O1Z39O9%NhOC|9eK@4e5O+xim)qaw*)H zaG6~^i;BCE_SIJpNm7w%K1yRFZ!Wtb%=gnYZgqM(SQ3FASY5Q*lqZp5f=lu0e?p@a zi{x*@_^Y_Et21%lah!R+kq6kYZ$+K~K#Le25XaA71-)jXx)v9y5=*Ran8>^rd={LC z>vt?^NOXmL$+EzTZ{{yA4mOinNQdiZD=&f_C{A!e&8^sSK^j=ONAYv++r0;kCq^8< z%>v-J;Y%?~@ZEZ$T(d!{L_7E<pVaz#ySFbKkD6mLc7`#7&7PL1f8RzrMzew?quv6Y zEjG8l&`f|)y1z!X_x#ow^!e=gP1wOKGI{v4ya)k6uRr^;3BjXc5@9d0jMo)M86F&Q zYZWvJG_-Y^rb--&H&JCl4j0CRjv4J4BVA24LSk=8!MG1h8E@R<T?I*WXgyR@A^ut) zW>HivN^upA{cQd~^dlHJtRLJaaTWF;^EEODAh*$X*Ez?OrXh9=$2{9#FczN*??E%B zqD|`NpeI;J6x<yt)gpPRZu?W|?5+v^tsmlW27<(;ZUq`MA11CILwKwEw~aS4&7>Ft zh*Hqqe%h;xyVb2CjJc;N4#Dw&+sdg>FP3+<L5%fhqw)K~W3VBtYTRJ)is)RcIY3g4 z^y68xTbs)U?>_Jac6BU_t#Lf&z6Zx62Y|5Jyl0~u@bPgTA>r1<Why1A!z8++Mt#-c z3nL1v_c<nb77e@kfNi6~DL8+{gVGJZ7Cpc?+lKpelPd9Z4<&LgNTg4N3`nBRs+?2) z?2T9^@}cZjsIY8gz`=S^GpAhk(t5Px2j8?AxuMDT;zTEk%B(=x40#yc_vRF~^<XSZ zqXBE-UZo7r=SiUM1OAK7EcTs^RinmFje2Y0(*AFXnN{kvX3b?_*2<qu;VRLUPA2Ls zDZ)4d7uA_Aq$WfJ?6CPGC36tp$dN!c_!={8Kao9Ql5Js4_n`6SRr-FKoZ@4Mo}mP} zA%pw}3(%I~G5Al_>Ns+?rC_g;cQGUg^A83e@LRuZ_hHYsgoqPW@#&N)WpAVhIw+TZ z>vomlG68Z*|98*Zkzu4qz(b!8|8bQFSv+~#I2_Ld0;7<1R!UrR5nBzfL`;^jf>izq zQFvq+ltIdxP!-W#x@>Iz`UL7LQ$G(<ZS0)zSgpR@yR<YK?}_Z%@US*&a&o(8^T-DL zP^eCPTQli`50=;h66VUHsKom@ef#MVK!q2Ygww10>W544)bEQJ3Jsm?FAjqpI4VoS zn6Lx~>I7fBM#I3k|9Sx=C(J10HizC5B|UGs#(oHb_1&XC;r*8bG(fM`0QNm{&8@A_ z_QL#b-`(o1Jb__ce`_dnRv4k1XR1-OWyufZ(U%UH#6JfShJ`EMj@B0x3A{mlCzZxK zgP1t|ZITCWM+#P`6oVd<cyb%-l-_OrSY9VdWWazued%yMbbxG(t7o77@u)7GMLb=; zu?WX`5fcnsX{6}Y!?33i8S}<^=&$U5AcSE46ny~9jNZS>BCE@srjzY+7vuja*By~2 zh;8!Vb3e}QAYGWNOYVHHCA`QkI%w;#&cv`gFL1#dp7F`s(saY<B5i-z&AdG8lPPXl z{Zr2~*jxALOW||R8ot;a5w>|)Mru0VePR~|pvQrMzwqYDKku|`9&xR-6)PHLSf5Y4 z?RXQ6XYF^dm3C$rx3ZxBvjvw<?}#VLO+Mj)@=uTm%Gw7D0(sAUo$%%-rS$85(E9DX znf}59fJ=WC(6H9*Dy1ZCt*Y%`IAaj%90dk}<v1U+M1NADXYdJ&B2SC^4ALCJsSCkb z#>Vn4xx?t=oFf6&!U6&!PWmbm+F3V|-F{o55-*=Dr`Rv^ena~EjaoJl)gF61s>c!T z+>{<bEpKf{2e!`C(}S4kpOWaG6xN_G=*nj^&#eSX-!6^22GUj^^KE3%(jV!(RC+@H zv~!HdrogUD(Q}5?Hg5h!YRu~b4+FG`nC{UBElLw6X{2cJQ~kMQ1$s?tZ!4J%jgK%t z_|<zs$4?_Ye_hG;WO-~>(2o~qg#khBAeelYzPKU<|G4%(OV)a1i~ev>iZ4Bgi?s=f zZ5&E;m(kW<l}Z$l((_9lG@<~SfR|cFa$&rO?gQOl8TB%ienI1s6t+>gBZ?YfYu&^N zZ>UbVK8v6e@Xi1e3zhHTFVZdEzwB3)1bP1PD~ifmx>wc3(%u40H-Dfr67}Yh7f%36 z|7>HeJi^RB{UYl2MU>W*XaB<fw}pnt!B$w|X(!z>a|nbrX$v^}-flEYzV|?VHK=(D z9`RB&4&F?9*M*9GL@(3j_O^xj-k|6OQia2ljZA^fh|I~jb0<aPHpdZ-CWlnjlz=DN zkIX1I1QW1#giY+<AF3MXljIA*Y~3sV@(F4hP3)zLTRSL^e{iMh#H_3+3EGM-y?E>u zh<6sz1%(8~BS-f)wdN1IS$W_3xdNBIk67MgV3R#p!(6~^56^Py=Nbs9#*R~^v1)#s zVX5To&CI+)?@iikmDoiRIIPUat*+eJ(SASGx=e{xFVe(?B(ya1o|1NUqzho%^vW#D z>*b-S+uJ8o$SROcH!Yt*Y05h4Pes;fPo=U1xcd_5PBJ^o#qI^h7-@1K{LG)1YP8Aj z6Dy`b1YpakMX7k3uJ0m@uFwH}JtmY0s&~G1b~Rg&yASyFkoB~O!+-aK+=RguPD&wz zF76tT%-7C1ITc%FO_egmbjII-;nQ)G8{FggS&3&zK`<vOLjh-LIxrMJfsHPI9lua> zTLLfkhV?3;OM9a5?T5mDH7c3`|5iF74}5c!T2y`iN;Y;8HT`@V7l6q`O;OJc<7fRr z<L;f<Uj_=L7Dc89Zs^iXthb$SnfhtWRL=8pub-OaV&n#}(|q;C&dp=0+u{YCa41gU zS)}gCzPR-twDKFL?rl1|spi>hp6an*!*-`^`!n+Q+PC)%@*pR4s$Svr$kw$YszY&* zOGOo_`LclHYsEahxelS0M$196&qTJ}orN!_{K(x}f|sM&s(;9{PTm3yj8`f;FQPUQ zrhoR7oa{$i&yrZ*zg3mgbL^Pho7LXC)@#1}&_?Zv!E#Awa2+956$o#O-PyUfRLxM= z#X5O-6EeLQM|Z8E{WO?F!CEaDf@CCiPb|m$<HGtnS#9-*4}wrxg4R<&*d9LJsGY(w z_xp-9$Yo*sZhj+>QlJF6W90nMKw0xNoisWB)tKN*)=r`K<6V)Z%trVvHW04#VY**$ zhbVwZMzSN)u#gS}))F|ErXWd7-ESH^#bEZQ#AcYSNkCY7{mU`FOc#xO^iP-jZ3h+n zg;BxNG*`XDA#?^q8wpGbeWlc$4e=XMM2<aO8tv_h()7#cjrNI!$AC5Ov-$9v^Fmh_ zI`23k`&P)wp`D;twL=1e(P=Xgwx&D<w1Uj%J>PL=v?8704LFnVPax@3cFDw%z7oE( z<=X{G`@;ufuTQ~%L}}jlW8G0|CP18$W!l!wm05g~CrTi`?Kpli-}(*{{J5>A2}KX( zXT!C4a6qA_CS*Ha$X<D~_&ijwR1g3ygO;V91(XLhyeDavR_L#~<61xt_gtqQCWH@J z59ovzg6D{(IWCt#Y+I_#WTDoNmkCM5P)Q}>ClHaWGvmZpTh=-ilsY=d-U&8vZzQ^< zm;GEgoYIXTPY6wiFI)8L2bE8}$OW3DqNoL+Kr|ANS!$#;yNn;T>iK4FCRY`4J3n24 zNrzLI{5S4yNv%zH5To=C3!0#OGwBcA;Cc5b6U^hNS0xo3>4~Oo62o(91s9E;`4~Bf zGDy*kn)rrX%>K2lA8Q;?^pOtQ5xF=Y2Vsl~>sXI&P`#&K;Fcc~^3~5y#@DKW^^Hq0 z3hbN~-1G_BtG!%OXTR`EjMaq<(%Pf+anK*&Q8;I$ruMtSoIiZn7^<)ar;f!I1!+zE zmW!LG0H}TNlu43hY$%?0y{4^-rcoPw&-oEx)tY-=gak2ZbZaBAZTkj(UZtLZI_r>N zB{m29ymnqDHA}3*Lh9(tly-|T)*&mk*$p*Xu^+6gPSq_<IdA-KFOv?dRMsen?kQJa zi3kZdxt5rI`5vOqBNR^E#YwIogCa(QHMJ3!x~rG>EyVbp#wva_5f#x-DZgl3c?FLY z*$-x_Mwnr509P#PznRe<<5dR$&$Rus&Y=p#0XOdme@H@q3BQyn1AIWMNVCEr{2!lG z4G)DD^3IT;R>QI2JyXw&YfU||-iXeu)5BdrmcZo5MFDE(iW#`(0W0n$hg4ARcT1Cp zIF85g@)KuG2f3l|1MPf!8H6W1b`8@xaaUV+;LUQyTn>wC^Keo)g{jl`o^-!%CGCE7 z4b63Bwc*Nx$^)ava)3=pBuYjQoh0x$f0wil-79@NqInmKr#RFhQUO80OW+e;X`<1) zvWd?qR6vsbN=%gmNh%YK_x=D&_=mQK{VzRq)yK~8Py5Qhv#9J`OBu(+^&|{q3C~=2 zzcfJ_kDc~dy6}QR9pgAIVQ|fK0B^t=tS#$Zo5&pfkbqtQc@%$Ua2X=(_E4%fWe~7o zmQe%AcHM=&pWu3LeqCA>i&Ya26CZgl-2=i!bGu8g5ufy~HEG$sh3PZMPStqM6h4^r zA<@gx1+5=Ec}HbN43$*XxKby2o^JKV?aSO&UY?$;UHMS$%L$_AvQ0(YE43q%8;vN3 z)+mQUn9@=-L7GY*i5rNCyl>iBPdx!-4LvOZxIQHnOKYhur>~UZ+L{;C;W-9QEQ-v^ zW#K3vSM?ZGo{$zPMAT|6Xwy>2SXW_#u2(TQvaemdASQPa5p@RYLP}eVZWN|@`}pI5 zL%s)b6bJzoXHkJ#>A@G3X5a(xJaR`s>sW>%_2S7rKwszrjE3FDuA6T)-RipTKOe5q z6Vv(|G$zmd0ZOPyO~@wkC_Bk<A^?lfvXp-hoz6xmt%=1N$ZX!b+wa5JU>6n^j`0-s z47XUMMVyZy9rKeaOoaDz-BVFw)qpvea`ie8u)E4wcW&<4!!vi@QSYzW;H!OAsZ$+f zYb&-@`2ZI00pVm8ag39g_(R@=zuT0kf{gDoH4=qh66%s0y0Y)%K8nX2S5k4k8x*Ud zsnl%0frURKGK9V>7u?eoztrwd^F_s|%|wxTCtOr1F%uI66YR?+b4abUMa3&+a1;+< zb~u{8u}iR|2&kDt#aai#s&};HsJvB{C1H7OU}U}d|8ez}VNvy6|NbQcf;32%igb5_ zh=6o=H%NESDBVbdG>AwJ-OSKPcMC&zcTD{8y6@*Xp5OodyqUd^z4v#mb$-qz=tl8| zz=I{pOTUK52vIu2ilK93%#Wc&v(x^_LZd64>d^~c(2LMRdl<1%zi$=Y=rxHYVh}vC zj?K!!O?(Hm=H04(qS<{uwdeW8(rX=EW=nRLFQGeJ@KEHYIcL$FGqWV)P^)-%GG4#N zJ!S1KbE;A^F<Xd)(hOS!zm_uPnH9qNKQ#j_hc{nPKg@wOTn}hxE*n<eKp{i;FGg6) z{g)wGTjl$UNX-1fe{^C0-i=gqjRXuMNDV9bp^7^ej^EkMOuxGy77m&UuH369o)V{Y z@rj3D=n5RQ6J8lbXGeg&XVQX!sW671vaGg8{EFE+!8rpD_KKFB?|M!RxeI2e<rUzs zWbV?zunW<R!sJJPV-X@-BR{@I6A!;Fbed>~2;lqIC7`S#RYNil_awaGTS5Y^nRYAO z9zW6BFS(msKCQxvIUFEV!u-B1&bqbZ+Y<26^4Z8rz98*0)(M~H`(+ng!SzqBc^=W_ zU#|M>Wi>9eg2&(Ff56+UZpVI_mL_nK#eS&_hqihiGrUgT{QMxBo7yIJM2S!mJgQ}$ zo7H5}`T4NLM=zrqLy4>;XVs{AO=TiDyBVQAK8(-JNnHBWGpt5eLf@Kb^q2kSw7pf} z*)x`v$f!+-z5?%;Yu0$J8qF=4&Z??<gdvuI^SH1nDjWFqN`LSo`RJM{q2&irsS=|n zegQGq+V;w8cOZ%7_YgU0+QrfP$cUJ7@7q=#Xc@r=%%I5k;w8=N-$C%9A6VgGDBgFd z@!?Wg7RMEkP`TGAsYeTd^A&|pnR4-J%-XNOFn_($x-Wh9WhsM_gE?UmKrE1%!hX4$ z@4Y&xVb$!lHz`#Y!fh98?H+fh;~Im*!T^-;IC}~Rk=p-fucj^H+$+N9UA#XbBZC;@ z(Gu-8dC+?O`8zPifI}iUl4t&m!mWt&hV0(xk<xn+`>@_Jvujy-7VSGBtb>K%^?PYn z$rOSz9G#OL5&ENUR@6BJ?q1jPnOH#B;Ltxz9v|pM%8FR_Ed;5*N7inEbl(`5GFL)8 zJI%ea^QExB+(FXo)`f43S|dsPn6DtO74~dz=D|@8v!CXN{F?lgDwg6P(LcLGRnPxW znG1>^KyA@J<A?CPLQU(_UpeQ>b8AotvU`_d?b3ev)<nMwg>@#KQloGJ`GM`1f8f<n zQ8NrLz;Zg;drz;AQCsw?Ykji=9H$vfvIJ_5Go39)+*|tPz6O7kk<R`?j*|{ipu9rW z4L)qLNDsRLin7hueKLg@>*lN0C)opvW-H-0guFL(Cda$AX|-oPYW<BY<44i?ep6<( zS`yO~rxu#9--{{9j%4Yty{e0SvdV+O!X*V3^`6$?{*G$YATO1FznXa?VaoXCz;}_= zkngsRFB2`eX#TQY2Cknt|ChutB%&{gSOD5p#r{293)B3CI$v;PL!Q`ZB{vV;oiV3c zoC(=akFT-Za~IPhb-nAU!d~v@QY)CrV%;0^OZsP4&`D8JY;Cc2m+QTec3Gf)Re3bi zhvm_dws4hV?z`PjG?|AHo1Njm!9!K;hUe&Z0^~M~ghN@PV$p<KVt?upeED@g_JEeL z?;W~!w)6Ux-iAWctI?%Wr!Vo;ueN@SZ2R;b44+Tp7Bm?_3>#v94*ia?+Vaf?_c%=a zh>ijiSm)xlwa0Ru(9*|c%9hl?a(pY--Q-H15%2M;MtpcHRGHQkHc1+pPA-S`puk>+ z%mFtI43e>C!svOgA%pR148V<Hs`crW%qrzHSF4MrlUk9A(|6gD(p5d*^DIZJ{AV*r z%c_D;R7~&745t9jdvyX7?GF<NT>P{_a!HZoTv>^CH9o9{z~~L7l>KW!G|%42RWgFx zdVn9ja~O84>a|nivc`M$SvgGOp7dJvev0TB=2+oe{O1Bo1`n;Y{a`|R9l6Q-YtCfI zH{zkC$_QhhS2Q}1N1Ar2Ad1I@=izMy(5eNCMVbXW7x86jztzjvvgbL@rxL!;O9u%c zoZbiH&*jeFKFk4RiIZUL&Vi)Y3Ew`XcYjz?4HC#k74TIpEz)SDeK2_RS}H{6s?SJ% zioPO9R7|fcMDA7P2AO-J#(8n|@{XCPe!jaGtOb_B#|B|fnsXxmQkdppHvHWHiu5a@ zWrsUYvynietS`d9Q(TVo(&AMW_8IRLTem%o=N0xzMLH9S6fy>R-P*)0lj3H_`N$*f z&NW$phc7qj&)FZYH{H%TDkmM1Y1hv@PI_6(npSldE=dFKi7d!z93t_5BGSc@0}XzE z$$0;15{dSE9+N>O#g?m;wW}3fHEq`hE(U?s1qMfd#td3-Jg7Tlenu^u$e4DRKW6pw zC4*tHwyC9Nu=!WL?L7Eh)#sNwYp7ZtN4ErMvib^*ECQ?i40^eiqDMW1lURSLK1o{2 z|KQvWn2i4>B8L7=MErX3zp(EA;M|wyn%9sF-d|5urkr!3)XIsJGjC<=C{XXLlUo%( zZSa?Yg`3YcuQ{?6b4*o;*!CbhU8o6P5>Mo4(nR!Ztxz!ndqnbQ9!(8XF%<pqG)Tmx z>K?V{v;{SQ3{M5QUtqX?XImn|-ZK`Jg)FrF!4CQa^~fZN9oiCd{4=GcdPRhL$ztP{ zK9oIEg$^SckDGV#Cx2t2H~c=MpdHm#)#}HpzzAWEHuqL3k3AXoC66%UE18tzZ!V=u zvm{9$Lz~?F#8OL+c-|_=FyM=GSlAmYM59(DRQj~X;i|I$ci3u?`X{N_x<xmX?A$5q z-tUdKj|9`?C5LBMHc{5(+V6p%-Dw(>uvij+Yxh2$-?}Km6tI#cDVwTqVlaE&qq>ub z3Ycg<8Y(O>laWXG*q|0u%*-dv@31$+S83&AD(1SE^Ct0))$v{0qqU~6WVC-yb-SAV z!R6IAmSeB;^tJyIs$u=O%PaUQA~^a;Ff_7HdQMJZ6pGXq`?a*(N#RPG3-CkD?YML+ zf*{^Vz9&ws6n3=*r6XU2cZi^<{(+|yQ-&YKBPz-G9|{!!U{@HX#AbvS$rOM&%E~Ox zoVcg*hVfdrHEgPTo4SXpF$<zeucCEA+sEr4%{!tBy-J*@NNW1}ITGzDf#Dx0cXtJ~ zgAs3Y)}!Db%S`8)BDUBkZ@-u2OxkK$A6R-<ZEkB5G%kL3a<e8@5Z5V0;(Sc%)Z;EX zJvI+78b3;!RA4uU?zR68nbxe)OoGK6kMBX;R>$3Do>wsDOO>q4gE_p%&LUjl*Xiba zxR|rB3&x5#^4hJ1;*TFX6P!st4c8LUJG4)$vMGMH`!(V6g_+43!|zrEO{+9`TLFoh zi`E#WcRvc;r*$ZMvym<+%CWUydvSfC0^)p4;vPRO_d=IJVU`=!!r*=@+)P07Wyp|L z1VM7m&>ex<e;d2WUKo$kMPyISUD`6K5r~mt??X?T%3u81wgS>%Kk@eK?E<hD!FrST zM`8dW3d3_I$_hn>Rq*Yqxgz;HWEZYZiC$;&?vkJ8mg}o`<#>@4(~f;@@Vs&-$GRMG zLt*FKb?CqV0smZK0L2-xhVZiy*SkL3rM*0!nuXdvj@8oz&HPAm8WHPdt(1W{5ZLky zy2~<IH=`UaR^*T(+X=af+@frHBHEM>pgnq^?xxAbMH{=T0oK7*oUQPoEIa9@+{noz zpRh$=7BgsY65syWkXh<on|XLzL{Rgy@%Zho%rFfxzgXZs=8gfo3lKACd^;71Y5gpM zXY?06jq=<`oe1XBijmSk*wU5{=%yOZ$DHree@`*hRq3vcO`l_Y$bf&}qjWqk{KGON z5z_j=jbKO#lNp9|Qqqy%mKvPTndj!5r%dHZ9080rQT5dM!v?wUh+J10IU$<1^u^ov zf#NnwK6^*ZG1#etfd$95)caDHMVS>m_rs;fedOPk#^?9wvvI_>+Sd0IFnTWt;UHQs zJa1%EGgBf&h;adBJ8vQeFdldJDNTEHb1!awU~M<$_om=-h4XDA{Qg18nwzR&{XytV zKLPplGkB_3?iT-blP`bk<z%|{D=A%t@`j0<Wwv+U`r(}S^mFhierfsM!ojnt5YQLn zp8VLiK{K&^(n;gNd$t&HKM7ZHWyu)U5(7>)S1|9SI?f2=FMK}zyoY|{??1paaeeR^ zWu1jo5cm(Vihf~}RoLU4L5TRP6VPt7s(&H}Y!ZdCIevto>NyQvfiiN;vsDoz94RS# zc?a7EtDOyuVCT0S!+DX3O|%K4{@wzueqiT`JgyWa9_(0y=M@43OweJ4*Y9M|sn^TO zn%*Wu6k>ZqZF?<21qPWqiuG6HipOof517wb6ZT&zA@o1EMj3?ck=cp7=WAu#jmk3N zw3G62_~)75Ss$y*R{z$A%yMvaMepI>mu_4REXiN8z6I)%hNf6Cp3F}Z&Em2Gpuk%T zSPS)k#v8O*bU_;_UK8&qFG2Ee=V<>80q9KBAbv{yHz`({$$bMg;0r^pFJD7G?TiZl z-kswM$+p>0vTXBJ+)pV*d4{PYVKEx6^ePwAj3+=@+j%r^J!ux3?riCt%zs($mT2nS ztV_VySs^acwd{+~0o=xHOqJBJX}A-GGxgrRTSV1e_TY<@1E0CWC)J^MEb+;FI0p6i zF6Utrx|yjZ&v{g}%-7zO*btv1CPG}dDFb!MLoSc_d!^?9+lPy9@P4R*EB3KILjraP zIc9%#&pqPG2X49kp~pM(ie|>Bah(B24WmQLLy3=WH)oa6RV0P0c@6YuD>%59zYC~W zTcnZyG!kD8KuG;TPDnQ+5s&8^kA+9a!)qTQOhDrFdPx3yuC36tjEX*y=yI0ugQl`W zvanN}L4O{hHks=gvr0(kDV{i)E*xaDeifH4Q=bPy&6cm9GXRrJFVb6F2wiToPPnm7 z9SmEnyX~Z`mEh=@G<ZZmk1)M<IV4KY9I{=ToWALP*7MX6<rU;#v55H$WM=MDoL2H* z;-ME^pKW+)NaY$D9k;R!cyKU6Ha6j2^PVjQ+2#jUcC;I1S3|GrlWdtbnz7rWwZCC3 zSKitPN$aBzQ6bXTt+0=@*RPf<!)TG8QuVg_*r23s&dsr#7U1=F#yyNdTaZ4*{=5XD zkdG2^rXk$DtyW%S@&Y9_h{Z)aixqN$#v%Tu0nGR`kmMiAri7o?1b8o_5N$p=;~|Rb zMJlxQcyseT1=uRU?|oD=0Og@OIRGKTZw-$-RF%w6*8iVxgO0E)<q<o~HzD+O?N9Sx z{#xs7Ve=_ff;L;XH|OJTk2zCY2`Xo-#)%kT)-IoH*(*uPr%`_oCp0GtqGXFDQn$I} z&E2gXDX<F}wx$)^%Pr4|i&7|CZKa;*qsgozoXd=zKg!qkTsAQNN@Bn!fz7wgq#{-f z2YKWwAt{ddK2>hszJ73wqkCok8~%v@hxg<Xj_eB2T^A^l%?>z?ZdhI@CGg<E_4Em_ z(2`%is}b9&ru&if9jh-{vHvogkDmUO(!zRU!S=f01A4=Smv`}V7OZ!mjA>ot4L0Gs zCS5U#Uv_Bl{|hSp+rF<sObv<6<rxs&MgKQBn2s)eB-vv6lpXXV?MCJ|BrS&(uLBA8 zcc}ijtiCcdd*1##gA*nC$pH1liKCuy73+?tgs`Wd#=}8k{Li+}5=^i9zwn;)E+^X- zfWb7pB`V#^oRY!A@scz?u^^Ao3W?hWEcL`?^xf5mcZl0T+YE6Rnga&#S4z&gg18Sf zhPMZwull~ssJq-H(W-&oiy{i;&fT2EcV^C*8CY$Jvj!{Ozs3uQ^BleWtT-q$OEwd2 z@oUKfgX8%4zVj2dehGg(WLr2;$P4{v&<%}A&<;&@>-1Rj0<QiHKtyAkXj^=Io`6OX zERo5J=doku{7Cp<(V4+CWoVu*?Us==1hMdObf2OolXSp6*qyap3Q*m+LmaMkS4@Er zUrjGuyMiY-H%4JK6-HASbmpXuqkQUN561-P!@5=iG>_W}+;$Pv)zkSo)#o`ysruL- z<oy`<+C`s1c;?}qXszhB>2F^WbEqNgJ%90C9+v6Mrlr8k^rdCj1P>d#Fq?3DUTE5w zKRj`Tz0<cFTT&rs^MXu<!HYIF=EpA6B*QipVqjWa@Bwpd)|tpjo1JMr^vsNt9P^6w zdEA}zS6Zq<%beZ;zmV$tQ&8V<(dv_49!VWhx$<l|=OQv4v}^a{dCUqxTmI_f8+Esj zEG$-^L@-klPbA5MiBQLVpVRaJ%5~3EfzPX@{9as9Uk!vtc36p>o8+q(0t=^pRg%L^ z$b2szWI=48X>qeuUhgmAU%&3Acm0%n!ii!2hXnBvWG{|m0Zzt9?a4I~VZ?=9&e^ty z&pIk4<WjBZ+>r3)v2CxXoOO5}=_LJ|?ZeN;B}XLXo8KtCzU><LPf&<%w64<@hToKc zy;;IdJuv)_Jv`R&w_tQln{LG~v|WrF+WFs~YXabMe{TDI+wZTA?^Z;NYYu0LK1zg9 zUFpbSjl7CT#Yt77&?Eya+&6p7SdEl}WSmgy1>Vv7kQYDfGf)Z0cF521uo5Z&Gz99h zV^BDIGpR91MGQN!y%pVx4H-J80{d`C&li$4P#j<BJ+z$X)d@P4Df=z0ZF2ab5;@F7 zcw~>yQP(JRCk6yD;fkC}`rg*blik8Pgxn5i-Bh~gzqOI$K`u(AY>w>{%lQCS<q@<& z%m`ucmj^qe&y?G_KZ_4P5Lz>64yrsPxzw=Sw0Y{H_#<f_pVQdH-(`3ma=VOqwtGKf zE*wR+VZnhL&m{SbUp;34$|SuvLfYl`vWmVZ>nk!Bu)+M@7Ss|lg0F=6j4WHcvW)Lo zqp`p>TV*(RuC}YRHR{)1UGQ26*oxr4F^_-QYi{J{MS?>-1*zaqSe1G}`!4c-NySgD zX1xfy8&j>Y1)%%u-oFP*<z8eVv7!g=pf>dCyV)3|H!VBZz4#u5dnI)cd)t9h-|_|8 zNYSNJ)i&{Pr9hnQVWmnpr7m&`2Sb+x3Ew=~n{E(iVPTm7WS;0*h8(-@>D!w3ZW&m3 z{}J0aKjOw-arkG>xQcS=Trh?u&G-cb{2*Lp91gYEiyxlkDi249m_2UB)4zD>CnoA? z__UUQs&cu$OW$RP{6vla;;V3^_<8ZK07`ZnwWU{ghnpD#JHK^5cYUA3i4eOa!!-+M zPx6)YI32B?;-Q`>HB`Mqu5$=&BLcW9RT`}LmMtSJ6KW24^2cfFsCDdC2rCVmx)xm? z%+oqQE7KWyi;dNp6*{+Yi~+7iV0rXk=EoPFmp8bCMPIyRs~dWseV_K;3xogFILu2| zVt7Iiag$;&q>23XWWF7X1o#YXb@lJvLf+9UUM|%pd?ClEv$s|R&HO@UYJUUjC}vz% z@6M$33Cv?YlLXLHH)^|Ks)-S!4*tsDd5X(?5n2B|b#HBaW3pJ5(=xxKSLz`;1SXw> zTG(cLLxVC51e+$p!x|ymB6p)`&!dbCu>Xiy{qt~TgclOu+_iVT<j1;$0^0jP-Q@9N z(mG&xZh=;ndb+stCKBs~We@*+x2)s?JqJLOn6L*F5LktwH|%Mw^?3OWVBl4F_H<s3 zN8uk4^lYD#kI#e|R(+jjl!)&^OW#ZIzmRVqNxAZySe)PN?$9YfX}KH#00zv^*2q%X zZXm9V2JIlp_mB{J^;oV42<%+MdwdU6n+jNq{6c41_xP;MWvJ)%#%!S!ZO_rM;s#Uv zQ`0`|I6+vJ4108%0z$>;Bm@}WDX2yxNo$0Tan;^X3c7aivT^LjB3?eih@Xb;;tkj8 zN04&`JH<!M)mAJ4;kApDyn%5SvaitFxkQ5+I4iaYS%3oB%cr60*kM()S0fCKqoHP= zbXj<wP3zR(uufv=dKoSKC!+?X`@H3CL+jK@gY4movph)1szGKb@A&o56a7P}*bT9J z9IjzE)>yM|JP@{3xa<j)tQ+V>*|P<`(7q<I+3bi<>CTh7CK+>jhrC&E-kU(h5cBzi zt5*|5Z;H7@vI`cb#9<Gx1bMu$+B)w%51FtHBW506aT}`}OYwc>VvBS1buPqZ`!X)q zx#mXI?ak~{cXOh_1(~}y)k4{N>LL1*d%iL))c|c*#mSOJa`@OA-B}{v@be+?{E^n> z%dG#+)^zIOMu{9W<>K;g@*dg0mMaqYj$L~@&+(~KwrvH%oq3iAc%CT8r#2V7tzMQx zdB8T*{D#o7i~D6cHTKSxC-FAN<Z=u(&MNEn@c=k-!fM!%<&p;b;SF&9@;_<HZiKsk z<UQm6M(F=0^dfE)!Kt<4T1Sw2LG20fo145wmuR@p9qsoo$i8rEUa;%p%13E|=f9t& zE2BH3txy=4=yWpTmd)V))U8-+I=5y*8%cn-g{Z4cHrzlkljUGUkmc?bH<t7wwQ%jG z*%vgSaji`j8ffoj=E0%HivM7{<MB#{RRV!HCOPih55>1d_k#0ZaSgM>kt=~(=r+DH zk>6W9{fIya18ay|g9g0;K2OhQqez0HJZbv%3dg>SjZ+v?NM7Ll*XGYRLVp5dvu|IP zb~?9L+&WzCFGRPjB5n*}n8>#M-@VUWN{5bwuT?_!U!K!1v1*BQ5Z>!vEtB?0lE-7= zE-3LQvqkpdKYPrEzg`82QfB#R$tIFcg3OR)WakI^?5VA5`a>x2la$$^+isqzp?5&y z##*p;7*&6n%?GC-^H0Yg2q<;51@xZjcz+rsW}Va^Rz}1ZYJi+HQ@4lLIV@+bjJ0<+ z8ISd=Hh3f;lcn{^DT_h>RF(Nf)IwL+Gq)$$wEUn!HL}EbZ`oS*Za{8#Ilf<f+ljZ{ zJK6S$BX6iy!J8B?`Cr63Wn9MGFw{3Xj&3^vzUxz0TRJ-V2hSrm))ORp=pdT~m;}4k zVoSepVrBtD%C!U%2RT-j?U*2x)8k6X;=v=%b#3n?png-Ot2z7?cH5>#c0VIkg5-%% zcHj+;?^dOJ^X^{9q{os_!TX*sv;}zkzmU8$GWWc49~G}u-&ZOCUa+Q1qKC}k7xm{% zx=cPs+<eUF&oW_cp6_4L8@+~ZeLgn5x+{NJ&pUgFqkw!iO>Fx9aCJw>TdeyN$a-eh z7Anz2PN8Ofp}AtRS6KItTLECyrz-*ZAR)WrA@YEwrQZ*3$cB64pO6WYH=R!FrdFs~ z@PE6J?9`@nVTa*nEWe#IJhc<MT4!xOKY@yV=;rKsZX-R`+yvC8x*FjXx_;5Uf6SB3 zyF=j|tgqJ$Tj{4zUefDWnAnKA4O=#yOJ<wFsAHz*X^01H6*QsXeJ{1UoaVF@<ylQT z{hq6;iSC2OZqKVFE%LdN7zYa`^2}+)K~RAPdn3`hb#^Sr_HIrLCLrcJRYj;mcYo@$ z-;*H}fKs(yty5qQ`!?VrtLeAm+G&}v@$q}75+c0$yJ`UOUfmmJ6LpUAA{}culzbVn zPb}sEchj4f=POJY1w;)acu~@iYJXlDPawsH_;q?Gd3x;wi8zPvH%NfQuX+1^{)&R~ zXtK?5>G77`&>hWjq<YXF<8|@pOF^+Ug7(qT=*6P3NHKkxwx;bJghBxS9oW+b5Ig)Q z`}tpPxb)hq0y0X`j|d6i3CO{`RTSx1V`I+zx6@REOmlbx!&6*F7Mj?Ny&2H88HCv4 z*4&@EPq8t9_)O2yitAwXErQj8wxi#}xGnq5npS)SmoAF7xAg1SlWeVZhjT!`GOUy^ z=Z5RR;u|30-V3&6ljnkd7h+rY-&79;v;$eniIy5_H{((CWPz*MpOtdNh&>D&rGl=p zwY(3boR1ANra>tU8V@+Lc^f%VPwB=|DdS=1y`@U_I}di6-eHsvI+D+a_kik;yDE>b zh!{qtw6(Foh-#`FQLm2y;vMy0Zel<_k~tB$PWK8GX~q+k4sG3U7B{ByM6aclGCoj= zU1s$T#I;sd6N((d#+k~@WA*7sIDk^4w6za9+F`L<?$d75sv;Y@NEF1`$gAucKgM#K zYW=X#zke(WtseRwB73iRbE;Y@^LWF~-IlBRi+!3vyVAF{F7(RwGW8p+GAM+m@UY&3 z)6->Fh(r!aX`?Z}n%52WWRZ(08{3<mRWSgk-f$`*Nf!|0oEx3El$SpFOu1j@H>L+} zq;(JRAy#nPLQN97m}vyIj1H8AB8d|OlmJi)seD$~T}3l)do>_$;gq-u{CYf2!2r(^ zq|9r7<SsMxd2c=Hxpl9lldvtCA;epa)&xXfrM)HJ(NL!_@RA+RHI@(rkgg*9m2%HG zY|@&f=&vi3o1AB~7cucNVI;~BRDp6XQ+U|4>K9Wk#7oHJM_9}<QeYmxqsT@EF<w+j ziL@6NX?$7<F`RBrJB1z-_7OOif_JZ=Ch;}PA%ugKJ?4g8TXjH?KSKy%IpWB)t9KNy zLd;RLVWb=J6i-XYWcTBe<V^53ZY^}O#*$Q1pj;5671T-@uJ11Rwu>o=b#QNJOe7)2 z51Can;eC#ino}Jpn4{BTxv*rJz;>a}yw03S>+`U$!thDd%rX-Yt@xtY`bTjQT8`R2 zGiGtU{m|<0FW={R^+Rsb)^4-gw9M|d+p5G{pEU6xnUPmTM`&+D>Du+iKNK+i7p(tZ z)j|y-@>;h-(h^Snn6Los`-|0je^Jc)@bu~Xf!vk=cT}q8N!Tqnvah^<D6EA^n<D6t zYWDE3V#Uk4yWkVkjCn1*T5qWG3;m0X!9g2A<CT^);i;o9ifUBUBfJBYmnk}bI#crK zsYcfK66^eR`ZG>Ul2};Sv8A9}b{F!5wb)VpbkKU3`Xfuc-83zbeh^D;yl=f@lo(z) zX}Wam;(TQb;KS7{*XfEr-deE{TqH{dYi+JuzOZ<#Gqrh}fB*(ibHZ(?Wi6ll5d{h< z3#O7>Njscic!Orz{SgE=KKfzc`iH0Tk0f~0^Wq=Cc73&+SG*|-<k>uEKY-<@ry_i= z&k0{8RFaY6Ou8GD#w%2UFQ`@cUkSb>H+jni^F+t|bM}j4-R3Zcrf9&dB*&-lUfXF- z>pA&+cb7`O&{0L<pbGxWjo%3swQZ@@@zuXmus&d1_u-{3K1-ukYr*b|i68Q;-rJTk zb;tNWoWhgeNchdah86=h_l7;zkFri)<cF%z(PpZ5Z=6)#73l%n!tE>x9upj&+-^_I zf|0=hg4gN%U;TwkFVY>^am#-g!p1I~WmBD*lia>y|ND2b#EH;`Hl~S|g>~AEm@%=K zDX*o1)ohB6_=budTjhRF2|hg<)m1teX1jR;hv8#Ez(kM(&0Np!$EU+>={}I1M!Z^3 zXD9h<0PQ`aQNX<P-RUK#*#ca5v$~<Ix<{DPZN&bcn;z!2hf_oA5U&5AQ3Aq2>#!nS zLcTLfP;jH4%8nYHq6f)v%4w|?b6!e~q|Ilk3c?_%p`ix(H91v}MK_AP&M61&1}-kW zR4mYiR&OBn%zxWBl8YhLk{r*Cdl3CFqDv5n$O4{NVOarj#K|;b`9IS!)#IQ4UI>OY z;QEh071HN98p>7V?zw}RHo1bP<h%!^De1m*!Hd~WakYw#3nNWhMed*q*xNacFZocu zEz_?i%Q>OR=rH^jIEy3*jjkzx22>U)NDT)`U-RKI<5n1QiV-xK<by5VuDoLId2e(9 z%ek|+J#8TaR*fI@SYSL}#x2ka-l1`G{zlm1k`?7W^ycDQ-dc%obH)FhLHtrlJM__3 zm?$%1;tab8u0Y0ItyE!7?Ok$w>PkJ=D*ei+;2)HqXS6@YlOw=gs4k1)Q9+^Hp)zr{ zSB3#O8t7pLUcbJ)D#jgc7$FTZSNnrkhvDM%8$hY(^5*F<`(H6gH{u|Rh#R>ONPY=o z=lI{L`Z81}AO6(vs=us-4(=Fx$oyA2w&jEI#HL+CelzfIPI%(gZhb5=TPg0(Ago1@ zu$eQD|D2wGpY(j}b&PYDhEmyytz~F~ivqoi@dqbgp<gh=BPrniFa+)47)X%^RgXjn za^IQR6+W1T(Hg^1odfP<+V6H8$dES?843VK)!fkdjtBE)@!J7#n`2li%iqT{G0r3s zUhJaO2tRC;tbHAK1OZFr;JWrkKRu^TJdZ9|%5H^$ly2ctn2LVh`!GuxHq9urYjrh6 z4VLvOJmk(t)BDnid>P3G(<^qeR#You-x_JQmHTnk5R#A&Kc2Jnq1i?lvnbW4GWvEe zPB(_<k}I_tRfqs1Gn_G!W18Ze6$<e|p6c{z!C+ArX~bVU+JB^4|8F($Bx$R+p8@mS z<o%`jq;~}DlMtl1vpZDZPo&a>&$jmJ_w&EGn=8_%<eg+rtF)x0rebw-FKDYsP-wp} z4|>57U;UvqQuJ@f-=j*MBZf`8IRa6vejr_T`Q6asmcQx4x$en3sqmz8TSoM-^PRrF zbFxj&>B>_O{9HPj-X5~-b)fN6SEJ?r7_yBSDw5V!TKM5jhtNaGOJ`y&kXnzcAGk_C zYFzSjat?FN`>T$)n<@$7NU%1cK!mn9^;hPsfA%-+J1BJZ0VHz18(L{5l)pNpRiH_` zrJCy%DxX4w7lwT2%hzFQ(MC&|v779Q7}(;Rt%fph*?D<BbO%1icq*6n4WHC~kZMVu zD084S-d)uHR7^37&ljINAuZsg4W1PcOC-U6OiWLW6$#qEPP=BiF)7n}=kHQro|aR` z>&-)2nPe<gdLyFA!IH?z_<D`06XxR7@ehhDF<mqsH+m@78ggB%$Wf;ZD$g{6D`kr$ zt>2~;Z=B>K3R>GP^i1|>8+yZEaV9CoN|L^iDZsxONRdv$cyy5N+g@h~)kScgz$`Zv zX{P!5`KJAh!3fm|Gd2gVkV<9VX`QhUro^o>dDZ6!eYiMmbx^O#KcyjDD|aOn6&9}k zJc?Z3Npf`4SO~A^Uq?l4{CztQR{cNOlL9o&|CLVJ0soaweKw{3tMB7uM`AV9>PIlZ zK9a0RUu7>IHf`}GH+`aoWY8&t1(B^n#!T)^Eu>@bua@3D&UN_xLEWojFvtIr?M}|3 zU59##CYDD0q<5olP1=w0ln!`RocxyfieX>-KUbaNb!LGv&ttg(g`uJaa3mM#47+F0 z2(+U!_az=)Ak1_$x^&)Lz#o-^-mUkccbwduZkoDLQ(z|i=Du@yRN#pPlv!Ra3cOH; z>d;s09cp94>S|{IZ+$)$5Phq%_`W?SVoiS$jS;d)yM0+b2mtq<)uzA>4b}YGnyIph z`f(cUrtdAZbE*avJg>(q(AV)DpXRrUI6trofc94X|BdI+#-l9uWdI?!hY1fYvl%>o zZ-1&}ezmVN%$MGs%aE{US!z6qym=Dt;I6b5lx;WFA-?O16Vs|@hstX*Sj_$5sdv<m zZ@Knj;&h29+fMI$Im{k$6L<vJ2O$r*y`~~E?gp)t^0XtOqZPIecHWw<qUWR?$DbIt z6?)yL8zKb)??`g}JWwb^uDTg0Z)927O@sml9?~uHpR`f5k9ozC2!5}A#I)>>D5)%$ zr%e`r?^_@oL27SsiKBe?nw6ZJ*M_P~Vd*``$CRrPPhL|C6#j^!XM0HpdP>WVJ65ad z*jQ45PeB1JW_k1=`GVIU0$#LFrNq3mw%#YXNC!9n`hfgFmkH>-8}5&46YfC-*1%K8 z?8N9-<eOxcXmbw&onebz)7{tOrPVZabAlhgsX`2ABLO0K4j-Yo8G)O&3_M+Wje8Ut zIKf(GuSP~$k!jR`DDe52@I#uzaZ`pG*PV;25a@=|&>y828+3-*X&xKxSg#}YPRHhj zt^q317!~n`;u+iU-P`dSQ9Z)9mshWKt741&KgR$cR@ee~Vm@wtz<6*6gg&Vig?<TH zS-=K!&+>wwM(~v6|H)TD(hn2#X%o7!62!keo^+4{ALq#`>q*E3ko#X3_IE?7dphGL z+Z08+0YQhLKYvuu52TUZl2vW^yOMW(?T!JRr3*;iw)FwZtB-w6?T9RXbD@)#OOikS z8{58~iG+rDZP+WM(tsA$#)B27nq6on$S9g4i`KZe{r39q>Og$L<Rbpsr2^TY8v`Go z{|x-E9rO43lqa0C53|Ov-<_YI{}o7J-P^&_RL{g7yn&@)d#~v3VrSP`p<l;kGeUL* zemptw@yNVSWkx(w6|L0LdtI(|#_>{aTVn>Nf2<qIrGG)Ku1NB3%WpB&XM9Ke>CL>W zNvE6KpBZ;i`|;_ClO!i^5(A`es_L5qm2h`3M#Ga7```8M6&?Z6HNUa1$M|6;IJU_t zUrG41z*0ePU1^4nAn?v-1Oj`m!!OZ(05;Td-AXBOB4(|ta095S@pWk!iMxdz(KWLv z{Q^_&YDM>n__n#nLiYqm96FB{vuWiZaZ(}P3R)O;&3#e0Iv?c%@1MO&R=Rxj5{qS- z&XzUtyt9b#N*irl^z7$B+3hVyqjq8D!zfSRclLwr<E_^DPNa|g|2|=-hYyxxPYW{! z?O$yESRN=zol1ftPQUQF?O;ZjU0Sp1-IrHDep+r-lCFJ&kM))-j-gkd;2Zf2o-cUx zoIvj$@bbXntmF6W@y%9uNgfZ=n&+MOkiJghWx)EwZP?T9j5Jae&WYdVwlIf_W3q{G zZ_znO4I%-qN<mqJjDdr+*2_mED-_>^BMbH)O-~@F5?A}vFPxSex6^a)w~Zd6!9#N2 zH4T8~`%^GBaQ-9d_8{%7RfsTV@}<%kA6&m0B@Q2l5UEG7Dd4UVvt_t((M#>@#s8~v zvLqKP4b@DrT&vSbW`{l1Q1*Jo?>2QmCf4JkVFJ{2Gh^YsV$q0n_<0)avvd%`nS%5Q z2T*@@FixMziKzt6AzFTh@OykN#%69l<5_X$c({ch1HH4z(Y+8!HxOniH`sXAajTYS z0#oHKd<pw#eCiM>69@618Czf2y3?|=LMmTf4nhljy$-9aJjj7JOK76iZwJJFO>tf> zDA9+!gLC)vQoa1TtE0pkbDuULMa`S4letfM$z~Wsw!ME%VH9~lxqSmt8VxTi?BSID zP392{_zmUj@_KuvYWbly^2y%#?;JzGs~`55V*;Gn*k*lEG`+M8ES6^b{L%#cAmrGl zKpYR=<evc!UhBdG64v$rD>eJ+;=P1)ASBMC(;`t8RRHU1-fqlq7Yq39I^4Ekbchnz zBF%R0ha9|<KOMWf=I1Or!J2~vW^L>SL#W^Wy?yhIOn;X{7DYwEU5=0tT|~mTa?B`; z<+Evj&Go$af3OzS35j;ZrZp7)`V_~X-a}75MOxn{pW-hgXY`Xl#q3M<_92Z<H@(&R zC$_F;110_@f<0>OkLqc5JgPBnVf2NkPixA$^RMU9OHAXI8$b8l)XOeYgL*tIqcHr& zn;E>ZRspi~KeX;<_eCYv36?n1kUkNJ?8NjUe$~or;h>MBgil(M--?qz*&i#tD6=nE za*pR{lM3ZJ0%~d4R<m*uen0^2Bl3_ESuZbHOruV^RKH3zJ~9$+TLV?*{`GDWDbG+3 zp#VB9HPns6HeJRJ(+k*#m(D#{27Y$?%px*p^OJjE+eWT#lq$0`=>p9J!@b)mW?y-% ze&Gy_sH|hr_<tC7_Y~V!&D^K{Q<mI;Q1{8Y@g2+$k&vNynnG<(OgRYrJ>dS=UkDwz z9vEnbuX&yK^dPH<=jTZ{mVM~7asp|8+UFFY&0ADKDEe39*yrw;IVi8Mt9dRq;582k zoZYBZ?2wadsGJW?^lDpP?R#0E-$ilr<9<5VL5|Pa>LU>s;15|lYzE?XOfF{*N1JKB zY|646#WFS6dhmhg;W}yYB9o76oR|GZV*b8WEs;fn!MzC18%PZj3BH%4c)GJ3lTSx~ z$H|@ePafTFn8j@*o+l-nv+edA9^;m2m3J9(Ax0Xp1}Iis9%1sn*z?%1%T8kTIl%~( zh(A%KI*Og&=VU(UU7gRQ7lRJS9lEuDfL={UnF3`Jzt|>$Xtv6+pOk)B)1hAit*%%_ zgmr&ic$aCJn;+|5(-%SNm!W+7%Pfnbl@b*`1(&Tt7wL7w&$N9^3OHwx_ky54bggKk zDoGB2bcB&|9Xu1EFU`lMp_hFVfgmm}9&mP0sBodSw%6$o-3rm>adHIy+z9W`DUMHB z{|4;H!v3-e1OEo9Z;s<u@;Nib)&}Mb@+RN;^dLt2ElW<nh{rF|<;crhT4~o~+O8$5 zBOdu;8G~vE+EP=T5}oZgCL`Rs1k}<~I4OT9+@P7UdT-a?e?n1~s=^NNN(ng0{Hx<F z08;V%r)t<XGOr8!Nsb$p0i1ftu>(Ebd)T!6Q|rMAdw9U(dmad1uMn^P<8s>lF3YTb zO7H5STxPUf$T_EjWK%o%(0o7~uXC*{q~=x?aMl+n>4mK$d6~)i1M=>09A+qJmKszA zr#gmn`k`)?jCN@c948zL>QRcP8Iu^ddH1;wSB5qSF1-w(@k7te5+~?E01kF>>m|eh zSX9@4w0I@3Y9*Zn#VLrOz9dNhEpFIj*DlvO?PCEYw37M|s)rmvFx~)bkh9;FPrfc7 z9V{Necajo<n1Xe&gu0)Jc8yeo&<(Rwst+UtRJy-M1aaK7bumf5iO|tcVearV=yK%- z?hMePfSygujiMxw-tE>?u^2-LgVynN*4cTICIwYS{F!uqNM07*4(j42%jqU_?hYQj z!^N5A^Lk^cus0nUD#fK~KDZyy;c5Kx*d^&ovt<A0sT+GPqLf~wU89n%IqiO$NO)#; zd~HX1n~tj`{xl|AG8Cr#mH|Py$d(AB#KTpzzPMd%JHKOn({pkOetg*5o&1i<Q$cJG zON&R2Pv+gd<p4X0v2ITW^;uUm-#0>+!MztvxMww&_vehu`_>$7r@8R*Og;kGXGaaH z#xw!?66op1SB*vtRRtOO-x8Sp>#1o)T_|WSUYN!6-HNAt=rH2*ihO^VCUWn|!Zlb& z-QoK3?VhH<|J36np+gx4-->Y_%Y}o3C;k)|KC!oy-_<M;v+>Qspr-><Azi@wmxy*n zQtuUC(5CCAG^g22XaZM5E5$5tId_pii$pFL#rU59_IRk}Y?$^nto%kc0U~y2`RR~* zd&wGctt)OK6eMa?i{Tie0!ANCfRjx-m~<M?8^<bgw4my)oHKncXSA59UUutFAW^@c zadO?yYKX~KZJg30O_N!MsJhNNzu<rS6I$MSeZ1f7d4^Zx7zSYURzDoS(L>q}tli_~ z^-q=yes~J{<woz?-n+oqej{`$muQ~@s>vIvCh&~y6D;7YUP%^x50W>M6pG&~_#a64 z5vYO?xPH=k-T|Rp?7z~|v?}<lo%6poAp1*82Y%j?S2ctN<oqxB>T6rr>ZMUYYy2AE z5K>ka9W=$Lw*PSfz_?^lE6WI{h*{M*jDpwuCI_>5^=yJ!|Ll~Q#;ogR#}?r(Q3g;4 z;;iln2EFVeBWA$Sr))%%;AMiISzle+&8`+mfekPcxeGDOsZy<%#?LW<AFQZ&IYh#$ zd#`vsi;qEFG3iJGIh=d?8;Qu{BF4pu=scG&Kmk894+JLunB^d8T^8qi@Zxar-EN-~ zM7u%cL(i+tRmDo2$}>+6PGr)<?PwFk4KMKV0_i+?%l#S7nWGj82Q3F5jhBpz$ENG+ zq#@b8pYWH%M@FPfg5=^G`LM2&B&(M?`AK~Zki}-U1|WIu5#o3l(#~#QM=m15oh2>f zw!CR-H*o{qLGS*pm5GYsi2HHavc>F3m22dkK+xqU_Um$+S9JN&ut*9;dd<N^q*R^- zSI*0)n$=#Z_bxdO<6mO}Z5D?m0v->NEX!;8N3!JuR&iLUS3+lq3m}*gBthQhQbVJ2 zGKE=bQ2*XfG033Ea-L=na-1u)-#UN(RE76~v7{^)OB_QkO|oi!U+XT8=(?_>&0_Ux zga^6aW(+nTFPP>-qp9z#O)CG1Iec1Mq`g;zP!Za%TJ+tFw<L*_&XmhR3fTa04k5K} zs_T(%af8{2Zm$JDnUf&lm`Fjx5n$JYhe-*J+fL7|MHZnJ&K>0#aI1q12t7Y1J#>jr zT0r(8=5MzC+NB24p}<t7yiuMdtEVqkqV?NrwDgo2U6UazBNKkplUGzeL$*<r0%?mD zpVnd*9opHXy*hqM*AJXDxjwFRj>iS;D+iT^f7Lf0NM_L&=EV8|{h}_I8-59DM{7bJ zzfocX`;FbXhx5o4`u-MrC9%ECJ_+h}ZrWdd={SuOP-NNfS?B_#su7y_aGL_kQa+<! z2%Cu3d|XMqm$}l+L7}lQgHH<PjNQPgo6_nzmz&G_1(hWoc7wN(P7_UZGKTN6-oJC< zUqXeUUDZwQ6taENNoAdf<G2Z!t+u1XoR8-S8;aQ87b`@KO*u%C6WL<TAUW-j^ZCHc zYzWrX?k`1U29Zy$PPHCr3U`-qNlH#A@M|g`)jeH>eL||icHcbYG!#ZEf#3u1+{;TE ziA>G&rF{>2T()?WghVg9Kt^9hXp&s-A{PVjI$5HxgYJaChOU;srcNp3Q^(iBN9_wP zoL|L~Q3qiJqhVP{<Kq*cJtL?Qj7DP)e*25*6X`dTVrizY@3sQRFUL*>g_-eRotgrn zD(>F4wyP4yE14_$^E)G9HP;L*_N^Xb>RNC#I)T<tK*Zfi<Tby7_JmIA5I(!|@2qVM z+vVP~r4EyEEt|tiEINhn&wz^@)sWBXYRE0=A$-TzQjeCjgjbSM$iwhxGZ<z+6zPDF z6RO9RHn=s9$Wv}!=dXCU_pAS9^iido8xGpw=j?ZQOy4MusVx}TGV$pMlXL`Y01Rx9 z4$$twJ3hs$R$qA2`cr)l*q~lUmiz0wuu*y$r=@JHl1GF+Zd2Lp0L3<;OQ#HdQ>W)R zt+T_@tplgPpDE5E^UxN$@YP=H!*>>I$RXjPHwaJz1Y&^n1TmE}q25Y%!D$_y9e#b7 z-8=<q#RNa*ts!=O`yoIRq^0pX<mTIB9-A;6e>ckad5!U5{vb-5TDD}r)7y-F=Bypd zixJZrds;|hQrZhfej&W{9BuTlYwzR-X2hZu)nwqGoI@RRLk$-9UDg<i)M%E0;2QjO zx`1k{8=pJtMOvYhw1oPXg?7cs>X$REzchG2PrX7?0Y`(c{Gw4TjCgrw>mXLOf?fhD zCHeQIn&pK*ve0_RuFI?8W-RX8^pGK=!lf2Ms7hXlwdhTeXAi3@{kHZ(i!;49m6Fs6 zY+J2TgP^1~bn0UiWdJru)6|V~FJ~Q~cjH>rm5Bpa#(_`v@ba*rd7mv&O!^JEp>Acj zGa!YrN=+tPBX^8_fAGi4hm+|s=-@4eabEYf>yUilr8JHClye2No$ByMp8N$S37b)T zbl;RK7ymQ*GF|CXBL*t_!6A7)WRGWHo!N8TO?=z;itF`Q98z^<{>i<TJ29_%Os|Z& zm{|38BNrQL*19+_b|>){zzs2HE4L6cI;Skb0<M=NoZ;@N4n?c`#A>gf+(14q{k4^W z?(9bYFlvLoyyY`%MX;R&E!VhD<8r*+kt#i4Yx1p0RFN<w#f#9pdDrB$h<AsGuwKZ` z4z3rYpI8fSv@6U)j~WQ<p#v@#4yPNIj?^h}OTu0N4C^9(j>T!DmKCAi=I~BnKQLAq zMxH|QBH~^oC4Oh5k=ev5a_oC4)biOWTcavp$p41)_FaWF`G^{MFMT4Ae8zqy&3bM2 zoC!hLbzrFR(tVqCz&rn;5ew_5N}p=^%|h~=jH**?Bl|&7<QHWjOItT0UTeHG#2Gul zq%qDq_eB^M$;b6%)_iZ}#^kAXdAA{d+lZ`MCp2&l4;E{w>Yf_L{pXyhMkk8=6ueX^ zpxj$Zgihq-!@!a$EZN7UcZj&W#%7kmQFUwn;^IevT_3ugY=?q-+(+#dyyz37TT$<K z)Kb|{!BDGY`}#p=fN5m&Y}V7x$A`v$oT0CyYap9>wf4_`j%3FuM=kO2;HfxIP?6?o zlN`zFNorwy9${%2ff=I}zLSqR+h=+%J)lVWW;K19Rhl=s1R1X_Sxe2<iz^^HTDila zO|ERfH(*b%XG)jK!ScPH8dAC3#|FyVxLuwbgQH8b8O8PXY)>}!6#wdMbYk=RT?Nae zQCNwhmjoo30+yqDj(}KdgBHZ9vd0G3YWhLeBrwg!s@~XA-kRtjZz|=K+Z2Z8yY5z| zH!D0T5Y1&5AZp|sw62J_Q1@H73eP?~FQSvLr=iXP$r96CpQ9%hK(bQ`V(dT#qi9$A z>Zep{J>&nZE8})e_Y<;7Ew>Ek@nG1goS!FNJdM~?uR77U1IY5H)f1Tp{t1pC$7>U; zw1(tHt9@YB5^llYxN+%e7xt(Q>~U_?%vZCX8>n+A{H6El*(CR2M9pmi&O*I?Oq{g{ z)4b!xa4&0d_;m-xoa*gNVFJ5Cs6bNiW@=gP^77aHpI<YLTxB(ge@7j!C#LmtOXJ?X zxbc~#n_>ulD48RDV&jpR4^T7MJ!L=i6_tw0b-$epnXL2H;IN_JDb0ZFc8V3O#)}`Z zkQljT6+e%8uimbtuO(9Y&VAPmCh7jk5bD%DCLZCM;hF5msa0!5u2rQ&a<B6H4u~Nt zP|?#b>1}okSPi)Bs-S!E^$sSZUh%<Ct4i&qA9G^|HUI^dP%qt9?RUxGxLQLx$n5q> zUL_o?XxOYJti`U2SsXoSD2j`;9slvh_j{Fk+IsDLjr-OyQ_1M=sE+Uz#9h0qgO*)J zA!Nzd*P0}S^t#i*!&y3yS2!~<4B4>0ORoR=*=(*qT9cMHlYqf)K8)3P{>8ZDtpv^B zYdMP5{-fED$sbia;)r%+y8qq#*oxc6GJw&|_%C3e2gk0Vei7GfiO8m)Be0&l3D@e) zbi_@$n#wilpBflcI^y<C)a@`wug8lVl;7nop+pjhl8w%jpzId&HD~rPUsY=-p@AFK zE~yP#2LFsZG%S+ZoQR5-+nq=}YT;1h$0Rc!P-&^7V2gUb-J7l9oMqyWEgnnqK8O@> z@)i(_dP`e2T`w0uj65xU+SV!wMd~99-;PK<#(0{rT;?NQ93w;TOv!hES`CQ4^}M!k z+x;IKd^qoN!gtN?22H>_?CG(sFG^PK4N&`*#HY)R0m3?QxA?x5Ey7sgS&^8PpVx3Z zc1%wB9dn?V#WG!+kll#&<|=*LUgr?@k0@7p5w1<>vIl2Lf@<d#a%_v*1o?`|nv;Fc zkMBL+=DKJ_rrfUArSVUg6Z0-XqVrBfzc8@V@_1Vqf=%g~z7en5y04Jar)T}~d63fq zvc5Cx8+l_l0RtrW_$+x6d>~a?y5KQLpESfa>D#_}-lQc-ncP=_P&-02@J748_q4e1 z-6Q?uJG7``x@1Xt{01D6jxATrTbf6zMRA*}jdgp@rg@!Rhc}+5|IPE0<vi6@OFMV& zT`qaN>sH_-WgQoys?N#b`7luj6Qa<DPwY|7OiW^kH&5R8Wnlu2FX(W#+3k#K3A$gX zMMv;C%>MD`1`H(^p=2u3%6}l%94nY<?uq0l;G9eT6HKZ^<{+0F@!dF`{5V(gqz}v1 z{(N+wyit_ZN81-k*bc3ERz=(82t@0B+Oko-NCvIJbWBu7NfyY{U&~9JnoKs{<<cOD zlRfUQLR@7hN0RF4DlttbOu~n`TMwO@gL)Ha3VFXJXUOaLh_<y3D;~ixRhwLb8MV>D z>>Zb3DNYs<b<?EMBZw%n0q+T^>&jU@$Dk&jTuu*M^e7$AU$>|Lc#YtJgYt*2WS3Lb z9=GGg96iumc@^Dl$Zzkd4yhEfs@Qb!GLDxs&FkxFbMgeuj+LvI2I+LQa?mE=+_oxL zxA3(XYTKGrx(!k~W9rhVeqT_qdxV_>|6_GCA#Ej)R#)e@@~b?(xBX2bXmjX>Qw*oN z-5$l`eZ%ogZb}rPhvHFwlHy?x?W6)miI;brL6^=q@;ze0*nJme#*;MVvy6$UtAXb~ z7{1rVmBjYYEg<fv&1bRM-DIR2K5_a+>cI7Ap?eFsIZ#8V%%5o&$|U*5P-e1oHP$Dn z*0-5iQMRCQNdT00Z^NJf@#GKzsEC<FbUR84db}zBQr;$4hs>p2)b;mzkJ5W~io}{~ z%`x|v^?V1XKmGs6daIzg+NfPH`EUzC5+q1)r*Vf4?oNWcOK`Ui790}X8x4>k!JWq4 z-GVjlt}Vkq=bV|Tnwx$3-t4MX>sgO^_8to2MMYS*Hmc{;`@Q949>u{)0C_&+xYf=H z=G*`YZ7Fia?X{D;SkvvA?*LlUu=tvJP_VzlfW}&oxvt8)W?NpSjK9s5BV#WrC38vL z+zg1#mD!s2yk$n|815-B{FvKf!oyBC{&cDD%J3*S(94?0(^#4DD~6d;DT<wkEP$H6 zN02iRXJE_^TU9x!aZC9qC}X|+B@i03;QC)~=0q#4{<4Kmy0raO3|a;C<KfCx{HxP# z_wA*~a>XTq5DMH|+$=d+PN=Y0ZpPVBt(@`<ZB%~!-(Rvk^6Z<`OW;)6GLYmm&J#Ev zi8nwU|6~39oD8(sx%!&_JkT`Pnci--xm;8}-(DhN^LfFd#}MVxDA63Y=e(DH{`RGV zQE<(ppNzSpo2~Z&@^zX%F1Q1bM^W+|H%1eFeK~a@?{?0ypHENyO?dqh;CC$*h(Kf? zEFRyo?<()>kx+t<LlOjyLq$ri5G+WP;efw(PpD^9R|4q4!!9b63_2Yr5MNk9o7;S5 z>d)s4#H4pzz}7r_c{%&9_*T4Ky5OWP_cKt*ZdD8hB=cMOyVVlFh>Y9O;ysSo!`3ac z#e`7>97?q2<5ASb(Hes<rW6XjMzZG5bIAD9((y}R_-EjhD<NhP`zGwU{50QPmy^&G zw5b?Z$GK0z%SbV;ZDI-70<q#{zb1P-35EkW946nK{Y^n`8R%&zLDhC50Mlp}A^cL^ z%hItvIGXN3z#)%tVHM!W3aMsN>5&I_#2hNihzjtv6{D;et-m=1I3*mFG>c@1Ku*%8 zk!tz^?{(M2-ar1K=>FX&M=DVRAn%X-c|2vK0y=(o12WT4G1j2WuC+v+n3x2VCL^}2 z&-3A`mYVtQ<iQ(0=yGu&s(4R;zbj5BnJ6mC8Fj{MB%=ylFf=rUQTqA*lv-&$g274j zyj>JMOd^BwPqEMZNfL5<K(wmInnXZucrDP5^8jg2mijjsq>iLs1EJl6yWu{22w(<s z^WZW4$+TJ<nVyHJ!O`FQ)_nO%IusAry>Ev!!)24qNReD9nA#6btxb92XMV5UTnpQT zXe}YiM#d19<pindr#xwAHi=#+!z|9+PQL@<H{%71zx+SOGp#hJEQmmPn8UdrC8yE^ z=prET>|C?;1S6Q_K$RJTx>zanb*f6OC12Tx8d-#E>=4V<n_Vo6+rct5jNVu({F*KQ zh(HT!X1#P)ca&d0SW@at@qcFIBei5+?>+?NyZSP7ieNn)PQ4Wo*dCMdKYSN-!RlF0 znuBtf&{~xrW|n!*iup)ST&JU~TQyx;;+ICcd$mi8PWK$#ZOlM!Sv(_K6vT8>?uVKP zy#G$fRo*MyT=hU6=x@!?=FR9KgDWe9D`9L*^#>*xG)E-Z2}|C>dOE7Y&wsc}&EWN> z-P5L*pE<0yTt_AI&U~jEEaG1Clx#@#Icj%o(`RH%CLwAbn0>;aI5K}q!D%7lhPQyV zd4l}B|EpPOl2xUpK?xVcviFgqz8d*c>_+UJ0>Jb?8kxmp@stO;Ggfy2xu;hmP3>s- zUnV2bfUs}&vG2*9sAx0NqCH%7hZ)1~eU1I_^CbAm)Ws%C-V)}m)v#1?*1UmMRUCZQ z=f)}cyYZ&8h0J<QIb>k^O{W;nQ@$i}0rOsDFiEv<&ia5vzbpSF<ut?}%ZUlNS?98> z7Jf|cA<x>e({LwLIVvPiH}|SZ+@AnD7%BEWkZB|9wlVNEENO=1R{ym%fHH9bQBq#_ zXW~Dm1gFY6hGMhhdxJiA*YveHta;_L{(Q-EZpByNZ6Fek86eT|+G$wLrciEW^Cny4 zS3SW3O(Ozu5dR%+kg00KLG+1~P2MPaRy6L~%sgnO#h#7Z?m?!4eBYCV<1#&7MdjR1 zz{7!;A#T?c^id;xbt9^dA)f@bM<<*RB)3Q#-*RzK_E87lM+`=tvLCv~>k{a^D^?)y zm|`OKUUa?nHA7$^p~5({kwR0eI&J^zVEXTfK5=_#ZGF)S(5q!Wq#7?B^EXQAe*bs0 z4d|>(Iyp#_|2c{ikcMjw{udEcw+!KQ-cSGa8N=jJEw;0IyU_iSE7B{!;52u{omcpv zPl0^<PorT{QH)XJ#_vC9@~9`N4cddLaRMn9&sNiys~a=Zx`mQVRqL5Y-d+4YYmq$| zx|U}FV5lx*$@1@d6n*|Z&bf~LARoyupE+Al1m`%y`@wH|e5*ntrO&q#>el7YU380- zDLHL2<9@Hw5LXP0Ho$`B-&I1kmv4Ns9$>dS#~ij1mzTBcWh9eoBRg+sK-O}CLd1~; zi3WyDa+pU7*Dvj-hPyFo4sD1M+YAA>2Gbwy1;2t)er3~jf{%BJ*21hq7nqs(YQmL; zrWdkJl7u(aSBIQK;GYlmB1514Kf8b1z{Z?RXJZOY_|GUKznLFG*9<A0e|5jFEsb&w zY#kmCZjq^dS6|}7tyHRA+-s&vZ>4hi=SLtC+$`{(ruQ@H?4`xv;lakGO?#8)$Cb}p zVdBE1$RD-uh)jcD>E0{d2k`!waBX?pOWhF-+??4TFu#D46d2_MEHN@61{+%}ryBGJ zof=n0yJFJ+Fm=YQ-Z~;MJ1H)?Cia`MYOg^vUqI2EK$~9$DWmIWA&mashkyrD`x1j9 z(1wQwWdA-hGf?6!Z=-QM+sNL`kI^4zprN)gR=$z!4YR~W<e$0V_njigAGbZGv2I|H zos{;nFX{NfBc*&chcFKb1c_Wc?<9%@f|K^Fvm<bWImNW<2z(9n_}n87R_zz(MpXN~ zl(5kvT#T5}9BnuT+5c_uo~*h@`BSVS#oM27#O}a<xKcXd(>)b{^>4xIgk}GdUpmm~ zP9JPcM35CQm*TUn!lkBmnxry@pJR)aZziY{7F5qC-D`AD#r1<*;!3X6mnkDmDI%}? zwz{hOT)a&M9-e>p{Ws?U(tkuccKYGno5IY-w$p{IaqBvLGg~{y2Gu49agx7pL-s#o zp8+k7z%fw~#GjG1tjJBo@zN=v8Ce`3`s{Ky*A0_agMp#9K%To(WTPWqByuR9dqo5w zXdpk#d_UZx5o}?%kGp0YtEYrjgv_aYcx-rm0Cf6K%e%5`>6!CR^7N!FpwNQopVCzE zKNI{ovTZPIHQhIayMOflnPAJlh}*U6_`zyGs+iHaKW)MbPtq`kVeVAL)*fSk?;VfZ z17mM`+v7N$w}gDN>IUd|=Qb*UiNN}YwBGad{R903K{1tBlvl38EVNpY0GfB8PL3_D zbv*cy9Q}jTsJuj9&*^isvJQFUB}XkUu1phY^>)Ezy~7^bh^1t6z)a-lQij<RH|9M4 z>`Z3CVXQ2TCZgQyT;Db_QJw6=_E)B-G(l=qk&m-Jx%5-`K`X8Vu|hJC(|?Z&&pZ5L zcVn*f)s&Hrm<4f{x*gFQ9CEnALn^TsJ|748ZFj*@)bbrn?At~Wm!evi-QQmOo}OYo zFmRxWHg-hX5OT0aWpkSuP;|7!!K8DVQxRHpBph#vnoqNKczDT|K9j=#xu2-n7|fst zx^L)fjocvj8bcm#xyl0=n?&S{RShu+OMn|$bU9yvLr+6a0015@xMga2Zs!g3(dA1G zXJ<tE_l^V>9FmWI`(K<g+<8gN!qH$4PKGYiY;mjWrr+ulO?RbeN6p4jjZQDYzVpl; zyG5riV)Jk4t4Eqmd;%LBn0D2B7nZ|P4`xcMqxjxkDx2_-O|tZ86l^$E=i&|y&XUmh zQLie>FRD?XCayAWe{mtexuqVwZwnsCo)nAJwV~*$umx}-><dV^FOJ7|4m@Kvvs^nR zjek4sIZ@#K(R#-MOf(cQSwNw)<?J;{o9}Bf?fn*VPTPJgy2fHPgBf(kvPa295B+UH zEGs`BI}iFHuxxW1yowLVu3&@;vUSJP<bD!4dqOvEj<V*tm;z0_KTbBW0DD>uVz)nU zG@`Rn5t{5Jpbo@mALaKiZ2nol&ZLyOcASg|0s#IS(-}cXgK;{V_M_Gi{IEtB2|2M< zoQ_D<zODIW*HV1o9^*|``)pO8)-H9rci&C=-!I4>lFfM2MGw(TD|&{`FprxZ6MAN< zpi|d39FHr1P|Q=#t2?haR(wb$wk=~>0_JrWVl_UZA9tay^~kc%B5zDG8jf}2EGS9E z=%T&yQ=@7Xp3E<F4GS+w;~hYq4e%=;oFpx&Q692UU{+jj%KI6h`8DcVx$ac>?<Wv^ zRPXOK*FgIUNp;*4W?izkMQ`o=f#xcQLca^*za}{j3vt*X;TXvFqyNoG{4~(Ht9XCa zj}g1b=ej`8#hP^7H11!+4RF6xm)olw+er`d`Wko|+xk247jpGL&@YI%P`VZ&UtV?f zgZOsWZ0ktm)&@y1D7O0iZ&s1(Y&H6DXU1te?BZmbPu8kmX`Ls;KX{lqD@nF{8-1so z<l?@9a0&RokOcK3xg_#K91yhs;3)0(0t9M>xXz7@eB)#*?C8arJr4WfH3`Ae25Vp9 z?2NB7V)e)_t1FEO&nq_5HesR$NN~VDz_(Uo7pm76vxgdpICxiPazOxd{dTV)d;ts& zxDM74Nsz4|b>5IjjCCaLrkfS8IYv5V33H?OL#DEM?oGcyUyd7IRma1XSGCxIMW=)D z6WE!sYH@uUGm}Mby`iS$gheEqQ3p*{lMu%Egnf+7cvgXZoySz6ES=7#bj==t%{KTN z0T_!|Jecy?^z~7H1YQ7f<aupidWiFZVfFka`$3bwkx%c5{7qvWZ11|;;r>H{0Z7AH zykN`_^&eH>7`0_~i$_-*@ks=NBK~TQBz*BLFk6<L+H`*mfmBmDG9YX4_#5?3RX%oA z9Pm2=h7Sr6?|$%+S^>Et->rdax$D4qXOOVRNC@afp$S9^4lEnOw8Iz|4oGEVOJAGT zIX(GF{+VL~ejr|+sX+WiJMjM1A!43jS5-Lg);oH>by^qk(Wgh)yzqE@(l4b@O)k%P zXp0yMSPE41w}>K01Q~VDFdP1O6C-#ygllsZ&)LaALq($|NU|+$JmQ1+KHLBD8|dy2 zh+$7-4P^!&6E?<1VgvnYMxoUljdcrPE`yT`9_p-S3T-ePUkz~B`BUe&B8JN2mHB@P zre*^e8!Pl}A-vrMCE5atCrKDU)5V($i?wkLv8ySZl#$I^MVfWpz5|G(NZwKDVc>uD z6fq%-i}454rkCzw*A6(zOn4oa!-PR~ik|f9eA<i(cGE+ek4(@XO|Qrb*(hq|Q^O~_ zI&xxD*|9n|i3>`~R98f*7^US9_IG83nnPgOA5;{zrNHD#5EX<mD9&)QvisagbG@CZ z2)>CwjU?8hcQS|~nuAcQ06?tlgfruLJ<&58O%d+#kWyfyYIhyHx$vOdJFA`mzp0Ft z3#S$oc&Wu~Iuex3R`0=@=kJydU3OqbHxBR*2c3<iZ$0Wx(ovCol<wd*cT1X9SlpQA zE6M@Ba@@P`jrbgEXi?61I-TgRn9%I9XWmbP;dm?BFV4XF?~1}g^b&>0orF1}_BXSM zKK5R^W(QX~K|eJW;zb+$x%0<Wf&HRw%jV%jJA7bqsnQCF+3g7WS)6fKszbL^+fO%x zxGEa&4RRY4F3mS{#;_Iuc%!d0^E33SzHNQTz^xi5m!&kAVT9Zb%6?YDepRc8JPO^h zn7V1vbJHtNK%PU<Eo&DM<hZ6$&hfrs-9~iA?dVm|Y%|MwCNiPb@?1)1IfVQdwLvH+ zK@(r45=9ZM%`a+i^<HiGKc1}j9uTrsGJYK9+1)|i&bQM0xV5O}ors>*C97sJ=5RjA zO{u7+NlU@N__m|;{cOEJqWT~Azw&D%a^m68q~$zHEaHpfZ-YQxn!8lAnS1T@G+?6t znmET$Y~+S7v1%--+un{fr7!v-m+`5~SXp)b`dR42$qyqWltDHXB%;?!IXk*>4vJRS zfx`suXD{}f#q)a;dM)*CY?yKkx;V~+l^!+PrSyrX|JbM4BSh6RPkLPDTo|c3Hmwp1 ztyrT5aw9iy1uQ=1!JB12I&xpeF(oGaI>tGpf{U-8`w2U|*M7z;dLUbbo=zL9d^$w- z?gQPVB>@^T9k>js(1(j}hMp-@PXZ)FEI+o%=l=B&S2Ljel*%&pjPpAkKtsl}Gi5@5 z?wPQ-#f{M?>GEaJ_ndrS(Cq^L1!*9SAe8^_0UaC%aeu`V&WGFEzyB|Dca?<flO=#e zJY=x6s{g2|)#~}XCcD($pM+cVYc#iYCYxhWMX&PsWPfa?W+EE{9*P?RBxfnQF#*g% z*1&EZr!UU724zLrUaoR^p-iB;fAVt3{f~R<&pd3z#kcKf<IQ1%(H9V{QNI3;CYxdO z^D#q9{26Ns&@~Asm_dphJ%8A%+Waxt;{ZW`Fm2!kB&K><*m{z+W!#t4=fQLWj!i$3 zoq}$zCVwJ7^e^Y>^MB{$rbDU{wH6J$%XB;^^AV5WP7dx#+6|2Qda1>p3H(5f8%&H> zXlLj-?IF};r9LJuQ&LPKEr%5KPh*IC=X+h?4D0dtw+rm;C4E9LJ?wM{a_^K3y58n; zXymo=$&3IgQ`o<l-ALoxbe%_=p9jXNuQLQAO}?9^#r~{8fLMe5_biMqR~DEZIQ?gn ztG8$Effk1|@ANL8X<=NJ6eeePU=>&Uu<8L>y7ZhMPspaUmr-l!(^j*49>Z%1M;fk} znjyOo70#0I+4h+6Dw(Gl<l-rSb_l{w3qA&u@trwdjTL(kx$I&7-TVhWwjfxEq?S|v znDg!UGWB2<w|9-&BPwIUW4*A@8Y{tqUP(n?vMx!9_sCl+u*E<qY_YK8D*9TZ{`ys5 zokgr9rjA(Of~10$2u4Eg=P9GseX~*yE}!Jys1)~fnIOVZuzmk7fPqWd71f(556!{d zZ*tAo6Sbf;3b$%kLCoDAuQ0%~!=uInFyNK&aeH9A*I%vHQEQP#xYoIFUT?KKr0oNP z{J8M$NWG&aGugZLLv@>nr_u@pmi9^3vTV<T<*5?8X(PpGu;KUlwM2hVfi|voWXg_C zVvP@B-t_(LKL6~)<lBCr_9Mx_@cujAC|5gHPJk(OkVI~T*RN^~@sKEzX;YN)Oew<* z>pj2+;ZCV^jcJ(QVZ<N?lH~SE$z=CA=}R9&u0cj-zsrP0r=|t{ju7j1Xp>=<F)3ry zxGPCGL5A9x!t&p)pvgG*KDXX0jMWs&w7Q>^SVZGM>v6!t%8WwTaaQ(1rNA@56!Br9 z!YHy&%8S<NO>wKW2vq&a+&BgwqRtm!q^mPi61LZZ$@--M=V~=nCg%7$5ul3^pCY^Y zS)EV*GQgxqaI`5So_7_*6rA16Y=P{-5U_y${;bz%K^FY{m0!R~NtRze#s&3zmw|;Y zW8?{~Fy%fb(hd%He~T-LrLKYx=zz&GzEh0EhYl40|5~ONv7rUJZt1}-MTt~{njH6< zF*KH&v-aYq8TrMimSRxq!O+PjRQXzU3%^JW>U+~6iRhlbt9_q<7CGkW6x-8fPKr}Z zkWF>=SW`r?%D?@o+R&BUNwB@nIoD`l46Rnf;y<BCN7~S+1>lwnM=Kdh_^-(U><&LU zU$pz*wWDp9*VD}iD}rqZ9SbG~>)T-mP(tM84$W4v$O)S)j^5>iAM=>V#c3_jC^Ry? z3aM6+@mGT|2CwOS^&8$F-C9_B4MZ>cHhbn{oq-wUrsxj~OP-dfQ69F8vJt^3g-3fD zCIgUh@wFho@7vs5J%OOS^jAirXKFgSqVvFO@!w}o{wIAsfb^_a<~a!gD~tT%v@pEd zx17z-uLl!<oO7B{zuh|5B!+vSZ*?wwrufR(c19CtVcXDUJrH7-oNhL|RfgD5PCpex zU7)NcDeCgaSnRWke-{_9lI(`3l2(*_>^K&!MadAla2D}ZfY6?n)mU&eR5!=bR;)}? z@6@7|&=>n*7Q0s444IEWJ5}!pl^grtWaKoa-+zOq!ZF+h&SR+{&D+`!)9`}Gi;ZK> zyX0Cikmq5!P{%Au<`uaq2-qq<O-WhhlEnfLp~35z(scn?^CIAPN*H48Jmho&!2`zP zTy{5Y4|cFYQr>2KX9+<8;NH=y+JSf`(dqI7H3o?E+mkU<U%pklorkWv^QkzlOZyBy z{)U_8z)8k2V*kERJusVb1&PJrGLV#L*+on84^TcRaV~R<e4K6;r?wkm4Q#+%J&|Kr zK#DvTeyH_}jg^rAy}DK2>zB5)wSXdsi=L1(NM$=;e)K~*0BfNCVkR@_JX^2*erV$u zBzHL{-V(T40o%B6vDAQO=@#YBCy8$LqJ6l4Z{{^WwYQdiDPUErG$H$}_BG1eM?8U= zaB=f`&|qNGj^HjQ0NCGM^spfjy6)`1f4%Ene!kpsJ<6y;eTnJ}fmzgdY>TY<-9t&m z!|_)Rm!&t52?lEdFu?5PMqV2kuiWhbhpusG?5b(3Xq%WEETOCf&774JWcozCeMY+v zY?~tKowz;w5b-E_XX!h+I^Ae5u2ZG;`rXLlr;dTIQ#F&TLd|#b?VhT**n1lR80#Cq ze*#I7))8hfZMaYf)YKK3dHO)I2138z04*S+PWzETx?~;OpagW!IUSDE4H!Qa-!{)Y zTv11rszsJH+W<%KQ~Zn?!yea?PANX)RN1g%y3543z1tM~ZYZ044J^WUH~M=5_BBzY zm-L^k-M5QJCUJSmXYI;r!e|!7en9zAJPWynnUuk(Z7KzWXY4?NwYHB*qgRgsvQPp( zLz$aI-oerF6%pS-)4q0%zhdOetF(ms_$NCt-=OEsLM<~weOybjA|QFmT9MMVM`hHj zs*><z`Q}4duiw>U@i#YPjXz3wa}~xo4G(|hY^%38dUJ8#ta86U$AwXTO~kmKdBo8; zeA3?J&iVHKJ`o+V(g!r>>>|?54I6osYHmQ<>Xi#dqE;x%Z6FHm5BfCvIA?AJ5pSYd zuSZ4&&Dvhl%xB`1w?<@B5VYkQPjigk?^jwW0}Y3vU^)8a?j2%G8r0%sON;h6pt+aY zC`YzPbG_kFzL@qu@I?tE?0OW)5n`zK5(NDapwZ^;RR<b3Xwa-gAKhG7%rvL)t(`B! zY>!r4tG`ptH=e^Cu_EGLk$?4myX#zuR|vuELt_%GCFquLcDC4B^tsX<v!NA(4zyxr zmNdHzcHwZ>TrP;bJa{ZEw74ZN`&{?lVX<n$msiY1Od<QKpO?xKbS0F9_<lrB^lMOF z^AZ?3e*Me*fNrr!(@5-Ue=>IM@pr)}_Td&+|7iWi$+?M@xv<eRYAFe!h8*IJNzTbv zPI+{{*hl)~B7c2bCJ5q^RX{@k4M{o<4xqMJ5rxL-&1V}HxicbCm}t8BQsEzT*uM&R z)EC|YVzBwG(9@w-B@$2R9?bKkM>-3ITmUgR$HrC4F9kWcm#PGlX?VA~fU6Z|<N58G z5M)6Sv*9FE^N5XZ7l4fwWlQOL^R^tN!EsS;+<;%B++W*Sn^{;f%D3_0PxFI(15kKq zL=Z7jG$ux#rOj&q+GCl9<HShbtQr1#Ltv-ZQ8qnl0$MOltEBsk|L)<JemI2AVQ{-d z>4W01_Oy=TKHyby@~xrZ)ER9D5{ra6w)Jyh+3Av3ALb91XG>Xe2HaHtKV-+{YPYZD z(%nE;vhcRXU@v&A)m!#SIR$Q8>87cE75-NprwlTCBHrP3n1@{dw9r^rUcW3nl5m_A z(<vk>+=UAPJB3!C^V)lQOD0ch#_Eq#56rz2{ksz;I92LHeM1RnxpOi6?$g$AMUdcM z<+Gu{zEq3PyM7XDOYQgFkWIZe&kJJl@bz77|A%E4>^s|O1XL@{%qlTce|x^;oPTWn zN0ffGSp39d{a^`+Nz5Nn&%ujod<%F*Q*-sF1@oPY>YCnbs0BQ6-nYfNy5eVwKlBr< zefQM>o*#CuODCG(x*v63pch3_6UShm#A#jM>|N~s{WCg?=XY9!`igVV2(vckrKse7 zp4LNn8ffe2mgiDa%5K_;9at6-s)uB2@Wm0E5>`%8*#7b6tE<wml%3B;tnYnnre3}O zhc_it)b$v-h;)Rh{u)1`GRi2}>OQK?&1O0DVCmkHeQAjDOA5hPB+({_Toqg(G(|E| zf&9|$<x`58BFp(991Q~<TC1%zf;C|UdhD@p8O@)!1Y7Q6h+DXAv=CGS#Bv&t9Modc zQ=!W@9Ms#tMFLkY^`8FFT472c=KFw+ND!uWq>Y`ZIHczuu-=s`-fWSE2TG}m3|L=@ z`neKBOZa}faq$;jf53xk7G*Z*%N<GgCIWh1hU|vFOv(>y$UoL-*VG7DqW>z$V@NC% zQB-dp+52RpR;=1yj>2<4UR=D9Uz0%OqITeF2Q)QzbF;Q{&{#esU5_B-h!Rr$$i^JM zuLu74TGbzv=x0e?*Mz5nx}{1TBTBCO=^C*C&1VYFGfKSR4q^C1=QtZ1&Z|*FOHE{6 z9pE5KGO$S4|EU|SVwJFIdE-NrB{yj!Rc^}%>IFn#8x8R!Q3ZwFTh)5@nvae8bWtTJ z?s&#DLWt&6Gg_Ns=v$yJtI7&$>Y!-zz!NhmznJfuU7X^2c|6DGf9ZCJX&T0M)yLdV zFZ#cqU&3zZ6^4owm$=2N`pO>>Vd?^QhC|HHI5IoYN9xYDdoC=2h2MSuyL)IG`4w#* z3{?JTGpF}VQs$b(^8j7&x7tpJbo{ioQk-@7BX&cqCW~@TyRU^jIi#&9SL-#gUfKRe zGRhRgjI9YmrE7~KUHFO~_V2&;2P*%XbTG#^wXOSzP?M3Jp+@(@$x-t%XUsoL2AZ9% zc1%t65lAC`LB79HRg;@d@9Yh+dw#wJ|3zn!qKa8!bs&7_<}SMm9KB+a+j~;?OLb0B zKn^+Jw(wEyerOoz0JKk5?vNfe_NWT3_caY$JhF|VF+~$>4MxcVh(OD62T2A@vE-pM z#Le6}PsPk|j%87y2IGJj$-2NjXK<Lhjp*h?rK9a0V6|ni6SJ?MFF1KT0{1Bv!lUx3 z<6mhPG5KQ0&s|RZ64!oFLWSOtx9Us!2LOZ$zMEv(uy!4n&lq$;m;CGQ-|F`36KtVK zuTO1`&6}6|4Vv%p<kxH8-Eu_Jn!xWLs4L-z0pW-LwRL{3huzs0l7B^Z89{iz@Xb+` zrtLY#{rr)N2rp8oa@m*^pef;5gjoHlA9<~%3S2SG$2Cb-Pfz`n#$bliui2SI?Q_uy z|EDK!*K;JQ=Wt&8YdtMV+hU`i$3G!sUf1%VD#B$x!bP+E`$2Zh0tSz<RI>o*f32I7 z^t1XQH>VBka#(~H>8dEt7`FgBkR+1m2Gad-eV+)Kz@O5ipllap5s4dkss>BdVLu8x zv|XA&K}H25&D+b9+@<G!(+Zi}ByTb!sGp1zwPSV?$dE)zi+vo`fUf;qW!oN2skNr# z8vf6n-W4zBkBNaF6<k^Pz58$%+1{i}{U_=Ya-%T(w8Zgt)erU&jA}i<;b-WyE662b zd(6Cv7?N3XAP_G=-h04aHafi<smP)Cn#2=?e+)dxWbiIKKhB_BUd?)f*AV=v`-WS9 z#Y&t4IJJsxgm^p{`C09N_>gR!YlqF^I3`LXy{7euD&%<BLXeG3ERm|iNEDOXK8UkV z-;1@#ZY!`Ew$8+T0=L)u>xbc@%Y2ONLXH}rk~?LtGZ|DU1Uj8(PdCfy?{plHi;1|> zGmdXhpti9rV_g7)T)vFWNz`6}lJ^t3{{iLt%*TU?JvQ1t%<sb3rerct!6q*+Equ7f zX!Q8Iep%CPx^4FT$#$0-WtWpGXBk5^=0b9r;%S3SQS8B(ns2W|TMY)HFbSzHT<764 z4iMa5xDviZDsK;T7g??zsUN$2{Ed99y9G8Qhoa$O&xxA|x@IKi84$4zmmhe&W9qG1 zeN0W!9=xV1qoroDx|R!Lj~=h{`Rl=K^w#`o6T637FV~L)IU{@U4RhJm@0V?P6Q@%_ z6mMXfQ(tC@hY<DA#u5g^6{i*q{19`Tu~Rg0;>Jmp+Y!masYw*(uJg4=OYNJ!E=={m zQLdTr8s1rk(oc8;jE;(<*6vsTUeZ8SC9o&xtX*PA>D0;d+SwyL4}4Veb_xqzKc|cj zHgBr>fo0#rJdP<z_hL!W>XK1wF-vy(ItoQrV*guDRjcA5kiWWrUe00mm|Ggn=v65A z=SAMizsUxCpHK)nxM2D~_93?~2WTz4pq919B-q<~4oje9v$4>@cP874Q)*Vf04qmY z<bGqxxTw#!dZ3z)yGvA`+NqMy`^F6`FNO|nUpCEMS!uQgXWOVHUH}^c34XOuoLdvN z#Z-t#iTLec9|t(T**Ia!YP~x~Rjfc-{PbSs{b(a>R<yT0GK2W`9Z(40_q%(K51%=$ zmK~(J{fwRf87^yOBgd69#Xw+g@uaA~>W*ngx#N<0oVpk&<-Xs1592xe91I=mrCGxN zmks4^Ai`#>?-die!MWJY<4T|~Z#{~d=u=is&WQuLW5kfN<69IZPr$H%X^^&?VsnY( z0^{bprZQw|Gg29UKgO2ZWByI}zIy*lOym|#FrBjZ!lYwup&H}BTEFq`MAt^K>!TPp zeJ%vl9YJuMoB=&_@np&2h<dA{lT$|3_|k(=S=ZTENegua7=W_?C?Hzw*(rM9;@DO5 z{7~GJa_h;FX;x|5h2^bJPjuSllw$jXC0~!OCesTIqpA)~r@u>u$u04xb)$sX-rI%b z0Z-h0+tqmFXcw?ePiP}?cR?~<n+oI!f8P*a9w$8zP0lgc4BYKIa*FFL7L9IT*<~^F z=3<IE1+h%5=s)nnYSRKZc~(Ow3QNK=j_9`&2mm+-5u79$fVZZNzWe(6d0)BzP;3*f z7L{XetXRhoMLwDs;!_%gW%364zthm79(Zq_n!Jeo{RKxiEWPp0qt(G|E0HFlJ!S6+ ze}E-XW>K<3!lfmb-9q_waeB=Qq0?H^gdfHhAI-`NEup(!%QpT0ZE)2Crh-w9;fZ)| z%~-Qf#<5yA*~GQv$m4(F-%P9owr)r+kBsqzr)&ig`?AM_^0qBr#u?|#Usck=2#-M& ziYwU+b!U@}^7c>f_HeABpyDsB*wqrJjgpCsgnK+QwH=XB*=L~Q{;%B+ozg|!Gf+y2 z0TO&Z*&c2fc;?jK{3;A@=CWOn6v`a{?~X!x*zNyfhsdUR>&vE$_J6n|Is{QF%2_Z* z?_j&<(J3Jh5KNU_WTdSQfsHQp){+xRjEM)a7|sx4)!(`@Td?@)$Kl1x{+@URL^d2k ztJ-?0-*I1;e!m(`dSgdoH2s^vA%!h8@N0EHUD$xdKvKg}k?k2G1)1%P_Sl{Y-;mDW zhDCdR9H4?BUONvCa^NTSA}hTXlWR^-b2~F$W_QWp(?(UlT#cgy>3vQKho<`;sPr+` zQ6hRTY-+b6RQMj*g!nEPWRw?++f3-iY@P6^>l}Ng>0;d<)J6f)V7ZO%hGWF%FZjnH zn3|C<Z2CNjH4x!Yk9!75EJflyfphL56-LM-v)O2*9v<J@-)@Fx@`H60LciR<@d@gg zV7^)2VPxv!Ccj>oUgpAl&1;jV#Cq3!-e{2Zo`8a*XDKDGDwB3l(oSO54&kQ+jq~<_ z{=0Y+2v7OYz^?!i^l9LNfs)mTf|OjD2301KhH00g=1bxk@vy3Xgh0HU3Yp!-e09it zP{$ORQ_TEE__%!f)gew@fw8k&K!||a%ztT^4x#h-ffh`3$c{RRLCi~?i``nBL`XX) zk<iJyLan>&m`DGyFt^}zG<R~%Lb&_Y;DLIe;uig|3FtC$>HE|hc`1UyhnOh&Xr_Lp zIlJ$xCJ%(s$`adxJt=Za5p@s5V6%u(|0K1PSOc<0m##%9BjLm}5rBjO#0!oz{V4bq z90K`5y;zN0ke5syv5xz3=wjHcs3gDIPXU@YsnN;`x={brKJit+3$x(x+~UrJQK{7F zCQ*HJHsi}BrhpCMXcvKaBYZe>e#C0qA*A`>hchcvrKK`rM0cnR)LCmc<b5USE6NCT z3t2V|U;iR{d15+b*o$jP{%dSCZGui3J~?DcXf=;eb+8e^`nSB3?6h6Zp+==|M&`C< zvIa$H@>Lr2ge}HL)KYi_pik%;kjV`#YP)hyFN572@&B{L^8fFkxL@R_N-rsALh+1B z`^8Oqk2$?1{<&7rRrp>6lWaIratt2$!@5M=m)oJvum8$6?SN37xZiy}{kouP;^0Xv z_2-S~uLEsNC0@H}Emv#%C7F>j2p}dO4a@-AZ3Y#QP8g!cuXuH1*spRQ4&%f}-XP7+ z42nL&aomF@BkVI^#{wkd#lVtS(xJ;lXHZK$kL{Dtp7TF&+DA&m>ckmf9bDDwDqh-r zWcwI7AQ&5U&b>RF=>PT?1ldUo362nkIFhl4Ayo9Qk9|yP?cCgl(q;d4szq#PLRWwx z8E2kxt99>UeH9gobB!rWPUqDp5lY1xtS(v&th*9fN`)qQ^XP3lri0k5>kEyU(nh_+ z6$*ZE@cW7(DmT8IqsH3a+G;D>%D2!vqDC{y)NjDAL`$Y$Im<u`b`?RxR1OLMj|LS? zB#2na&+RXm_=BHceitjDgiKCr6F^++%?X5SdivwGlI`k$P82|tz7r*Cl2_F$Epn_o z7=weP{;k&d4qLFBw38~QT@7AWE9-7<$*qN|zd`Svh9&ky{1(p7fJ!;7yD<+ShZ^iT z*Q5Lc7%AI1<-`{jPA%M2kW5tjUhP0iepUhByWgJ3L69p8>qcSpRU)Zq44j{eA`$6T z{K?CR{a#pFp;yXjDLJJBsau7&z6ztH0zU1J^Jv6(8bvjk1isbfFAwR7r`{Aa@k_iD zd;+1VLntiqod*Hboj>5AX@K=6BCdm<Z|nl(I8r!LNKVf{1knA8u+wipET5nIZeEpN zLyF)VM$dZ|V}^%Zb_kv`n_O`dr0!|uXqjjcCP!a=|EeC2CvY?AGg6=5vM2L2Yny&= ze-7FBoX?Dn2LKLA=>OD4qNH*Tp2w!w261+~;G~(YpO$J4<XopCvk_)husr^UFq~E4 zU6-n&kr0){1tdi^90d`ABzpk=-=8DBe{ef*g#6saWp$hlg)~x9$&S=ra@Hn`Z0cM3 z+3O`V%EAB2bRrC?4w7EszsZgY`#yxKtlXEfzE}vwA0ZK^%5c$dy=fMra{h0l%Zc>P z8;zF&405aQ+zynF<e~`}29tg#?xD$zm&kor$*te&VfIc?;>6I%HLL>=mVT^(YE~j` zG57B(u90QGdy0Ylp6<QlG0Lv~lnnjfgHzqLJA2|^r(W>|fDKYy)1sNI1hmx^jT?$_ z6pzRvz1Y%k{%0#>Ysn*ZkQ)y*QtQQR#xKkX-bR&d+{Nf_kJJV?q*VT(ROm43eK<s3 z*=~LEQf;7>8q)Kin0)!z7yaNTz7g{=feFpLf368s?_|-}uA^oin~zosDp*P1*7Df# z8{b78AI2WAGf$Vq-c`s+xez`bcxcO_xjMD{&#qP|3*vNq47?`^*5OwI(X~2?m>jpQ z-o*D-+I^<0o=!*H2}BO6w%>ZR_e)Py3LUCn3Bf()ofBz3<NaXFi22|jj2SR7{owyZ zB#p#&Yv2_0g*IJidTNs?V05oSQ0AulDFDWY=2C9=)>;XnC5i&oO&7Cx6SH8^Sl^I# z+<bb2CLq{;CO$TgMgYAhT!VCf<6o~?1W%bY2o^Xb?UjQ%@S_FR8vq(yBx2k=RwUwb zev(=Vi4#LmC2a{K2F851Hzk}16d6nA*%GwY4LK4fz1bg>^jo*Fvx#O86x_ppN_-Iz z30Qf)OQa{5L3wk@F)=bf(yTo4aPW7s1+9G4hnR@_w)}Y7{yhhjm#da@F{yZUOZLGj zB|5Z?Qyc|rWM~NNN#xM5J3xZF&3%R*SZ|cb%ERdkS8zNnMd9k%u9w`;p863G(5h^I z_`ZJj7~FfwXDvZf0(o1zd47E*L35f443TD-`W1v@k(~51%BS9L|4RjmTtZ|w$Fq4t z<(vK^@H^zeU8!}?!Ie*kV9gEn;0P=F6F1HClj&Oyk$aw&Vk9;GMy#eXKDpW#Sa(zK zWSgX5DWf<QwZ!n(BJ)6s>SpOtt|NqE0>9tJ)Gq^eP@?OaF2rnELS8<ju>21LIIhP+ z_QBCjQM&WzK$HuJ(U9OGKPlF-h*&tFECj8XCyBDBy-r62@@t4~3n$9967`D7I6lFZ zUA<AKwPsuY#!FJnP<$tKF;a=*H9G8ngV}|kGHuNN(d1k6V-A2JZm`{{?9a`OinkOE zkR%2+n}~#%lB*XB)nt6(ypnZv_3%mDDUid*O{dy`a{l)h>3P=Anhgg0a}|L+SNl`Q zp(FyLT_2fe>HuAM#;&1Oa}Co<`j#4r@GWShsf)xVVIaHcHh{>52eI&1@N$@;o}=Xn zq2B18dw~E@`5mTNzrm?VuBM|LM=EjnGg4(X;wVEXBHAX0RcHoTV!v-CFs4qmo})VL z2PJ1F?IkuMqYsfd`4iUnmQFLA6*<>v-z9<_(_E0&DFGu<rLJ(l292FDjEnvm<G~XU zogtBbc*RQAe}{<k?gofEb^49#*8I4p8sZFm0b=7X1FJ>VD8~9SWz`@CKfNl=9XU6k zEJaeP7Iw1)DqJ_ikby!i2G)&}tYv{ppHqgFjT2)*G<<de`t_JYy?%_D{Qm<pA?|BP z^n38pm#=CE4=dpBXD?dwDMToOX%OzBat=Rlo0@{*<1N64K`htDUjHWxpg!OG_oh~d zjEP$e#rT=uNEnm|GmztH&6)1vy4L#Pan$GH(<!apY`||AfOCrUb-x8lr5W+#O)E@J zbvjymq(^dy$RYmq`FPhhu#t|1Kb1PtIHu`)T;ivO-&$)$3{5<7?Rh!&52X0`c`?8w zEw=+#t6%G3^TR0hyihBa&h3-ydm7sO?<G1?zC5LFBv&3W^YX}OkH20(5>Ksr%Zai8 zjr*VWa%_E-ZB)&T@7>yeRKI#ic#CqV0zt`@4~$GbCNYQQi)#GUwC&wOF+DSsw;_() zKT(H|@g@Cu!pn@|h)no+_#=RgMrNcb@!%`wQ53MV6W!p(kDAS!V$(ny`|f=C`z}PS ze@dRJ_t_Dan5hVs&hUozHy57D+AW^B^C9dqhf67#-l}{5{QStYeY$sPceD9cB@>b( zpdjhsK=?)NL&)no*-u-1ImNg1fE|EN2zT0h`@7CtEET<4a%Bko?foK4$Q_+vYoVqM zBV6{|_ohtKPIGs|AmURoVqV?zZ_aE<3#x;3`}G5n;Yo<y=YNSdXbRziLfBhnLDMHT zV_K>5`f<ANcd0qUvgO6CfBd(?dtyM`aU`r_*n#$9h3Iaz_PE?V7I(GZPh9(t1l-?h zxuZQ`N)PPl6fuyvCKxpXY9&zA@aS>-u$owt1^!);Shs=&8Rw29(OEuQCV;dV;HnJs zzEw?nqAjmb*1;hRhTb)~#hVv*C8Y2elh^Jx?PW?>vBw(Ck71<iDt8};HGq5*J|E=Z z_2>c7=~?yEq6>ijxI`1VNrbjr7narEatJ7<G2JvFma~&WxA7>!4}$_EztmKQ>Y<QT zA=vw#Iffj)?>NGEx?n?BuP#V580khq<!pjCi5>UoUvwP{ZsM(Cds&Cy@QcrvR(q<8 z#YWfhs&MjkJeMn&%yiu?FpcYXQUKM-W1l-D6t|asTD?$Iq_#i$OO%FPckZtKEcAU{ z<uKImAB!`*e{=|LV>~1C2ur7u+Rq{}pUY7d%5X=OPx7t>9)$iDgjg=IHl<VBp{N=9 zhVVTU*vfOKK@OocJo@oc?_rsF?PedZ2Fj~p30`KRZ)&T>#yHs4{jJ-l-+#$wWf0E` zrgZI_m4dr@udlw?ogAD=+)>LT32Q9>@dVyqz7m6N>nznKVbR^(+?DPMZV=iKIi|mv zqL75ZI_^l!sfe~_j{GRO%YHMv!OZp-cjLAXZo4U*);p*JnyPzymWeJ-UXF##B+WW( zBgWHM#+Z)n^6PPF>Y(pl7;oHS$8_kObK*-UML$T#ljAQY^zo-|TMD(}i1!PTr!Tg@ zk}l=!x(jkLDu3oW4>M{0yTKk)DB||UxlWO|?S`dRDynXFwsF&Hu2GBF{EmQ;Y@=f4 zPU?MyJ60a>PV)V1wyq7ySKZA6Wx)YlSsdb{DuuqPRA;L>480evItrq`@no>{)fjCE zJnX4dfcSsueM|+tQK5++%+$Lc9K+%TY30F5T1g&4hzF>jh&P4v-havK<y!001IWNK zy(Tvi3!Rhd1Q5$j?i*^6IFvRY%a`=)rKds0iscs07-^k38BhNq<WeW!=wi*q)W6CC z%G+EhtuG>B8~M>kzrOv9+$i9*p&8M7?Dp?=aXZVfTDmUzR_6CL=p>VBdW;miWSBRV z&b4O%(!BFILxh2j&aX?bD472x+^p!?)KBvk_JPZ6L=skW!W1a<K(-d>JZJRDW@h<U zAaahsY-#UZg-QV)@(U6G7|C5H^br%lCGw;GYu!s52y~`5IS39o@yXy(8hHu4;1eO! zeUm$kF<MIvy4`F3BP{WH5~MwUafGCf-G9pTb`CmY5km?i1*>dkGhEWXX4R95R+7s- zZg8)Cb0~>fMsX0ng%oXkCoKP65`&n8<Ig`I<hx*C+*9YNhF&I)%U4dYb~e;%xFX5c zKp5BfPDIF;zVw66=MB<Hc;dS(%WqE-pf_6o^3h^ts&-62>W;Tvs7?+}*H(9S6Ao0P zi00RL?-1fm3fH)KOUw$DQQS?X{yLz^!^_|-T(|zKv&HBLI4eI0?$sHQ5**CYX%Us$ znO)inn1UC&qo(i{-}KmBYv6CjlBk|7<2MW_;zvu9P68yNB9C`0;|ytd6#4j;$(J#w zo&AG!V_uCZ^R%dZ4E{EcLpx~3MCtTR?_1;w|7+n7L8DD#o1KT2Q@^5SDAj}(?GGNb zaB$BAdIJ;jMeDmT<i;g++6vLW#AkOmwNQ9~t1S&lNp1s43#v`Hf^6^X;@t`0NoA%c zJEG@U>{OScYUf-F8NttectW?)%(7xFRQ5=&s>%vMzKj=)y;%J14`n*<^$z!1PAX&s zEkpDo*oaTVE`dbRpC+7bqYbU$gtK>OMdrrK7vntkHWbket53&d6Qh}z&%UV6IGN_Y z_7@h*te60}#hg%j113H!^nWypk$la8v6)?kSLsW8xQ;js9b!=IHw~;fb0wI0U`y}e zSzd%(_$8Vn9IvN0&)iggb%G_n<47FK3gIj4r&YIn-O9+SeoWRAac4MM6JFRX1-fyJ ze)1#}Gxt0y;3@0j{4}slTh*az_o<5V$8T#EMgG}_54J9=gr;Pu*lq;^cpIAq#}G*$ z2CfV^$8VqU*3H)qMCe7s{Vi{ZUQ}s>@!U%@1Dg|!E?a6u6I~Qm9R<E+&uB2hpAWoc zCJKbSMw%UByO>G8L17j*9X*S~C;bt5AJFT&>hLGHq@V#taad05=xpS2|BO3a)yUdi zM^~3bpX7*XJ3ZgKe8ngrbPr|jM*~G01X>Y+K~)AmTdR4A`F^GyFTl+H)pPOdI1vjm zzuien{8ZniqtXg?J9)dqVxQD#*XPy8Ez?+=Z5LcWp~F4hi+;eyW>Pok!h!tE!JX%< zkV|g#bu=M@*XH#Zu;2Nd?pEDUfLXn-e<K4kog|N?!!vys%lt<IAIUeZCGGIif)CFl z&i{GDaIF@Ro`qrnM26kCzgW92`Ywbd#dAk-8OWSWJ#cus>i7}A4LkZYiPJ0|*G9Z` zb2rGRd_S^5{s*N#Qhs=)!*Q=m>?f|NMLD@JT}pq@hFT8{o1~><Td@>bIX=B%%ffYa zdW(9#DNC<QDF&bA8gpKYR{t;Z;sekq*dGKrp?GQRB<Z9E13?T-+C~6?d&-<lLJAN9 zxIC#$-_{3w=1Nc`ZGtS~?=NFy!-*HTcatKZQpW}|b8)o158tDl3CqGVd)d1ZyG1@p zP16!jWWB{-Ih|`1EO6+2yy3}aR47L2j!zf2c4;oI_OxyP1~LQvss0~o8+_~Zf2g6R zc*y#<Q3*khA;o8pB0qL#(&rzsZ|sED@$Td)k?`z&J;HV^Bopieo;X$TRj<{RAlS5y za5Sx=YlPwWul+v*mHoT0L85y8z<Okzpqo$Hf!_n{ht&+_Q1lgua63p|3}w{o`ERVm z7n&f;6V!Q78^chSTskYj6(^1hlAEQCtadGFZLXIVH(J<|Y!9{*T&RXo#_k12vfKo0 z__}z%H+t~|+|lG9w4^Blo5><Hu!bgyb4H|rCKM$w%ALyx@FlZBp$NIVe3%@``Zweq zS$KzG<JP_Gi%HFV(sDDMO@@at@X_o;irzhecc&}M)u{To4x(!BLBW|Iil2T2sj57e zz;##<u%WB*TUC=H?Rva5Wf*x2w<n`31WLBxD4tciv;<&-jkfq!d*y%41XaM!<F>du zVD+x+6wezK&fHtCY-6SRkbe+JNeSO}uYKpTpwrbF{O9}guBzO&zh5^@PS!hc0tC<c z8soETV%)w`lT$jieO-tiy94H333_J6e9?syI={a|t{$0oZM5F}F9pH|@(>ZJ3Nxjw zC6z<cJY^6iaVmeW5fKk_-O>;<X#e{f*y*2`J|UTi>0ad;EU2>5j;GyrAWp9unkFmh z@;IS)@uT!_<QIu1)dcw&W&W<9amUq9tf70PT-vopOSgDq8@#Builbl|UAdooL4O}k zoeyD@0!hg&G6R9r?}5{=z&BSiTMbrqI$_f^##IlPIa9<*K^yRHe6IabgishUMWZ{z z&Sz2y7bbLmfUWSJt3S*U_`uC{1t88Rq1eOgwJ~3or*qQ!?5-qX$Zj@QYTW$DyViKo z9aRxLVV*toexHj(V|^gu5uC5=L2$|aF5T!;W!indroM=SNfIGZ1up97<Rfb@589>_ z-#g&=M8R5F;P}_f8=qe=d~_AVc>L-=N`6@5;GZ0xoa-4#&Z_9QS7nQ*-&wLj1FO(h zIV(1*b0y{;AcLZnkfJd@9SDY1ZED(Il;n*3k{BGNn%q{{YBP&fK`{tE?<S>jR>&0f z36I1Km-d&J%QW9n|2Rns_b77SpZt5-W}dQqd3hWo|MqmU+T3My7=g`yZbrubKzyIK zU&Wy*BaUd8fPAp6!3~u74f4amih0E}7<T`STha)Jbz|pu4B?Dw$l{BO^j@HP*UdXR z_}Q`7`|9{icS=JXPw_+RoBqk3{2k!M{3nk8o_LN_6f>v?(fYjw=l{yGGm^^)^+mAn zVU3)W;~Eo5(x+}6pKI%6SyjWk1|Ob=|4_Q4Vjl=Oq2GlILMxTU{*zit*<KOZqWzj0 z6jojP(HOJf$D&WT23miar3i9O=sbesB>C(v#P2TL<?(IjdOM}|OTJ}1dl-!MD&r19 zZVLSR$H>lYTz_cqZuuu4JQlhw`QdW)LBa_~XZ9xTGpVMTAE?=tNusr-YKwW;$p!;b z|2SaX-e_^j`_8SqXxsD`7>oURpW`#W@x-6gl38p`nBkx5HU7S%Pq<$fLPA&!x$N^d zTw-I{Kp48zx@#K$j=aKw$KSSVKd+;XoL-Uy3ROg?p>f6qoPOy#JOvo+FZn8Erjd5q z3a=lnuN;}y=L|g8f6(adls^#KDfgi3G!~}>ta+y?b8(uaz^YH-uirbL$MgC@vwlK` zS*IF1E-wxLFRsoiAgV5W_W~*c3eqVkh%^XD$4GZ~4&B{7N+TuRAl(dzG%|E|H`3h= zGqVrh|HQ?)+gJN$uf5j0e$VqhuhLneAXp&l`lG2{>s=4(m5u5w-JVD=uH)Ke-ce{C zX0fx_HCVp@KQ@`J>y@IVrJ9(_fV_#gxEC6m-cx?H)kS=j?ek9aW!!C@1Uh+6%Ku+x zvXX{B_JPU01{k>SXs+1r`|=9G-Y4JiVuX>FeW1sSv7|<#&FteSzaGYosGXF5%}dD0 z;)lOKYQO;j%aPjgv1$t{$UatPz$7A`Gq|}#t?2#wR$nGBK&Q1mWx85@o)$_p(s_X9 z(7e(lyYWbjfL7Wb3Csz{?$uV7j^jakf$$+cill=tA}x9?o7-_}&Z$_0wkgA%En{vm z7IE(I(khacP{$`YdglrcdDw-Ic@glH3X;_|VUPK@KGP#s>aDe}eS5iGK4H2TV|Ppy zovYMuu?<Le{aeXyyslT=n^%Eh?@fP)#k{-Ubf+t1UoFiaIxX<)xj%FwKiT6F3MIh1 zrq_9iF#Vw3k~LP@TwZQ^zeaktvYk^7aem}pe`H5EZIa$AUlhoexa#_UvG);XwVT7% zT5&?>U!HpxE3}A?SO{42I`xmrxi=`1sDO2X8>LPmf&VGvOw9n!3Fv<wH=(PLM&ZXb z-`BLXO}7D89zR8|`1ntD8Cdv*T5LfGuTg7jYhI^+&onEvzn4Rsbi11967Fru)=A=i zeu|EiGRlNoKQ@>ie`-tXi5S)ok^O}Uo~oDO58K-F=8Z{gdV@Rp(ui5Vxk@bouO>{7 zl43NA$~q#VU#*!#mN*{2SRX9ew?-jXRCK)dV@5Cbm$acn+D~N)b6LW0X6*3avDQJ{ zQ2!a`Aaszy9AkPo+h%YtZkq>W&xvtzFYzLy7@n#{JzKd{Wa<1WlZsA*>5vGe#Lwe_ z&K?{&;;Ytl3}z)@(Tbo_DpWM&B?A8V>(y9<UCD{K_{k(Pr>*Tvi3mlK6bdcPn(nf; zRd(?0`rTvZ8=adZ&M9OHX!t#zb_t{q^^Sl;&-QKw&g9knXNK|<Ly(#n%u8YGvmwm+ z29K(7AmI?b#BHg<AGC2!1PC$dtpw|(5>SKD&``5#shL^FXJ3R`4TybUHHzLawRSM^ z{Cxw}Qfo?baXN-M<1bNXg%aQE^%D5h5Z~^0PH>hjj|tdMWlPBAt#gQMo^}mt|8X4{ zhLpHm`)kVLak{k=7RRBS<&0(Bmd&?&T3#fog8O*0yA)E9(BgS&?B5?t6X6@z?xC7o z-n%dZGA0AMe5(VxSPRZh=!erDIzzC2Sxp4$i(gwOM50MvP&?e}K$(awBu)Bw8uG=T z_ttubKG5w<{FkTI`C#zyUJWI&N}VXg<?)&gV@cC~<8~8Ixx&wzV5mG}av07splv=2 zp6wq*mZI02ASAD4&S&W~7!8KMU!-Os)U;y6pPF-CJ4`o!SvHLO9S*fbZ~1)gN1A`N zJDU!vSPJg;llXaSL>)t5v?9#l&u}Du1zI=<xmZyhwmZzCw1suIapbBKCNfm?uqz2q zEesr~JKso6I@ry(CLI6x+0CL|{p<%Zlbye;CIYMpx7Qz3M*3iIG{fx$IcWIRiWZWc zvfT{H`CEONxQ}E-jal{INyk_|G7jE!w#6})v>xSn5z$q4Rj84Bz7xq6T;BP_5FEcf znEyN{nagmCP1@PXbX_>0w}OmcG5==drO|fS+<Q<%&`Nax`lG}8mX!5j!$)3#K}|Q^ zuI~~zCKjDfm=$cSS8e0_GJ^Twpy|3hkL5tsc!l+Fz&yk0ZL@?|CAWp!09Xn8Qt72? z^Ib{S{g=+xp@xQQGjVi_>J2k0!~Zg{a1OxZ$a%i!h*+PVU%+)=%u@!IZ|~X+6dXB4 znc9yc#4U)N@(|Q*_-b}EI*Ke0Gl=HL@uLi)=p;<7zeM{o;JKB$3DJay03$It69vys z*@t(3YOP->!HqvIW<wlj*Q$TSQSTDRBLBRJ%`r@Ec|Mr35EcuikIsO_^u%^4q-OG> zj%?U}<2Obs(MPo85C~+DKUiXqA^%_*9B$`3CRPF9bJ&d^@LJIZA#WjB42s@%^~u9S z)Z!ll+x)E<35Nb;DYrfXoM5&>_+@SN1<caxhR5*?um)g0CgAC&ol+9-&2d5yl^125 zj?_H6)F9~OjKYm|QSc&JJ^wq*$YOWO1iq%R+y*M=ChGb(W|)cOm<5(mXs;PlcOi6a z6oJ&1LIk;1*DVgl^@W-DYhgrhL~7{ahDTUFHEg`X0Pvm&GEE%qa6%rpIVPzOITI!$ zp7uvA6<>HV2|Xd(z(*x+3<X)Q<D54_MZkIAcxF9hr3W3^(45u|+#JT7Lbm?^S)Yvs z75TOa2<VlcIs4Iqag^XmIlVDf@T02yDTJ5iu4&=9&^L&cvRK2f0WO}25*co+Rh>8U zn1k4(PEY@DzV3+X^ULpqoBwicu}fs5$5mn(7f;Lz-b{Ku-WhN0pvq$)nG63|G4ZC8 z-rEjq8tQj&lvKH6V`0zUojrKnTNXm9{6c<$a*APQ0|u{>%BJpd{ZFkb7~DJ_cG+|y z9@+8#kvv%TfU2CV)mbtfAeLf%3$OTXbFKDe;e3ebSd8s=dB+eh+MR$8>s|C}qR@)M zB@h!b@2wuPNu|Wgnl+KnU(OruKBx!@#>z#t_wakzmF(#B;bQm;zf36$x1k-7a+e8Q zm`DIh;92Xj8h~GO)#{d5#2{DWw}huO#CRdVq)_{10H0iIxHa$^aD!_<1|1i?lD)9h zq~C5x$X{67%u#+#Sl-g}Zt90QTSnto)@*}9U?;@Yz$H$QqBZS(W690wIP*k@c{N0I zB4NFTx~ev}79yNjs`;)^MwusX;hZNg8^LjKI+RuecO_<yX5_lRA?&$O&a#VfPDYHS zL%9~d?lq6)(Gu6l(@@=O!(DeJbPhIFcUAa!h5V6Klngqkd<KXwYsmfh-o>@&AWT62 zh)%A?kpr$;_(o6)en}`6V&k{>4e}diZ%<d~&O$1|Ui=_n)tBKeHqWp7TWw)m=R@%! z8)cw8eP>(rVStI&B$2bAccM|?-Ch+SNAH7I=5-j{Bca9{TA6U=43Ew_OB&80Dvd8y zUu_Je2d5<{x6XEwA=tBNp;j^w17B&%-;>LoBnV?RQ1`3+q9AJLZmut=#m++sKR*e( zp;bZ<Bs?-{*}aWNM_jb|`NH!bpOo`gzWaHEXE;Y=iyi#9)1W!wpc~>V&=FA(a*mun z@O-yB7Dk4w#k@%QLQhqToWSX)2$z$3PqzuN&`-&$`Ah>K)`TK|+yB-MABd60o~pCg zX$C~77_kKX58bA?9bOt5R@03FBC9sMEnJ_?WG#wvMh!#J54m_njzNTxFdte@{K7A# z_O}d>FaUSdm1EJ3JO-pYE4EOyQo9ASo~1tW{r8$69&(RE0+buf;@g6jVg`@F(ft{r z-|uX6*ruySLV8Lrb`KPvOX9lD=-hKYz$U(G-FQ(d$X$My|D=m`c}R7hi7W#TU#2J9 zVqQFsm~&IyU*;;~smf)4N2P2#g$R_m#Za57;<3^pJ$ti6>5~+4wpxLe?>PK9QF>Cv zLvP;+)ZG_a`S_TRekYWw$&*knF=I$%j?2NxAQEYV_b8Xy8CUFivR3)o+dhxZd%}A* zRDY!15LhQLZT2hZlhyeN@991EF9W}Qs`Z9-fTso#<n^Oc+T$7pvI$G4Vu0+qdYVSo z$oKG?KN{|A5{ja3MXZ8sqVuhPF!<RPqFJARh|gW<=p(L<M2DOA0wIWm&nNYvH<c92 zS05bsW;BM{kpR=<qdRyP;($<kJa$+A>s^5%aF<rzuC(a04(L7tXbE7-UALBILPiOG zW-vG_U!W4OeGm|eZ9puU{m32UHUyvvWq-oYD>8<|`DTD6gW?a~=v4FH_Xikwkm6nR zC+F2>mcTGP>vb=GXHK=Qkc(%_r<7jSgrWTHV1-?%PLb6UxM}@Ze%ej1pkxuj>lpG^ zz_uj`FLnQz=-1>`L9xT$y<>g#0E^IwxF9XQ7Ejk;eeA{Hx8|Z>ii)a)LTEA7nE&sj zVtbBI8V6jyjo-?DX}6Nc=%vEWh4{l~N-{K@gvAwmA>@smKb<yPvUh}L?{ZMs5%CJb zi@+;dX#13uL3dfCp6_y~=7>$cYFu7F_&v@A;dob?;O;;qT;kHi8~DU~7(u%)NX>pv zH7RyM)N4JW`wTo5zSZ0>TCwc?cKyOH{VI4CCR#FeAZRq`NqUC@^FWXc@qhU`qHlIb zj9@zg2%$Lh84+Q4x>*{LOZJZsQrbQ90Q7=QABMGq1INB@QS4{#62AWqVFRA>NQVCS z<C#_k5H|P`uvE2)AJ14v9M*v(OhqMuIrxfO_yf;Mq_3@0Q~xa_|CLu&4U5VBHF!;J z7Bj7F*UU%xIRr&PK_1y)z_en;5KlR+wHV|lKNtbnuQ@16(Rs47Z&6&s^j7z?t#RcX zHU3^X^XPj7_^Xe%-Ok4PA|XT%eRBc{pMCBoU$pe)eiQ+eOlx?b0QB|7^C-wk8)qZn z=Aqo93eF7(+<9{XTG)JkNd-AU4xKguS-X%U(PVcx_n_^W+Z)YK7Q^IlQsTGx!#d6? za#M8*Ak6v6H*%>Cs#DZtCTR|zqe#Q6pKqP31T&yO#uP2ySW;0c{X*PlmCybiFE@8x zUO7i4NLpZd{$D|&{>bFa{~-84J=)rYznEEu_+lW2fXyN0);n>*MxEJj2eU@#1OZ?k z(4lhjJ6<b8>kHmPf_at=p(j2BFecMx7Yg#;icL>MTc)_Db&~}|L@F@vr78N((>-J4 z<by<pILGBKes@GD_L1z4M|#u{{`FoY^t|EYyR8!0QF@F-`Mw#Vb&@xiaUVBL|9Fji zFv{|z3m#kmrl*Y0DjDl<JRO`P<ibz`gM($mQ35ADzODQSH!yleB&^5YzQt3cM^H^D zuAKN&T?PeLJh5u&7QWVCaq2qyW~+0Gu9e62biwy#I9;RG!eV3?`$IjNc^yW`(2Uy0 z9}9<0&r2XYcZ??Hodb;tAyZ}>Jc*&HM%it1AbSz}{uAEoo8n%J<H49V#67a_7RH@i zB6N2yMXoErjnwT^?d<TwUY~x$2$=-Rm>3!MJ|%q=%KjaF4lDRA>xz`hL|&-iq})9S zb=(9TxxPMde`Q0PK(a53@4{CR@%+kLv?)qbkZ7&{w>KmZNYIU2%VGUs=D5?c8e-6o z?7W#f8{Z6f@?-z;!s}J6-wd&mTa~eQysgwe!2iJBsumR}x97b_*#n2cx#T|EkGhB_ z+#|gXBt>^8o0k8&lYgOyDv%`2<X#;^y*>ST8-t^njd5i!^+?wo05<Z&*(OJYptV*O zaABrDYCC-47g8oLya&2U_V$kGf}LJ}0BQN+&#?#dnWi7-cI3XC)5xj<<_zp|<W0*v zJCxMp!fJr2B)I()B1N-I@Tm5H61!vtq1^{d;056?5p-<X4>``Hhkx~u$}Fsb6=bG0 z{vA6Eku_~6zq_yBRPHjv;GPLSRoVi#wDlL+GVDLzOU(n$$+C#D12{ZVR(Zba2DW)T z77a24R*^{0r5szQmJ{dVm41$~<op`)C@$8PiPdIapT8%%_uLjOK|@h9p-Df(DzH_E zqZR|rpIKtFb5_8n7pgJT&rliTca*iWi`hbu8V^b$Pi^{NnWkV<EpxC2Sl%(4YAu>W zYq{7wCLsDqQ<i6spt1)Btd`H|zr>sq+<4B0+#@ZS5U?GTvcAvS6;=Rr_}S<Kq<0em z>3q(u39yc^>P%O4ViCR8EA8*yCr9bSFh0JfH3<!&fgfmH8s2UsQ|c+#dtj-%yo$oO zrATBVKLy0&uE)%Bm8(AS*Y9+Dk}{dNa2UM(6uFXDc=)VoaFG>lj8Rn5{$jYcOU`e3 z8PAXf@7MbXXe6ga&;ZjpUJX&R`smh2?dhpvyjJ92L}?|%-OcVJRr>c+$P57q{Lb{p z9abOMx~|~Y-$>PK5G|pFkhNb*aZTkptb0SASr+6vb4nXn-{MJ43H!!lIS{sx45(;Q z5aPh&wLSpFH^NyMR~qc?9b&>Fu$$uic>Ofhdl32O<67rCmaxfwcIqr?MS>(f&z_Dq zcgNxFfQ+>(^UHOgWy2`yv(7jmEFdjtucaIwvjCY))@i&9<dJP3Eg-txED=(}8h{qv zT*?VeIJdW&m^TYvq6zcX8Z&G^?d1|f8eIY1ynpFue^dwvzf`XdLavQ<jfqUjZIUZ` z1~ib(eVMym!JN{f+Td1_-Gx|Ov<yeA-`d%mVakXi^k9k43I!L9^MID6@5is+?m7+z zYJ{H{uxSF2I-p$Z84>11U6Qiwy}?qX>0ACVl|JeVeBKFQEDiKxtS=HZ>!s-`%qOpi zu`%(AW<H#%S5dm##2=%sS>eIPqGCn#;r0>-1YBGyfdE#20N+C>09luR2~`eiIcVA= zX~ZA+uqzRi`G_THu~1+5k>lW{JodQ5F!t{+;f$Zz<+awSJ4BkINLYf-ul_!LvYtip z@yuz}#AFh`N7un~gc9%fc=tQxTpeybAu@xzVxhn^Ct<8_+n=@TUaBFqC84{nSX-|) z5F(8HxDcAatzu^(iz>Jj_=XsbS71xMzfQHqRZMVCgRZrKtAZ#y;g2^VN0G#Hy`v8X zNDNn}F8lUYRd>3kgu$ue4b1=6%>9jJR`@Bz4>;_jBKHMG&*!4sXeqY+k|hCJf}|jm zj8}yufE+XHX_4~dT413oUCOgXJmQ?y#X`p^puh8Wt(OP?2esT4sEo(XoSap{__NO| zVZ*BF$$L;KQ}5<a%HoYJHO1Zmx~DnH1HAjgYUB0=+~IhL93kh~v#B3(YN9A7z54)J zB>deCjC*~>R<ZL8uLiAn%>&a$&Qk&oTfr7==*9y_Wqz9}n|pT#a07z*cb}3=?84tG zDNP;!0unOb@y4O_sX^|d;fP11rL0YoDF2@GSN{#dO1v$c_i`5yrdjKV6O2?zm>^Mk z|60r=?7n|!Ohg#6OzbY=p1KF28(;bW2;{bkvsMD&ZxzAuU(3~S`Y0ExS6BfE=j<g5 z{`tRMs=^tF%uT}+_$&dgA8w!40fgMVeik4;h5&)*#p=kp*#`iU9?*KZN^2@`DoMno zA6lZg5~x$SkxSc{8h@?bsJb%o%iI11-oJOBn2s@>kt2m-F&`sJ41{ChTFu3dWX^-1 zS<vUcTVyf*MHUh|LL%yoD+e1uwoeny#}iUR_4CgWv8NDEKX?tcROH@omK&izr6oi> zUpO}kB%!7??JM+`+l~F^2}N(SiB*K$2|E{fNuol;Z9O9f6}jp!n591WnaG<}qzbL} z@CFqtC3zv#FjkR%kC*?w7I9~awh0zQl8xeF7g9mEN{DeBC|i%uVO|683x5JC-=fRq z0;nSoxrmM!QbFgS3z+ZAVi46oR+mXi**qXl@6kxVAk6AVhz>81JXd#WlHs>>0Vxvp z)nk7x+j#O*DDock#^*)?ikJJH>QsPiB}_3e8+~%+YvC=d-sng{O4(t_pD9!b1L1_g zZJFRPO%A|7YK8E>ssEkkiBT00LhihD46yW$%bhUy2H_o0EJQ)GnB-wsH|R$bZKfYu zPgg*wAhq`+IV1d@{eXTn+ZsKbtecU+4=~0>gxwHZzW?0+9N_V6Nakgj$X<m#XB!!& z_B@zrl2HysHhhBIR1~XJ>Ax^jFA2vaC7d|MxGfttxuLS`zhC0eWXMlMdWt$T)vjzR zefu}Q!!@$7MhSqP^m6@61#0vY_wZy@aX>vM#N>i*4;*dpyN9(td-c?NCFBo<)Dkad z<Ny!%Fmh>YT;LE9dr0K5kUv}OG5Jrj^=v=(jFDsoE!#BT#13C1Mt1lEwfa9Yc9u44 z^TI#;mhFP*R!6$2NyHz09wsI9$qfPLrB`*-Epa0ZUXPc@W49n<XgSfw1I`+NtlNzB zA@}8?wwy`7Y)-<Q1Lnsi>kh3+Zy7~UT2^Jf)1#KUW7F2NY;TfDifmCc%_0dl<|e9T z3TdpoALv_)Pu=o0-asLakTyiklrp3v=M*x{bGG{k1|gk7?Kiu?UyuhyBk^MUi#c55 z@o&SGkoLB4ws(lvM^hqeag1aZ>qT?LBw3(qP_lohVb~R$F0Y5dGEnk^vO%ACh>gJe z+V9BY@KGD~1_34a#KCT}^~lX@4*!MD&sAmPpFvjVM>8>|<QVe3ONs3z)hGGpTztk$ zJ+a99tg^{z$YAmdubt&G-kn?%whJtkjn-RexA2is<d9PKL0zvgdw*vfuD|YjUIR=D zJ3(#}pxtHe82WqD`|c8J69dZ1Yv$;FEpP-$wjL*=3+Z>u_Qz@#5^PexAwGc7BXYpx z!9%cU8imdt-U928r!L~ZWCGYll)6>yIZkSX0*^|pB_XCS4YQxUSf1Xsh7UV_w~r1O z*aR$EAwW{d*%fa=+ysLS5b?EMMef_=!<x$+evlafaxx0Uz!xt}X_!{yCx8HYyf%i* zH(mv5TR+u0VZJV(CXi2sj^v+rH>bN`8@EDoKyC`~eSBQ21?h}eQFyFIGn0e4n39L` zL>45r?e+%Wq0vpaU>I}mJ=1;0oWUzUgyJSL`m4IpHs6TTDNF~d<D?_#`%uJTEn9Z> zkW%OM=&E~mJm!vL^A3KGq}$^u#F{gf=6njlbS#O6K;Z0%msAyan$d0tNqNhezo7=7 zq3!&34)P0GV}rZXn(e_gj)oKWEJoQZQK?~auXf5~8wP4N<k^h!i~>KzZ)Z(W1biNv zdfE+dif6Z%p4Q9%oFp-^Pw{Q!{OTCHlTR91xg2J_NKZ|h`X)r?)o@GrErfw|TP|2P zK#VT)_DCEaS5AA>iIn>2$zsvwEHFt<73(R>{O;4D__SMvOsQGf<h98%u?4XZ&eQy# zci!l2`mMRCK*DvOUsU6v-L&vSOkUv;zt8#tZ{zPR#uH!~bSx|wceka8`}##}W~@Ks zyWsC*e<Ra|G-;sWKvHG{DTF!wM*}77rS**7`VXGS_tLF`Coh(l+&yDHzovZvzj2z# z2;l+aMZ(-pL`vM$!L5i9RJ(p9)(Jpv5dLmz4MNhVZWkl0w@!<}vym92-C$ydju;D! z5_3L|X2D<Rdh!BoR-_cuC<)U6^?iUo=Q_rhV}#uYzZVE4F{~wb#tuN?+i<a(UOb@p zcd3W|PZEC%h+m%_6*f38I}JHMhx8^8|I2LH=)MwPVSh|!=>TH7=q<`L#GC0u00TGN z*j4}1$DA#)IxL}q24s2|drV7P;S@j?bu{;ahnb)@;=BFD=@B4X3IPGR@2VkJmmr<m z#p3_jgXBA)5CQ{0=IF0yPvfI_pW*<YlrtZxOBL7e473lDgvQEL_SURZ!k7oGPG~ir z0pwq`=bIj?oKO`%m824G@P+op3;IKW=Xw~&;`QstV-27+pn3`J`v5jxSw*gehW=`a zy#+=iG=h?7Y`qAv{zb{pS9KxR-V)|IeiNKe&8tNS+!M|f#huN+RyLBAm;U@9LYfcV zZ^q)b!_d6CX2eG7P&$_Y+aI1y%kX-uf7r=zlcf$H!ZoxPJTG~!NPqp{7N%9QH;g~~ z_vP4rhjVA+hqv~M0Tm_rOe(JhE(zJ*Vt4pF7y=w<3#iAP!+jNfOF2(F8gPzadwc;x z!s|BKG@9#_%aEQ-A=e5Nb8(KQ@HJU)TDnQ-+&wSrPnh8bPx5MW-c!<V9xdzNI^r8> z@(+c5^S4<bTsGk|zlbvl8U7q8_@@Vu`-J6&(Q7NP)#C@lt07;fY2n*n>&}+z!L!jn z<Lbz;cKl+rR_AV^ve-UkhkpfP#JmGI`wLt@;=^;&_YlaGyBZ%lK}`<KqR~zot<3LI z%rIJh3N4&NVz!QKU(MdfQ%K#6Y6yq!@;4c_?3f?=?EoiGe&QT-cCa41Ijn@06a)6V zCm20`NHm~YEe7#(m4}g$TKBKs2@ok}g@=KG&)6+V^I2<#(UNvkvkiokkoAYP*}I0d zXf~7fl}apo;h4QC6dK9Z7@U*8uU5!3P3F#bk(QG?v?N?tl9_(H;iAiu<M>oJhwaz0 zvwAg1x~(ZfnIbmZHi61HvyBD#TH;@)C(Xq8Yyzj-3F^JW{3Uam_%ych#mZqalL_R5 zVT`Yi9Q#4Xkn>=csfjru-)5cMc+_YEw>KWbu^Ao`$lA~caOcwpe?K8{*GfO9v%V#| z`3SzFFhVixjSHLWvZTWP8b($cI-?O3wI<H}IHvQ3(lg8L`3YOi{oW4Gq^Bsn4ndW) zxl0v*+}_QxOSdx(Kq_%ngP$t&!)yiIBX7ACpxn{(5Hve;`a3Mki)JYL<mTaH^snYW z-@gz|6w19;tWPHSwn&|aviCNzCbcY$A@@2=`_;xv;H{zbjC9~{_TM$(Ny9p~oB^q~ z<d~{zajNy0HtNuj1Fk_D4XmG{+a)h7oiFAlal+^KbACd!@^WfD*xSI>coPJ(8cmEP znw2kYX8XS_bJ>my&ZE{WL>|QKFO>iWG64e#8L$`Lepz3?)G-ehJ+EixBVECL1emtQ z1_!@9$e2&X5!t3}c+Aa0EIhdNAOsAVCB==S?G1qHE#&veaRtQ3or8*r^adulyK67P zdipG;s3`yS+LE!5pOIw@=9BTFhkPo(-pP1t^BAN*RINaJeH{E|W9L=4!!y$XNwBm8 zOaEugJSBAXv*!f<o4F+Za!<4H@G)QJleSCRi+opl7XE7;|633{<Aw?)X#HsO-}9*g zzCnyO-`tRYX~Y*2hSzD9g%M0EcO>fqY*(z#>Eq9+tlozFpW{obLM~e4h#wB}Cf) zITfPOA!|>uHJXC`#q<h~u1M+giwl%3G<#n-TSOZ?g!&kAi_dO%mTNT!5p_06=D_N5 zXt7}OW^FR<`^z2xkL@wqYLV`eK*YLKLfb2LcXG|+ie2$=naL2CloVO1zpwAU#Zq<P zCT(NvHxL5FetNHU?%xc~@i&ea$q#5-t{+a+G9Nyk%7xM=FYaT@Q@OuOPhS5t%Z-4( z&b%6YuCKB=4qDK5B@p(v_*`GVrV$nPK6hy<VFIclVVH)lCl5R!j8q_PnjokRLYQ;n zYq35uG!f+V8uBK#g^b703vaQ`Dv)1e@B?2+03+6}Ikd+Si|AiutYK%NXR9)G`K?n| zl^X4CEzvck$29N7kkDK}<bjqF?WaY^^=Q!N^O#aA$WSA1)`FPxk)hZ`6A(n=b)aHp z*g`Z|Oz@tE4gWBCtb-?~HEfj!C$bB@rhn#iy(ZgNo1EnUaw%sR5~x7htyGF|lzEF| z(}y>?bGdW|<d-TqtrYW^o~>i7iDmfnU@vVtT#;P8e#l-XRj|<#4~F(L;~T_2q3YOJ za3lI0P7VQ`G`auw{5|jCLrUP6xs+7J29dQf5F9=<2AWa*aSJMR1niEE`s&L84U`uk z;P#M;jM?K{+3P86HaM=9;0yOfp~!-+%{+2A?Z@sA#>9i(XgZi3GV7VjZc1b^k`_tJ zglzZ0?qs%`#Fg!TT^lpV-k=>BK!hdIAOXTp08af9ODCV%FTRUHy8%6`ymbiX=i+oa zbz>dwlOg*H%MLI`ir&)}4Q%a)G4AqVC4^-~a?FsK0QJW@TIhN1my#t~wbUos1I>Ap z!~08B4{L<iFce2O=CRnZWT|_aP*b$+73W95c8e{Q>-F|fve?4K_W1g~cU6+E8cP)H z&oRWZ2G~0?rtgbx`n^4vcdT~VrPyN)XWNHh9`-dr7G1`72~Pm-f7he%aTkdIr~8uK z`*p`1WXj&!md097i(uVY;hayYh;72KeLs^5>+hxZ_&_r*89#A3B`ckrKEEUlk(Nl+ z&9K2&p{#}?D6S#O*34}Bo%HhAZC8@^UQfSG0`32hoHgL#eAkfz!nKh|aKZIEB@dX; z)ELNh+k_05%iVx<^{<&JLBF@~mgN7szczfg2o?WquVOa>%pVT-RsS2Q6im{fu8+re zq~M|o;-6(q0ur=J2_05=(Uoo%^UcfzQWp;fwW`lHZ71YCb(1Fn#(v&sIIL8$dW)y; zCn^bAwn7HHfFq)5ICvMJ<vNLAvxsevpdHu$@?d<$*G6+=Urk=7UKRd>kYle)OMIK` zdZNPrw$jd|uG`-f(yM`fzN9_M=k7xjVE=2txbDr;b03FGO$^!v2$?Qe02912$C(=( z8AI;J5+i8jI1M#;Gh;j3eo}Xsd;eW3u`wdaZD#52zO73o`AY5rb{T2Z!1Kv27N{gV z4gLwsLMVlZq5qr8z=R#B>`AV!q8sRPOJ*H#srcTKm1wrG>$*Knxx!}(WF@)Yxwg_W zwns%*<w{fjxpF~p0Q-24fQ$WL9C)g}pVl=3z61qTv$1U7jX6A(a*o#`Ee`V$Jin*w zhOAv8Eq5AqG4WY~y7G}hRNSoXSXxwFBR}}9W)GhIv7W-Lym5$mS!bK)qWk<2%!#RI zCv8re6#L>$Ep|&hGZRTL5QRKFUHMj@()Kp_nQk3+V<a^vn^s9wOsKPpG%uX?D(fG{ zg@6UaHx>MztW>0A>ryc#^`nIH@o%1*0Q4)E&;`JKA^GQTlqZ%7mxV&5p0>mg_HP$; zttBw9BnGUN1JNYT#zG(K6h%km)_VChDrUH94nTKJU$#lPM3R(&uW7P@>rhpr6pK_K z6Ykyr!}(`=mTkogrmgSNg?4~I8e&({RsDsg)WAZNUR`7JJ<~%Dkcl`>f8d#!`c!cK zWucXta3#^&_X>8G#iU$sCt#K+K*`4DjA-VRr=EtKVMV!<A1ldMN7-=^CDtR3#|&FU zHyBGjJ@;76%Nf`U&WA`$F(a(~ht3DxT7FTw5z!3Ro-1P4#z#a997tWg!D`9Z=n)T- zb|YX>TGMEq1F>}eSF+8DH9i@ksOm8GJ8xkD@O#@n@UOE#_ApbdfkFoeSx00TGfQZS z37pMPl>v8a(whDNBA(~_4~{!@c8;)2(YIqNB^JDSp^0M`Th?SN8~n2ZvICjsLvmMS z36aft(AV7Me3}(@{oKoD7^a84WcmotNqoucIUoBZ+z0I;iwWwpO0~#@IV@N|t$3my z^pn;?X7u*qP`C~HM(^01(V*Tfa;f!b&657QhEhy%JF_YAs-YNAT05j~ZQZx@6TI87 zXWCJE-wfuXP}7v}&_JL2)mBnoc@4XlY5mSgx!26=MGA?y$@zhR`n-t*`TDiEmnvjG z3a3Yo1jS0YKgBf#r|d!c?p20YQERi1p2n|R7t`UilS)0gJWB1JW2?%qM{;PV`8I{4 z9=Fjbdc&@M|F$=$eiqxP^Op*!7**KbAuIhb^lx}vTdH-n2vHh^^u8ls%qdo?TMYKJ zJzhIpTUvX<-B`^h23G|RZgg*s?pcEMbXv!$|MEj#xMmtq5iIb&^Jn4`flA%QSY8XD zgrjY~Z9lZ;oO7ZXdSPyxx!c(O@0)1~EBo-DTE4xPWRq**Y&qWI49u&TN+X8Rdr{W? zE5FG=BM-P*4bz*qtX9uB0^C0P#B9K%avCF)GO;Sxi7$8~zBR{tC_a#D!BL09jYe8W z#^ZsTeTeVYS}?}gYp!>+-`%efjN-*(;wL*Z+FwkuA5IPr4o>rd(*vq`Q3DAJ$!ePp z$w#AVjgy#Jm~LyZ0o|dB(=J3dz_Q0I;tlm2_j-4PC|ti4!R{-yt)*fdivi~upjxIa z7MO|`v*dca4-(DcU_7cg1{~*L_-g}Wo}SuN15cgXS&41P+F53!g|t7tHFxHwL|FV3 zz#jxDv7dd|Rmo%SerN)hy`pOdL&xYw?<k%{f&-eK6xwEGe3ieo?~l}Q<<nop8)w%o zHy@K<aR>$9T$SSdZ@yAGclN)j+a(nVWU8E}u#gak)Lc!r5SZp5{6QG=9&KNLf^Ft5 zhmw~VLz}v!U2ETQ1Sknr)Dn!o#-cO6W7$1#(b2<T@iF?RmVe$=rr`C*Qy?*cD!%vj zA?Yon%B=l8)qZsI=I9uY$$B@==c{Hzy<*!ty^U_9*x7j$xcY2?$@yy~hrk~2F~4Iy z#nf%*^bR@2<1BT0>`hTgtJriw8ASp@huC?)Bc{|pUAuw}nyi^Zd-tM;*v+>->-)JS z;C*STD@f+OJSk>3?y&K@o|oV?@(k!YI=uo^ZStm)a7-^Rbi8ikGU`pcN@zz(uPB}_ z@0j^7bH4kRZMiZ(xB@)shD6bL-Bs!$^&c~ku8&Z6E5}xtG2f?HiWqVw5I>68xz!RU zw39Qx$XH@0tns(2e=Ti>yF(A4$dID)O2$TZ(PIHzpuf&-5R;>*T+MBA{pp@$0n?uj zLVD!i%QAm;XxBQR&{J8j)>wZr!CarTuC@Nl#-}$L$_Uk-v*Lfc34ZVjX<^Tm8RXsv znvj6zBa;Ne_n|@*1mqVs&YIW{jRA0Ytickb4^B7he;OYrZDCO)NlI3bg_+fmoSa(a zB{OIIaFcmWvcEHu!45(CW%>-3?g;9H8JD>S<!-8W<+W(eHZ+`s1)ZiEzhi0E4~q>o z2pYX+{9w7_GMvGVb_#Pra{#U-D@d2HG?x1ZRk4F|HE+%KQhRGxaPt-QOkrsMCMIf4 zSN)cg76}^Y>keJDxpw^239&`U+ll18Hw;_ZZE*vlJv!{WSlbN;sc{>esQT(?t~5TW z1Q^)ra43Q?3XIDe2F?F%kBULiRt5j!Df%YJ@;ypa_@6VYb0;M#0(iyK7rP^-23%bu zjMLjX6=X}~Gy1d(Dg&ycH`6fL#PqgrgdW<!^bG0r%wf0l$&mJAr;ZbjMq20VIx%qi z131<*rYcHJ*d(H=tHwf}t+8|iME3+$bLp1`|B4nI=hvQ%Y_rraAU`?=FHNe2u0+mR zvUWP!nF6ZhSUmgFR)F#2SQ_8+{YL{aZfdK?J$XO5CXei!T{|f$Vr0|98kxVpqm3;B zI+!?(tPlwsp)LWe+|X8q+b|V(g|PSFUo`z!BXMYYw>?c$62PU&h2{&t0N{Sc(8>da z9Q@}6WyU?B4;QvDlg!I^6@w+W=GKVAB!8ls{2~1JfPItJ#IFkO=;b?UAI%s#UvzY5 zrhzlNjwr3{Zgdc9$LWN}o-1OaU!NC8C{`ebdGcRKq$Q{Kz67s#uC3fuDD=E|Lc|+; zvW@KnCUdz3jqU;3o5C9McFwUtr+7L-;>h&2|Cq%8qwOmto#!2~pa6Ih^lNd4U0x~> z7vc`7=s37mF;iENm@PszQ!o87NH~eK0BET6W~+MB-814w91D}jR=<H<@=LU>J*Uf5 zUYOry<-@uFkpLo1p!qq7#oz}xrLrefUuZ^YEdpw*Sg!nn%XX$G`})A7VWm7b)1fh5 z?wscy++>?#+R@o_=Y7t>tOtv`R(ol^uQUJW1I7R$r*c^9m(>=GgPF>h-@{yx32%sI z+EZU08xEvG`$x_$OE()6q^m4?f8G?zs4WCoicc}+#k<XxppbEujl3CySilu_JU!<s zmcFh`WTOHCO?DFMmHMQFg9m9Hl?$*s%yNjZRwMr7+PyZ==Tf1Q5W%5Qo@X>A`7s3= zSjM%W*$SNQf&!4cyD)BT1SbLthTPfCfhA+eB0edk|MI)PfM@gXa$YPUqjQ!+pC;e6 zD9Yn((q=Uz5mgL6wGH5O9Aqwk>wX(u)%{1SE~2of?(*z@uVYVD@vTb1>FO)=lT{LQ zN_P&2+^K_;O=_dJuTwH5D@XYNYNyq$ZbFQRt4nUNH5)E@QuA;vX}q5t!l&B;Xa5>R zGot0F)~S8Th%w*TzS@)4oj5McX;05IY&h3UZEL}+RF2Pz2zaUJFEmKCKoeOMcRT@k zU#7T}2m;|hv{vOp38poaSHI9a2-G2&Hm2uF%C*owpssdJac{Hf0=azS5wocEpB#Y# zxDS<=vH;veiPw8k@)0Xoi`>_Wdd-(|pqqBK*Q5mX)d!px$gw4e{+C)|myJ;r*O*#} zHXva8lwpUNTV__EnPhAqN*Zzms&G(ieXlQ`AzI{JcllnSDU?YCSk9f;%90~vjs1K* zMiL{B{3B8*-f&LXNB!VYSQ{WJ>%*#T!F*C7ki2j8R$Seni5I~e@{!s57FUo*;r#;d zdV0Q!Aqm>fj0es4Z!#{-qy>!U)CaxL4#rUvL2Y63He1|8tz%a0o{61w8Aqom0i&>= zUa!%ig8mF5%~wyHc$c4K4e1A%{tbLmskt7`rD(+M+SQk1VR2UcFjsZ*q_XltWh#vV zVsDBAv3m|v#{JWCkg9T(tb!BEDm=$3kz6}(EayNvU~Nql#P?3)kZTj#MEY$43r?S~ zwx?#|tGjcWNF`mVO8!WpP3}u&RuS&^9+DX_%v7Lw)Y}5-2IM5JSIF`nPTn|ul?EfN z=@^FQxgi>@NHwI^6Nou(q+r}v2%W9=t`9MIm;wk95DxPtw4`!55~Pi?a>!S}g7+yj zTIeZC7)V4sF%CpI=h;nP%_YnTAu-#^6qe;dBZrI(RkmfevoN9lzgYlLJ+to(On$lY z|H>dTS{60Le6Neo)ih`sQ_8Br`b}O&169hnGsLt;<jiLzFXGMx&J52!K2cQKL6^We zn8#o#D<;l|1@z!m=<^d&Gi=GwSene{i7C^0V*OTQ%(q_o!u)8?N(9CICfydKQ@dlV z#6O<lnxOJm#(#@d=bL*|GgcXE`t(ki%)1i4d7qZE-%WDWGNlYN6RkDbRI-U6bQt0a zfA+Gs%Ek96L}<{KT;V=V9vt4(x@pq`Ek7P{wl=r<wJq|_*@&i1c<f3|8#yCKY&5fj zT9610>Ahy8fvkx730ZLLRIGkGc+C2ifE{1X<~cDjW*}n#5k>*o4@$^-5Lk~aZuEEE zibel~DPt%7Y)+yqAS{IW?2EREejqM2x6OC<7cv$1LM;y-tkC1f2Sd2t4Dp!L)V)4+ zDbsx6es~&`%yQTqqOTQbrI8Z@lEcgXhFl~Bna<#8X$8voIKFHHyU}|LO&EA5O*Bq8 zNSofjI#thTaiNh*lFI7!{Y9-Ok%!o}e?Y@ZsS(Y$t^o1Rx4Mpo&}*_GFd$|xT+SHU z_nKeaUDV2?Hdv?yVv98PB=V3mY<o!MKlotVa9PBV2FYN}IwQLU&~EcsTmJ0et12SJ zAIhaoXOaaA5?7*|UB;9{t`wdyb1J7ZY7x9K-ZLyo<i$yuR#gLfI*)DiORl^0*CD@< zGtZ?vu_y6E`YLKn&yEARCdtaaSVz({{}H7v$Li=g1pi~qK=h%?-$i*;$FYSB%ZmD3 zqB;Lr`2KJ6flVJ+(7xO5yYo45?Ee_^2lLGYa<6NmLZ9@vBw4pT{<E1dCpd<`S!D;? z&_b`KfXxe%?+cu}reiiLcB674b&}D_V(!xNo#r2G35x>QiPjLmXPsztiQI2&!yM4L zLXLg$=_ioL#DH&;^y0s(jXLR4c`a#wYtvV5Wb@uh4{8XHx9rO&xVfl`0<|9N4R;rZ zX-B@9?}}&V@$CgXo>VzsiqoEJDjGJ7h`FsOjKSsBnY;50j8wsto3DJFjLBl#&DRsH z)>vOk(i~>?oEk4Qzu3|i`LUx+r3_-brMx)}w3|U$S>)dF&zR2t7WlA6<iDAE7IFm+ zgyWv`oioYjDwsKc&li<^Ne6eIsIZoshO(Anb|%LrMb2C9RKL-3@h{r^kO(3!C$4>` z8a9wLpK`1@P%2R2zp`D%dz~}L|HDo<lmYA?L}iVo^QC!E0Y`jyv{E_x{qIz#TB$3n zd7j}%fBd1MUmjhOB|oWYgF7bJ!Yxb|rlITsHyjRJ_UmdIM-43$p+N_=YqaKA@i|Hq zk%6io2`^?%kcl#>HBa*zl~z?b8|PKu)g2tgJowIt)g4`HBbQL0rk5fN(v&_!Rtrny zvV$39+^Nzvl|?G}8t%JM8BGUXiv39bl$~b0G%xF#y7Kr~Nb6k0X^Jwc{L<5&@5z$} zYXH^btRVw)S@xLxfXzp6%l-dU64%JETi9^KEXg`T=@io99h(EWyHCl192BvEp8W1O z0(}pWJ_QDRM}Nq5E+FbX_0?8nJ4upX<+eWPTaQ}B&@7@kDokG-8ZF;XTYH`7agXZ- z+W#FLeA&Y+66uC1=#Uyz%*IDa47*W_N+vq*4D4IGCCzSX6X3BSNNmG(q*{FDPoxt_ zD<M;>mfs<A?{H@akK0>4e|Q^`1?4Rvty0E~Z#9N%J&o5CJNv|zz)m2Sua#dfizT!@ z1e|+MFWqv`{3Q5GQF}?%wd#>yj`EBN)_xKl`v=YnW$B)uBF{DIVB#$qSV*-fJ$X;6 z6ZnzF3TU^y+gfy>cMJ@>aO^H&RT#HqCpPsF43*KclWaLb)0TAm=5tFGjNcSTcmRZ@ zKt&>5LqGF$AMJfyck%lTS8-d*+IP{^==5fMx&I5*(Bz88NPX_FQ-_kg71wLnSmP@$ z)cgDi@R<)x&1r`wK@=r;Ry5dg3~9G%xu^Rb!x+IyH_Rpvp;^^1hzn(^5-6l>{}4?X zzW(5c@9ezkdU6?-d(Y)6KYLhI+4m2@VWKLFEL3vuT%8-Ob3xGAcmGAVZcx8ajdAde zd&%Z2_<cajzEfo70sZc~5GC*D`PU!WR>;;x7Zg%bYA)&?8jELhEByC=SYJ6s_h~km zJTw5JwkJ8d9JNoueG^4Yfht-|mimF|f!JGM&^bfq?7E4ciTWlw6VR?M4qaKp3jtLS z(`fRb@xheDVY*@ejCXW|OG)V}(TyJpmd1ZT53mo{-uEBfvKfRC?Fy67eB{T(UF_(C z3Cj!ovnBj73!EmfSG(#h(-Efs(hLqmjF(?tX{QUZ4*L<t4zXbq1isF8fk7~@vE8VO z>I91nR_ht~oQ(f%y=mP2sud=yb9Ii!yIpd~&LU3M9`Pf4!_WRiIdicf@4RxLw|+09 zLk37Z>}9ogKFv&hg|aidH!~nad*J2Cy*G{b2c`hpD8=&Ki03gAtU}V3_Gs_jb>wXB zA2!!iMGjHrpZ+BN4Y=dy^zQ!&QyRdKsG0okj$(mhpIY=QKa%BPFCf#!4I;nmF1_}( z0PA4)x(R1<x@g^^@dvwU#xYyBLn;NE<mdnlNxo?RD0fzxsH%=cFUtLwKFf|w;Fj;X z_pS5fsG|sdnr0(Pd+fu16PL*M&XPxX{$k<+1J1o^GMDr7&(wD>BfHoy%y$RQ6yt?Z z(;u%Y6s19da_7h~oLpO$TlMeC<wx+87>Nv&s^i<o8_(q$wxs}i&}G7$Vvm2Zdq>vV zbNZl!K~M4r3`4%%XE&GFDd)C-^0bB5b@V+46-cz=;mm#m{ZvkG48_7IZ%LcJsxSMF zVuV)SN~A2drLw%$#`G*-R{RV#<E;0ko#Ah>u(6`QVg97`@BW8lG1aQf!9VR#7HW?$ z2K?je?>7bM)tJOX^DQrAI;43IC-)BbGeQe!|05K$+J27-WXpF?e!^(_qfhSmPo_e| z-DV&76w<GEhD^ByjVRqB8~)E8Q^xrZmIHabMi<(Cq|%1eL=3R{IhA_|ls?lX;=qxj z(~~q6kHCm53D@ir>8m%(6MYT^w}Nc+Zzy&gJQ#GPe>PAs)3%6zSonhB&vYCVX@@T- zt+xp$ckE&zerJ1Er^#0atd|U&;_Y|fNPz-v(7$XY5tV6&0-}z%0^Cx3ZCyI${x|)! zQznu9sB~v18tM6SFHmPyHy=|QWxrw@Htt-~)HD;>p=7t;(fS=oyr=Fxd*q?<nnr~O zG*-x=ng23E{5Ham{LG>xo)ds@GPD$75cmOw9>(kjESqe5y&8p!v%vrxfsIpx@AWH> z<P}T=B8qAMf|}L;Ez>Esw=H&a5b16Pk~?%KWl^M~3dYbJzV5#AGsOCu1(klDYlfiv zke~MK)x!Ivj2P#8h`;Z%Q9m!2>K)t;YpvTJTFdL|*jUWJM5@s-=Nro5miaot0oRCI zH;#zJK|Ja0<1mZ<SJ@S^3bu@|f>?6KsiT6QOFLTJg|uaQNJrx`1!DT{4@bqNIOE%X zllzD=198wz=LBz*h<isPi7ibVRvIH{KZ#FVnJ0crYcPhP)A3SZmw(k4VyH7F%ZV|5 zwZA*oW3=?=)u88oNIA6atx(H}?NtX3FYzpBNL82yF<DyDqfn76N{2jVe!<SMiGAb= zc%|69q8QFJrgOqS{D8{)C;$|ZJ9$ebC9+Im+pL9?diVauGtdT+`r9-qFc0JeCpcY4 zYi%a_Ckee9i;bLWXlQtmM?aT`ag|imZ6&LbO`;+wFVB0bX_&Ot3AY>*$v486yCTnV z!f=538+`>2osMn(vC#PJwezXVycuKAA-ZiJa!GKtP|0$#{wbLxLb<99?Qx^P-;ED{ zES3j5B0>CKDe^O~i0PEs)zCaKF|6%#2{60ozj@ra-)SoUX`O21&6VzMTcCy}YZc7^ zMLA?0bNnE9Im7}dNBNbnPtlNf<H3P2Z_U&yiXjR^s+p$8I_LD*1X=~~78+fWvxIa< zQ;ehNy~g4-cu4Cgj@O@@-5+8d$$nQ76LQS<D+5Fo)D%%TqE!pISZFv6;r-BC98{bC zwm?Ezt6J8GJp7}b$%}&y%3+SC`J9idS;lu<AhU&jx!v{lD*r45u{GocNvP=|IOz0l zT8o50PR7<Qq;Sn;P}yW08PBcMTX^04ugWoyqtD<Q`D2zGNio3gAKQMP5Bbpg10yIX z1F&H`f*g$8iI&KNaj$qEMKf1w1#~};oLvq;tuXuW2(e@{;LTfgheN~7%suC3!6Zor z<+-)ydXOR_hwutJ3cB-ohvdO?Db$<PR<{$R=~J>gwY*wLS=5trPz6IZ;zccnVa<>K zT&(y1xsLzSs`{S#livLW))CNgwfLZq89yakfqjJILJ-{INoeUBgI)bV0|9@8RaeaJ z3`DO}XB{8z8=h|W0<+-Zc8`@H7T4p%ql{Xy(d9)d8r?505$7+2Qr7a;^coF(aZ!#! zjfss;F>$Z_*KOgsD3hYgNd(!Bjv%twSB9|cSmV*&eXpG=J*TCF{JR5K?6{t}`c0v$ z(^N6!Otg^k7hTS;a0ilDweCog{fFn8zb|J3%?z(pDE$6Ov@TrWv@VZ2lSjC9_1Ti{ zGWrV}S1lJ~E>d{b9VSxeY}W1%MaOJ9(Dn+mk5)z7P6Bops?MG7{SMhr(u$ADejSGF z6%?cQi>hw-k~lq*r(UCjV|gy0vP{OsNQAk6>?>VW`w@EGW8F@tZNzX|Skr`Ui;W!l zUuI}GvJ-o!Wz_6#B%^MRE=Xtk-}|zzUJ&{9(7nxWdt?>laNulfYiTKE%TX#6x*Nb$ z3p;5`k}aeZu#*7vt=+K($zM<@x^ZtD5*wO^V&+7tlwX`Z{0uwm9y&F)`GQ`q)fR}o z9WnFj6-eyuT=SpF%_~kPIC<pT6<*3>erfR*;g}@9sQ2I}d&GCY3mFltcvevgGI7Gd zgtJ3;K4V=J<ISr90e7nh0yOyAZ4uAi;9vbM$JMAD)@=ucaDlH3@{)Pm?srzW4Gdm2 zHXCola<<u%p~_PlsQxJfn?5NNlVkVmYRjg-RHnWE=@CS|i^&zs>1;8zaCLQk5zvx4 zw88#h%z}Ou0cOtUy4SuFxTkL)biA`m-YXj>X={t0NDY8Ma4f-}1dI%aL{h&Bc%6*4 zobRRRoz1MQyw(xf3J|<H$J7${diA*SGxDq=@AZT$xHAvlz`j-W!OPWyGC2x@DfL;X zm-HUPe(Fy7!?~3RUnoIoCEJDqCgfjXP}h;eT{u-N>#N1}8Q)ry7tMYjNB1sWlqnnc z6MD2iZ(uC@4XqTwP{24s6K}(jZ=TZQXoFu{KQ9pdUrfDaR9kJ-t=;18uBFA@io08( zKye8acXvr~cXuuB#ogVZMT=A1g9J!&c;4^*&NzQFMt)>u@3r?m*PPdclZ-FnfB+x+ z!&0Z#IuG<!I;c9WP`03A#Nr8lc=Aogm_nmK6(xT+`NyXvZw3+5fVp2@e`7Za$l`KG zsNaAABU4uUmS=vnQijk5Xd2n6yhoPcBm6JqzY|N&*D^9T*wW!*QC_`I@4@7OL(wq? zdP$kFEONUbbU^$GEL|-lGY|>0IMC9eUq{+^bmwQmNRURW9N^^Up}crm0`(ySG8EBn z(D})~2f5e9AIk^NDdB~x<KV7M*}6^jHy0RA?umeH!)&jD4su#v$Rlp(u%^AWfc-12 z6p#^A|9!OHE@=we2{y^l{D2)vC=<RLuKuvNDg}}bu<<dbNd+#7GVID4-Cflj^$m1p zP)orKs0XUD>i32Vq2ibKXn{@P|4zjZ+Y(%S`Vuhv=n8zXN9O?HV^@@+T~q;BR~&f} zC)+B6gkP9H)Pmm{RIHh)?9B$hrd`~uK9PDu;#T6!?kTaVmn=fbS2WsA0o?MHj6K|( zsT)<n#IJZE_ddzecSw4Tg%o`0yJKR6E1oUB;)p4F*TY8raWX?ECplXxA<J?9otFNS zo8FE|;?Sp?l^5zQ*e$gDu@Ca!I1(Uo#yUAF$X0myZw#%1{{Wgtf3ZXi(+%V)VHud4 zmFOUoxQCphd={N=QWs$q&+a95%n~D3qpYnq*`b{u>cJYhOwzobjQt$k<k~9H=8NIj zQ?MOO<4x;}Ck8y^<~=++4b_?QV!BW0H`5H34JZ@!xl(@85_})9RffIAGADtMHhCTO zals?ih!wL^%See<pOp0BheB>(t!LgsxP=U?68Be<^d>Vg*aI${!}%@Scb4%<EIVk1 zojB?D_HGAuD)yU6boXIWI!)Qu|KnxP;kUr0YQuh1d_mjujT6Q^`vC#I4nD!q0UIsE z^OLw7@uLud@<QCcj<j53qLTx?*DpSfIKB9sX*@fX<nu+`#MSOINBHZHJt-Ss*t>71 z<qgfSGW@gX2bVJj)@j)LyiMzNSA>{yT8!=lIS*<G#Rzp1Q2O-f1*C2>qM3i&1v_=2 zAG7>D4E+{1GQjhxFd_Auj?QF7rlT5=i3KB>3&1itYIbgp-ZqI}5j1uSpM@a_C;EQ- ziK(~i?i(*_L2PN$31be$q}uGJFJ}_2dPYQp_oxZQ+K+8<v&Jgqg3uSRd#=>ts!irx z#5IC;Y@iA7Jxk<2bF$pYv>A78^X^-rWOe)&W(2k0dO;GfR_9v0VKp(LFMZVVyj70e zf9$>Bs5r&iLm?x)(=#7qLxz`+9OFdq`L9octkr}$DHvlOAea4>qxJ+G;xCOGktxYM z<vTFP9Giy>0#R)Id@=HS-RTo?(tGS4oD%wNWzunz58o>O%77_}r<rJh%!|xiW0P7^ zh`V%cMXw*Z&%%H=SsZ2fWfz|`UB-6(xB=e7K1k~TQ3?(UItu?{R#)Ww{C4e*N#5=v zsLx0$!gE&27xtg>^XU5pV(9l~AkDA!`(fTr(XAwuY@(n&6CZsZtTt?{e8=zGJpX<w zuRVqmSRdXe44Y}LJw{?D2i*4RG;}it6rl$Tp#M~z_#W1nyO`XRhf8WhmCU?6>_|HB z2tw%RJR8ZWaZrZBQ|Co*U{`a*vvH6m1?G>T%WwQ#np<fdA(Lna$vn&6bI^r@q`^NM zOV91)L&BE0-6rby^%|H6Z5JF<(9ZybxajeH*W5|HXJ0AUtIbQ)yt8b7?5%qp?WSy~ z{^K8S|1|scq96TcfUy^gS3($Cd-D(=x%Q^DqE`4j5->4lcV8-R-d_vt<L6Ng_Ap$U zX+)~rQpxX?A+M906FlyhbY#UUD>?q?eZsN4tHFsfj;RlS_zv7%)eH>1sI<M%H{qw4 zSCdu>x42FmaF3AZb3kFr<y+lE67karbi!`M{TY7gt343S;V@VoyTpGc`P^vtbNq+T zKaQy2jj^$x@0Rka<?lC?zUG%--CtcK@a_Cx4>LJA<mn884OW?Dxcl$8^O^kSzvGVe zzk?&da&Q6g8O$HouTAm#EX~Q6$p>AyC!R6)I^5Cz=P8A{y4{$pH4sgQgo*k*5<=8o za`MGx_oX9~=Qhw0kBcNS{b_4p&7o>H+ABo(A}g)SI{Sq$rr)s_AtIecD#Bt3+d1aB zxBxUFGyOXU%*v@b=f@n`a_=ZP|Bnl`Td1yOcv|*$@Eq<lw%nC8CVVo~i8pZPY*oez zyz;4CuRob>c4&sUWz1bJ#rPFR++5h+jy`UbAy)1q+rrs(I9AYV;;Y=yz~Q0QCl(fJ zJE*RWt+Nl8bDA@;{+T&1lP}M|?S;4;5y`~J;OLsc*GDVldE9TC-4x2iY{T6hZk%41 zYPy}>@BC0zah5|`HTER)(yC|<*z!w8s2?XW%UpJ~66^ALzV=CfuI{ov;GqDteZKTR zGI+%szv2|AiCT@Gyt<_baIvaV|LEiHGFHC#z?;q-DfF%EvZ~E3k)fBOIiA(Y<EnvE zvdbAMDb#@LYWC8F5-ojAHE=XIz04^(;ByuAL$io{LAESJP7+T0yIY-exKF8*1!aKQ zEGN8$Eq~jLs!RKIdVGcNn)K86EhpB>M1}32q4GDhV)U`+5lHdUWhg+pW%Q>=xxk@x z3BK#YY`3if3xSqZBbzCW*V`qvOdhYgwKw_nNvRV@uppD>1t|vt;r9;bS_2HUlo!={ z(y&FQry!iD5WKsmb~I4xmH}f5c$!##=sQ_9L9I1sA%v?Nn0~a<b>&?r)5-4!Wa5Uz zXk3jM53NWdfeNx7VnWuCAe+?m*@ho=oM$SnsqLTX7ZXZPT*TW(QdgnBh`x-DF*Bw+ zbz)FXF|7A}0+h`}c^5J*p{DS9e*EWTN=x*XZd#OjQLF7~b4aY-8O#wby8Vf5dM@(t zzAT3XPA)Xzne@JAL86)NIsd%(r{z~JFpsl+Ul39)x7rtj+4I^ZwN!u$@`M}ib7j{R zz8~6Yxg@3fVe*?I)kl6Z2>MBWONI|{;TMdD=V4kkakZgoM0l3;ikqD?>2Eycr<9Vc zg6Ld1)2ez-f3!JZWu0-a9pLkL3S&X8EeXWpv|I2Z!8g7=*#-dhVtww2O`xw}-DYo6 zK5cv3hTyG1hCV~x5b(Yw9z6OjER=XoQrh#w-m*GIzpg^X(2bhsj)uD@$OD6UZj!z+ z1&62$KJ}KqF|oJjgY#MhL{Ns=rbr?$V-jaNU+D94vtG%VOg?43+{{Q=;y`@(+|A|x zx=-KYG0pG)_h_;O`ybungwYSS@t>hFhV1%IEk`&4`Tvtgr=FFqQ@T#Gs<nje3X%H> zKeyQvT~{FT)i!mc@hLZV4R?^(P~rE*FM_-Sk7&<`{au|n)+58QiK)aJQ5_4K7V6L! zn=Q<g-31DbzxXMQ;i6UO(XgNLyX&@47>%|F$_pd#H0eK~pTuZOZ5~$_Cg-uz!`T*1 zq2|S9F!qIfHZ>Nz<Nsc4TwU&bO4kmm8M0T`*uDn4#(OSsb3sRn!o}9XAKkZR6p1DQ z4K`e(ecT8~UR%gEl_!j234*`RZ|gH(!%ooSQUK>fAp0Ns-#5IECcg5}OqS1pmX#Ad zG*{?1o!8K3vajO)&5)bTjb4DGIU|(i+tf_wnN7Wi3*rD_2gLURq%nGp-zX-_&9QXq zpe4UJj}NdaGN=YR9{VD~{Ktn+1FP>jio+Ff<v+L(=DAMnAQly9k<Z0T%2GVHzoI@6 z7k*iM^!X050jOl~B8onm)RG|yuLl(ty*gf{<YY564~gyK3%pmYj`~pN+N8SAIiFR_ z&$4|=7Zi9=a<f|aM-D*u2eS+7Z}vsJ!s8UD|1Eb2_DR?Ck!8~Ehdu_1*!0UHf^=e4 zQ<O~3BI`SDWxA9S?n_)5<@O?F&1Jhyk{4d5_#PYN`v==AV;hFAr^2m(G^$mSlnq`R zlWlf9pWS7SE&EueG6b3(uI4q)wS$aHcu2&{gyk15f*_2&EHznXLDbp?2I@8L>~7Uk zKuf3X4B?-ZMAlWhA}I(%84KI*1ss?|_GQ#T`-f0>AFMYt0t(;<3sbGiJA8|6%^`OU zLzv_?eySpRXJYYfjNB?T&M~j#hVepDyPB^JT6s2~_mC*#=k2KRWSFtfsWf?#M#=KL zwUuv){{9N}R;NmRN^!Vm)RK6b7GTOKvyJygUw<XEgL%Xce`>otYF53zS2MmkZ{7IW zym2V$!TBjsywt+#^o@8#NJ|!A_d$|tf{MswxEGx2Y^3orH&+n@Z<Yol|5FjCY`eIE zl%O~)%@{FJpg+1+?+l#Bc6hW2YelAtY(=IFg@14gVkgFKg9~R8sIbVK#WW+RB@dsw z$NND0(LY#6im~sO6<{^cMCs<WOh2x&(jft%IFomoIOZ!eM{Y)PfZBL`?k{4vmXT63 zw>eMl2`&1d>))938BPo%*u~;x6rN4n?^$)l7VrPDLKqbsk5P+5ePJPxqM3jm*x`Tc zi??u80WfSyMH~jYbLxXOxYhNAo=J4A>$%0}@r+|H?`63Vv!d{PNs)al_YnM&@1Y$C zXP(t5VBhby$_q)`As4}#tM!VLO22lkR73yDoH5;IsHeD#8(7wfKR4MBCf1`m(R98p ziK+p{Qlok1`YL&y!zP59fTEilGic<;d76#`cn!b8p9bU39k&F9l6&j2EIa-la5%nx zo?%kPohXP}*)kE6e!S~6@yeG5>%?{7R}zvJ-3hMjjNFKmMPZ4~jdqOj@pw1pe+w1k zxKQ<PEV-Ih_%nFh#mi=#ZO{Cb7NHpDM;J@A(z~f&-oHLh^7PAqqZUT*8)6CFL1z>( z3sb#=JyyH~LQ4_HeIh#uyo%z8p8_YiHl;`>IYh}4;EoEUVgnPuS7z%Xs6<!|tZV88 z`TGK^CEQUi5?Y-6b-8yp0lB>sePViRBPYnWF}=SZgl?z{-D*1Bb#h6AhEgN|-f=fS z8U-Nc6#g44PnU-V&OZilR0PJbq^~^v3hyBJiCPLU7b~>0CU8X;TBC~dJX}i}1LaMX zKeE&(#-egg!5aHQ;CmfD`Y-akaw*AE2iHD52rt<8PV;X?d!ik*CnVk|_Z;l8*cQW} ztM&MwDJSME1R?IA4&0+bdb2*-=ZA)E&m}Ki*(Q~Ezt6_jUb}i4?O%v6brEReNCLc~ z4k-4wCPu9n9<07)vi~MGrvdLj5VyeynlnVZ-SHnj*(-=k`5l`*aBe+|)1-_K3`H#S z^wr9Lls!>~fmQgkYJRYgw29;5QU{w1Ke@lPy5eE<ql_LTloms30cNMlZSCb&@DQ_e z*lw_=hs!uTej*c8ce#Nn8RuNsqnl3|*LRUK5}`pLU}eQ1eO)}~#}8R<ldSTp%}h)b z0tX-h#vwoCS|130>uxj!g{8tII}ZiJg0cUS4h&BiYJf<1t9Ct;^@b<YOMz3r{Atvk zK_gmUO>4R&7*C^W8F!{cX%5x}_FF?JcTl$6Y;$xMQBy2Rm>oQ5msu;^9Ttyq;YVr% zPT?)e;NM)O1#&bopa*%j3enU$h%EZ8jgW1necP*XIhnRhobpBTitR3f3ue4xFtLgl zP~B5Rd$AvtMFe*jJzD+_wF=#Vy$MFdH!?wm@8SGIsFAX|r`qA=;p#<v8}@QDmjFA* zm^r+GCX6Cp!LqnkNh)ua#pcf-0AIYt7=po+M_2{oNr^kO0PM4v^Vs)4x}G@9g#TG> zu5UTvYEsg!RM@IvMDkAq)S>%8GM^9`<B_5D?@rOKbcob<6RgQL5y~r7Qrji3DWgH1 zVlHVP&lzs8uh0~`y|rb01J8h?IB}toVCIir6Z`D}Z8l1OMNrtEK)FP31nPM;yG2wT z;lZcN5Sz@q-{nu=mP>k^&&B-N^nRubT;j+BPeZRbtv0Q^V=~aJJRInGG2S*ra8_Q_ zGAhq8g|H3H23t1*e7WvO;>(Uj#z<sA(<o4_w>Kwg%;eR9D>-mF#&d|_Y;#cY8#;3h z0b3>k<7`-Z@T2d|i2KdX6TTWoCr%s!*r+qpRcMhbm8n+M55xPO;kD5jF24uL_%Bq# zX}@$oeAnt%+&iwDs&J)6V5DARe7?8yIpd5*mZ_RI$-8?Q`@wQT8)2U8)X|V+??kgJ z=(qgwVD~nuI$q*jRu?cT{rtQ75Y!WLO-T)V9;Tq)v?UtdFb<VIiuGI%@-p+f{?y0( zekLxd{wF9U*UnkXXqmMFY`wu5RR~`I>FVwF%D%OKnGM3B&k;|d{(Cc_KdDs;y=(bF zZ$R?aT@`eY0it=fZ~Zm=OpGY0o1*a(XWm0DXbb<481Fs8#oPonOTT$r<A(}P6#5D( zdM%0GY(W>KiT5N0NxM=-?!W$m^kn#wbJ8t+nJj^CUAJUk7MwwJKY1s5&fFh9Mw5Kq zgtF;8r40bvsK*p&z-b&GRRJ!~hYj0$UVFm7BIGZ~J*DcmpP+f1*Et@{T8uKqr2doB zjg=*DQ;}(NqDh}NxD@ZAo-rU|eZl$O3Bl|(!hN!MX06TiG@UT>`4aziG@FIt<>mP~ zzTNa=UlQ?nJ?pNU{{E5#{jZ(8SB2kgeY9pDQ*ZY{m;olRc>XslnPOJV&DvO}Wh9?W ztvi{lHE^>%YN|dvvHKhr_wC2YEJvf`kWh_58<pKk-O&1HJFr2>?`oZWY-pYJK!PFS ztrgNm{X1%tQ|>^P87}t0(Vn5X;Y6_#xCNS20O-En{dZT@2;UAVzb;!Ma*o<Z;)j*+ zpu^>+-*fFGG{ZR#?x;*$4U}EGbBv87$|$+3zk%M*-@?Dq#r+rXU@3xx<*1S6pxt&@ z{KRDb%%=b4ZOFaoNG`>o#b2MEA=ZbSk-C2oQOVe4`u)n$a_=u?{rbCLhm<%Vh`tq; z*t^&Qv<&#M-n-We(Oi?HdxFkA!fXW`OZO)dfPt?Wq76>>(6<~Wuc|jp&G9XAd!hpV z&kXQ(YCU4JM?b~qow_;0zWld649-BpWa}cxgE8F{<OB6uE(Vd^R=kX%Mk6`+Z0LzJ z?Q1=aHK;!JE;^(A$}5SfwPz@c2Gqgm?h}c;Zi0U-xa30;@K8kVOHQ8MlUb~yCQZf- zf6R$#gi6RM+z15lX=R*KwV8+{1yUqwP@d`A<HUcs&M}Ti;gXb-%Ma_pCO0QWJj#!R zoD)H_kG;R^{A-$@vNF56457$Rmv$be!iu<Nqkf5X_`!5Iy%6Iv7lmA?uV*Bim{(43 zraoj8*}F(;7&!laWX&^cy0-tb?t57-B<h)`fUbLv)bPCFeNaoL8R_r^k@A<%vd213 z%kPi2A8GieeaOqvbHPb^_zm7AXgqaNm;IW>P__(rv*k1i1XKAlcD+p4YZPhFsSYEK z)d8_TpKIyQ=w6~?+N9v5Kk;RBH+4rJszhk;1BzlZoQYkyW23}yN#&;IrFte=BE=F+ zSv)X<POv_x2d1uJI>h%8)XVGarvND(Ey8wZPGV5Lc*CI^$7q}S?0SJh2#nEwHJVy@ zJA6<#KYk+#zy!szdNmYsU*l0nW6s2r@!R@r0Klt!q^9KEpr+dplglW9N03_P{%p|e zcZK1f3BwO+daPN3i&@?)b73fe(Gzo~$nGEYM2;@6;cK4pJLQ!CM}7zjz=esA_IWvK zJ0vq^sxOMV*9>Q+1MWbL!K}cLIp8_s)Q@Ce{1-*TY!>=W<-KU9Nz)JIWI$MGGwt(9 zQv}Pkr90upF6UtT^|M#Z5aTK#8TG>W-7<CyolqEDU(06)dsfkcSb{}Z!2&~5I|QFI zu@A==m$i%h;fkgU@@ceu)jQx>O@w|~yj}&7aKCmsifSaherxPk`0B}EG1qf5v;p!> zMY#c6G6~N@$+(MPDP$^mcIK<FfA`#Rj8_ELWH`xWLFyo;iY2L9ecT9#97lybJck}M z)^*bT9=87EBL{dI@llXhCyt)vkV81}Ui4~M_NnAQTxW@~8;Bbu6FbCR#7J`qv4Hz+ zrDk=_uH>TIk2S!j3*R!z*Qqrd`?=6+H4+d?5V^RN5#IxSV|%EXRoQOmdwypqEdMzu zrtdJxz7}W?uk4I8b=D1cz(noSx|W)gF%`g=QHRN~5&wNR_|^a5=#WNS{PiZATpO{Y z(=wM_YaOJK{m^skJ-=E<&+@!Cwu53vZcM`w%)qZMHu4j0u%wKmw|Un=txJi(q2ffI z1Y&r7vHh0uG)MZMXY&iSJxbs!3_t-3fE_{JGTk?KZ|k;~o2$O>uRP^}E25#w{=(%5 zd@m~>-+gMe#i<$Na$I8i>7w6zy0YD&doIBmRoOb<AM-}g-S}AEOQ<nli%E88THgHc zzqhu`cUO5~EB_90MfY2oZNeJOheHPT7*jX|$!j|jo$MojNO+L4e&n&WkxVzT#r^9| zWUk~a>Ai1IjhW;su(KM7mB6lOa6Bt$0ZirjPza_OBV`vx5j1`1YqGo6mo(;a7;<f^ zEQ}GY{^mi8IN8UhT&Ay%JE45k=7YAtAj;;C5{$gzs*t#icB>dymx19fpm3Hni~U`x z(3*uIUn)BGY%$pz>%KnoL|c&SS>^K-J}<Fa4aI)(+z9!NnWPnznO7KX%>8R_X5=S4 zk@3AqRAhLyXha=Wx%N<mmw8$nGTWuTw7nn@`k!G?LFr`l0wB)I&#PbdVNyOQx%Y|Q z7+yUrEND2GRXJ*bp|la#(sfK0eVj{<6nhO<$iNWG1x*wvMA~iqNH{#it5=7ZABzP@ z@${Z!XO%&jQaYSC%nVAxR{l3I%k|uy>@P#VS%v0j_Ku@HE{r_`+Zn6^Y(Im~B)AMl z&~?|)gAmXH^=CR)w~apBE{b}aMfuf!A2)c&#TBR?dgrAWJaGw;XFd<++H)rTZXDsk z%yxQ`o@m@Vo%3_>jIm(w)E6qtCBiQPrD+{LSBuO{yBDSEayE|*yei2a+hJ=We6CEb z#(aNn6H9zGXb{u>OV*zzV8TQ71<GZa>_GYT-SR}Q{0@B@VUX9{=-FK*zF7oVLue?u zje3{|&Pv4hro*~6&Y^2Z(F$7Ay_deL+BvO-C%p-^#un{tpl|~hWYNA5^+q3iUXFyz zXYjvCO@JdS6!-&~WI=K@!yP^st%ui=C)x^$rx;fn&xulOuG17XPTyrl|1OmcA1+6{ z<La{DTm(opxeHA*?DXJQwWLyOWG_K^WT4Mx4PL|3#xT*KuTImCHWfcKt<FuPK%|*z z1L4n7lo<t}O5j8R?=AUjyK0!8z64Qm=EGu1<^V!V-zPPP2&M4cETIUO!Hu(rZ}EMl zWun&-W)q`RSFkX0c~%z}V-|v9>VGoKh0<5=J?WZR9M2MT{y8#f!??2F2RuG2OWUf= zq6RU#Md_)iQ>W_1Rxn@^<y~kssVudBpEoQ`_ZO;2PzTm456K2p06u>e4U#jTHU7q5 z2jI~!9vAUCN_*3fVST2+hv9mMV}u;BKeu}i^*S$=abapwHg~J8T5>sR>#U1Nsey<- z<5M$@-h6<zoFQ*ZOZuj!Rui{>MD}Z`BX0Dq_G`f^KOHQo_H$b8E!XL%HgY>ibK1;1 zn`d$wnA|?OG_c;aUF$!&Hi4%m<W#k>TopfYY%EMq9gULm&w-Y8#Q3Z1m*TAMDZ!)l z0@%UNp@k5Ge9?P4g*Nqa-ZxM~e87LCCvm7g^&SL!#m^U}EcWwJya#siUx0q3xBq{$ zkmt>39J{GbI-+h`P7GMCq4vQas01rpOYoYHt*4wfC$ge{oh?i0uS{L93hy`Uto&Xb z?9%<zk)<mHMWon1<qlcd8#Fy?mbWlfbcj|4h@_khA{dUwB_GjqNLxy>-*T_)Y#h}| zgt!@h_6_!~*xqFXg!ZQWo}?DGz9D*LS(`k$_!dpDV}#-Fj-hRSNW+pseV|cH1W#JM z*8A(F6?fku6Yp(TKXGBZ@tr0malP2++@=Yl^`pp(Kj4v>9XPU%`31$ayKM;5`{l*r z$!sLy$$Xr!V*QTP^z+k|F=YrH5%!5@K~2CRGl?&oAtM!YURIjW<A~-3rNsNou>lKT z)29Qv)x?~b;F>sH$X&uyGWr$#6^tS$EK*VcqyAJuXpt%Q>|^5gdrhL4ig~2&WhTNG zqZb6RJTB}$7j*`44s`S}v6vzNvcy7wdP+`G<1@c7&ifZH#xNzWk`tB9;|;m5xngD* zxT*EJ86#;}Z(KkYIcNikxT-h2&V>Ob117-o>!fzW$_>u^g4O%qzao>;a|Q*(_CTa1 zSnWs$+}0db_(kX^5vN4?oC#~;{OQE=UQ?j>z}Xu4uk?$Q*u7B1z$XvFR%d+9qenq+ zXrsEeAwuVs-Vll)M3a~%CDd7ckK0mq?sp%4q`|NX_8qfFDkW!u0QyJl;()bw$^$Eh zLdxlZ_O@`7eu&vL7KTMniSttB_pn>J@)EBhGfq&<iS8?ewp*~BfALXF@S#(s94Ifo z0F`>ilVV1>(0k@!d7nuV*Bz2W1*TwWy6gCm>EK)pXgeZokG4v&T4l2KTH4T+$(h_Y zIz3Ad3<`44-@%<?h<Do_7Q_tESq_uIKOin5fjp1x5KUU7q#k2{9Q}EzNQL2JEP)|y zmtF5pUUEbE!*sf{T%6td?UPVaa(0@C=g=yeu55fUHt=7l{st8EkZp_k36kZ$WFN+C zB?kUA#lE3kWSC7p7q|QKwNxH!48A^L2%ANlCdGl*>(Fq02>E@$&g%2;8jY~7*(jYt zr*YJKxA{W;>!mXL1J@)s$Q)oN9AdC%x?do1^i>@5$ycF^2*UQXcWyR+H(oMdVueld zIw}%nCuvm;`)Wx)e8BK+_B_I-En+ulWpr2mVMWifO?)qGtfSJJ<fA~hq=$5I6(geo zRSTu9i3+vh0|?<2bf*&Q`vhlB;anM#gL-bo={qi-)O$(d3PR_^$g8@FKo)zA4?rh3 z-;z@y4J3T%v!F0#)GI}27wzyVf^yK3bJ8;oQAPdf??~9HLF4;g;@2{){+Q4|_}ieO zPsCpD5jimX1~I=2!rt8#ss=#l92a<^*c@Wt2&10wvoqTic4gMC*$&0D3mm{s5g$nu zBi;ogZZgp`P1N(}M60IGZHc{}n%7KusA(#4d(`{>E^Z;+mko%iL!1+vxYRa5%IQr} z2RF%&1^tzv(IqmulTYSb&#FAHz{H7{3w3#^Y&M}JdJ{BYeX~%|mgwWUxn2jK(;A6; zN?71#cO(7C3{${3vznFY;V@rHK{>-uw06O?2zy5=3%5@;%6$Bpd~W+uIcntm4#Q<% zHe=V5M`p@c9eHo)k<z~?D*odjJY1YAmI`yN_}WYH_De#e)2a%Uv>;W*`f0Y8V|K(V z9cavVIzPW#hzSC452w=PJ8ln?(zTHkhby6<7z%PM*4D-kM*q+|_$EQ=9pfF=o7Wt? z5y_1N1%3RPW9DpSJ^qA~7m)5_A|SdO+7DGlzM8(QSk{3|dqagVJ#~9wMOfy{O;p=3 z+YdMU3Dm$^(PJdiE1)-Q>ZM={mX7rL8sf$TM*AOPNg(uMg&JCPPs~qt(J8-`-}ej2 zz;nqkS3HLhiBim<%Qp~mjOS*t8jxbO$!REf3EM1HwAeg0!EwziF)HZSJPO-R-}`te zn6MMVwC_A^*4H$BbiCA>??5J4Q*0XQvVKi^+(w*{4ByoHAqzjquPg7EfkwVRxUDd( zAA>?L(Q6CnUchL!cmG#C2iux)Q&<=u{t1&6zJ3ksh;niz<;%M=F1q!7R`%xb3SI61 zYKkeuJF5<6XdYTyC%L=}*P7G^VBROcn=Xa99k!3G@A{IK_ijFHG+TmXS%l)z4-_+q zi|39MHa}t(wNni3OzQG7l1j1}3Y;3eeyydXB8odkKmPk53*xiZkuS^rGvthUxEx-< zc5OhZD2@TruN5P~>~P&S{7yv9eudpiap>9`LAn_#{GIU=+IzH^l)yQi*?}#%k2MzA zRKd!0#6RcczuAX;*?GN@^+Y<1$LjT*Q+_%f)B*eQxbok<2id#yNjoLhIt%c#h-n#y zeWz+S`VhmQytgKbshRwWIR1wPMJx1G=_<PO!~2p4%&O~4tH<W(rCNKPZKhu)yl_Ui zYP449Xa1~p!e$tCR#Z%5Pbs~h7L;8s)Vs)`Utw!}MV`m@H&H(gapVtX+|L#fs!cqI z{$djMij#_e6Gg%15soHyku+EjRxEzTJZ|%+SOILudG?1Y=z+SOXtBJ1A(!bxkJ`)Z z$PM@B$&3wXX~h;8O)g^4iKW2O&m!m%skJBtj6&ZffHLCWjkqqVp%IO7r0*_G$;sO} zyo5C$M*?^v_RqAB$RTTwxzVFu5l@uHqDILCJy`fuVuGujXm_yK-UG5Y$hHWU=7bBc z5K=(b)tJ+k;PW8P6_D3q1)pbHQwU~Tz>^v<M?&#(ti<jf5Rblo5hONf1`gK15CD&4 z9d9((jHG?j4ctY?LmZfjB$B%!trOqp0eSU@PcYuS+4$jBs1I91S=lTAo5FSi^vxpM z&jnXkBJh5HnQ8{l#!s1<d__mGMG+6Ph*rc4vTP^M3RrP3Cc~u_6(2ZWoKfh2v<xx2 z;_@&ai?&jW11T_~3+XfE1ZDsOQ9-|bkQlc6$oyF!=jsakDV)Q7WvG3xWJ0_y_pNe@ zWY33{a3jTCBAG~qi3Pp(qN9QKfe(=b++i%iQ{t5IpIBUM{!EUYZIj@3%S5hG0}T8W zfGWPP3>5BQyLA4Wx-EenRhIJux|+IYDmOya)s$@-9%I|R!3C%NmjKmK7Ag7M1fwnZ zgdASgi{LZAINuTOP{xFKVk3-LzeR2<tR50#{D;jHKJ=WPEd`IgXT!0Qy@y0Z7lxa+ zJOQ|soI{1B*wKG|G>ynGZLq2C3zF-xxrNW3m%9og*8Cew4OZVE{yE*+8n)Tc_%Qfy zXFcunyRwcMGCLOA6;`wDP;-$4a&h)q-05|cvBpwbS~ngh(a(ev6B8;{$_Hu?lkbLK zPOh+$rNw*xaYEf}e0*DIz;pXw43i}#<?lTv{C)Z91b1?}Q(PW+>gIM-iA{4w)<K%( zMS;@m=r7cwJ(vHPIraUL<Hjq#^Zk><Ye5!=ew8+by_vty<fq>rdZn}D_7M#K4Kx;# z0&{!{8z{@`8-5V{p9U2Oov4fZn_U33quLz<3W~i2N5>*B1|v)=eXUaa*|OJavd^<z z?s6MaEp-@mP#xm`#=J|GL~em=fzJ`+`hyk_kucQBmGNE8Vp!@k1!P=f+UE+(50b@` zQyBZzy#vE(Mn7z2&cTKbZ9$EN9M}W+`>h8dM$$1YI9~nRxi^Dl&vE+szTu6BwV^;{ zME0?-loiXzOnfzA0zw~8Lxn{Q3U3Tzu8{eMV6*xDmfH_udB!7H-n(OME<va`<pdY5 zY+HbK(ws63#rf#th}Dk@Qz(0Wr7ptr3xweU0bTE^T1VzL37?J!rVN8jf>ssC9<+~L zEX~+Em<7Oun&tMC$@C3ja5kD>@qen4-7^S47)qcMJ?AYB=_e?<6DX>KiCi()vnO#r zl$O?Ov>0Lc_1{Vg^ohE-94VFwYm0*fNh9`7Nb7gMedqCqBXVP_A1a?J-yM0Z^9-}r z)au|QET1c<lcM~iD4Q**XBtB{2^ihU)QLqNxHB;K_4ujo6gk<-fYSzZCk+c;h}>7J z-6GR*SMsOKZ`ToX*4-}W3Ygiqo{5t(kZ4#&2%L!6@O1{s>M!1fJ4)k5@kx1D5oj-- zR!s(xWdDMr#@^NBM5<+7(seGT%>9dS`1$5rJlbz@tZi1Rn4rxDk4O*g$il}v&FisX zo$nX*QX}R=+S5=J2T<)dLuho~W&e4`Gpe2hz`cWXtZSDoDr~Y@06PVk6I&F3)!Ho~ zN<=*Ch6Ma!0e&nApeu4tRh9+LnSH5)Qoe0GK^zofh<%#ukD)k#IK9S--&$7NzcAe7 zwu1QT6bfbKNsTy0$bV_?*Sf7fh91+kx=>~Snvm9}cU$G-wA-7O#E^*J-q)i)J&VTK zoKeZz{kD-}Tq-6mtH}+GU_b6({?VJX6Eyxs+$UtAH<~4N6(+RdMe#a~$UOEvw@>Cp z?L*WzF+vYSFvi(8M9Or=&PTs+e=$pcvR;Y)e=FTV>MPV#oJBHYXD4cbVI59l=xxAZ zQ0Iw%FjGH0T&$%N=M?;NPmt3V_4zaL$t(&dhbtV^X%TI6+l7C><SWF@jFl*oUp>&& z!Shn{$!Bk>y}hSUW`zdxe!E%P>0C#XT;nED2lDk*+)wAdiA5R&c=hFxa|nY8lR3Gr zm?Sk0@y|NjD8R^IMb?v0xIvgx2N7eqA4@_{M&G8iE8@f(wtcmE<#!j3<05GaxtxC4 z8x`cA6@1+E>-D>Wzv~?{({XppXV39}IPJTSvQE$6`+#dc8o07I^fG7Fz><;k*TtJR z%6?>730HEd>sGRN<$>>?d)pv)IDNqh>0*XBea7Ete8jPIwi@q6ECHXlMICx<)lk(i z82KsW4Y_nOmyVm1>L4tU+@wvkCXTwfPqt<Aw5w(HWnxEDT|54JZP{LQ*`Soeq0Vq` z*`~Jm&$6-)87$?ucV{0s#IalKj*7KC`M9~c6SK3U56mZj%A8W?n@-*2kLe3P{Ue{- z+uvuyo{YK88BGJ|>FJG6%*YxWi=8f4h8T)janCUsQkLBkXQZz(*L`$!&>g(MP;LpX zP95cN_)_7!tL9O9f&b-UT$i4P23(AjBJYoVfNh{B#h2K3D)?6FeGG($NasqBP8bvd z5udFJficv%4}`Je!8babP+DPxeJAZ;Lrz%3rz3zN<yGej&f`*BzBIgQ$Ex4?FKSEp zrOb8%-$zK>VO_l}dI#oIEGduk<ODBE13+`-L0MIA!QD~z1gXZbH}=S)RtB|Am&vFF zZlWcp5S%~DS-1%PTRL-fGoltViN~7Pg>t6(D@mgni?Fg~q1pHk-|osERrMz>(z?|K zio0~Jk33;VgtW{5LM1yln3;+CzA)N8b0Hz|bh8~Mgeo=ILqFOV=CRV1u#+9+SPU-* z-+qqa1bU$EX}YTS1wH^H`phwjSoPz${|Vw1#KyX-hAu0~zP>q3O1AVk9xi?4&VVVm zI>pxaN;Rw%GWt@af3!<WTuRn+xTLh&cGFLR8`n<#gL+fyqa3N9m;|kt1?G5EM|h9r z5&}tEv7y_4pjw;jPWRcL8PybIN1i=Ia;lh4Ed^pmTGN2!*BQxJM0I;g+<2~VCqFjG z5C16fgj78Bd;NZ5X|RPF*6i%Mpt_)r+pLnb2=qCXWqw&NfT}#%orpJ?lKx{&_>d!_ zjaLvOR2s1D{w=OxgEa}8sHRdvTLYoGJ+;mgGFp*0O#&l?D%IqRBTxC5=zL^g`bEb3 zQKb(=)pPfmkNWe0nk;VmEFc(8p9Q}|i($MZ?$pXb6RZ`{2-4B&rn37}CuieNc48`; ze8wvo=xf;W=0@3Hsslh5KPxvl6Iy855^58@_pvWoZTglm3Di%>c%#DQCj20muO0o{ z><K;unLS;7zT8qqyz6khw@sxjE3*A7M7wMw*ZG_H+?_Ypp$>wcF*no%=UAkND^-gW zmsC*Z+Ht!f!<;g@Sm1y=>dRJ)2oTB3AJ)P@JmUfmprztUGA73g&78S>reZLQ(zQt& zE$>@X%L{GQ>6z<p9$H$GcP2Nmg4SNHWJ;uLmloZ#{4+bO;{KL&zqq&vj+5onzz0it zYtwHbZcNhq%jh<G3KG?^9k!a75@-*9$}x!kNxu+0%=rb!K>z1aeUk~IB`f1_(}<?a zvmh~A<DupSLxa$f(#wc#TD6)P+PsiX$Oyw1_Or=MqVmZ-*LhkB=I%XBpVrQXNgN{5 zk(zYUpz9v*_kn%+Z*yVoWUh5ArU+OtCJS5V{tBW#<X`kd#QcnV>w(y|SzVe$ugX%@ zF2qC=G|EU;3aU%f=Ej0>2%j8q>w-tSHOLy9^S%>8Xp#1`kk22Rg_L7jy%&G-DRQoT z6x^GlP9f#G=g6WXB^;-oNR)sgLFQn-FoRi#K55>>sYLQ)>L4iLae*X^7z7J~;vb6# zL5Yw1fX&dCEkEgnDneo!XS$F+w@5MG=UVZ&D6=KU6VX50z^%=I>OkRInlpmhgoXaq zj#aC<DaYH4U*5f*$1Ibe6@(bM>DGG<-eRg_zW6IkGs8^k^B%orYlZue*F(71n$Wm2 zP2+qdhmGz3p9KK;3ZtTXL0~IhYwv}7{`5&pCs8ZmG>ZLU4cuP+_8q7hoxO_M?d_{4 z3M?&tOl!jLj)HBc=;ZLpKw0(Fmx!RRCy*tOhX8zWN*wnXXJr2(KmEMN`SRq@RYL;i zC{bCyQD0gqrn);Utvyz2Km5ozn)u6hw`L%E0llEk8$M6-FMW-=bow4w@3GpGgV5%V z{twdXgYsuDi|-VpZ2%R2s~y*W^x~VZ-R-`AJT0LSRAZEWxukQcZXvZc-j-5FIwu0; zUx+FZ{!sYt(f(4hplj*2HXy3aPqc~dRWbwfVUL3FtUbaA$jY>Rk4W@fL}BmxY#AzG zc}dXNe#K@n$VRf%4a$T*2%w0B^LJ{Vu;`{L_-G?d$2Lcl)MhU!H#PDgmB3))KpW>t z<oc-BPFOZiUQa{AepD>)Ct(Io0)nGF$v-2&H@h6!2_iQadY|LDHWKis3DWU`|M}zp zJa2OoWGFlqswn-l(l<B(Do^AzF_zQ%P;b2kL4bw>x`swaCL*I0MxX~?5!Y{Kr{cop zP<2Tk?b*&~WmVZ=g8Z4&x2^*_knS|oy!^MH3Uz(N4^Bo2)NW8d2+LsWo(-acf|6wn zF4K)u6)??o7sQm=VNN+@jWb>K*3NhtRO7AIwkZcO8+o0`{2W0I!86j3!Xmr+jfD9t zEI|1Q9-?-zLqQ(H5d=LOMGS&cAHxQo7)W4>5$OM@J!ilfMMGN~KQZ;nxWRw#X5BN^ zWqLWs1VtXt?eIFMmSRf07Zjy9(#ZK<I7y^`5%N_Z5pcuHI(3l~8QZE9zt~VRPsLE{ zJ-+K>9<UXz049YTS7qD6Kl9K>xtjF@YZ72gV9n5?qsd6wOL0HWS(`(of!^g!!V~dt zLbw_9bi4IlqEXoLal^=ukeOKBQ>u?fT_t*CR&5uuRKG!xh;i{hU40&fq;=hF)m5t{ zcHW8}ld+l_>}i^ZE1eReIoJ_Y7)w>C<cW7#OsSbV8RHKQD^M)@4ez@_Lu|4g?9*+= zsf7hq8DM;O58Kt#9(j;Og{zf;O_(~OQiqX=jUE$PJNgd{?n96=EzHWwB}T%rC1Z{a zj;EuFn@imwBw0;&bLZ&vL%f_=Ku<=_lo8VD!KXG)s>Kd8t)o?Iyq=1NcVQ#4jE8)E zheFb^EbZUV0M&nw&2C2(wdw>~6wL;)4-%MzZqq;Gj{`mlC}xYh!G1XoJ5*?~MD&GR zV|hK{?Auqun8*Sc_ATx*f-;D@@FQX4&_3&b&OG0_mb@Qo8yWFj?%Lc=s7IdWlyyGl zZ4CXHoE;dLQ(I$&rOm-GR>}`b93JxppzWWWH{Y!P*8$m|?kbQu1KD(Xol>A$v5oam zOdG+LRqYn%esoP0Do0kB(%VYkPRO!IHUi#dSzQz?jP@7HI>DDzes7`v$Uzfk(D=l% z>7#%~cCm#jic)PgmoIS809hyw6jJrK7SLAsi+)hgZ2Ie>z7rJ$xVcI{RO5uAi~<Ip zcu0Ubz5mMa7*&`A-#S;7+ISvdz)LW;UAobeREq_J2NWZhq~8i@3^AU3dJY@MY+l$l z(v`AS)|{Z+*ZQN>&F={T96pw!dB%{ak*DH=_ks0P!Oz&ob4kG~=z{;a{``u`3={W7 zezm&aIUP#j?uIx`7I^aty*W_>PR&?-Ph`v$!!K_y0O4T!fuc6!5PU2_42HkAO3n4{ z`<F}SHKKMV^){a?JW63NOMMfxo`&3oc06(hJ+f*RUji~a>l=jl#Jb+{m?!mXpGK1b znRD5~>1anpZ_#{6$+|}46RYkex~Z=Wq$4~S_chJzJ+u(&h4hTyqMWr<5Zgq9*MdR+ zaWfh%&trs5QQ4-S`S28pOfMQe+S;UY51d*lvZQpR|GSl^HaR7w-QvUJ7!O0mz*WYn z1WP?0KK?mt1BL4N<h#rn#YbAlE=G7$E}*Q4K~1dOP_*j=Su4&4-7xs6N=bC-m@y|V zH2P9q5PzI{!Sw^MT5sWA8Q2Rg|6?4n^R+r$(Hpw7);AAJHv{FU8BB9N@BawDG2Rrf zgQ=}SNH%vqn-<_>9q`QxXFze=eBmyy(n9Jo#Lf<rt4rDo9q=Jm3*`c)kNd@P9hPJH z@jTcM$^HT8SapwHv1}gPc6QG?uh~)F6*}ylpvuv#aSOeiW5C_ETx~1EZj=qy+@(>% z5UHqFTLwz+FsA%v5Q`Y#wHnmd{`-@Q<FEW<SZ&5p>tE;7N_jtyeq{bfxe}JGf#<hz z`pi-J9sfCDail;E>Wgu-Ao~?+@>*UL?!IF3N*N3Dg4_VVp{~kOdm2lp(@%na)eRZh z{b>y6?M?Y^c=s1+D|_4x=IDGbUsNDimZTF`ddoHU4)_)J9)kGFV2U$N{aflwMkLnJ zb~rQuOF95;8ioiaS9FYl!g`5`^E`Pw-7kXq95!|$(Va$KcyxA7A1<c{PK6?CleYU_ zH41A(%#VIvy#E{VGK~zW)!~6p`=+8=!&#kfkT){;ggZk}jSY$^3|KiXO4HL<FEZg# zL172jyM}SOtERiD24P=Ue-C+vl^m<_F();)A`>i3k`%`{+$h3FZF&6B%6bbVr#c&` z)^##-v}r|VWo5M{D~wiyKo}duo1ZRsS}AQmM6ql%HCZfInN?%HT|er21GVZgXzJfI zWJ11YIqX;Pw0j>AZ78uEduK$N`f2-KjAuwdzy7G!hXcPHT>z_GABG5z1V&$9lM)(r zljnpUvLR}Q1Kt?^wjHweFHbJkvjRYO7$9rmecNK9(e(Bw(K9abN#S244zuE_FkPWr z)bkY+Ac*qv^iQ8sj|NrseF0pz-^tC>bd2-Twcyju%+bv>!$>CR74e@z81lm504^&L zI=!i70f~b?Oj%CUQNU>nrQ96w1yW6N1>1KIp_K9x`Rq$Yj{(G=!_4||xNkfbMFfW- z@{cN(je%++3NR1r1wxs-Eo|0z|0K|tm`uxi?}pJZzEw-B6?El<Je-qyUzR6Jz<3}+ ztq^!HIY?YR$O0*LW?~z#Cw}2X8QVvT?L`H4lHwqNHIW71zzY1JLmsfMQ;%}dO8utU z6;B7cw3Ud}nZev-n!JUwte@`OVFYUYX-5PKnsRKzpVeD5uJ-g2Q^n!Wkz(1u{1C4I z;%1Y7c%mhkr>>^m5yz)b{#+a*0oA1=iLvJg+wrzKyjr>XeFAfYBryE0o#9J|Va0L4 zG#ehHfYM`II{Jn!HT?O%Q;x>owpAtO&KFlbFM-)ZII6qr6oK%=6YGrjq9kA8t)PEk zS$+RJ!kFlhqh~v)F|!YN!KU7!YQJbq=eA9RM5eLw*jcMFD=0)Z^ygnUX(N+YC8QU$ z-jy}}X7hKq*foj04x{O(UhYeppq2n~H<Q7*;Q8J&nh_cO)P6cX=XbQwQCFXExR^ZA zvDtvP{AqRTpJkq-(l9<?5wY?E3rkf+r5PY6C$v#II16TBV*l3~ZwT&ha5f~l*%ipg z{v_`sy=HkklKwHweoAs_?qmWp4i1bzzAbJFO9_UbyFl-D7v=;b`SV@j<^Ek2hgEgH z6}=WbmW)PM$2%$pMqj{`8~oQ*SX+O!dh=;G;-9Zoq<?SVs9%F+)au1}D98k=l6@pR zySdBt(KYxMRNCohQt!*O@XTTGi-hN>R)REOPxEfR^u%#o0rV^zb9kLWR42!UU7)m= z9#NUIApWsB-DLgskdbFJLH=UY?|Pa(t-cJZuGK_@NGCGHOoyDM_^LpI1T@qZJzpzj zpF7zg5Fa36{Vm_})_XbhVia>jwD`sk=)qR>x(eY5=S*iZVUGh9gwk#A^s0fd-l7?B z(6w6QZ!jB|QM0FmF&6><e(zA&J$G;4v&ngm_2;?O#`}7en&Io-6<HUt$03M9`wPc< z-o|okB1j6`tKA!I%iQ=NKJZR4_pexjnmt20M~MfA$crMN+vDkCm=k^qjYK2IrmX^2 zJ2*@X<kfAzHQrpUMO<2FysA@i2)(=XMpEnXPCc}n?Ed|3?iCHxCjtAL2@8hu&%X%> z)Q2^+E}YO-C~YRN;!j`eCakJzxnTH|8nm#w_G)_ysQV7=gN|Ka3=#*RwYUi}xl#0F zYm8Z~lzxOi(LvK}l|`U^C%V>kx1==-=BdLw8Br_q`gymbPr~t$k)fENX8gZLpDglw z2q}jk5!w?+qBvdwy)-=dWeg;)AEz;5p?f;%zqOnapf$`1?&^&#$}U|jI9p^LriT$K zBfW=$8Y3~BalgR16e~st<%oE)Q6v=vA9LhLzTIN5?HnlY1Ot4!wuy~$r_y4xL5HS8 zJM&?5H6~)1A$Z6EUa^$a&>>Ann7YNyEh#x!Dw}UWmKkf4S{?po(~*;f1>FY>t{C}c zx@UdN%)vGijwx$csTF+7Oh(m#Sz23T_Hv@agRe=T8~B2J%aGUy9ECFMbByh~CfF1} zO-3!BVR*6rCt}3=tI96sMxvci;83&I4Unm2zTJ$${c>|H(66m3;@^>YEEBnc8W#lE z?#;?x0icdMTN#!0`WwZ=b6V)}qAE~$_x@>$e5n>Dzo63XV#Hzo+bJjjMa?vCy-g<2 zlELut)|vp%tp(cn{)%Gh-Tm3hkaWr)1BJH_@CvrQ$QH?X#{jAI@TqM93r%mpzrbU& znhyjg?7dK~yDX{-oqDm`xo+YRs=jt4C`6zCQ14ADIXmPQ9ogf*u;O`EgOi#fxmk_i z^c@)!@Tj-^(Ins22<3U%Zxh|u<S<;ZoBIMPU_Szwo>X0<^=9e6qCeq_=3<+HCb3<F z?kL)3lO2nJG&FB)yWemQ>(0UhJ>*Wsz!83HbJUiRoou+vunOPB+!4$BK6{GWS9ua{ za}qhj#`>2h=?)O6uL>ap+2~Fa>=IO1S^dph1yXGc51z6$rG#xgtG!8G<?zqwPaHda z5>SL&FTV$Ig6gj3l-{NkA*OnbnazTGlj%x#7Vxmp_LGd!X2Ph6hmR`=1hJ$4^_6%E zQO3pR1n#x2uC}-5^xGH2dq7Ge+_T#-?lqugxiau$?e(^81^pVrZNz7saX?bgr&xy* z;2_y=*JK@lg1)?>bc&_a`96kzjd?V81t0kUL!AcdO}W?%#g%E9%N5#DXxLtI6x|$x z9z4BxoxajnObSu>S4jxW7-VID=z2i^%p*j*5S?D#-YE~?iAGkhq&%rEW2T^|hl;7K z$ZLEvUA?*P>8L3+sM>Y&W4~T}SBs@3880O<FE6gU+n=nBdo_L2H_@Sjr)ARqbKdN1 zGM93byqt=XLKI^?1jzCH$yVMg=oS4y{6y_C;TTr6x3Sj@^&^Getn`NI5d=0ufSXmY z9lg5qBw<K*Ng`V(-4H<>kOEApHY9;w>7)00McxR!$hm>nk$;AW%QAC!Ti0)`ZyW3$ zimY3e-4?yO%3a4g61!wmxAmi7Z{K0$7@-x}Di^MUS!!WIJ~2%pPO*NE_d%D}-f7t< z-&-}<x?hAtrZ}S(LhJ^*aqtR(=~!>@6rc>WHff}PUm(s89`&nlbY`RZg?w-DGdqP3 zXkT|U!5<@qiPe9-2AUE+w3YkgX9&C8hI=4Uk@Snm+l8p9u4G4TRBDIatXREX3i&jH zB_YmX7Xr*2$#p~pqG2)2(uKSf22}kMU>1q3!L|^PgH^@aMcHlThhB|!qiUzz0~?=L z{tr!W!4_rreu2J%fV6Z9(%qe-Al)@ILrOPDGa}vH2+~M*!$^0RbeD7wF*AqX|D5v` zp6l6r-z)C5vRDW>97(MUWY$xvj=*O88xXcQ$tU&Gxdca>J5UvZ<7H2pZyw$BMpi!v zF8A*huh4N75*Z`G0Hlci(Y#NH@?`|-uJiGG@@xgoS14AI#?td5?TL5}pMrQ#)K_f0 z4x7Y89CIf{t|OVia_ftAzoZti6ip5DKK9Sb{+|6NcIgp{^k{?Rgmas?{O>Hkbd7Bm z??^k)50q*dp^cj1TpFJFcv=u0EF^XQc+x%7!xkw(Kl=ZE{1(}zojv55m-LLk=7_?G zZ`{NezLu6PS&FuO^S_CL;tE|U{9V39>2Q2Ma3CUP@+zQO#4!QMSADD;PJ452*C|Hu z<Cmtw-S%5(;R4A#prTijjM3GB>4~6fM4jP@pbIEt^EUx)s;m4K>w`?F(MaEdZaLzV z^3|mNXLNKl3<y6>i6dJGxuU*v?=?LvCtHxQvt#uz$plU^FfirE7~=jDud1JQOVOP* z9XX?6t6;5!HSsFBDbFg(a*8w|?n_>eZ=Lywf6&XO&lBX^P`hJ%g$s$~W8@-}99$Nm z)a^Sr>4K3@GI=^$wY^tPy!D7&<38ocHTa7<y&$7g$EcBt0OWbn;n6&&Go?l>L^e{< zz$7NKJ`x`g)n+ef3VXVPp8o(wWIvFpJ~-$FY&_u&SZw^+jqeKHX`18y)u1GJIf>gQ zK=ZQ(?EM&XkbdpIz~r?ng{%6^X3{h6$pAH<W(wiMbT(;^N9I4(yhZrSXd_&5H=69h zF$S6;@c^p08I+sL#U{Uw|D3v@EB)pVr@Nb#Z~|GFV3nz0vmPv*W!LTqfRe#&m(f!J zo|hbcSSTTXQsXobbY~_|TKg7p-;56To_FpLt3R&ca4Ez-N_r);Um;R&0q*okO}rSP zHDzSn$oxceKEjyKo_A1<GCa~kcB|MhPCA;8T0n1`Eqo{DD|!%Iw-Dw<1;@R;Fnz&` zfr!`XOTR**&E{c*=?g>yL9vQJkR1ZVVHUbwXGMhpI;H#|9H>O<3fP_KY~w{ZXaCaN zwpV)O#bv<d{i)q(<h-X$-7;R^HrvvS2L|S);riRVi!hJ4f|u=|YM>2?Uy$#JVGg&T zmq_4`g(2s32>G7U(~B?M-7SC(N_M(~SG}n=EY11EnG@I25(7dvqAZRs;ntf3=>qz< zZ18g@s}~Wiyms|NIhTgCpWR(kRfBa&q~SQp8+ZH3CMZBQZT?+mF2~ivNaLR<G!@C1 z*0l`yj5w%d)y2nx%sU+v1j6EGxZi^gWxS-n{4$g7>sPeEgA%@SHej*YJjs~&a_c?h zplaH9?WhB9u0pfI&dwNXkj`?Zt_WGvH_5(K=#;lk=gpYvp^r`-JMW?mN|HqMZ#|%6 zG4r73;ap_tBl|%~0}<hl0<U`n7Uhn<7EQIstR0g?`0mcB1aU|4?d&sraHG-?hDcQ1 zpUKpJvMMT-mL2Vtst(!e5lOv5k5JkJn(jARl>1jwB<r&$l(RZiupCYCzP(m!q%lC> zLm&(g>C^w-iO*BE+6i9n)kZ=gU7|j)3sL{4>rWP&!>NbcAFIhVpLHjp?}U7nVe_l; zTNz;+L(KW!jpE0FF+cgpo^PMYcWXYxWu{+*9_;0LUngIPZr%}@h(HKHwmIknJ}`g- z%Di`D-<uCvSte!`UCHFTvosCU0Wvf@4cCb(H_41k{dwKYw=INN;TV?#$!enf#uo!( z4|x&3G4jo_!gX)rsJY)FGxGNcY`#Ixd!l@}6(%~Sx1(sGXx-)Un8yAq7QJs)An#A* zdmr$QNpgAsnBbbMS+K`i>^Ki*RryqoaBWWsFjLJmv;&I#`Yctz1Qsepw9bCw4wOJ> zeDyh||Gpq<I0sP|!EB-Oar3C?!@U4RGU%+gi8~v^t9om9MYogk3M0;FVxoBtHu@5r z&WH>HQ97hhp7IK@n{<95lJpgbcV2(`9!2QF3rP&*$CWiV9Ospt%zaGH%KB6N(0oH) zU$nmb(L|ImmGwf0PN%C5)6?s&c$R!WhlzT=Lp0td<A;PWhQ}1Av5!oo7`-?r84EfF z-@6#ukErfLJ6_C`oGfw>6fncsANL83%#4`%R!26({hyi@c-0;C76~@O>kMM?50V3N z29oA6l+sg(oxX!(u7Ir_!E(u~GH{^F7&F!V2aF*)7MAL;mvy6OF<<x{lmRg+u-#Vo z!uRRioZwH=G0%10>>|O{ZOa=nCW6X%4gT#zt`dZX!xF;VD@Y4WS8Ba$p$6xzl46fK z|5sW7B@!5vFZSr2`rGR~IW$GmGeaMrZiqH7is9(|OP5PGYnu2MYYVH=WpBt~FM4=l z8&8}HJj9m9C7CMc@>bmdA>B#5S+Df26SG~VfX(8o{(DW7w@`gd6IlJmk0->$Et5qo zRIZ5GK)353JA1Zoad`84b~d)cL{xbtl~PKDIP%(<DpG`(SGVf#@mU|C2YmMheUkzE z#ry=wP7?~VQ3nnK|9lFu+d|@GxB=)#x!Wi=`4R2@np4!303OGUai<WC!ypAuZH3t! zS<&Wb1Vg{5urMc0WZ1_N`4Y}C9o4Jj-}1^zGH$Y>nympK#VYn9E30b>0lPgnAL9Sg z%?MDwUG?`;Yql8`r>2Ej=Gp^Q2bx`^X<Fjgzeq_TwUB7V4x0|uyB8SLD`?8=jx>LQ zqg*4vEr^QX!fF7vuJN^KAbd$(xvQGsp8k1=iz;Xc@a<*wVsBF3bcnO9&1J16m(VV} zDAk?2ri_qbhY0;|5n;-{Q0?Wrz(2j%t~QA!Qz$uDz&|tLEv0cEH+J%lQH-im5<`uY z1keu!H>nBEA!I{dj^RL+Z_=u&(x-{iPlcyRcpJym{tuJ_0Cd)nsDmwlNg$W0&p!pc z{E9`uzpWY}ICb^$opA4kT5oUpoW5%6aN96XS1ky26D#}#oY*O*Dop9ERMA<Mt-Y)3 zqm9&qV1R{Fzt(QE55-g%8!9`yFS`%7{6au&8JddqSXvC1Amw94;%wl5XdDoY7yOAp z7*{_gQ_FxOpE1yh><X)WB*U5~<6QTcdfDdN3i=UmJr-Fe9(y1HnJ-Fb+tx!7HEas} zAKLyEUBtwWE`wtCCDjoaNJ1OySb_M2NV^gt1;5>`F@5<h$wCU&`kqyBj(~M@XMk&+ z1XmCZS>L`OPRhaQUFV%)?1DKecJgfmiAsjkQ^rLi8C3gd?EyDrJ<$|qv=4V_d4GSC z|M*C%k@4yYP;XJrdE}V;27Xfk5k_nBr_9n`-iBsUK#WGa3EdBSzJsD6{~^wkLK`6N zR(dxBZNpCs`<qly7KayqXLlGH6!Cn&$#Vx1J?1I;*19Ns0NRb7u0fU)k#u$t`hO26 z0>lMwmVFJd^EV<^eT<+U-l6w5=FR|N=_bz}jB@c@pIm9dJtqc57!kQc<x^AJuZ3wZ zOA&@hizDD*Lut5k7~G#cJ{6Ki9mHei2#d*+JBemSuxCzuXC~j|s6KpczsTGl$|K~h zWqk0N`H3ukuZlF{#e`rnx;xmSz?UqaC3Py^EyO=6LHk?_SEHh2IqLIAOZPfZAmDVO zKw83O4b^-;`{l)GrWwAp9x|ow_9KG(t=Ru~nc+{3m!Ro9M-rP`CJ|clg<^~~`AHzN zPKv8vn_I4#RDrVE)UTjmSyH*mFE3(Z7RW>yley~_47yr6DJcbw5!8gKX$7VOc9r^_ zSSPxbQrn{o%=(Zw3~NYrNrS>woYB#^HzaC>T1izo81@20n50}Aii-835xb*w6GBYW zF4jAtR*NYNrKGkSv&oi}OauJ2Jo<f47C-QJ<Xp)FD~+V3O;KXOy}!>$ZO<d)rD?Ih zqw~8JTNTq(eZ#50wx?_OOr^=kn=tGMyN$M{vLtON(J|(uc3TuYzw&B(vbJT|cj@>{ z&Vz}G0d-Yj+0hq5kK{MBO?`J$>Z@+D{z-3nK}7HteGl{zff#y%l*s)YCDN#wgL41p ztk#N-_{;R6p_|HlFoL^Uwk9rf1`aVdP8=#tb}>1W0B2gOl>9>`9eRi|`a<W%oYc>B zodjn=W3{{c6U=4wz4;KJhEVW6YS+3-pq&#CyQf|ASWpqZ`TkT5dNr!K8E?<3G?t_3 zSZyrpewyp_xDmR=dbo?PM2$@exp1$IS-m?`_^Bc8RQ-LGRWmVBuinF7J%iebnofk_ zE5*^K8iz!xcj1#-2-_EIHsW+5O;mUiywIB+dCs7_nH9`D7tr`Eoy<Y$X^FKn0I2k` z>5`t#x0&-J`~HsiAQjZq<O$=VLVNHd%B!VZTyXPTQ**}sBWb-h(F`UJ2Q89~p&?S) zwzNCgW7ji8U^gPuh``@4unMdpRT*6uvTvZA+Q9=ud-D1OeuF^yAA2!~@)^+}{R~>T zsy_K<E}ga%Nk-Cua%YE47VxRe4a3QK4ks9YwVn8qQ2BXKp}{N086>CBW|2V{s@O{~ z%#!?XD^!GfE2kuf*(KZZCLvUD(3)QQ;FF!H!}kK4LR{jxUc%IoHOt`iEU3|2>fCdT z<gAg7nt*5ZcZ)2LK>z4TafIlLf(VYN(B`)`#Lp|l%s#?>_qC_vsc|sUf|%ywPfrHC zUqSpR)5DVfa4xyafdIx58kTCFli<Z%$GC-E3mul9H%1uUP4!iCSq8)#hOA8n^F-hM z9I%7ZJ%X)kz?0IXT{g2#%AQu1yE945QSk!%dA(nJO(-v#8J?m?0nehT=mAecUrfw> zZq&*G9u0ZUtSJAUOQ|9?^}z_bdx>&5BLA8Q$9y3fa3-eP=gUewYA`i``MI)3ZI?o} zACRy*F6|eHf=M-|Z|4TCWlh|n6HAw?$)Bdl0=b+*J~=4y(24hGy(Jl{jgadaF%rwk z-OeJ7cVQg4bB~((+-COG=s?Gwe6MuPCeX+*_4h<d3pYW<#;x^<CDJQ#aDsWcDG!c= z%YX}%@F|Yf4nLwB^*7@d;f00e36uNqwnZ^V4ib?G1`1g>sydj5|I7B<_C(gzt;%hA z#|AZQaba2H0`)cgRJ76C-iX-#VttD3E<@A;jo#%7W-BNkj_2<p1)$e10{Z>l<+x^b zQ_)3xs(_0*E38GXs=fqa37dPBo{7BMnQ%b@^Bc&7FsZJZ>bS}PbFP|zTsn!?bi8(W zL+uMFdeU^Oy?KGnF2xlXLo^J0MEX8$WedMJ-MlJ-*PiYYQYIbSkNlAfT-cD$opc{h z)zgPL&<Nb!)q8Gc8uzzQt1Xj3_`0^CyW-1VuDLO2jH60YHs9-(qFzr406!uW8aliY zx|!hrszu0z?YUi+ez6>Nc(M84o>C0@-JOe)Rq0ETQH;MQF!-=Pa>EIsvfWzNNMT@9 zjiEPk?tU|&p%zB7n`wj3mld5ac#bg4xn~A`aFLWGzsHjdyx{2MH7{q#;ycy9-FCjT zu;57%b<;*%?xlY*B)T~q6Ibfje`iaW{f}DpfLWF3hOy1Ys{TuoRg#>*Gc^c5Q<5bE zKPSZp5{KX@|EwGNDsEskN<#HG@5sYs`j|}j7oKV2@3gfL2BBmdJ|H3^ys^EsB~Wl) z!I(&~20%VjhX7LKkJtU;Cziw0FC($n#^ZhP_W)=OX+j9d|Km#t>QaR=m52-AI=0So z-NHLabv;<yOUmF#Fs^B^4ER-<j{(zzgRfq%DC|K5!v2O@wc@X5jaVIx()bRckxmUu z?WD9Q6%mNlZ{UR6jhs6ZyfCSS<a2X?oRWc_lA$_vz-aL_su_}{sXy1jY45o5XG<w_ zjXV$_mbT_{so+Dv4tsg0@ls6?G3c7XQJ{3b-RQ9zmd8gsS%(z{_ZoDr*c8tJe|bcl zLNQ4=W``2>5<7xG^?v-&&DlKfKPxHbhJ~U$DVu}-mp##!aECikYs{SlPl%2P%33U9 zN;j}{T*U3K?{j#fa=WWJcMN@eOu3fQ=S9Pqmz%uU(Ui1E{~ryv0>@meh($+wM2bkb zUX>-d?z*MGoP$yC4WpU#Z&Zh<nlhYjKfHIoSrAMTdKKpA4||lb2Fk2(Zd_U2w{6UU zp?I9z+J`2e20*9bq*HDmxwyilS>NBzvloS{yR7lKuDngz(Em2*{)mq{xU?5<dNosJ z^q%V8eUy@^tbZ}*&<tw_NX0&-xcelf;wxr!8~vN0!fFf?hWt`F^$Xq-3NJ6WJf+EW zKl${Nr6BbSf6YfJIvJ5zU4tM7D&<3c1=}_ANugiRmybBh8k|vMP${1ZDfE^mHjcmF zo1%41mn%i|n!blsq*kb#7^zw)QYN+bvgEvv*CzAV<0P7J#na`Bs5$+)>UP!R=(F#Z z_bHc%D^X$~Xt2~bkurh+k|^ScpFU;DcQ`!G`z13`)^?;Z4o<qXt1DAAzsGffN4}`s ztUddySm8xDS7_kBs?+i)dQyZPLk1%xv?z+LC2dka0tGNpVpf-Ar6m0|kYi7vJiMJF z`=f-RA%WW}WS$ULa!%pTyYyFe_Jc>{VR?OJC3{i*Bxb8rMOkA6!NQdTS~a}|kiK_E zuVxezRMqVh1Z=gP6-ofVay(7X5D!Y<LF_+Uet15Xq}^iHfX?xTqCKb6b;gxEC3w-i zlgwsf3J-Wl1@~5(Zq$$rTt24O&6J#BA|+A)2T=C)eUr_T`P+z4bL<pS?aYC&ISmpF z*k9iKjlbG5JGA)76Bzi|2faVFcKOx(@2~@Wp91Akh842%M3?X#!ui}$rrT#2pN3{f zoDBQrR|9GdS)WlyO3N(b&QdQeZgBy^tbO{#3U7#xmyQ60@dxx=Drnbxwnin*?@c8F zV4Q<BU2o-%#+pc9jPS$3`dC{bld;Nzh9fOen|ENve>!}5DfK0AfphqV@Y84Olr_IU zy3nnd<`_ENh8M$Ggt|CE4FG_pq<FG*89ntmTRRS4Xcl2`x|w-t;>BG|_iuy^@>Kf? zL7+1H+taQY{0s40Qje_%+INeaTw0J;bqyJMC@M95kx}>%15oL9U`PC)W+_&WXmWBS z=|1fbV=rY=L{DuP;rBB?{K)0`-u7$;5uD#z*{fxzG8W-7mU!oVQr2*pvom*5va}&B zlxsRV@owC9>VkWArri^DbDgDn@k&@b<YHIb4Y7<{Iam`zswh=Q?`tN<2^J~!>hL-| z%iX__Zos;p0Jl5~?t1O(8mQPoYXbo<V2}TueQEifaw&U6Sk5%hzg4Q+p~N`(w1hjN zwn9x`Qrh@52_uR*@W5KU>w|P(o%gvS|I6xnYnx#}$*RV!+H@L|)xx%Vb07tb#9~~_ z%VN5JSr7j>2rLmOX`rqMbT4BACw;q}K5Bh~TS`)Y76z()JC1e?=;#oL*uMTZYwoKs zKK3~F+>#242*~L@03d{*nM^EYoeJjd{w(2coDfNm4otuaa0)N*v-rV?AGhVs)LK*t z8~hQ9Vlz_JTzQV2W!gUspuILjkI&Y#YR#Vs4ZMBW4WSi(p7{KUk*R2(EA+FfE_K!> ze7uX~Psejhr5=8&Mg)}WaCfQVbr7h0F`*<`{!DVp99Z+xd+|avw67!tp5A3Fp3g&1 za=9rTA3iE>^d+L;b4FdCD)Zr0M@Lb|6HYGRa=ByI%bK1Y#R<A|KXS|eOyWLB|0Ylc z1N9DJf2^iGvJZ?Sp5RvMLzk#v9c!Bn6Ez@f8L+Tn#3q8QVz6Jo{cY5LdhT1o_AB4+ zIG(T0f6$@Qq?L5P*h)M&YBpCKKQ3BM^dUQHjNi=i*uj@Au7XC`o<c6nE7@?z^y+;L zFTQ>zdX7n0vXwv|@uPAlE0YDLqd;|>rMKqh7&lkO@@u)0a9S}WvxxoYt}6<9X+|zv zO9m5KMz=o+Hwt<fmZVN<ky&<+P8`(2g7M0syoi5PcBkBOuXo|34at!s5WdZ%?ZPY0 zAVAiX&Ho7|kyY?Hno$7gpfB0gdn(_THaRx>dw|Hms7tpt7nP%WR#8#W!?B1~>D%vW zy^C`3$&qWFlybBY5#N6cH5LB@@?er<M19AH*c%tFSXtbHXV8~E4`b@V85RB_rgc9U zIPe(;g(I=RIoF<#t-MbY#JhFpz$35n_cRHgdP*J1q<Asktkr2M>1B>YbnM$Xdd+tX zH*&k{Gwyf_j&U199#XtkhEi^v22>v8xllJ6)NdC<87M|7N^SURnbK751SxOL{`(E0 z=kE<-y86i$BPo2xqP*^ccCRj81J~d|o-#TDX6767@t6JPZ|h6|3(WvX%~d-m_}j@U z8ioy*z@4Xf-=}SpWk9bg@UX(#<P~=H8Ui1-krmU&xn;+vmiy&zUcjRsK$>E3;AoLH z^}mP=PvUJ=;xS@aOjP5Ojb1dhi1)r%=JkF&gXg87G`PV;oEq)!d4*QsdC3}jKMQLq z0PC0@cRrR4+eDx)uh6Dhu^5EN)tuO`s>L}4zC-;mb(L{VN{1NierVo)=Nby6UFB$g zsXMDV{Dh!0mRki(BfiLz^9hI1-FRPHuR_%V1ZYrpaVy45UtWFYF!(EaSa_0~Mx1_! zFa7@5aq7t=XelD2zFsJ=r<hMMaZ;_D<W7(Ld@nvJMWpuTpYm@z3)l?5Wxz*?GoxG4 zGt$#i{>6%aJ${W$-4z#&+?d+~v~m}mC^drFzdC+|Y)1EHZ<m6wxiIf{*b>8~M+%RW z>zd|~di5kj{&nn7%!2ws*nI_lBn014P33m20}<2Lh|DYNt(2t-=*=-C3kjZme@K{3 zCswGC`0+%KPJCt#cm!xXXIi_yl#U^mnluyIIye{C_6?s!+}k5EYu3Wv+=tqua|WLJ zH{Sa28o-rvu4O~+s(dd`e4n?yKA}&2M<l(hdS0fh4?gJ>Ki8y#|5PqLS$v=5F48zj z3g;}M8C&pFd3<Ku&jVE;^&A#82MGIY3>o}YX)oW{w_AifV&n%1j+qvMyPrcf{Us}m z>L#!9#K~-e#nSt!II92q`+k}mnBI$4bnmsT0e7GN>&z3v{;ye51BDM8Qq)xSwNuy$ zKGau}*uv;lK$;msHuEK1^mDl!XLO8(u)gfR99qN)mHDzotpEQ6b}$Ew3}iDVp+N?^ z<qMo!)_kjJp!xMsq}c5)6=-&L$?<joG9G(XSC$QoD`+~gt<?{<0!;MRlew$6IutuP zX7nz|Me--mUplb37HE#D6AA_rycexc!{JKz=cXg*a!?&KCy>OJX(mb~E3q-s4CO|q z*;Q~PVBVPT@DY8Khw_F!!fJ)*yXX1As`z}Y`F41zslg}JDFoT3$xLdAJDA9KT(xWF z@z1U|nPFU4^)91%t}u5sEJ8Ew%q}Ha1F{Zi($1{5tB51goa;8_fl79;{%&AV4;zt) z=go}iL&>o7;(wVU`tl`t=^w_DldJAq1GvV);#1@msalxDqS-MO2cywZiSP4F9ZRbE z@9^Sy2{bA60_s!BNgh$Jxe^c^rik!89AQ`%I~L`ZWIrJXHF!I*tP~EyQe(1xzqIpC zybj>9Y_s)f@l6{3yz8Q~L@Zy$JWvoR?dsEld6h{^{VX~uDdYCNUaFUNuuT&3>Qv#o zmdx?$2`Apow(cHSFZKMyIQ7D2B!cHGzC86JZ4=cFpY<DQFH3%#Dz7*ggzyr>)(>D& zK{dT7wBODSA}K(g8e=tpOQ7a1BR_cCKAHFmYo;(9o4kfQSrs?ZXyj%R^5@3I7W@Sg z_D!`^{R1pi6c$N8?x(@EOiIz<fwV58hHDYqi2Ki*zR9j~Q^YC90~wd6`$v!SZe#ij zkjX#Yk>y_&z$mhtiP7g?M+7V1yj|~wp!NZ|;4=SZ9sTP)AsDk`6-c{eA*>g2)O9kQ zwh9{wbtR^fC`La}&YL`IW9eAvW#tC^r{K7Pfj##)-tD1`SUEb_rWCfPS9MJIK5D?> zs_Jg~;$ZsscbCgWEs3jZ%i{2X9L{#V73tk9z(pQX6N0Lvn>)^1tGYm<FNp+GyL*2G zDN-y%FBE4HrxkkAxp~Dh|7Q!;!r!<WZoUKbKn<VJP!t;xm`~KlZy<6Ad-{$slm98K zk@`}f=+APP*B+05s&zumXuTe<tRuZYaS$1y$kDFZRYkmcl8<`5T2k>*Sz~j+OTi^9 z-%~T7%jr<3Njr**uNU3aaYu_(%f0{pI~t+ke)s7(DwFhagn4|CrqK$osCflf?!z)( zn@Q{I7H?o*xiYibmtT<y^$SYe7K;w!KimGRz!-a<?`BjnvmyM;-fw=9UK;y_{u@OM z-kZ5qj6_e&%RaA7v(Zig=3*~kG;F$1&Tr2!&@K%S1@RE+Mwq`H<j_;#Dqq;9KV1w2 zdu%#;0rRY;*}x3IsjRqEBXr%=gm8)MrF*GNE=ZEd`*%7-ruWK$Bg#3p*oK-jiyxI# zp-S9dx4KZf9sjHk(V3joRk#3hG=YiwYs^ICeNE=r)D^!f{Xjs<A#nU>NR1rqyNq3U zilrsJWr1p8n9aNgSEJ1z>77C-HWF}(asZlK+lzCxoj%{DQVVXWwn?t2Ner!H3{2td zo6lR~jdvZkpFwKd`?U`Uh)W5P<~uM-rd@_j2RP$`+vZPzC?u2&nxuyt8w!pA?M zYUvxkSzq{MdZnm4*_V^b5Rw>4Jn?T;P^98uqIc9h_jPp$je~qiYJVk@^lJGbW0I@r zM)ZCV{pUZ@h}0Xh8u_b#ye5Kd{Y`bjQ}#uqd~*IlGg>5WEqCu;(Y!@oAFfRH%0LF6 zBh_dmpv#FZuxALJ%_=Ok<#WE@o~hPbVyT&z3!ax7SH1kV3O+~P!x~48*=irEVM`pD z(IUwucyU(96@$vXl@^*JJ=%jeNB{C=0-CN$_H~i+;Gy7sq_p3)lvlRObMk1*RXrhG zl0!%O_8G~nmdQhLryF<}W=@sGcGG#h>h)L_kSA2YxbcKAC4ZRa^snH;<9{EZ#;`&U z>;sM*oO%h1@~h3kJ=eLJMnQ-?ms;)p<Q4rv`6FLlc^Q)H?@`11uUF0)Y6g@dIMMwO zbcNw9-fG_tfnKKx!$PZo4=!h75SaD$Nxa<7VXtP0(oRC_VfT@bH`)<}0VJeAL8L+= zb;>=P4gA<Xkiipxb1+eYr4Nc5En?l{KaW7}_{L3E&jU}z{AwX%hJvrDU>|E&hYqxu zJ<Kz^Jr!6?SgsP?jW|E6>TU^vxNXy8Ay%$H%sD@vKD2LTsCxFaZP|P{{;a=AiWoeL zuNTm(HDwJX_JxOD3Nor@#mS0@^Zb%}SxS0gV&=J?TEOZ8n$PN{Z1XYqMJioiTvDBR zg!~$KIOfuBB-A=g&TAV0I_(||D`>XHP8PgCa?gbA=7rfg>A?(c6@1l5WlOCLE6q-2 zP6Ih0;uZ$%&3-V}73?hEgW>B0sBa`ncu&waik*BfZR&-}0-O<>%1~Uk^BLslc^-z7 zbNb#*_iKf%lp6s_qB@Iigz_&3i8PIn&v4ahS#i2Fn=hX+7J{+aPdRH3#w?Q@v~zyb z+tM0IYdqTE1z%U%x{L+kQ3iBcI@O1g9usZp7QekiDBUs{MBU3!7Dr54&QDMNFbLJr zlx^#;daE^O`$uuCuAwN!GF<rTzc<kj0lFr@umP>FrtrTCdXiq8$D$$LxdTK~3bXU4 zSVajm{d1!&tx~oE`BqHYGax}v$L!*&r+JXw$FyPLl_xbr{gLG;w)l8UV4d=%alX!; zKAKXF3{?4$Rv4~Z!&aDilB6=y;8Gl0i+@(huELC-cfBJMd1O>3{8NZgSiEp-%$m7> z&X#rLA;wzd7lg6UBQ5%x3%Q_~NxRHr)Z5pt!hGfX@P!e}pfJ(epxVC5{<7h)yp>p3 zt<wZ~C3zb@QC>jw+keK`hJv!ukkin1eh2-Zb)4Fg&n>+8N8i2~^px^7jQ%Zo4J6#Z zPqAvQXYaomkrIDaO5R}H3emMXkg@)Oa;>(2Hw?b&tDZwJ{F?h65cFn=f+TeM!y)xz ziknoJ-E4Cp2KvH)$P|oXs##<mxVz>#zG0NzRA(O^giD3%NN9K5KV?FwfHdNa7IP{s z`g`e_*hp1+(E`i2ZtBg;8^@K)wPO|&+6`5oXT`>n>BKlw3kr}2dP0JFb<vp@izIyL zBc&_a!xzL8v4`z9C4v7gelJ5Ldv(Aw_h^%$!l;+VnIqc!wFZdo>D4xy$57Ct*W=$T zI9+nGQSr4r)1$3a^lsP&u73!@rYJ_EmDwM3N87-P<K9*>z)KZ@y*w<W+~Gq>;JI{8 z2sOz~+vj?v{_E$b^swB?g(8T{2<e*3=x*RgpIaiz^{3P$zu54O?pKTL2mQqbC=c<W zCRN@iX=164{HcUeSDm5gOb2|p&*=t~DX-nbHrBcOkp)B1<MzTHr!Yr1xQ>42x`R0g zei+jg1XudUP4#;OywjBRzmeQ|DG~DdG59`x3+D*XjKGG1mr}qQD5fL<e|@m^DRj&3 z;xuvWMN11cHDWbP&oc4$i@SlYw~PyQq6KJUYNgEByc%`>^ws6=+*D>pEJYeIXHGr+ zh_$G1xm4vxZa*aMHkV9m_^4x~9&Si`5oXY&As0R4=r);`MH+AY!r%YpZFq3UwOadQ zzl_GVO)HS{UTg}R2`zcdT#vbw5@Hi@?`99xdM&+nVb;Fz{q9Z4izflZNT0N6gzhJs z^#ZJ+0m8+H*wD}Nr0;(w>?@HTZpHq_-QAPmCHf+Si`%@0>7_TH%<a}^>Tz%F(dEXx z_)qPrU|@#w{Qb}|HP;{eaCe<J6JUIgW7qu<K#r7kEc0bSQch9=|H92>&pDn+_@H?f zp6|(bdEIolopT7exh`{KVc_}_`7Pe!v0urSa2j*{iN*UqY1eh+#NBSIMbJ9Q#0wl& z>MY#P_rlX14tW_OnepAs#u{>@8!UYM6DPcjf=W;c@>q}ee=@{6YXHPX(NscDQ5(-; z?S20D>M30wm1Gn|YPr=g-R&k=_RbHH5CTy=y6CW9?$^GZUh-^4+}S+wU@VJjW~tJ? zmms$3%Z-2;zfI8?2#$0|ORtPFg)QPOP_=cQ?^k)H!=qK<bj!)-R(D@ds!;Ny?*tvH ze+)r>A`mYO+NGxEr-XRaU#~H+IZ!0!062bQ_b_%5dnifZ<Lca%d<}8b_|e+p%~naP zx)0CCTfay4M&D&uf(*z$0VmIH%#Vt(i`>|-%)|FBj6N-LN=8NX58gy$Am<RVk#t;r z+8WB<&GWpBSM}89gdnDu1LVRVkYZzSS>C4KQ*gXgD)B?hz{>XyH$^QFM@4kq<_|U& z#oaaRp?^Q7=2i%1EpdKYbSA&dDKXFK@9;nfR6Rvr0p@7+dd^+VHXZJ)kwD4VwO9cH zuR$si#K)v1_lT<|`<eSnG-J-p{zC|N9WLnQomGVR8R&Nb=P05MN+$z79pn@~4RpOJ zfwn~htcFj7^YPdw`f9%U)%YnD0(3W3T;zTRU)Ii25Qcx8&8HrW?I!wQYo8cB0JsZP zntAFi?IdJPHxHRUg_=MgjV1ghgFLPZpk#yA5ZIk2?;~0B&;*vt854v}^dg9D9IZ9* zR&=dN4fQw=J>YTaBl7;3>`s=i@l|a&03)5(f2{>Jy*SqKV=T}g<qT&l<UQRww;R#Z zMY8OIHgu2Je7ebcD~D-NuX}HI^fjO|>><tnJLhkm>n89zdw%EmNT1h>u-OWQ@MY~P z`-)1Rq;&EU?m#gDsA=YYt){)Qf9}P7S(B4;nfy<+-_@RJXIV+DH+lDaboE>ju0`@U zDM5k>@#Vc>8Jz_9vSg?4_tQj@q4eIpe>xRBl{lFjjO(d?c6h>~9a_bm(I!n%|F`ze z3tKK{lPm5NHJBe|a@5h4MNY%QK{rs*>JV&H$%)=`TD@bX;_>x-=oL7r{kDxio_$LI zoXm>exjRYB$WgQ)w-Vb`5Q`erl|9PG-D-+WJw3?E@*pQX&f_!SPyXVgK)~~r@Z*1c zoFY!H<42EV$OeJ$wERb{^HiErBjDq~W{lAh<Dmq3J8Wv>O2U#eG5Xi)<dc9o(}81+ z1BDCT49r+yfX+(V55?g~;p$xVJq%TTL#&C>%(?mU98GkMcl+bNfR?sRnLz)mRfZCx zO-vS$B@92u1!;#MBX5t8yqA?Hd$1>Sw}gg`i=yLf2CJjVDaydpt;@YBCq-y^uaJ1< zY)ku`J~#E%1dbaj6Z%4w|KpjTk=t36jxCOeG^*iPZwz8tDmjb3m$$<AiV`&u>3{D@ z*A{ksUjm4;&qpEKrh&z~V+0nU>*SGN#9cggaCvc8*j?-S#D$&9@;1pv?1@t=7Mi_{ z?1si;UrK1M;1q7C@DH93pKfWqV+I#Yk%2KX*?#9e3=g=1-WqhkB}wn=dkWWcNzYW2 zK3wuC_mjoLRdaf+jcg0q$2O++TNo~5Gx+UNu3MoY*@0AKxtNpRiJ6g?wo<ZmCn<by z4H(0d6rA^ko|jMH85C$(TC;MbDcoB=c=3|r1ujq_YWfZDt5WRp|7zXO*IDxFpDm>@ z$$S<u$P0Y;1U@l+T6!u4MBwIiV)?l+B!4MLkQ2sOMa<6y%^*rbL@<rBE-U56`1%T= zy9L604Xuj{QOB%V6s=NC_x46y|GNJ9eaiW1;VO6_7j~eQ;+GSPJx8&-UBNj7kffcN z9w4u4U;h)!>MZ=huc+>IWXsxrSl#@yY_<FJ;42fV|LD`8D5NbbmYoI)qfvCkbNUF5 zLClB$uAd)5eQJpqp<~wNxIf^016xRWm8}(Kq3c8piXXv9k0<@%Gf31b)z=Iw2vk`7 z&)9L+<y7Oc)>gfjbJD=V4i=j1tLQtSP`UA)ftyY6m@()FF)^|EU<{e?V~Um$NG5ie zB}eK{-V?t&PN}$^Hy=B`emKq0*WDCcnHr{T3UULSS^cWPdCqQJx)5wqf2<aa=TDNF zWu5J{-CC@nqDsa4H3*@ITM0e9V@h})72u7ZalXC*!|8WSxGTM;>{{qhx2wtaFgCRN zn(DMl@@oSWWlcmk4yn`ElyP#_J2)a<tPnTrfMjbMO=S1D!=%RSOssTy^qnsJj?_(= zcx;PMsz!ueDb0r^(uAg$|7(EZHL2*bWp%}JCi0YQ#f{Z3mwo5O6Z4#P9tthg^;nvh z(Mc{u*Y4u(Q(V?C+E>6bCI{S^8969=6BJS!R}E}ixX)LAWAZh3QX|(z5U%w?d%plA zKtc3`>i@jz{JdSfWOcOJPT8{d$PS`>ty6p=ySR6%Brjg|eYWVcG0LFH;Mu=$6|A<+ z{GqTJ7(P{U84Vz(TvR@?sQ5>SU>yYi-C|Sm%K_h@myL07oco^#3}H$I9#rT(ULOzR z8Ko1Ys0O|tIjeE?*m-RGG-!HNl<<599#(3&Twb1NQ+D82rRx?V1%yan_OwsASe7WA zem;QPa($e?mO^Vm=$1XnkqmPD*~%@N*p5;9Tc_$_@SGT_7w98~s?!4S1%wMY=MA~B zqUYDZ@xc>kL7&qU-q^<9z-I__3OD+cK(Jx2)XjY#h#Zr}?fy$+k}A&_lSFSloMQz} zyk#7tcI#jz`Bqxj|A&RU%pQvO&Af8X6C<^bEp0C8Q{QrM-BWQgJJ<w=Y(!*R8()M? zYl{8ljt;Gtckjn3c{FtkIQHGim{$Qrzu*`X6uaZ>`cf=hVZm5})r}Uc<3Ll`;brv3 zb|v6SU-X!)$fLEW9hUi^2M1fa@l@N;DSdkrM)@-`Ia7!dAr6GNOWL7ltf9_&4Z`EP zVb>4Bm`jcCIpSzJlJaea4WunBi1}!+wDL}47t=+^@G(69v<Xp1HYTRffW%&Crb%^O zaYf5~VHnq#rXn#{UkOJbOE{x(qX`z1r@_QcLR<OaCR#YgmZJ%;U+e(dBfezu{^WUn zo4xMc-!VUjM~*D9nXah+KMR195e@g+gh+aC6|;)dn@dsY*~E<qCvLp=dnt>a#R?#V zfF(YB>ywz+YU(DkrOV5XtyHo9?3_cqQj0toS7qfp+x@KFr&+*03<M5+>8k?$Iz6x> zGZDSwu{`&Sy*lNv0OmXURj1H7rP_`pxX-+d3l%`s+IKK4YcgW%oc$vd@|{SVZv$SP zobP^9mU~^{Z7#=0N(!*h`~l|qvu9q@lYc9GGfF$xXC#1N`E!(Ii$i%SU~;w|VJpHT zCA{5>-uinza?j#0Dk^&1rFei~WoI0ff86u#OAeiDkCqvwQL&YYf}BBDu{FRsjb*Uu z{%Zu8CYelB-bILX>h_M!KqS!l?d#)NqW~@tf>G{s$Gl}1t){Qjc4g~Hn#C{7HfXY2 z#>o0hq$yeD7~cUTTh8<T?sWHKz$jIm{AS3#i91#(GLprpXM92Ng+NR=j$73Q-CIW! z7Sqyo$W6!A9pjc3HHO${vSv%)vDEcqE4r2G_{k)7B-o<>-W9nKdhQ?_g4)S4T-D@| zP4XX(c~xc2ckBqu;m}W2Y&Z<0u4k$m{>RJ3+HgIPG8(!7v2@9(h;KwvKHxd?E7LJB z`fFF~W0gsoezq5FFLXr5ekJkKt%P>9q9Y?A`IgQmSu1VB<;1wY7GH;me}^Q6R)7sf zMeICC;=w-r)<890+qKH6%Z;Mo%=<Te7ZG8loPt6mSt~w%YgSB{xMAj?IeJSWU@>b3 zb2S`_{K(|1E>R|!gSiKJC%eW#zAW$zsc#yq%`)`ppUKG1NsPUv=dBjGYJ<1L!ZjM- zunD@vqm2YZvE~<@2$1Nz8I1@C{HNCwXVY%u@hkP(g06+Bhz9nD%YMf1{Y-<8)_JUG zv;Q9dWM_#zs_7-Ydf)@}>WG5twEEK=up18OR5)C`B_D6?`}7m*K_RS(;#hnOJnQ%o zA^!MrhKX^bX+N(>lN+AMo<=3V5kD)mx(IJkfurpL%4d6^tCqnY;l{-X%p(XR0+&J% ztID8BioE51shSebNe;QIR;3d>OWUx3!44<ZTMkNRUw0sQ7YNN1bR|{|=d}##O^hN? zH#qB=LKd`a<33|Fk|=2yd0=<kRfIXX!o2ZMKUDXHHvp4ZDr!$V!W~SVGrDs^n|{#! z>4lt1y!NVg5XUvQn9gTiT%DeI?ab6fU#|ZQZ?|d1MV2(!ski<l7`(aFCN2Zrci3<h z+6u*+t84DWkOl={;9`4YC+ci&N%c)Uc|SP5s2?eQ<jVFgn@<*HTo00VrV1Gu!-SfI z?r%!Qc7+BjlwS%v`C0=#A4zcgY`^xqEx3<`i$83gG0j}0bzC0od6Hh4Uf4V$x*uQ} z_S1AWfv1_!XynM!JPN8RlKhs)ptii(h<#I8C&+)#Ht;;C+-9KOe1zx5N%DK2L)Y7` zUE37bk-^_-h<6)+ZIp3K58afirdQH=ZE-I6cock?4xqb!RPx^XU3z(36v=GdgoP<7 zL1!oac;4JsD9e5uhy<vjjz4^Q7&x2i44)OD-bP}h<EqJt%mx_SdRnz<q@Ij@T~85# z_vU1PuPB;zSeRm?4$Ln1pY>Y{0(~ZfGm08c<{o+mg!c3v>7bNT0m3!yaE@<pH@mOP z9u?}mcVZ^bmuVsvA*Sa8-+mga$6fcDk9QRPERJ&oSLy_?lvERuK2FVbjW~b3Pk00U zZHZ*k3d8Ay?h{sKUA8Z@>COnk_U7V=Qs-%TN&M09T3xoh^fY^MDm>nph!$r)Hq>AB z`4efsqz6H+U&?xUybNK?#)Z#;+$Q)OvL>R5vU#ykHL{Q9eIs%r`zG;q&>6U>|EF%k z9IHZ`u-og<sn>N%z|1WQuX&sQ=Jl1)xc4FY?THr&s)|W89`3CmB?gho)XgPR(@F5? zD3SO6CldC;-S87VMrYc^7`-%r=igCE@X6Y}=KZ+y9pvAIjfPd?rZH%o$Dk8oJG--| zz--(_hzSsxvzb}3ee@F^i_weO?538jBp<ua$9gP(M|W{*wjY0~e(|P{q@&jx%JIi8 zW+TufLOniTo%TAuYsPX|bTq-NMm+QlZg<qMomv>T=F!g<o=MAybd5)rG1~veI<MV1 zBs02tM<G&f>KdLfH^vh~=iI4suGWQd^=<+{@+ROb%i!y|d~_z=U-Wo+9?c~_DB$}M z-aEq*yjQ32jEsK9d9e53);YUuhOw*e-?*X@2fQ}=kF0Lb{1^nCXrikc*9(h^a$_fZ z{MaR41e*AotTUGfm?_|Ajm<NW-E#(c%2v7*388WondO2$0$$ckV_5gn!re{wShd3) z=AOJfckSd7uscA;8__25gVNG+<|}KVdgAt2xnecajc`cUfzOK`5ZijK@US=FnNljA z?ZV1jHDR@=-rju?V^tv{BMfk|dt1iNTb=qh$U@n<*TB=fM-w?i7G<VL1aX=d*#u~C z<f6;KYOV=H;eWO7BEBBgWTD2AvZz@_#9k^h<OUD$#k{^uiTyfao+pc;%|G~zd&*qI zjOEjL<wHa?Dym?D?4Y1L2t{-awGR#m@FGsEnibVp$xp7s>(iWUSWIW&6`d4w%|S<1 zK}sFbm!s)a6Qhh{p1Jc55T|T52R0{@bPv~bZ@vx><P}D5eq!e-e8T3F<VmX?0a`(A z_cb&4N~YEP9uf~7I@G)E_S3cOjQtsAGY#X`$ruOu>4<5Ptc}l-y~vEs@T#MxiN9w- zTxO?`-X#U5ped^y#_07<V86?p#J16n|550FlNd+ho6)loi6hx?DrIL7(nllR0tV{% zQbCMNck*OkzURkxN2!@mM&&V0eBqgD#Hi>JH~LX4VNBUVG(K4!YOsdWTu_fRz%anf zaoFZ?O42A$m_4kKe{1mu>2WB_)c7dxmV6k2sDg9V0bldfDuP#<+!HfT2YC%_%TW;= zFfcs>cGJx@bWFyC7!v1!6gf@L$H4b?Wh18Ki*EK3Kr=B9L?J>ZGCVcb!dLgr<SAPE zr^IRjvTo-2MhV@D;N0R<M;bg;vx8=(*)|^MgQ)3+pkINiC_^`4=O=h1K@8B#<Vi~m z<q6CU$0L&$OYLs5AE7?(Q?1Y@3-m(}qyTIX-{CE22(5_IUR8X{QcrCraTPsmE9Vl^ zjQZ2AEW*Qvh-H?UxH^&CW<uX&-m{RByy1?HFN(I4n)jsN^M*FV3$ykOo;qQ^yOQT$ zf0b=>4Vp2=b6;P@fB3uPI53nUB<V+hGraTXQ!u~@y%w?HH7)<k1F!RbP0on#<Gbv> zi>+gOl4v}|0X(6N;2Ru=Q1%J8zw+N(asvL)6^WDVXtd?JM;5?+ThC$o(A&6VA9x~= z<UgP1yPi^NH!*QZdzY()U(Rb(NB(&)NuyiW3&)8Ut|y5q;(DWwj5sf=(cYOi(^6Vw z?buVXJ5>ARmHgsJy1amET*x!Cq+Tx*MZX@0`89<axptR?&q|>GSLi>k%bI6FJ*w$l zbS&Yfs=n9SB9*uy$9T^=)^aH@7A*1bE6Y3=#Lr!aS)6l>pD{2@?A#)EJapO`Dz!FW z75Q+U#Ps#BFrQH~CBmomtQ$#E(O3cx)ai!aqN%=U3}fQo-X7j`mlhz3;mK_~(Q%6C zaly@(u4wcZ-BXQWqx#{FV>i$jN5<kKlyiCcajm5T_rld*xFLh<>d0;IY~~4^Z5WPT zqLX_*U~$>&NB~tVlAsz=P+4=x*sdL+NpF$goZ`+sTVam{5#3N?1a=;omT62JbEXcu zS7yWGIXr3dr7y1xbuHAYqHac$=FYV{zXT_P1heIDKC`4|-_=7EJ#Tc!E>GK@3!P{| z_~biB(W=0>V<}PrTh3j+x*5RXc2eVRw_BgY9YIr%xqt~ZB>nH~;~h0e6t&H}jP~bX zs84Ue(Q;1dB%YedA%T$ufgE(qHRJq-;Y!W7m^!fb9_8N0lHEzH(G?4>OzCl_<h|@2 z87{U96qm4bY=lYEP~lH4xK+a%61NrPA#q0ee|c3OXuplcjh)qVxh{28WM(|>UnIqo z><l`okbY+Pw!id6D%k%)puKZY60DShaPmKprPLcE8DSB=EEns!X*rhi9uOinEWR%2 z$U(Mm`S+yOvn{ml$Qwef58SP}BT1$K4t3H$hx9%*mJo<j2YQWuUVP9{S!V&aJ?DM* zV?o>R1;q@pFLUfifEUH$w+Q^u^ZVuqT(Mg^ZjD32mGkbmPQFs|KT5yNau=|++D+bm zup7oLY>|*{4OLEK`%2%>6%l(twlmal{mixTlh^+~#LuOOk(4xdDKgxU@1mE>Ak!G% zQ9CSJ%2-swa9!_URGqWV+{b7L*8k<!BWhIKYTs3izl$P}D@&)qwN7dr9kNsA!6=Zi z;X>)bCz<^$uDaa9GArV0lxajAzIo68B&h38<3mPwm{f-T(do>~8>%0e^6?@75!8TV zb2^elYJ}lIH13`BhMn$0wlr)NL+Za6>v)s6dD79MS^O|Ztun8N3&-DsmTtFNM%fOB z4S)z2vo~;nJ1qOBY_KhS#$#ap&@yA&juNiehE$QU+8J4SeRGqTst~p@If<phAJ#v@ zEQM;=;!P$Cxn%5aeNa$_U1FwGa(yyT6|Ar4YeUJ6X7c@J_@Mqi$)AC!ALqr3-E5F< zsKuO%@5&cRN@(EbFX~kcTi|;{hX33@=3RwrLb_-s6zz{3RWG+p()ciMI?(Yt!>-OU zA9C7jOPu4Ie2%xTJ3*;~->?3#^}KJ8vl%a+zvg(wz+a&Rg8CD;dmU~y{$?8$Hc<Cx zR9?npU1%a{-X@kXUAAeNvPZd)#4#N%O$(9ot*a+JAYX?}J5a{*XTt`cdqZ2S1;!$W zVUUJ1II4w;G@|YT9DKcl&u3#>9KlBpJk)~14VemU9i4<Sva-Uk`Eyg#(lT9jMCMsP zYgCO+kZe3|MZF&e07IMd$iI7<J97B$xPL@^h%dLJtf|nvWwyh30^uqA0+YHXu=k6* z(Z2T*T4sJ^-{uHQQf|WeG{u=!HGU^U14DunsQlkP#AgJ-E#xzzg0m+lRsc%;zc{`- z!&|ky*MifI!E>?F8<Bb4owDUe^Dzpg4u8LG!REsT>>p(2hIPzgDYnu2Rf<n8o&RAj z$Q;hZcwgA@&nOXs1<7sQW;%&2x&~WOU5HAsv&}!g<tp^1Ihe?dJ)SGI7;IeDtF1*! zQ+92$D~#a@NXXu55pSQi$)FbLN1k~kvb7p9XV2SqGh4E0-8d3<HqSi1LVBW787H2M z=BH}U3HIBe-?$?Vw5B|;qZMt$AOK|S?N>^00%T5_jr<W|>Zoz;PqMNl7Sp@CB)<Do ze|XZ3t(Ysg-{AWHxk=RnRv@BSytgm%#NP9c^Uu-0=32XV4-LgwBy(ocuxA1&=1SBo zeyR-Q=(}sE+jFIVK4@zl&sMB!|27Qk9B2kV{)mL?_0WIke%fxQ^KNa8o@C=YO$9-9 z>SyzYOj}8)j{PE6-P~TcUe-#5&K*bOuMuv9B_!={d#SG&BX3`(!fRyxrV8{_z_Bi; z0}>hY``^anqf<z?zYYDhY+pF<ui$Y&9Xm{Qd>oo;BeL=b>}HwFG$f~h2bKh447t0& zxY^?I91vW(6*v$#?cF{m;}!v~+)-Bc%tSW8L!B(#EYUKM$XTz`3!$$=qP0kun;8K& zz9EgY70(c9IwAAzVPoFvxxS6Rrbe>_0=cRamOEyj)dK&@-d)hS2AdXlV$p>ehYp&E zh64y<4VjfM)69d1((|Y7l&J(~DiHUr*C{xt)r@eD+s=O%v}DNKE-yc9&Qs*JJ$)YB z+24;g`H=)>-_|2_wEobkPq?ePb$D(a=4d@|acXJ9gFPmAkRVi|uc?*8#`7ei#d(P4 zN+x@L3=n+-25lSHH0YOK8Ttlq=awJG2aEgYYnxz!QCe<TWn@M){~rLJKw-Zu=Tb-G zKZX0!->-kY(?87m9y!#Lg9c0hGto#q!3e7F_5MsJw-6mYkgKtj0dCRxx1-u_20za( z$aYy$m9eRu^I`k=J?Iu_`R9`#N1mc7zUvot{<A0lv~}u;cbRuX;+H=QjYum383`@J zdRx897s28rZj>_hZm|?G3%ea``+qXOU*P0s`{2%@-(mr`<=GtmU#@@UmJ`t)bk+a0 zcl1GPGb$^{&qF<Q=W0y7E3Xr0EU`S6ES!W90wK?gN~~VF%pT3~W>0K$<~_v8VkYI! z^?4DS;C7``QiUnH)@#@xNabZciDDGX<${ypGzjQf64h@lE3@Jgc9kaI1<LRk<N*Jl zxc)`YqCZ(yL}L*e24oy4E3KpftHf4frE<%H+}vCmE5xYV&k3);nx~?00~Y@<3Ew?2 z5ThP`4y$L*wlkVi(~}X;bCTk<%8CD4LB-7kN!_G!W|${HF+(2bt1NtrlUyLtJHrfd zu#ifwchCOgj89B2KdS>i=}!P;#8G90W#}R7xGG_l4A7gRC>`&-$nYkdGHRKp;t{tm z!o-X6S2@YjrrTE0P-Z0%9!-WSJ=16fjYTpa;-p{5;JUlvb<v4KIbn1nl0hnt1vGhR zTNLUjEH4j+Nhw)&f|t`|z503+hP*SX)tT<X$%RmKZpE7E1d7i;)pCS*;u4a$GA<oy z8CjV6{UjQ+Uc!h$pKxXBd{kCc*kq+vYB9-nbIM0rS~}|RBLrp~8)#fDE7i&@=1E&1 zvN}}nl7D&*<ewVbsL<M1Z4t=-p#KZ{f5|b&3+{=M&E#I7f2lhP^iS)t*{4v$P=8{* zjq1fc1p0R{{s_ij)VZWjP`!{|C@vA#m`)pvKdmkT{WH)%e=q%;J<~4j^nLqI=_KUH z&608^-b~y@->b7MFGY+MhDxddzf0qkOh1mrbh8eMU=t8pcp^Miy*i_<7Vgl+;x`<Y zAFg8HiypZo#jO-Df1q!-R_JT~o`*#uZsHOw9X;#Bwe$0U7=AYkq;NT1E3shQS9ovm zvv}d2H!;rlj%I|hTx6>vmCenN@J?hdntN7<X&}=Zpc7Xm44$EcOR-85(MfLgiB^w< zc)nMYbmh>w*z#xRafO8f2x@me_;GR$I*rD$hiuEMi5CsQtP9(4;yr}*qh7;97C(fu zXqeHoff9!jY4sss>$Kjz46Wa_oO*@vpB0xAD9n@1vk;Cek@9Fke6MzuJlNYDBUhcZ zSM}kziY#1y`GsF86L{b*69`ntM)}_P6wb%N)s@Ce)|KsV$XkMC&BO0znq2*ta}vbX z#yQwlE<(@SeLtf9!tgI$QRM0l4RPWvr{nswUT2I59vCzZ7x(SNGA_l?`=7Ho;mEnT z@=zK-=%V#+Z*1P)O^|On_rQ7nmNk_|^9`ynCUn_leI%qt>#W1>^&oSi<y7%pVVREc zjhHMIy<LFt#~uRM?SPhqMNju{*vnYA(R><6r;G@KeSt1$#O3DMTpewUUs>6d{;e3M z<Oq@YvJLriWBgKrEK3BEWD1e+Cn7;Bc$kTBWN$P}Cvz)9uH@13i>3`XLmG1O&$6Lt zQO88|l)t-r?N4uk(|n;H>W7EpoxxVQs64wZ>N67?(_hW<SM#4>^z9xaLkzLQE=<Cz z(+Av>-R$D$PwnQ@pT!E5VbRzT82Z+;7<l)a7#mIE;_1~V8CU-fwop{{IsmPCY?x~s zVHOqzD3y!n*>4%b8m~ofMh^4*wdVOg9HxnupAamq;&Bo)rdSS#(x_(S+*R%8qqS#y zSKj>?itD1-RWJ#x>iEvgJCO;n@C%4!NeuoJ|CvcN$-6QAt4!L8>%dE2z@hh_<PISZ zO~&n~9SW|i#A$cDj=x`WESe@Nrm#EO7Op60$sNL$pXJ|+6U`GRYbk(THeD=Uxq7U5 zM_xzs$D`3#l`<9Ki?00o_~LF{`vq{>g%??vX1EQjiYXkVOB)Q>z8msmLjJqzaQW0# zaKp@)_|zGs2#3!?qpTbMD&wMal|x|!BG_i&R-G~^!2jp2e>YL1)hv!a+-fYIuUKAY z+qlKY#UqbfPic!c=N#2|FTd?3A|<7UIN&ug%(tIMe2ZBhen}%pB@#0-ke-vtZAqy| z(CVcAM`k2B(L7BSBygFZd?&i+oACnWlhTMcWX$59_(R(W%J5^Y?Io0P%jr%`N<U|) zRtzx^VN>Wth@5MYY?YMj6PX8trEmwx_LYw@+Eg+h2~1OE2W}A_!$Ot9B|OrN=*N#t zl(!JKIyU)bpoCe*CRZyer?xn(;=7F8rsrCD7)~5QX<1d~`Oe)Rtsqrgk7Y)2S?nsA z*1)+sVFasl%esomFhw)WjHo(M&U7AHf+i$9Kh~f{tRkLxCQ>|QKwsBqWbw2}`Y)Tm z2y-X?gzP%C(ed#8(QuCzUcIZm_^&kE!6hUnA}1#YJRcbA)~)-0_Ra&quA=(?=WWaG zCfW2*LN5_eDN?OeyFUdRDt7%Vc2N=Q&x!?91Qf9SM4DYer3ng%g<e7+5FmsSAV3mQ zcQ;$!|NHr#d*5zCP?CTqa_7Bw@7$R)=bSlnrk*!*V^CvAc5Fqn-gPE^ZTOQ&Ff3xz ztJ*)wLFH4m|7f}NgFkqw&ZIU<$K9S#GbAI`2e%Sc|BFEM^`#nr(0);e^x=x`RO2tn zK{BbvpJ)VqC3n@CLRS<ZC8_$Ks{gI}-)j7!wn5|HYWz`+zn+Nkr+S(7+Ifn)F6O`; zdNJ@@kw1oj{DvG0+&RZ3Rl4+fdhLH#mf<VLYS6%_feAc=hJ~C@hTmiGoV;mh!Q`X} zDJU282{-Hz-3-vPL7*?!Rlwu7E4fShIkYWs^xYB1zpN!T+x>v}z)?SsYZ=<?v|k)@ z$Q$*ZD>=)gz?;YvRMN}%49>x_2hAowq1aiLGGXn)!zajEcuPHqa$3O??9M|zy;^}M z|8hrCk)N(-#QWcmc}0sW@x?gvI^@?K=biL5=f5f567Sk)<DzU71)rko;hJ$mgCOB6 z@=)ewB>8*{<)2(7vMD=l75Ua2;S^7BIh23GAT>n4MeHUGpbCZzROD7cgqugF)`j;_ zh%Z<!Q>?6iBRAa;!g9H&WAW-~%NM^XUZ60j-Tv8A;~MP@songWc-P+ml?=c9w%7x^ zT!9<9&@i1vWmU~wDY)TEnK?kbr6d1*gie=M{quOpCFjJ|yjUim=rbj^(+!BGa<NSQ z9xV{21Ezo@z_64*F7c)hf70jQ%`3WL^j*e}B7bGs<+3Oj^b^N0`ors=X(UY#{`IVV zVp+9UL0{{0cF4F{iw;BOuK+S*zE}WV*$tzg*~keg^ir9XwicW1xTSS*W&KNRnUJ_# zOmyOuWl;}IUtrch5;aca8b-fhZDsw70kt779}%0V4S8Q_#A>u5seeM8^oGfwAnVe@ z%Pqnc>tFJma>;Tn$VXG58v2iWXai~ChSxvwT&k~PQ&&vhbqUBJ`3pec=Eb}z#-trW zR08;(7xP>qm97+_hE4geNS`nqxQ6S0sl^TYQ(hXsx&7k!^1)jHnLqLLv(LOPcA9WV zoOMrT_7U<IB=F!*`VL5f3L&ge-AClVa|8Wpz>KkY4kRB37-#B5A^$?(fM5YOX$e}g z@Gg&BRdbmdPYSYNhH|i?doh|tc$1-hw0Oj!?%;$b&VB<WXckQJSkZrS$sgkjTH*H| z(!lFGpnJd0q3d3z_Yn2;#^_O9K1y)Nh-EceyNh%fUBg(@J8xdhzUVLUm#-faxBlS* z{YRxU+9!>TmUjJZNNU^Ks-Jb4e*jC@#WVH2S?O)8!eE7ZV^GnZI;o9Y>7?`Q)WS$Z z5OuKG23>{enIC8S8@(<V^l-Ex8K?SXD@c<KXY4MbouFRQAN#!kO5$Bj?gU7iaW<N{ z?-eGa#URE)mwwO@Q!=+H&b3xyJp0^0(<U>fp{D`fjYT@b%%PICDjl?o04B&Z0>$e; z70!Rg6=p+@a3dVyu&@+v76=nnv85=<QM;^cWFwynYthcTl&kOvw$|b)xKc}gple}5 z%1?Z?2#<~wY*T@a(R*@wwTthPpPv`!pY(GXwr-BT9-U{PL^jYt_Hl5~?d<G~i4!L3 z=)?i<&gxs<=iOifYCy3=py8?7w39qTJcZ_~Wk4w9D*5Sd!>+)q_7{DSB2fHN7=J7; zi_({>|3R;$GZK^Q8%m|RNd0mPqq}vk>VFYP$^wP5Uze)>SrS$IQ?<WU|5Nq9)%c?t ze^uj8=|DC9UhVk@W2*JpX$ZZpIt^GgqR(M#!K3GqjP5<scc3TX9_W{l+zY=3x<iYT ziOVPoh;kxdU>~{}y>OKDnQxRRjXvr37GV+l#W@Q!0nsF6kbmK77My;C;s5R1V{CzI zRrEbsF|K;t@Qs7wgXbi@`pdr(m)!nf)UUfRPCfPeam0&@a5!!7BM%u7;$+*{fXFcM z<ney@toY-(2~&$LW0JO1<N`(l>VL6~7nK)?8u|B*q>`Rxk@@GP3wyo!lVT+!KmMy5 zVsQS&arDoGTOfm<c}F~_v!GA@#b>4z{LxoSHj<a*<3%yc3_r3PjKg<gOUS=2e^2}h z`g6{i7JA!}v+j$Ckw@phz~v)<3?r_!BMoP+oUBL-lgg(%g#_T5!gF{&I!O2}{|4Q9 z-2K;!lBNi6zj4<P{Rw-=hu=Xe<-7Ks_|?^O<C>p-U(YF(lisiwk;S9%7Cf6PR#b2b z^Dm#W3?HTZSzt=cdX-oYyT=kWcl&i|qdXf>_~o2Pk^I|RkNl8_!-vr?aZ~;bBh!_4 z;HiJy^(*pXFOLKlpsSQW5HgSq!`8r4=AX4mob|6{M$dRD^IDA30$KW3rr#`iI*A#{ z1(%W<3kwhiqBP$rBoRCR@{6|lSNWsY2@Mcn^|(vAs1rq9KEw47nhBk8n0`r7iv!~P zhl}>3XhR0|FMKbm>3Q%sZ__?Oxnc5m%2nv!4M!gsANm7mMeV>N<1e%!*ZwI^J?;DP zNxko`<bVZQ+>re9nT1lzv?#M8G;fxR6Zx5}!xC<VHY5WY`OmT<pT=w%{LAt$=~K=K zO)f=U5cIPm2vnJ6Xi=^PCQ8qW7*4-Lm$(W*ZlyD#%vj6Dd&Wmko*wsH|K~XAW6w7q zh`b(W#v5PzgSZ>Uh7bvZo=XSag1+^SXUD0Wb$2q|hvZ+6d$0OOMhMN;dY2m5hT`?` z;WOfAKmECnEb{`P$*Y$u^uUYd0#hrhgyfxeR}1;lAtM8y!r-I)NAU1gmPK#FAuuyb zd4WTZ)C+V&4;-0R(U%;bgz{Hcok!-O#PmzL_j8nBUvDg3qIY2lfOlby9z`FH!aWYZ z)L0py()cm!{6EHJM}0Hyy!aCB{D~Mjd2F<fu<6N=EizbHeWmLdhBy|`Mk@4Jy3Ko` z*rkP0g`aFG!VRC=F{DDZu|<sYXATU?<N?FJ|J)&bAotP<b%{sfXoP69sEhhS(@aot zs4spNypYoZn1&i*j`VY!z)8fS6xdy-K_P<}_1G0qae^>jc4GnRMJ(0tG(ahx`i*Sx z1W7!Pv<38q`slS~V0E45?%nUo=b(5LC<sMQ`7xiO3j*U1v<SjCJF750fiJ@}RuC=9 z$40GW(R_oaMSIL(o8ujM4;CFWZA#Ko80jcm1$A_`M^{&uc1$ggtA2Y?oc--n;?8St zhE>6(ETC&<VR$WmtumfXk}<2ZqeI6dFV>OP7_)e17C+iL#-yltA%Lp=tJ?pn|Ev0c z+H>iFnnB;I@mIEw)%erBb2a{^zpUmT9{*JHuWJ5T&A&BCRFi<K)*n23Str+DvV_*Z zt7eqzsG}d$T$PC}SKp}!8ad{NdZ7T%XNg|{(shQ(JF{oz;iU7k{eE;>E?zfaL`qy@ zwSS0yrY9Dc^tDW`bsDI0jNFCSKIpiT4`4v4p3Jx&oqmH2oyVhhOMU8k!#C@lNYj7) z$$0Ko6F{Pmj-oPukP&vHRe<k`H!Vet&7<}nL4W>TA<TAz`)(hb!MJ$q_8r5@kK?a1 zyA?=E-x~6tb>$_3Er^?5!f<Wd{pIl`Q0dcj<O%WBZyq048z$n|H|}W~MyT{7nv*xs z$0_H<Y-r2*Mw)`~%JdVv0ErNu{3NHX99O7(nEpkl#}$hbDKIG$5NEnZ`R8L?b>6iy zd_9tW^xS5npQ0Q|B{5dxai}jNTJvAfqT~;Owdjj`@67juL2s)qhjv)h>g}=5+duEL z@b=X`H;P@qq*CEw|L?{@TVhy)bKg?_A`W)Gb}QwdaMLe&E8v`e78>OUy8H06;x--% zxRlM}IQvImOZp06!DcvpCs(+0S1e`?mp_X;CMWr;mXX-7+*AHW_%G^Tku~zM0)1fs zIgDzB%yfv?bADJ1EYoTs%xUu(;}DPaI63}yo1Thvjq(?=*;ihy-~tCU8uXQGeN7Mi z_P7KZcuZf}HA&J5noo<~`vJVkp^H|oGC)vd(2>IHyV{V^5FxJ@#JShZHP=J|H`M;D zf_@1(j6TU~1H7MZn#u5<uA6@Ksd(;|I^0t<YW3wwA2{L9otE-Dp?F|{lL&n&%~jF| zRsh4>pYB3O>$Q{Px;t~15;6i+3ZyR<>m6UiO00-8vVy*_0uS!I4Wq9BBO@XqfH7p5 zf0Wf30V3mu=x5Zb=$jUR`eC41HT_zQ-)7Hv^B2yHx!0T?uQCNCx#90Idujd?uqYw1 zkW8$Ye<cupAE#BM9m!E^1;4)OQda@Yo%45CaMYB|Ci&h%yXnj*@!9`~2jG>M6qu?< zk$LgY0y%l2MgpTv6>{>k`s^5P!0RSF=p?AA-lVpUf|}hJgt?%Zh<Ght7Ye(gk8Gc8 z@@L0YU5y4h=EZ&9g(ag^-{5k+2WxrsboY9f%Y=y&HKs!UB%-zb(YIsZ(64Xt!npgA zi{r|#e<SYu+uvi<#PQKFx~pLT!T8eLECZ2#7=F?SRTzxmLwb*%)3%jI2lB@j3|APd z_}hjJS}I%a>`QXrLnfRP?$q$C8}_UIWKOeQD9W_CH~t8twCp-6Cvc>*u}XQOedL`p z7<2~pqo=c-2`gA(@G-|2u+(JWTyGVvZBN3iAAaFs$5#G%g@80HVRU5k7Px?=`m(!= zFbryg&@mh8!G$k(5&_;~yfhm%C2E$(M;tl;E<u1WNlzSUK*U#gio8({jIZn3wo4fG z#yho&vQUi61QB~NSOtV`)zm(Uo#+@pDq2Rg#pP%IIW9QqmvQH`TVkM3V`1|lx=OdU zKV&yb9q}aT?Vyf)UDmx!@6OUYKXuk(9it%arI>;*^uKEVs`mfM*#4vcRsT;LSLuJH z|LO;-@wXZTiJ_W*NDAl!<B@9qMK{41kT#;4e^Nsv3&yJ+sdB64-$<oee^3osN7i2` zkM-GURJM*fCcspDzO;;Zm^dpmKZIrH0bK5iAS_+kY>>heeL5N8Bnffp6bo|N6#(rD zy2I%cu6Q-e4G4B0?DxJSisyQKd%vUOit<z|g(eLKyv4(#(pS8JbkWPF?+0FPV8;nD znbmo|j(;$wotJU7&@LZr9#9cp=U?jzbR12;{YOmK0{Y7IZ#d;Rzb6M7yy$h$6b9U= z*zYaxG!E!|@;kqeWlCwem-+9$F^>O#XMx<|Z+*%3hDiL--zr{n%sz@%7hXFhKKs>k z4I4Wh6R&xS7DFHdFop2cSH^d?DFUW_Dn9aanN|QWkcY+wUV*;i{#p4qZTHIf?zT{8 z2=V85!zX?@WSnxSQJOw^Z+q%X<5MNcGv5%uyrnb{4$+_e>u<!5lIf_w`^~YV-<u{z z&_8e2k&Kj`Yp#a>LjKlGAzpB4eD~{%<ssW|iG8=l(58o?{5$q|!w~&4jp7bD>=iND za#&IR^m(a8@CN|#d~mv!^o#N*ETOd9YR8wy7X`)hfXs~tedgSFP)SI;Y|fQ3G<L<y zj(@;70LsQ-7=0b1XugT05LT*xUd%EVlzr9>J=!53=<+kcBLDcIpANk88E8oUS^h=S zq;vpe7=UH|<u5?!3`(Pn&hd<W-~2A42m0gR{X;A>3SodLzTMMPrwjSN<;B|-G)Pv9 zUgJ%=b=fK(sef9iGb@5A<u6=K+rKi7N52(Uk3YpB(!~Xd(r^v>gxRV7z31bOBh7L9 zeM4=?F!?8<RnT8W`Iow+MYwwl>;pTFiwV*T^6YY~&5LVQJu^U7_%_0eUlCg76^UEs z<OLW3BEEFWzdhu?Gq#kmJ!@bsKJ@)_VyWU1l+eX-!53a1@Az9mN)Zh-5O2_5x%`Ld z+t@BR+F#0pn8cxLDgRaIKgi8GVB*O?`3tpiNE&JqKv%hft}@%yFQc3imH9{iM?K|* z@sd3R1+XsuSFV6o)&G#Vqz|9D^T7$@x@oh80OWbY)AI0Taq5Y(_{r7cwejpNR6vTa zZS#Wo{N{w|Vdn91`rl;mOqNZTs>h-`Jb=y}ni>vNg1oZx)w@K%pmZ!lr_m0dAQYGb zZICLF;Qi+g#lkHQS@yysaEDg(Eo%?Pp9J!^A}Yu1#G(AzIn8^J`Um@c6kN};B{6RN zxEQUSG&W+OH*4dlTQYpG>xUgZ4_tF?Tp<J2-GBaz#y&04K6Z?Z9W8=E<1s?nHe-E9 zhpo3<^=;B@8vUo$A{<>FRNvO51sG4axhr2ywSF122p`Z6BH<KWj9l#C!mvf15GK{D ztYy?MaMe{QFoKo1UF!rxU30ww#)+w=V1VPii;*-)$x1~Xtjn-e)6agT@ttsic_A5G zP*WH?sMx`Uv4~>~)6k^`vQ5vD8wMj~Lj3A|TcT+p6~-ob9MtY6?^Xl9!f6ZGU4^7D z3i3|InqZprBYkO{lE<<ERuC$q<bl=)9FUdAzd}?t){*ZPAsWCqBv`XgyDhnr7mSI} z=8KQg;i0*uCAxHEWN&XzT=we=;=J#i5%cc6&pW#~wla6C33M&ph!O2EQN}Eeo?O<w zRPT9{F-tlQpIOdoV_^yQT@Lc1A5Vh%Z#|||lz+;+%73asRsNO!SM}e$iQ7V&Mz!Xu z9M$-f@qxPwbs*LFJ3Gy4{((+tyoDg_lZMF8crH6t$w~U6A&8#|<)P|-5kxiqsK#H_ z`16Sve^a~GXXoZ}-OWHw;N6J3;im(jL*yrgcHiiW{E8cjalBz@{M<*VbI4?kICmWM z7)T-el>&1KQqV7?#6omV%oEX==N=Z{e~w`FI2cFAGuz)5KfL0OSg3z05A-aFhwi*N zF8$><<M3}>7)zP(u9Ch8>+7gdV`Hm=mD;oq$N&4rc`@su2jjNOe;c28-qvv>JjxAf zr^z{2Juoc)LgByhGWkCto-_U#anv8Kiu)I9FxkH-E<5?XvE!%y?6kG|0r8=OS-8j5 zV#+H&6d#5<xW9jJ?EaZw#H=N~epkT4J1>b(?E17gwxC;o^DpB~TWX=CkWwlCryTfx zkjV)T!j_y4{NGo`hVqkCC7>|!zd^k1hhK0A;lF*|wz1!re;G69Es4H?{#df`fw<+G z3*&@OelmW3yLOK#b%8GN^8ASMpB!)e{^tdYtH=Bk4~}uK`fB`X)?6JG^Ki_$`KmbQ zdxytM-usJKjF4NljrX1U2J;15hi><h`0<tZ#4^zzSUx{4|G)ReR&PARxWIVKVF$!W zXMzhq4bsVx(*Ei#JH>?eeK-Dg`~2t^qf76+I6m?01L7A}*jj9I)Q93ZK3%EIzmkgn zo4&PAgFYB}m)HlMzj311^N=G}j+^jHf~&|snG#4*{zFKB-zwhq+jlmCZanfOF}e1P z*l)k5$EZ#Bh!3BhQ7l?PqkM0a5rQ)bJI)LKtDsN$AV>ehJ-treQt$Ac=*vFv&G`Au zhxAYC?&!`9JB~}lg3#Bw0J!0lTh}{~3&ez0%0Kg^A`R=A;NZ8(t3DVX#v@ld={2$Y zXMY~IFYOWizF0K-;`rpQPmkk>1m;b@j5lwkcdGDgT(xMYh!s+gU&qIf|5MCeKH%L3 z0Hpq5G=L|8rA5p9)nkKrBl=yG|3lw<ZHzzYD{<i+_r~HS^JC78tK!@fkBFDO=a*5M zE4udnNc`y8LL_{HwQsl$`SIm<#3KDO+-=BRGvY75J|>Ph`p+^DmGsSR($7j*&=)`L z<6;}w2jR5C;?Sedi8~&8AZDr!`J~#AuMqCM{Upx0QbtU8)z=tV4aOyUc|?zBCy~Es z2dM*qB<bdO_Mu-Um7HYu&4c3EAN{|$>Xw;t<+-QFVNdOf7ku%8jNZ{8rk4Q)@{&Gu zR&YtbqX-|Y{U$#3oeSdrp8n|R=^mDUp<Jc@H#B%COJcm#88f2HmHMA$Su(IF&NyIn z?0LjV@uwSR#)FHO>-e<Zxc#D&<2zRfhwwDjw~tAkD2s3iDKg=gj^~oTLM1Hk$TC1Z ze*eLJW4j|xjw|k35dF&EvU~m!N51;?@jE3ZyHh^(=Gd(>d9BqZ#;cE1D_zLpvg1Bv zAa+ksIavJlVyo^fE`tEtIP0s+xJWE^{VzE!-ov4fawVQ@h_@_b5byxA<qvGa4<VdD zD*DLuzhD0BWWss!tz9bY!Wz(fg$C3{EncivNd~12H<}V{ZNqk4JH;Aaq>nyAP{|*< zep+06{0VW}nP=H})jmdl!9nckd@7;nOE1-Sq59Zqd{m!nK<etC{t%Q#7}W};#qiN0 zt4@n5RC)X^Z2-HZXwzusNa=seDZs{F^qu-3QMhJ<hd&zetUkciNBF2)$jiH)<OiCz z!T(7D2dTAa0k0Uh=yS`e<~ZVIc*=?>-GX5_B8_++ltm5Wo-TP;+yHS(;&)+z&t#Pj zBBa+1gO+z$nzkr$R~);*oJ09-#1d??n5_$8zv5tyqj4-h<pbPw6Y`3mybm=K4$+=; z!F%ye91|o+j&k%LPMY<OQLw0?AxtWyHbp?9J3!-O=DA@IgEl|$N$yp+qbH5iSZgpY zIsNx>=^5w7LwC(_KH$#=Ey%5v)9zaxH8@&3w7Qoqb3Ze{*id8oQvX3OuB!GA-BLMG zR#pFFEq5KFVo;~7CsYpPWLYUh4Mo-eqBhm|gLbeQe=(O*{cs1WdP8633Pc}4XHfnK zR~uiAKM{mQRE@uBW2^qB>VK>8M>YPUNn{S74n)mDHU6S)qziqF<4;4czZVZ1)>-z8 zF$|MN&kKq&NktXcE~_js{P>Ee=q6KssB2<fJTNK7>%w)QE_yjRc$t}NhS69LH5{-p zgiA1e%;E)VJhcttoxi(0w5;erjxzgydu|ouT3Vx}qbnwDwL|Rl+K<IIPQ5jHNVH1& z;tBf1H*FVhmXQP8u=BgaU!wP<Opd9~dS!h5uNmk$k-T4d_6AXV>uIr&bVP|Sp~t8D zb#cW1>=7G{ZHcDVG4af|ou~>9{fG}<d~&>~%LD<IVdbgu)$4v7yAq_|j3W<@tw(o6 zOIvG<+hX7N`iul?ijT)%zy0bo>IjcXnY1oj>=UOxYlwbR{Z;Y)7j9O}-Dpw()K3K3 z_x|6w>4$I3^a{J^e-DnQOd1^{T1G_IxD8|bU7sKC``Xvzy7}7P1`+-KRrz=A{pq;& zgoB3i|C>+80b6erU1P_`X4~%`FFo`daqg}2qqmU%#)ljmfB3+L=4mi4jJNN(X^ay6 z*7k|<%y*oSWX0~mCtnvI+O}gw`q@reC@iupIO+ZI+-)XC8;dN3ypUt;`^~uUBfB^Q z!}CwncCUGFJi{1rVQBD6Z;w5_I|ez)0fduca7><^=xWU;WhyX(7(CPTl;y8Q9&{L) zQRI^k{BB(Loi{bgKWf*-#TQL?`lfhm{OI%}V;3RwVw-2!PHd7^%=Gz05fXuuqJ%!j z1toQ=P9v92QQPsr_|CSOxE?==*Ka>r?=b0%&V$d85eGyWXHNYH(jpM#a=lD$?CL5z zd4S^%s4jV=T|#t||BTW~+f(Cf*Z*H3<A|HS{JPk-t5fvbV$4?iS*Ia^PXFz=S4YPR z^hd`FKYoN+0pC9kKOi>hXo-%I9dXoj)#8E(Z3g8JRmuh8M2&ggC*r#AzCw{k8nrV& z9nartN{ksZF*beb?(vfM9UW)i@?hqNbTK*Je%9qSyn&83<n4QH9b;7gT4_VJpbhy* z9CgO6Zih<xP&UE5H0VdmRJ9@dHRzxD@t4L{lQxL$p7pA1Lkd1g|J7%27`3;Y=3Qfy z9`F1k4>-)o$eUkT{~Yi1f+gO-8b0js&bau9361(U?OX4R-M8B=_ITNw;<%d<hufbU zGL3PUgurgP3RtQ9lm6&<!QqD|Eye%sh!@0^k!?D{Y-D_G2CaM|YUsb(^Wpjr_dqOH z{jo<6%Zsv6h+;L7hQ4q&aqd<I`bK$7JN~fvpS^a9%{LquU85(&PXF_<xGtgMr6(U8 z+Z9Q`4IO^Cvi>FgjB)k~IH8V(r+hjNeCE?)^C?r}DSI6pC(O+B^=JNXoc4~Vlhi+O zweR`<IQz>7TK~XCu53>9qPZ4@Ojs30&o~x=33I;&v_`tAuB2q@lWh+SGuUAv-~34i zEG%SyLD?`oq?d%5Ty*f_az+11A%Bjhqx^YSA4gvfNLRcIOYag|ymX0<WE&OZ$B$1# zhv3%AN$)U7w8-evC*0Sba8gV^`7|B#)*J2P$7rmgKODGDpxA=t=8po^chxbLIIOtK z4@{F*$E^Ee&e|++j8E(U%Jd3VK1u6(qxi&K#*+>Q-mGgFwOsYp@6h1blqDdHGQeW& zbG;&&9P)FWgKyFDae@jreZrJ)Fd8d33nLW9D-hOeEiu@tuC3l0{R&D0m&U7RLRbXv zFyX>)eE4PX!ssQhabmbqKvI@BlQRL7{AdTv2Mi!++6dvGVX)v6p0)ri?9NjqfEk6z zFa2O=Rg2`UeQn}_P*EVQ!dSX)9%P4?(zK-U4@&Ij*2X@3ZocYjgKAA!xJaA0)0oOW zxms|XbbHsxSTOg2IPb(?#uaB@tnw0W41AUwxYo{%962f`YV6(9qa!nA&|0qDxr1Vo z?223SL7BoZM=M#r#1bY~wZAGUDM{7;P*Ws}s{gIVA8t}<!Dtn^%DHK!u2kbMx)~;# z)%cS>+>NKYPLEjJ<G6oRcs2fJTv5$`7=={hk81o?jX$gL_u9@s7>caVjw$83>*&iF z+}L@l><*04UwOPsPOxdv{VgCPMrbDtVG$cgClh~9ra`7a1_NcZhLr7kPmQr}+FJbE zv>;m0A6?+8#a1zvnfGw|V|R~Z`tOVLzV+TDr?_0;P6GAVC0_o<snPzZ^cl2(Q%-}~ zsfYb4&i~wN{Al)t5BIK<E{+BD`{Lvm>!D0=Pe0Tg-#5R=?nizZm!ErdF5)YS4j+D_ zeo*}Is(EqD-WxgnQ2w<8Wv92sm2)qTWB%VW8+ia}N&ihpogMe|e?6Wxb_m~!@*l6o zX7B4Vt-;T{C!W^{aemOoTln>`{X0&LdDs6s-n(~lm$Ve0pt0S4?~Oe+%p>{Atb#-k z`elArq~9DnANm`;KjVAxI$&5}!9lWsKWOi5Vw6Y9(3u!7KJM<Aan_e&w}ccN;Z71E z`oFkgUi?fuu2!bcKOf4#!+(E%ocNB-oQ`rJiidqZ{j->J{$a7L7IIdV|JdYt@p{8L zX`J|mz4D34jC{FBWmGXD&w$hx4H-v?TV?)J-%Wqhc9xC|mGW<ko!)awEV$)Q@q@2^ zAwKbmBjSiJeldRV>%Yd`{XdSk?LIE9G2VK-@VT3>K)+s786>9Y(D6RzZ5aL57PgEe z$fgr9_@&FB4dT6*UK*c&4q=jx%U|AydjywSoA4{@KVfD5Tb*|m%9J*}D!!1-F#2N} z^>WLY$eI_V<hYO6@vU*y{g=hJ-uY}j4Wkbqa&J2NY~??7x>3f3{73I|WK2KxBLzP6 zO-{*{anz9MH^m6G8D6B>m~v5Meg)VTJHF?)F$Z0ASn6vd|DylO{k989jwEu5pRh+9 z(|3QId(8WW!iLAkPVtI2Y;A+vs>^>k{ZJe73$-DyE_fQE|E?1+i3NlA#!p^q!g;y7 z&p86PP4YHRn~d<OgG4lBqZr-^i1=!;bskv=2FtTK_WtVK@sAVUs{qM*c>UY=@c84L z2jh?L)qA=~t6iBRrO41REx|WvtU~{Z>w4ao;)b6b2DKztB<RylxeOSl|C_9=|3aX8 zKa%4?O@H$kuLa?feoaRs8m~fH+c+Q$aAejRo4xvtYP}1W%x3;;2gTRVzA;XJ)z$(o zFzHr+_znigt=#?@KH@#6{WQLI$R>!`&f2YqXTATsapmdnjLq4?q34Edgms%&9~Bq< z?3?kz9V}(lbEOiDcS8aQ1G>9@`B96-oO=UJ*AK-wUMUM^(P1a$4j9G&MH0=CX#_%} zW@A7uzd#Qv75)Ei`P<l{@@K-#`}6n>YIjQSvYzN$-WwCf=_tXnQ9z;A<Y!GoZF9#> zzl;XAoqcv(am=@(_u&OGYLktnlUlUEKqMIcYe8G;pZunYerjBnOFmR5^p-$HbHSj( z4L>2o$=`3IheCOj5yUzUlmfi_Mlfl(lCG0Ch38Ht-lat%Q&L)vBV=F*jIQFBcRU%f zEn<bCN;s%DeixS8I`O3tj%f5>LO=<lW>)F7oykWC%JKs_Xb-4eXi{b|I1MOXF)0&x z<Aaq*`7#RfCkp*pv27rv?jjx#dcjb;=?qU0yc$d9m3WRiB#GgL%clZD6MGHDLv4i> zw4wnLYQ!KfFSkw^dbveGnRm)foB5)?yx;9s8vK+_JQ<ITUowdG%W#KbOuVNtgf&h{ zNkFjNEEzPnw#L|vCdNI}ZjIl6`;?gZk7=?P>Uc=x1rs>RZ4G}I$0o^`#g4z8Wxdg_ z{s#R=2z6zGJd(Sr{Y4KX?^J{=X+Ku|Pu2fc;}5q#Zr{|F(Wa^arb)t8<1e+;v=!=P zvYVp4r(YyYLQ^39Pc{BjpT-y*?Lk(lMV3v~|5W`?)&ExG4>y|bU#JfZ$ExvHHU4^R z<1Y_J*5ga9yPLfQ3>tD|HT*u@U&0VJJp9p~%kb5?GpSv=bZN|-IWu1S+SjNWHm0N0 zN{wcc&vMe-2!uJg1ku$apP>*jth7qJN=GW(%JDP<t4BY27Q|h1=II~*!qqlX|KRV8 zapSt8bq(k*fB2rbOS_V4gPk#Pi;ZGTu|QC-FN?Xi-=|~7+G6~ajbfa3i{J)(7RRz4 zO|;v`Mi(di3@(nlXU|Puq9ZokX5;Xyo(w(wvSR+1FSs}Ep4S&+M%Lp2ZF$*Xqs?Lh zr^EsF1jv8>L$l-I2W22=Yl@DJ(J^}bgc#k<O3UiYKUrL+BOULJrETM4MBn0Q(k_Y# zV@GM>W99NKWH7KS?&s*Y&ap9K*+RYYXJTx=vHt!2DD-=;KPK9D{-_gwetK_w?y0S@ z^ugINcaau!`efkPV58V%Y#QN)32jCFn}2D%e!}zO=Mrdr|L?>D7rrMZJr4Sp`PX$d z^#8^a4~(b1_bhAr=dN88pW7Mh5N=K7zcT%Sm^b^5SUh5+%0q8u)56f`_SD&uPTp58 zpT~=SEtbz$U0N_0W3~0_LFx45DVxRwY;<-=4fja;{YxH<JMSNeuFl?A-ZCjBPadg1 zlILVJ)1<`HUzYap{4dkHJnoHEiRD@V06+jqL_t&~En}i>pgWqSi{r+Pl!;`xTZukx z$UXC-PwWh~cE*@dT`^WKyl*Q=(Vjlm_HX%udsLU%JJk^rx7;|}5R;b9-*%tg9o8CM zn`{&lM^GM*%>U}Pf3R3zJU8yRXMrqBZOZT1*kaOn1uEvz>Yp1Hm|Bs(kLR*h5+^4V zgG(QXS@-wH*v`J_ZJ8JwOzxBsaVXs&vH@_I{zG~=edIUXmB*$*zl_U!>YplgEO~f- z%v;zWBis67es4!?zS%_UL8cu_2YvrTjzwOv<vch@0m^^xjVHyFy+32}AH8Hwd~9k{ zESYy#JSf~0c+12MV#6+WorpGzqy_JO)&s}TELpN7ZoT!^c=^l!$3(m^;yfV-bc34~ znhBHNQ(yZ*W~P8jzu{Rx5It5A>?}d~^ejB(6NtU=O*pQgS<x@c--7?IkiT_D<t%km zIb)DO_q4NJ$E)?~NY8=(0oA<?WPG5XUP~vv!cYLF`8VGZH=ce*G|8acHcEZ4R1JMb z)vVWoLHkl)k++@|f&C@hDzufl!!OH&<NK%sHaW=fG9W$Ag&@V}*Erch!*O^7nkJzv zqzRYl6_4z=8emtJhyqRub`W9E7%b|`fDpJ|KtK*S3_#eGyf|lWFaygaF&mf2Ct<ZF z{WSu*k_)@cyv0=XSOCo&0;eaXHD07A{=Mg`$P;{LeT4@K5(%fn7zk7B+_GQK&ElOM zci_NiH;9o;1}6<b4VUlP<K0-9Pvaz?Fbz8JxgcObemEswV|t2$_fEN73=Q{+7h9;1 zDDb3o0!(z`LL~-s`toynQt=Ez(LkVnR`{Tfyj(bML5!a?A@+UCE23l6NFRS`_6i<N zdJQj&7A=Y;djDi+M|-r&fM#Qv=nvHa<pH(|{;Kwu@~Qfts{f^3K^LglQV98}`}Vs& ztKJaicq*q`0^J2)w5Nnpv8wS$(M}={w`sIFg?ug3q4u$Af2#Hem8jaEs{N_j->Uzq z`rm5&@z2IzXZ`+nF?H%x{o#A0=QNBf*5;Q(wjmsk_B=ei^snmvufm3}C<D6=IR<TV zrT*z5hre8lK!ub(!ZO8By#M6`glCtJmNnqz1eSy8Ob;%{6a+kX7FdRsR9B?W`)M}Y zdYlj?P2UQ?X{_?HYWi(sH;HYu1FFp65XDXzrM5CBpew_h+DFBx_7ayun@7hcTa6aK z$qTTnc4eB(f9tr7W2<o~OYNaZ0^9@!<Uh-Q#sQUFJr?<opSVSghmew#^3SQx>dQY< z$ndw>)-llod>wc8ukzoFJh##Nyr4h9Is9kzy&%M-i!AoByQnorPTE4pw-HdvGX0O1 z|J#51t@s(R`W|xFfoa47WjWasR`OzO1==;2|Dw2k)>7%^Mk^Umbada0pT<XI#DY+* z{+8H(n^DddnS1=`H^+o6whbh^YUf;9o=;5vwbN+4>XPg!IO}wJi|eD)Zy7Z?w%%G` z0vRe@;LE2K>wlKmP<&mxeI`g3C#+8Uqc&tyRs5p#lN1z%7R(v`*yy*a4cU6EU>`vr zohM_%oWLFr`PW8o5L<6I*)%=ZUc>gU%xNiV^53NLFx!oKGE@@ykPqp~P%mb)TKb6m z8?d-!D(Fz}Nk6>)*Xu1YYV73b9FzFRvnpLcCTxi-<MYbGvGBn3F#3)w+3V+6#E~&_ z{HD>V_LhZWFSZZk!<;})4pgwWV)?Tk?LbzNy|A4NMS|6WvzM-|I3N`Q<e;AypIIO` zQWly;Nm2f1XCVXL7u3*)BG3GLxFlD~w4(ptC4Y>isb%N{<{37*4CwuEyq9iyv}k88 z#)3S8PLXTs&_n$&#w?pVH}1OdPqE;(+q9E@lnhyI(laPaMSYVlN(ZgNssY$nN{68Y zLkQL^Y7o4;o=N%rPAEO`{z~Y`-XvocIt(tLSmsffV2oc+9Pw1{{sI%^sUJ)Pp-;VX z-ofF2j7vtsOTBcJ!uVpI!PW432N!#n_yG&%G-?SLygG7^I|dSx`=~(f!Z&Dxp;I`Y z77BF{{>f)1a60D&L?RA9lpycU!tcCMuN6xD_HHN901t3Qi{V{hX`q5J!6SRqP)g@J z^FW|wB6^giF^M0V3(L&9gdvfgT%?gR7!r^ZEFLdp+Y1pn-3G{*^pDiYK1-QAlYlQ6 zRNlxz-X`sU8#{Soba(f}*(d%iw%lp^*lEAr72e_<Z<zsOU!%+Dt}g8aYY7ZmgKdK` zqJ4yoa2AVnk31B)f_*VmwZ9av3rFRbcM2|Lm6avSu<Cyb9d@0zM!9}g{cp;`4GJ|M z`6vjjL630N_@fX=HU4uS?>-5|sM=q5uT}d?pQAd$Ab~cc>VG^|sruhSCm8ukCp?C% z`d{_3l8buSYW}ZT3+)D@jVHnS2VLg+>^#?4Co@1h17p&oVYlMB2qXd^Ce#IBrpb8v zEl;Qmuo65GJ6Um2Orf+zN`?Dd(Jw?@+$#BdAcVdY5?NjS8<-x)zyC~Ws}?$BJo@nd z8>5y_nEnmid`4`e-FR*LzcoI0{7>TCi~bsyUG|qa{R{7i_8s037eHGb_~57C9?#Zh ztV;h8h@?=}|7<1;H7{<3f;678k*wNZ$tq>?&-)+8qF{N1ZP9i(U^V+6Cxt2ts7X{$ z`e;?%b2bmkX=PaE&#<J<4hvD#gBOs^wjfyGhY?-aSm6aCo>?o_tz0-}!J6aF2y?Gn z(f_ZJzsp<&OX+gl9R`enzJXZY*B48dERFVd?E=^Pu$nnGZ*3fXsB}!5eq!E@H^g<v z9UF`8o*k`Sqoa9*wv%fSD)lWVR4Ab*72++8FRAl2-lu_Xo8LY!a@OHn1{5FJgd#gX zG9T$qo=Q6t^#rq*HuC75Ul?fA2dW}rIuUWf6Q(<rOF@hy6)YI8={SZnD-)Q2(M84% zjzT0^%9A_@H=v->g*%`eTPSZP)RBQ0zIir}!fpOAJShRBy!(gxjdZAkLX!WQ!yspj z&Ih~D;MWE}?{-t1iY$4DpJw}^=lqJGcXo-6^C>wYzd`dLLm;@}*)kw+dT!BCkowt9 zZ;mJhfeipF80W{COGBSBW8);MBS3O)gCgyRf{+Pi<R1az!DJ=-L6<Y>FiJXQmJRR% zf*-xXO2wr2XKBY&`^e6?_1c@_x5u6q58XRAT3dKWn2>^ZEnH`3r}ckXZ%=gh^w_vt z*Dl4nlnA~t0%HV4Jn#f>l%gc=FoDQb?Jq?k!AM5v8#0lEkQ-iIsJ2!AliDJ6v0So# zqdSrlb>E_rhDnCh9b`xitor|~YgPS2ANW=6Pu2cb{SW<2wy0JATlK#=&Zx#8)%dF# zf9BYc>-y~0-5pt;;0%eDPH3f|jC2Q;!+d%w{&kvz`T|~$EChJ+O$<m1M7|Y%27NSa z01OXLBIRVFd>VEau+tJ$(f{w4e_yu;MCeM7j><z>R;T<Q`2BHltTjxX$d}$8yS114 z`o!p8zuskH_vfF)7yo=pDrrGKBO-SB$j{;rUwCe%|5g28XWG9UV3ZpA*xKJLzOp_Q z&Ac90X#YW3wE5ghI@$iSc)I58zv-(rfCGMZ(AS6lr`D?m!x6RUUY>MJ-!RnwT-a{# z)j%=~UxC&OzuvWwxLF_tTvJvrsydTmDEmF#S&UEOj%N{@g>)9myaXnq#wi@;HxuY7 z7te+`&@)WKb4A}mOBt`<@`roMp9N%p<Yy<=axL2T^!CP>v16mNbJd3v7b^L$Zz#63 z4MSM({CP3+_kW0mcg%|RvD)F)iiHD!T)9QXtb(=xp}gXc!5fv#FJi)5>~CUA6k1%s zun=D6Ay>r}tq_@*z;1mfvuUUzj-@WeVU-aM3{hDx^vt3$x{h%NP&qy7-BE={H`v1N z;&7Q%;M2RmOo<3#H&4pD=)&%RXw{StI42=#23l1LN|?K)WR?+Ztw~`6;tfEjk*BDC zBu%Y@LDgqqgvamm!Ylk7`G;+(Me+Vqmq2Z_6H(_=aL9_Imn~Xlq|UA|cp{-F5T~y* zsbED&EIJJpe6o|tu}~&n;YJ25LF*k?SzeZ%ENbRW;dRpKBdOSs2{b={b>mEX-UVWT z5r<%*P5J0<u~SYCOrF`T)vPpqGQ1(@e)&7}V%z1t%j1I6&xvh!-Y%Z@?46^%v)%H5 zKHoKQZQ3ok!KBIYu-@O+t#`$B$Z&>ieGa39;Wivb#h<Ulkwc2DAZnRVURC>xdPz=_ zjKm}rvV@QmI}%e|(g!PFSzzdgfPn=Dy|aw7CRF{Oq-Rkfqf$1N{#EslDwB1nYJaF2 zRr_1@Kk9s{{-^4HX&I~WM>YOpOzF}3lW+XFCUc>6Da|@-$ns>yQ$df%b0UqFslmzd zm>y_+8ZboSiV0*fXyZw0so*l6<RDRyZY9b_fIWl*m2eFF8gnUvjEX?MC5!{X>JX^n zD*FFj@*lC`bK>}~9j8T=w%B>o&Z6|C5;=SPm*wBI!L#D)M?F2-mGY^t+rwIt8bs2D zPvMV`{*9RW`uOWv6XNoJTp8EjbZ6YXcwsa>G(R4wO^zK7cwxNtt%t;mp1x5-ThUqE z<3+#H|Nk!ix5BTZ?H@Y($o3aqrlBs{XVudc+J6N%YTYX8AF15_XQki@!VEN~OzqtT zdQRM2@ee&gziq?a;w%6AWreoK4jXrxaHH7(uREmVb13Z){RXT-v|ufqgt2bwBe*mx zW5Jt+Jr<Q4yGIIs2{j3EfFm7?ggL2aVPE_z46YFuN6WFq&jLCFeSXEo;T8S=4*6p% zP{I26xANU=gZ+civ%FjH#9FRhDC4vnix*|Cg_B}&Bww@W%%66B%sk_aXd5#oI>zc< zSm+kU3&o+cHY&-_*XqYjJX-$&a|Ab;HK+qhk7}lFO0TWn(plZ1*(BUHkO;TzEZV80 zcTnkCQ+n&P^c>rWZDv#e?Xc+=oz`T`&(tYcw84hO4<VP?1gd7IRuew^G3vk%AKkV4 ziDMa?Fmebt`-Z^LGMGbeZ(sti@HMOQ4z|haGeExBMW%acy|FP!7|D}9eu=SgB~1ts zC5~XyfimdmnO$%2%JG6kxJ8l`s>w7`f5GDS`5|Ljf(+?Q$m&EY3~1t=7)(&)8(+Wt zVAKtul%=+IAxCVD$RD1vjlrM1u(J%D1Kefs0+zNXG0XT?@MA-s84zuDhuJ^`646&8 z8!|yEKSvklE<3nX+o$kmz59_P0B2rxQ`~;@toWa|9T+41?koxr{z$y~j^i~aPMj3; z<~<n8mMx3+j?QSSsXSGY24$qB?PQVAtta{f8PP(5`IvO8_7^#!d&mX7L01r$o+YBH z|FH&15ULr-MZe-A38@ZH=Oiceh#E;ntoncH6#9fLP$pbe|0IK|{Xr|L_Lu5V^*=NV zRsUP{zt#Ao8h=&e&tjZJqqv^BT6cH1d$n>>H~c=_PyTo=fB)*agj=2apeBM#moAN& zGiSzYUh`TFJ4}Vv)?M$4;-)*!2@kU#2J~)}l;n}n2@4YAC=rpL9NBn)lhlM&17U<x z(XZt1Sx}{a!|DS%fvf6Y)&4wj?XMTL3O#$Q?SE?JitRuBPpPX`Vs{iqOoyiB4oAEF zcV7h%3%UxX{bzxf$daGLm*HOc7ND14NgxNDSH<at<j)^Vw0b51VSKo=@ToKoFT%Vl zM1hG1IMU`b@MZt_ikH7a;fhma<LENhvg8Q!A~59i%mkiY82$$)t6@d|$6_J$fz833 z{G>4meITEV$74T<jf>}s{`xF`DTT`)Euj3ZYZ!3`2V}tNjlTZ=7(Z@&unT3aoa#@r z3_1Oa7RFuYpC5~6-W<(3{;jD=@4^yd>yZgyf=HL)sd4BV$Ns@DOSXP@7yK5gjDDx4 z7HNgV|G;;0@`dh;4hiIJ57EWP6bhCxAoY<AGN?B<s!|iyvm&gCNY3ixj6Y&QDCasN zyzC7lu}nwyITB<AoZAXLmb5^DL5Nhm%ZoeUn9rP7J$M(E>t-6PfWlk`7+2>*cNVc} zC5%gvyz8#S;rgt+*+3-#cCpw92Vag%c`)W}Qd^Tt=fb9VF9_5A!K^6=27b)1<OL(h zRNqGaprKFhsuH&{<oSq7g~`M-#ACs;r6ojZyh@zVb>6^j3np}(Y2iw4V2L)(1~d3k zxlFxdaAg12^*!;#HYd)+wv7oVw#|vvvF%K3Yhq7qYhs%nv-`>KU)NK0zw4@g(Wko3 z+2_0WUhA`1K)B@TlH<}qxv+-%UZ3{(QQy~G{$VDc>)-s1gB*uFrEx9ZyZzzKcU9bc zO}Y)uv8Gg1hGq=BDmF$>DEvU3&y5k$c*>s?@sHWsPx}$-Tzrab)Yr}3<l8<|;eL9f zDo`r{pn7IMz7nK)`FYQ1ei$x+H9r8HpqH6Au>Vu%_Q+y|n(4u4;t&z6|ML4W@T30z z|LNH?j%%`*M$QSk*w4q#qhc@&I<P!nifcs;q(Ho{PtYQ`)Clg-J7}(3?-{tEJhOM9 zQT|kb3ds_H`4WC5?SOdY>#<~0m{S6>J*qIE+e)ojI5eR0ksGD~=OZ51sC%zO(r}C& z_eveL<k!_w#y1<f)G|H1g(7#`=NXb}GG$nEYzy3Q$ga^^Y*S_ytd0rF0mL;U!qUIk zerB`~a@6NV@Ad-NZ`yHeA)}t5<2NXUTUR864b<mfo1588v<22e)$tlE-gkT&td<qJ z5p82)wOWV@)Lxg&Z$uokSRwO+5$J`H1=V?^SDgP6!3J9pBD49SbYPc^aB!i2Vz$H_ zKV)=v(|eKuw?g@BgI^`^P2L-TGD{FGdN8hKV*h5z&Hf%rl6*&io)Y!|MEitw8lnlU z5W{%=W$fv$lI5@c>Nwv*M<{|NL_2`|Qv1f#`)oTbBOZz^7(*WWWGbrM>+hbj3)OpT zL6LA*CSu-i4ISPWO{`OF9GTr^hO#p*FV`>1PbM>0v*O8*b2}%*_DosRUr=PUiK(P0 z2BcR$gz8R-b(f=Kbir9E4ENm?_n%Ol2`WLdYIWLDr{c&YEoq)(ILsaP)KVtcg@7Hv zxxW1al*ggJMS-D2Cbo+oY(DvLpcru<;sj^l^a>w7HRy${SrA*E-l9+b=DFo{xbVCl z)miT5NMl|h;lu~%w+`aEh*GD-{ZkF#5wkeh#AhhixMc26)T1O!rT>(#y5yT`w~W@E z0jeeG=+C0><sn@JOUK(uzGw5%mx!Az3j_nTP7T#RW!_~rfGSY<Ral@{M<uxASNVT~ zr2nkBP5U#2jCx9r=NEH9_s!;x17Er?TsNM0m}q!Ie14aI4inMS<59;>>ILfIa`d25 zVc!)k@m|`}6JTnigo4tD2*vhg<BWLCeuz*35c~dA+%uo6|Mz>AHEV{gtW_(Zwi?YW z37?;5q|xQz>JKG0^S8W9LR$%k<EStuTuS6jWKx3xO0pYR#{MWO<0sClLPyFWvBqRB zG^C<DbeMA2F;Zb_#yV`MVrd+=F`6kf`t~hO$c#i<MUiPV+&(W+ded&&D;8OJk)G9; zJ!diI!SO7wIg{!e!V+})uEJh}vAiY!S2~<%Ixqx&1FbI3u20%2aY9rUkFyDZg5JDp z@RFPAFbCJtUT!pV)En5_x~bVi%Jw*8ky*n)+bXmcNsT9laGBvA<%1~(VxC3t53Mdw zk`8J6-Hy8MIsGtVRZW3f9x-!H>$J&z0~{6_x};#b6n?;sTCB^iW}CU$FPlEDQ>}hI zYfS;g`-+?}H1cJMjmN)frnf@n46jC#yVwMTQLtIbxT!%bH-Qwyt29um$ruS?UBQd| z#hz?;8<EMuN}jZNfh%>9Im)muQV0VnCv>K@Gn81ghck){?%u#@h8!d-5>JPt6G>y+ z0^>PmUTA6$O=A~Kr#*_Ec*r6mR+*!@Fs`8B6+KxtEbQlck<+V9V}w0C2_$hVs9Q|v zZ+r2N2&Ex;T$mL3xwcpdJ=4+E@lYjSjM`+7nUC<z5GeFlGUghr`ucg!54MML->yk? z1<WT-RyudcjE~xDN(lwMo7`YcHDXR8meI*+g;={%%y)dXHOJy_sr<ibH}@tb3N2$I z1UeQm(6xyf9=f&T@)@t17s%46PFHA*=4vTBuPpry38+f~lmOH}ol~C!Pq#*y^;0g^ zHxsX_$JR5z34;o>ekEwdbn<^UE=Ph{*yDB^X!o^;#86<<faax)-I)A@AK|B>cvM{4 zmr#s-9$`y7O}(%Mc3jka${@>m_}08=L}G6g#|YTALc=jq!SeeVw~BJU3QX<r%2&;1 z;br93f(lGMXZ+e%ai0k&^~kTehgECaoY#OZ%s#~4&}{Syvok>RvA4@yy6oQXgy-P* zXh<XCe}2Tl>>n)44a1Y@`V86ZEG*S<j{Wj@DhN-CC=iWVL6*t{_L6{{bU+%J^x~nG zrIU!z$LlMsN#xd3Fst?6;MkgE>M#}dr42ulC|-l>k<Nze8lCg?5U%uj22f?CHpBlO zWdJEk?JW9T0p|lmn;A08yt?d)n~kGm#|V+P!`s4$t+wmUoan)X-Pz7F9M_|xh8!3H zN5{)K$tTxlEsl#7QV6{D+0{)b6crSe;u8599*^+TeBVz!LrVrm*lhxiZ^y(ND)-x# zOGAbXzIFsAGm-O1E%~d`S>7FtRLD1?Ep<wQA6<lq{%{DUUr%MLI?ovdFuw54nI#iE zCm72{-(%!`LGYq?P=+NHl!}IisIk}$xDU9}UK?dfY!);0AGF7Zl<_(d=W~}R5XbBJ zdw7C#01<k?Hf7X~7Sx+!KvMo)k6N-efpmnz<~YTl3D8$2O1@6jZ#OxfWt7BqN$eFK zzKc>F!o8#u3NK10V$DL-+#Ks9DEMZ1JnWXfX%vhpB`|;_eT(;TfN#27o>*k6trWl5 zqjW7vSRaU2+_D;|ms#&Qh~A|wcT@cNYPR6j{D{ZWf0$HnUDS4sU@4rny;8lY1iRTD z+C-P@t^DjuKz13|h=?k6kBo<`dJWJ1Uk#0ZRe2EpJcPyyR|3;tWrio0o}>GgKD)P} zaw9+YnDiBuk)50ZYkvVY>@p-Rc>F7uzu!MhC)Xlq{SX)iG!-mHL&hUu8ApEJ)4yoG zu6){4-3m*8J~$4A725z*c`F~EwpYL$4V5Jx7GCf<VLHLgQiWV7-spU|HNOs}UMp+R zx{6?w`8RpP81f=56V*Mi$zPEym`R{6I6@FC3tqAP;LQb-d$&m_TkMMq6wDutxaABD z0rgqX`wJmJ%o-9~-^3t}Ru1Xw4Y<89(hu6SO?DccP|V*9%XdI@{~*HID2gyNLPK*_ zW9P^x6j{vZQ2*RHX;+m1RiK^ioThX6{?qSnafEJ7%DxSl!@52*PYAesdzslBZzEF_ zK4#%#ct}Jj&a9yNfP-R1(LrRc!&>6DI~AX=qp5+L3Q@Q*UZz|TN)L3~fiwm(b%sAO zvFVRuMF!O1qMK@`4lt{dPJBkv^0Os;_w1bJh*|cPb6>}@^5E67|3E1XCUf0UHpQmu zh3;!A{!Xda7Or2Xl_V&6GHExj_?m#2C@*G=cfjMFFhJ&qMLClIA+sAX1WS$NvzLeG z?uj3H{oQt4j5IFAwN0ciz988>!sXsX@P#>vocSOgVoFphUIAMwAm^ae({#b!6XDh> z)3y_DL|<{sYM>2ty|8zYmrE)rpC%a{lU$k_q4CD2dhK_9MnJq-DgQylZe^O*#!A}7 ztnfS7$hkxP(s2o#Pq+*?by@;fVpM&MdMjqd+a37QG!Xz&F4Z_eNvhSB`*k+&Iey04 zWmTZMGjJs+el6es^FtL7HRlar^S&?T_0i3Ot;d}+OgH&M5Evp(B2dUE-TER?4@S31 z*mYJ^E}pCTYZjqU3|~q;X(Jn6H0`PXK;^4`|MuonSXRcLX5CDt!umXXy@-}PqjmX9 zBybEZ(<=6qMyT<bvQXG4^U2*KeU;e^bj=J-3S_v80`+!+1Uuf-hXlC|iPH_;?e+Yo z?%OV>-%M1L3?Xtky?&e<f<+w947YFiKxWn8iM=cQB;a8Zu$g<%-eZ$czJpLc+<flm z<u>Lfs1vC2q+eb%A_AIdfow|3p(@-n>dOF0Rkh`Eq}+HLiS`Em{V<xdg=a+En1+O+ zFM0ai&|t$0PxP*J!UTk;22Yg)M1lBdz<g3zQKeeMX1L2D-NLZ2uG#tSi8nnJpYVVq z#qZdczj<&>)^&7EK(Pz^Yu7}CAKjZOgq$7qE}pZdB=Z5HJ~7No)jugoF{uRxU;NZ> zS7}51`>=5R{~#@yb^p~`oV7o!*+Mn=oRUYAjCxeOb81VoXleJdYCu?!1)j+CiVn%L zDbH|dsg-}(Dfo%#ix=;NmlqQfGumD|mgim;Qt|DV<X;R<Oy6M08-74nR?J$cs5};n z9r_G;&edq3hgbu}fRydYn974usnLL|Ee2j^3D&v3&H*9{8?*o=x}TOZH2+RLr?D#} zF@I<NkL(E<<0C}8P&AZbtn{lLsP_H_zC<O`&ToHp{6yS`Z)ati@#Ubqbg6ejlesEa z|Hxt;afecV;k~Qkxr0(9-jV4VA9ZO}90(AB2?5rU9*uH)wA;b0?n<$YFuKshI+cI3 zC0!yxJZ6j#e!uV1`t#NFYORaA3MYp+ht*=TO>6DbD>!+!;GBaeG8F3Bj4prATIr3e zu>`6l`jbtIXN@;xwpsp4iiHg{>n`yxRcZN8`5c}q`nnsYje0Am`B@qXHKA3S-Y}5- zFdoWJ?#7QwZ2+efrwUb%nqmof|C@gOZ}z3CoA2--%MEg+XagDGk=7M4@&D61qwUnK z#P2P<W4u;KLhL<mxa|}pVDsCdi`7t^GF$%Jk$w_2c0GGRWRux*KyBjuZg(Aba)O6X zVR!>*Ks)`=JsnUQb8-e?%wBizcFxW5vaLPTtuX6p5;W!typYcK(pbKLtKOex+G&Nl z21ft+zHRPl&-hARw45t8T&59@WTa;w@pZUA0G!`l^Bxy_aq}2_L$^|&z(yasJw}Qf zY#)_vkH4**2V%1JYk5(JOc;+WswCwTdzvQzEj)ft1{kFNYoq_{!Z%Ioy4_<pa~n(* zHhtw>yDw;vGiO7%U<Z|C-gHleO9ElNHA6Mrw6do%J37fd3>CJtb02lW0~?V}A7w5> zQ6+Ch3k_y9co2IH7;pk6RB=(ylJfVvf=df~w??-SPrjSEbE<&4Fm084djdtfF{?&k zQ-S-`SO|qdCDoeeH2R4U0mS+q*&YTP?#r31Cc(&sUK0Gjg2Lj)vb@8?IkEVglm>k- zh(Cd5^LqH1|A0kV_e%bKrU7C!m&)GsLUae_1>**$0p*@1=vp&>X8&3JT*RIvW7!#E zc-b(3XO$u{r_d3pfnl+Ma+~y&q@SbNuf@EvH;`0JT%;sb`<jffGuoralKc&UZw-cW zA$ECnG%M~q)^~T0!z(H_(H^&fgs?#Qhve4?VC?(uvA!xx5IVxUP9sHC8ltuAC9y{R z7ZoCWG^L|FCq|>)mA;s*&{Y0qnTmKPnaNvhRSaV!kuF@s0n~Q59Ixd~UMTHva4+|Y zjJ4yP&*{AKq`(RZNOTl*H0IH07m_A88>vDTR$6i{1A=g6_^=}CUo<)MyvQ!}H(zs! zwRaqcf0rm|31(Z8??|(7*g=w`ta4+ox2^H7Q*8%6FQLvvt+sC9Gp?zeY_d{{g;l+r zTU|#un~q2+dBn%zT_iVXl`!zCf@#Ht$c98dPrT~jU~h|VrH}GgLwJdYl+u95d;)+B z8V7z7e8*?wb<&{5eR5zm)3~6FS6Dda(OB0axf#3vfRypZ^b%3`f6M+#u)3P^LvK^^ zD~r&lKvgw@X7yQ|*Pt$E(Sz8niK+7E5be+}6<A7Mcm`NDgeg&^za*K@Y5qyL$sWpM zUMduRy#MGd+K`-Fpe5v}GZ0>A?$?L0Z}e~W2cbpsWx@?bmC!y8lFk9t;P_C`-ygzp zn|Pkwmlz}4|4iv>a^9(Ce}37$b(!YN0gp7k!#VQtKIR+Oe15-GjvJ+R)l=Jf2=+W8 zJuKj}09sCKPJ%CZypuon+VF!Cvm@41>2qPa=hIwmivX9Vp-`|LCuiWh+juJW&orBE z2C0~Bj+S+2RQxOVxE%L?-&+2;y2M!9N9m*T(|3@rJRZkAzoz(=07jGCYe_n_t8Zs? zuLP0Q-@^3}Uh;k7tKQW<#z8Y3m)OS_`)!4(3e(-tH9Vvv)FfJMVXQ*c5bT{#h23E_ z7f8-IK%_jbFq>q=Wk~J~GPkJ5vU1fe2Qkq1*H|_K&BK{Es`0$i=-UzUe(DUNORUo+ zbSqBcMlR!i%7+D89;_4tj%JzT*YuG~Hls~&eDArRmT9Qc@R!Bf-D*#+y|yF~rSTJD zt&a5oW369wq|_K3I^NaACuF}*^-jX#hv;wj^rZ}DleS!F5ONN$?C5GvjL`<Z_V3}K z=iBvF@f+6?lBH}9H(6oB@Zx<D=`HoH!d!gtXM)4L4%yQ*LL2&OE>0vsJMH_0=8HF~ zD33jXA&(BKZk7{buZQf?Q0lwL+76XKyAL9JMud^QYW1HpQY3LgLKN!n-8vHt50PG4 zY)t#|0u$JBpqL*#O{i186liCjRYsTSM3=I8WNIMq;M7%4jq4rqE{<2cvfOXqvxrab zg_sUyKsY2uFg<io2Q!UKC)8n-KG4yPbE@?s7>-7pcC$q>Y@FGI<JWIVpA2~ZK(d77 zm<&8BxMqq<*+~0*1}w}U#vVB4^BZjBQtobpp_ckY3w61P|DwAh25mYY(TP7T`SfXw zORT|uf?KgL_CJTb89Od?s@4o;4P8ow#Ug7^lM>Ez+=4p_JwGZzaGQzZ0N~G$x&sk= zF(L=L4Fi>;#2=iX#3UJ^rRVr%=#PBxKov;U9=Y58bEWv->Fei*<Nv&vN=Kjcv7t}; z7)h_gkqEXtJ1zkpH48!T!3@a@ei1JNg`b}EbP!TF>-TsxI?Q8b?mIpt8mm4i13yAf zqNeY!zXRBrATLcYK%J*q+Q}a?2jGS|L!lcdy<nvM4y}9&4RR@&E=e6<^9I_ZhEZW$ znv^a0RGHJ2!*}7_*Ol#7+FI2#irRRXYQ^1Li5JI{sHNk?SIu5f*K<>-YINlFtK^33 ze3fZo+BVKiCh;$C>d;35Eu+teCN?!SbVzO;pbCnvjYN%K<&2ZW`U&qM?bm<oGsww3 z8EsyvMJ)LyF}QZnD|8tT)W)om9~O=$RPz3zFpqIE@U)5kEB!|tkmZJ_r8hH2y}9>5 zL-7m!3K%P74^6!2V@B346O1*}YXyk;Dll*&z7RwrwQbB&Sa(+!@W;Eb$)f&i{X4Ra z#GwOPQGlUQyKO_V3tJw{N1;=4Pi6wHHvLw6ays<JO+eoZjR+!N^)a=<rerwGjX)Un zp$LL%`X$SZ74J1${~@yX>2bGYJDKvF;mV<5dUJ@2gz(2S^(NdKY@x0+g{d4Kw||iQ zHcWR1E*(;*W*V~|8oQD(#VZbTTq0YPH57tQaL4oSFzVb{;ZRvGyZeORNEqo|(a(h& zBmzH-_1^?7k&IyiNjiqQzkvy%U(?04!>jWaA!9`2Ae3omZ9?fu`2N_B&O)S!{SYe% zfq*M|^)ke>yh;=~CEJD5B)_aB7Y&SeGbg<HLKTTSnSy#1l9(h%t#q4P-nB2Q8_BYj zfqn;Hy@N66$}TJ^5{Sr02EDu<lWhsC`06g@^&VqqPP11ob-PCH-yA}djlgVVg%u+Q zyyzhhLW{BOGK~f>>8AA$ylH<q#qDM6-!;X6K}A)d{loZE8-bdY4sFd$Dvm{42!^IA z11*usTyizRa#xdV_y>xYE1zLgcnk$1Ro<WOCf|@ECW8dVp}oR;{XZ-6tx37J7rxP! zb5vLzf4S%xJG-rtM`DPvH4VJoCbRgNAH7b0+253GC2TLb5%XD~wK~lW%+W>J*VL@# zP{k&3*4MuOo2Bk@h(>(jJg9Y5f6Ee+rb&qIz5VQq@AdZb|7d}M@=O~yGL8DJbB=T> zOW>-@ieX`^(1U!gS^aco8}<@zE2K43KT(hSg1quI(t|ylVa{HJ%KsCqRpY6Hi!Az( ztFqwWOa40`j=b`KlFn*J;(+6PXHlZi6g7nf0V>p4yjL!6#?Ptm=SO4I9%39u6SRBq zyK&45=&^YjA<TQ@8g$}IGIT8x-?SFs5{cU|m|I8k{5|yC=E1`wTX(}e2b*BrRvUC< z{ZRn;;%=WloEV3c=jI3S6FnxcQk?=`+mVq)JGE-4M&^{~t*LkyJS|hWH%FTOn*Hqw zlOB+$t^Oh$cmH<PMHcsdV+;hP_tM369XQO1E28aa&NIgbJY>ukmK2U8`UfWoFlDLF zJJvTUo@|f50CwUs)3AA;cM6zO&=LK0i)_bR8a|e{<VpghS9*K+OJ+#<7`DQN3|*Kb zqYdf6x9H!jlcetf%3!9qBmRA@2BX&PUFYeTH<Qe*v4)-8|D3JD@iQcUnk{s_4Wl6B z{JihqlZpSl&y0in_#Nm1_kyqe6JxX%yN~c%=UN&zmrXx){dfDLsD6}NfZ42ldfXXw zwmJ5(k?@{q38HGm%RH|a)HLCHI{LVgLjB22M1)_@2{8e58kAjJN=vX736hJ2LM#X~ z%i4#s-WvD%4&G@ih^vrB4cM!e4M!%@l7P)L;gQT$t%4zi)Q*Xkx;o)BM#H1qJeI^9 zE%T3`yG6|L4`pVIYwioJMxq<;<JPS8)%-gA(y~g$@k0%sTd^Vi*o^3mVRR?`&f$2! z{s~Ipd0Rn+eFy~6?Dic?X>#mx)eRTF8|Qy1=(#<Qm574%VBAiJ{y_!#n`e>G*=VC# z6xpeyD9DMMarak^$T918FTx~G7Se=~07=ijD2JQ5Vkcu(QZciR11PARSl1vAVoZUs zZ$`!&*Odu<LqpKxeH;mq>UYMbzkLrNEEC1xzJ&JsQ>O)n3w-^ewN(WJU$#Je#SyZ| z>YLFJ67Nf(t$It^gr!8lPa%bKpl^6A%LZF;Uphqm&GQ!=K}<r*Q;qTCtxrQ+u!1Xt z+*puh?{y`bR15!21*!mlVD9O_4tnugi3LwdILL*q?sG9PN2pgQ-;u%#Z~qsj%$Vh> zfbimE#i3jX$oTFngZT8LW{Op3M04AJ;ezMw_;@7XEc&5P#&FN8`Y8_Oa*|*Pd-E*s z?d>k3&;J7gTF3h4^YwTxt^%tLrs$UPNDS{%2WMT1a)R<>RpqHRoz}m7e6k0ULf0N` z-lL_;hm=XBlum>;{q?Q%IO|7yxQ#1;08X%Mtmr4f`_rhJuQbN$^eLKmiR)d&s9tf% z*-AWAT-9&n+sQ6b-QUnXHew>BgShVbzTbum>N*d+_jZC}s-qc+qkOo5FoBm_qJ~-7 zy@$y{M<{_;c#@dwJ#1ng;s&FTZaSYhJH}T~NT7lcr$?!;A`8Kz@ANCE+gN$LSL@2L zvT(ivLhUod@%h_53!P19Kqiq%M}uW45JTT6d>$?dDEI{+@F`Nb8GgQK*nWgIFFFPY z2sJ;IhE}4S8m`A(FYm>g$+qL(zAL4H_cOr^i%S&%xrQVVbB~96;hdX<e3g1_fk#?8 z6Sx@EDw8Md_uh)kb`&tMpX}pkCu+%g{5{DU+a=Yq4=79nZg+k-UFi?N+1;uvN{EZ{ zlkPW?7)h}=X^nmGnX}#dRmo&WDZ~4I_nz!&6;w^B$XyIL0PJ=*w&8C_XfS?1Q!Aut zGw++S!Hi@53;RY&lDB3V<)vf#iu|sOUOBP|Lewx^K{sDTve;u&JL-f;p2VMhSs7Yv z`x^Oi=!SjIdB6%QWA;YRo3>9jH{zH+dfB|OGv_H!-Aw!KedngI8on+_h#pLt2&MEY zsfIY-E*?1Kx%+(&`#W_TLV6dG(lBNEST9`lS&tS2{llt2hUI)c)(?^>*}R)SGKzRX z59D25DxRO?=VW1+)G!2mCOeKKiwXvxW=va=5d_8G0;^Q*Qn;t0RqiH??Uss@d=FTh z9hY;3MT;!2`Ha?VNvyCW(9xn4vEQvwhjC(%t<k=PU{y3)X@sGL)gjT5{P8c|lV2%- zi-^&Hbf9xWt=}(|_3>(YGyk&5p=m9G9^oaHoY|k=VcStl8CBNv9i<3o7X~}rnTS+3 zgr^jZWn}<X7{-CM<brqRMa)f*UspMGBn%r#3r4AMmNGlL7MBmFrSz87KqN=GVlp{* zjA^&y%}?*94=Ur^+0xVj@+ylMRhjaYCXw`e0V=uvqTiv?yYdsJ0W}FuPkw&gI&6t7 zg=Si<b@WOMCdnu+2g~aX3YYtj%og&3kvYJ{Vo@kNajxXw%LuXG`f2#l=t)mOfq72> zf#C||Bp0;@t=c4+h3~ml93tO0A|y4xe2mAN%Sf@djhW~q$G}lSA=%#u{HqqnoWt%b z%}#}+&$M!nJ&k#J5+*wS*oz1L;qIcenST;B|2s_ctc|>~x>{j^znJ$U?KA4kwkeW$ zEP{d;TPVNlSxeTF8Z`+qNp$*u5}}F_?cO=~`vHO&j3Rn<aFsWmae1xgexA*{G^Sim z0d`4aK282i`S2%~0$L>&ywu93Wfc>sYFPR5>6G~_0z(;v1b}%T0qf!Il-Exkov}Dh z4&s1o{Ic5=|2O==->h1)W$k4K?<~R&uOo(g<M>a~N=+l>bNZ|njdTqIi#aA$vVXo< z7oKqNEt_3kwhlvf3zV7PQ#V`=7ZLvZAu0Wd#JF7cR0b#2#BQ;)<gjS~sr-!pB7Xld z>&4op;ksAZYk<SO$;;d!X?n3JXxi)N5gDnN#F6YO3UCsge14;H9*Sw7(<MbO8ai&9 z;)=b@yS@KsqUwWjl1cis@k@TvTju%4TdVVc8@uUU<g2usp{~M)H{s>9ELXsZ&+}H> z<<a_noVLf1xO|#)_m8@}Ro`^at1bQ!2|l}IrjzJ8otcdc=VRZ{*5P8t5P35n3q$N< zJzqD0fAk>~)I;o#J}MV2+9dI+N1xBK$6)p8S`Nf_eUdH{oeghGOC;AP>AMqT$|_a_ z+`y|h)8UKoL;FbCEJsYtP=E|b#C624(IGa=v76$m*HM%~RYrIH+4Ic6XM{xe^w2a? z5{p4XA5lK&#Jevnu|jMLR_HHL%C0v?b{*?=?fPDU`N!ORyRltkyMa@SYuxy`BkM;k zOp@?nvnEmf^|VmXv}_F0MZRmq!Gp4%+nl8HgZ>?MB}?i$b*BLR<Em*T4voeS@V7a? z`c7sYKCUQxZbHmp)R`E0<}Nl11}%bQ4}ZyvUTcrZ-&_={IMZ*n9YPL`3~z;AG4~Ed z4W&xjQz;DEu9;2dX{pjja_j=&JI4>{_rv*f69-ZOc@xam2*IZ<{@l`jKZzGaa_{T- ztZOYYC0&IrlXJW}wzFJ6w`{;%Dlp$^QI}?D`mLAc@t<9BeF+hRSy$*g?sP6rI_UB& zqp^uus>yAr9NyG)JdJ-)QE8ijFPn10H1&SBAkjxyi@C1jWWMd_$}4KVKMl)koIMwN zCOuoFVE5kk195Mf7j^J~y_WX5YGi7mY-E$z)U+b5@nXZ(#*Qz_oW)sKfm`61lL?7q z{+Q6g*}GH#)zC|P!+k~O^p_!rn?2ULU5pT7FmA>H9gG2hwidh~>AY$`T1T><`$x0O zGcTu*9zL<S06_K817|U8$n<Wz(a|LQ+xvVDlp?r4#QaaTGb^mvHnBzy3~kzau>3r6 zd5T<;O-X?x+3*L%UDZKZHT{h662H~%yfl<9lRnfr(Llk~%;adRuW07PxI%-!&COl9 zogJ<lbboZpJ-q2{{SV_q*Y6;uVy^l5s?GFOVSr+weR)6bL@mdbq*2sP&_;WM&oVKg zd3dm5-Vms9AZ7e;;<Hnm(VQ<`jWnFW*cu-zMXTWpG2rF|6m(wCE@AyQkG*c!Sg^G# zCLx&i=^k^);ib3OcK4V}RyhCEpgY`^jWp)A+A17u(n_(XfJ<}V_Dfe0n{J98e`VDy zF+C3Dtdt{_%|s1NaK|3^J`6QvE{KX~19n>44wL|~{AuMVPh67ci~9R8Z~}}T?-iHQ zI7W`6+w3Rg2{%DPEE<U7mY%yXQUA#6By;H|$-xZ!hd+rj4x)8=Psb_RT^exPVA*e^ zbvCso%(pBqG_VADloNlVqCw`TnqG?}lIm^M?4+8K<s*l^J7wd!6&B7Edu}H6%I5}Y zY9kjvi15qbD^_nE3VpW^9wRK@p#3%O&zUpNS>@ap;r3QhCUrNeGM{OIPZTopT#Tg< zr2PETJChKBSVJdV-e7CVREA1TCn>pSksYP6NYF~7*h3E<H$(Ka=;H4;-*>{Sj@jxV zy%-q0-z+ysm31k+;x}w|H$wET1mwjkNb-GS_4DV!7Axj$E({MtNZ)_nKyeAQKPKoo z<N2rPHJuUAi<!=P%u_(?H&=~!w&%oGbH}N4Pn3$Mgamtdw<p;=p{rw<a)lueWoSkv zx|->&vaj3>s%R5of9*XW<sfTm$UN|Nn7<3yLz-z!P*G$EYRpgd3NYAn3&q(cdOPmY z{vMTXj9?(UPfT7cDb;_fhP#AT+z#Oog6JD1Zr6nFAO>x>nrZrP0)q^xQNQlCMvVlf z2ygy7q~2j3>yAp`v`1Qz(Ss-r%XgG=U;BSeDE0X@THop+QvVD-%S`XW^T`DhB~<kw zdyADR$5=d^oLEIlBH|9!`9EiQ?)EXy^4Ce#B(fq3NyiiD<28Dl6pywv*$9#M{7$t_ z#LZ({kTp_&tAeb2B|U|9(^;tmrwS?4s9PWGPL~k?e*U-Ds_-sAvDYUAbOf6x6nV=T zD&|#DZ#J(uldPka%WMX)i*SO=UjeZ3>fpK#)d%p>^YJzhs0iO6ev{8`bUd#91Vp)) z?aG!pBp*Hsz39J5(sSYCe8Y|!D~vODpU9)M7vIBoM!HGGueg`4N9ed}5&ujP>B0An zq~~f@W&!>rrT*=V$85cOPXO)0S4_b5vVhGcLD_k>?9QC4OV)Pdwe@<CY33szQZ8uc z%e|lTRrkmUA{TiMWLrc<=*>&D_`YutkxKDCkWe#n#*(MY@%72HaZ}hDjX5IX>g~~6 zt_ziC4m5Zey;s#4o7BtC#IxrG3@VBWJqpsx1ebccy`R;x@8$n^NOFOUe$FLSj3a(T z^9O!3pFWLDFbNCfK2EFUAUB?8L_C2kEPS8x?a3;y3!fi;wMKbt1R4t8<b2Azy}#2P zY@ZHh_-u9tgT0@&Xy5lpUr3!_`k&9PiZBiGgIjaZee8T9whGjXF}w7E&l^R|5yJj< z0DLC4fb%HDZ~gpT@5w+tEIbs$XewYQROu&3^4SnDgu1^L&!q0<r*)Fxvj^v))+IdM ze!ULtN7iqnADj`oCIqhG0=hhvu*VP(#sO+woYNW3dPH5s=B(MELY`k>`+faJEcYFc z{U}t1SV1==B1(Ku2bX&kU?^rD;dKU#TmRrpg=17j8J3<bGilqEpbp2182Fxa<gpVV z*VAFvPTSKGZpJGBj&_K-CVl<m`J`mY-|$QF@gM;_5&vrXzGDhESo|6H+3L8aWb!5` zWZYKw8Hec0kPCWTV8Diq6&u|GpJzJ1i>@PNip>JPE*^be_WhaX05IKBON_sk4kbdE zsh#XGIW%6@l6=vR>NTIv9KL3KhMx~5ExV3NueR9HWzElZcxpQ?xNN-sAV7zq_X@6I zD0h!E7vWXdf8ffQO^H&-TW3-D@g5-dxeI#rnm?Xrf&Q&lJo6n&ue)GIEKFyo)Kzjj z7!W@|EzJKf*~&ofmEVu4w*CFC0kM-BQS%5qyg;?i?LTn?dMbZ0XT9up?pcfcu%<Z( z<A^{q>lw$J034tI-z}xz_pX0WuEfXHz2EFSkMVn?M#|jKpXANK2dfeWGGUBY-^I5u z8D3hE=O@?VI7a48^JsK1;N!kOD7+ci(QV4((`>|V*Gs?SF^hqQ&4ERjk2WU_W3utB zjAnTJd3Y;+J2C$bbJ7V8;lNzXJs;J;lJ60%xjc85x`VbeI6@6~QHE1-?1t^UqwFG2 z*3u5Roy1EupH?~b38lCk-H!c!rHZMyjx_;GV=bWr`zXy}<|`gSl#Qkza|mQQ>05*V z3?;x(nPex9;p-=N{B-?ou;3U?`U2#9b#91}<@SezfOS76euT+Uc-lHg&sv}@#$zb6 zu?PF@2hNdLUd|VP7_07yFNVqfiMUEvNJm3<mUEMVyub7e!nc$Ed>MZY$Gy-wxP?|> z_hv@qH;68P!TeingL9wx!cS^Mqu@D+iTR^=_)onyR*bb=9+LH!KI_6$Vf2J)+3&CC zzu!M<$>cQo0=|vH65%(pn7BPLM9X5*bSmXPYplzX>NFGH?c%eWJUaSg*A(5uk>WR0 zo6diIB_PxS%6Hq5kjGg1@yy3<3ddnNPbhk8Rxe?Y(>};|n1qPJv2LM7><&kF+!hTJ zQG8|SL}zh5?2W+|As8w~kJNA$>1<B&2jNRmvz-OtHO-Cqn%t|(eIuG}_(kLso)}JS zuoIjd*6>wtk-t1aM0(3>CH3k6m$Eo?Y!dmRGiVG-Ao2DL<>)oQz4Z^F{L2jr+uqJ4 zxbcZ3APH*;1kP-?{$=73NCl_jf`%<hC5YZ9os=I@NUp>Zumc5+ML}H{RW2Z!6a+mc zi>3?>GlowICrjwG>a;)kUpB~9y9ciFa^6WTxYozAqw{Q0*6q7%PQ`bt4myl37>$p` znj8<QfGT*wj9;>m2I|odR>!F%WF>%gNZtDv_|5<T6**@d<MN8PTgrHnx~?5|1k&jR zI*r&5?M#x6<;K&mB|t<{3~!`;-_y}1e~I9hA(M4&3Wl%b_PbaVsdX)4M}g2B2KBlI zCjq!xF_MAUo(^}khKHdzip(48@C+aHaeoTBi~`t3q>^c$Qvw|&U$(f(meazPRR+J- za9u1Qv`@@*32eOuG9FG6)G$Ii-!ppR6_Hl|xX!Ch)&BKBk=HSuo_sV{rr}dSk+PBR zAA$Nj){<7$toy%EfPc`BQDdWWKbaeVmEf{1%gvf$;U-&a3Jz<VuXmCD66gYR189{% z!$-@e-k6`2K<459NBYB$$_e+$h9S8V_5lqH1WG<4BI@&qv+fkiGlrS<u(3>h%jl6M zzZXQ4-WgO4q4~=7A#>4so!c-_T6K(vf)|*)A_`~AJb^qz@A_R<Y8<hIL~yJc0ywXz zIeDw^9q19o?s+S|FN(IzVcdDeFI=^llpZA1v=<KCqI(;R75w|1mg$u=h9ZowfeY+( z@zySA`u0PE{cAAY0<Ke|IDL3jy2GE}(szk%X?T4hUshlDU(Tc8^(E~Z&kY)`dq`a| zRtcRQF6ysW3z}7eZxMBW=t88P^wbYyGz^oJQN>4+d|d#~q4<nQE+j#*#rWDnB%n<% zBmpjES*w*@e)RHizK!!KR1H9H6>et$CHNY40GGsjm~VbeLLJVL+<P5RTf|@w4^(Xl zbTV43^~*0(kQJ2JeJUL@W0;#*hqAXP+&Es-V2SFdX+POTxEGnJ*@%6UDypYg!p_K_ z-o^k_@I6Jtp2q25P&#(YHh<4+D)V4mRarO30oTh;rRg5ONBy1|?MFm|<M$93V9fu| z0yy>mzV)3Z&5NO@BiyZ+DW~e$MaKo#_Qx_bCWDP<%~;Bx_c`;RQ$h{PO}w{QeF`D3 zBh#>2?v==R;`e5r3(RZVQ*aQ}HgU4>?VV>2Rh{R`$6uCJ5p<L^<efqCfL;awiT^W5 zX$<y0+8CYTd|S=(zqkM)MTU{#>9=b_AAr@mXJc;W?EEyZ1*$K~;EZ(dV5l7`_~$e# zZ-WDNy@+YaW$|$xF%f^I&5fO4ueGo5Q(XGHf?ely?oNR@pyStvhu+{@x^ayjI@Xii zy>zW1<OxE-p2^EfW^uC(OHKS)mp!m4$K>|FW3VCW50CiiHn3UiI^sOWwESc9sp!%a znYTg2Q0?Wyc@%fAkuco~fOnngqP$Vi&U%yjxk(mYn8dQQTE>ZPb?C-Ph!ZrOc`zO8 zR*ZSG$jZ`e0zl}tz$v}TR5K8#D^`F0^YlHh>Z`W|VQ9l@dr(zz(G(8pjPlwy>jg{p zdh&1Vl;}}`dvWsChv&Mkrnh%zq=eDU)I$i@YlLoiGfzz2+;`un4uSJi&M2QJTqCCE zhaA@MtRVkxa3If9=b+Wu^Q_X~nhqrWii1EE*9;|0$5c3oMyPcgE|lz)`*&{?@e?nN z1;O8pSf6|~5~;qshZ07v*ls351QtHNZ}c5cA7;|L4gO@VEbZ<W{yTvUEBuM+nwyv= zo!F?+{Ed8Aqliu3-X)JCB6O+{%zF7pMR?~eR&^l%7fX^OO4Y!P8;t43+I~}XY*8Z2 z)*5=~Z+d8OEd`>L=P|#m#X3^6#i8!Rcd-L2EYCb74G~21IFJw{L6?Jt3J(p~PD^F2 zWzuogxmtGpl)Qy_*Tu+;v+7&}2cQ_AtH_aQA^MJC8{b0sXW!KYEs0SHIrlz1Sja#0 zyi%@7NfoR2T`|%haVD2`dn@VVzvFPNRXIj0Y2o&hM?!4X+P=1^U%{-;4z^T5U~YVA z_?)6}XDd_>8V9XZRY(y1-ZD{<_jyfSW;Pg==i`doAFlG~N{Z%7K9+U<ofyFz+p+hn zO#;CqUP&j2+ei|Z2Ehel=FwB`RuJ-K%ejeSPvwTk`ftcxSo%=dy-F_ekv9$A>?%ZA zl^ZfSt75klHC`RE(=ujLf;9K7BJkw$m+OOVxs%U@T-Pn3f-=uTA#z#L%}I;C`DE&n z3N<B-RhBC>-EFcIei1(;TN{xAT6^F`3kHE_cTALSO$>!F(%0m1QB8<%(SQhggQUAb zS$8?X)(|m+xdmxLDl@X)+ZN8IoO-Q`m2gIasa7_%($T(3iJkch+frz#c)bG|$#4nG zQN^H_aZv^7&bIlpifE;Fo>D<>&NY5#gCOHRp|8Tm{U&=2j2*|165=SV<7gW<u*L_t z88>P+^?l-FMCO@p9X0?J6qwL01VS}!jStexyr7?-V8^#*Y(HZ?YolfLC9o;`B43k6 zEa0=|YYToljx37L0E-41AIzmY%Kzy-H6K8Atb7C0;C!H^N;mGR{Nr*o<Qo@3*zXrQ z?b7(u?(6yI(*3N43v_OYyGpga6H|YTV*@`;q^^5AfjePa`czy^7kVf^%&(*GE09HS zPn5i&iwb$#<yK$)EMO57Am<%lPzBkqd=)V-UOCTyalg}UT}*b#kmADSfMtM-F}ZI{ z?0FIlnm1k-b2OhR0UMZ5?0K=rk9zC(yD7gC31V^gnvh`_)*k)|Fy-|@BO_Z=JnDD< zv-;5so!fK?;k@T~9iQ19+qQF0I>agsCMQq>;QEk7eWIj41wvd|>!P)SRAhRCcrx2Q zpbJ#sB+>4*51ZnqIn2a%OjYxgZk<<xJgqx#5q_fsNCR<!P3Ll0zHJ7T=jCHf=SKtr z_G_Uf^}h&))0N>mEI7Z1n6~qm%(<@14W8W-(>==-uKh>SD>5FKz&z)vyt|&~X?PQ3 zXm#6VQLP^mhI%iQ73Ardg3jWu_*}vVlf^Z+-k>nj5pPK`_PBWQX`j(-40WH^{^!5B zE>|+(1L2D(>HS1QV$yKp$0?q-THO5((-ydKaCr4ESAkuHSGhj|*zaZ_PLvOGfnxjd zSGSudOrLH>x0f<UToH77-zTp11R8QBFF*`Cq#wNDEi*B7I~x_~W~pZ1hf++9zW2)O zw1o#qXc$$O>tuW{<gI-n3i+PbqD%C6UIAld;b=-e+Ir~0C<JUg-)G+Z6SzgQZ)PWg zHg)8<_ef&~<xg&5@xGhFuJET68-S~L8P6UsKpiK1`QFyPip!q+CfQ|*g#@G<FnUR6 zResRhT)@?xsVIqH{&<~xZoGdlVV0fon2FgY?G~2@1+NIQkuakzYHqG$0-lJwoePRA zh{~4$Tkf*vKGRI}X~nLe{f+eu^X5D8fGFUF!XZsi-v7{XG&ej=RFpE);QY>cY=Aif zbO)GSV~9L!+5a7GVj*w0DF86Oc&xZf1~;QdpIdGa2@Ag8JcF7W_g@_yj-I86@TCoa z={P7ne%g5Rpz7xBRp5g<5>vg7g77Y8!&<q{1>lx+ALb8Ai6MCs<MnH#>rae_5_%F@ zUC?~%UUg@&>8eWwn7P{Lr+`ZRY|HO#<=;77;PM|S6Jo=n+y$oo-Tz`5-L?7Mg&NVB zHzl&jx=&~LDE0G7FFYs52?ux4)UEj6SAa%aI^&tGdc>A5D6)&w9|uuw+ixjU%KN$7 z6;le+J)mt{{G>797}!tb{odng1j&BR6J$Lyq9UD3GId-R8y_uHy}~TO?7*1q6A8Z+ zex~j;HMJK)NE)f#{cFE&K`}D6iJ)pf6mft5vy~!hIQr&%*$9Xr^*gL`UOZIWKdW;< zNVfTG%}DiLn&x`a9?OdJRGScJKAWrrlv4o6;6)b!AiF+3;>D(LlA4S*=KDMF4bkW! z5DU`}rP6b{>NAqfzO(<(u$X{nV*VldaUe5vpgs~c2Kysa9?XO}{?je~F2LKz$F$`& zi`8^kLUSddq|h3s?ov1TEJr7j^P`r3ui<Vc@)4+`Vm%Teh5jd;Xkk4l1~u#NQ(&K0 zP%d1n;i+%msTg1@p4H1P|Mfe8f;2sKQ3!?R#i%u;&=5P_di+A)G#iohOECNyN*qPZ ziY}rJzmDe($fG~AS-c4bYP;IIFED@|apY?<=OXWfaSNgl7GiY!E6q9VjD@amF_gR_ ztMk@un(xjvE{5lB7yXTkFd6hB{WwLd09InZzO+D3`h4a$rvY-}*PDM)Kx~N;yJ3HK zjm(Y!H}fpUZ1;_Iiotox54Eb7f069@oSKz`JfRYO_ONV?uZYrEuG*U#Y2l%is=4{U zojh#TC8Myue}GB_?(=<a4{ITeByK{AIIIA(tj<ucwhdG=`EQ|=4|ErMp{{$~hvb?= z4WO}0ts}()mLk+w+r>jw1qj#FyPpDTpvwbn7hkbit7Igx3RDCoj!_M)Q2Ti@F&h>_ z*4tJ|OHFCllV73JlfQu*9CZp<r2yI(Lhf(gZ{8-g*%MG71gPV4%PD<i{I?mhtdn^X zGCdKvYNN)@Z}MnKjW*zh@&5(<EFo*^oh4MYogunOpuV;ts04m(;#?#iQax@<YOe%n z#1a1fKYmX^MSgtA)c?#^#_Y5`|AUsj&)@+T&Y8ypSNcNPSf0(^$8HwHl}LQ|NB88R zkcYTmJ76Z2n{f06`TpXI4BhFGa`L9(F|tD3li^5+Lj|uQ@$O8OQA(1O%40=5#`btR zlG9!Rn7vv2KVtPwreurW1x_#XV(6JbVnGN8t(KtWs)BsO^EqA?$)31xzCj(ecO}%Z zvO+)P3|%Zw(`RNy3xTXjq}(%@2>{QoxBTnjk?ogZyv@YOG(ZFQNN4LZJ9KK^5^Tx) z$<QR9wlCestZi;|p08`LR*)p$rTmD`)5aK!)k6nAsk{?=o!R3P&DSZc?v3F1F^nR0 zj{6#UBZSvc!+A$tud?T5<Ice|Ot-%?MlD*V3yc`?w=BIS01B3Kvl;1;Bivg|u*<8N zA}`FCgjC?=m(-Qi@aUFtL?ODmDkk&jp+UgI>dKH|yC$epQE-wzWOiE@;3V&RxH*B( z)H^&VmB-JkxH`Uu(`y)?xAC`w`zB(c;9b=}97OH#@v7KRh|o}*syy&B?QgROQaVx^ z1NFHAEVQb|!Z89?$CrNP!)QF&1puZYugmX!+h*eZv%G8K3n#75D|eXS0V!=`Dw@~; zlO6L&K9?bHgXuu34{<Xn@Y5W!n^dBcD+BiRx@mgIPtf_5cbCzZem}lE8C>@A#?DtB zR0&jnhj`ZH`w75iIv<TR4%W}(5~bWu#kWFD_{3ND(-+%o1OJHkA`|g@23_iIbi-)O z+Hf9Gtd!o`yWeerTTaX!=m(Iq*B6Uy+@{f5E*TmaE_KYcvjJB-b!Tq9r>ww#m(qhi znu}pYkUDn3#Cs9kzq85>{cJZzzAFq3%uLbPboT9m@-b1OkcS%zFuURs^tQjQu$?{~ z(-@F2iz$C??~3W6NEN|rk@E#UzU_xR0hMpcd`Eok2DA!W)Uy58n{fQdzIx=iYsrr| zzVuB2mp-X(+5J_R0(KKL6KR5{bj09i*qprM?8x39d@UsRB|{;SUxW@XZYo93j0g8@ zFh^su@iii*P%?Jb1E0P1o__9`nJ-<Y6PF1L+r3Y%0i8DoYz9(OH#`hq#Ww>^*&Bv* zbOMiA1X_4b)`1NkUEhY?1L)5IrVS6K(NALB!o*~BP~PgBtW^730*YSu^Uo(8@>Qw! z(Z)sLSw}z0d^dG<*-m}_0^tVN7eN-e=)lJrU*0W4GU5HjszpVlabYX)Uql%W*h5@Q z4XjK<2QXE-1+EZ``naJHyU=V}Ak!!ZOh(h`_>zW5^G?IV{5K>1daRj2MHl5+XP-j7 z{^Z{WolZ^z?4wb#E}kYk2*KEX6@BI%PAA(XHZ<XKQjN~<^~IXU(C)T`jfn%&!x89b zw%|lE{B<)Owd*#{+^&=U6QZI^XzY<piE5I5^uN3+?a-Q-fee8v^~h_h$r4j}Nf+63 zt(Rq8<1e$)G4?8^T+`O7fAezOht>F^t>|4IFqaLYd-@BgQDa|a{h8$i+Qa^RPn7#* zFh~2g@a~L+g7Z`3;81|^cJ1H7Y3fX5e59fc910G9HCCS-bKPT5+%u7g128x_e$I+- zT9ss4>`Wa5@v$TB&$xfeco0G<@Dh$SF7H32#W)`&k&vZ$da1oMlz^t37dl!ArQ=-t zXWa7br(P~8)j>ZTSj-$Wx*$z58=)0jqBy%#=t(5nR(F>B4c8!*ALy%$;j0s_ny+cD zV#kvt6CUSz2+1(b-Ey=uKHfUtF6k5680kqAw#-~Vj_9~tl6yJ%ldmROCB3a8xF-H< zB;Y;@rRzt*&W3LyY8OixN9|}|JO^wlO_YfOp53|}(|m|>K~0VRIz-D*$(n`JnV~@h zO3kF4anAei-m^ceLp03jAAWuYbgNdQoU|CH_e0jF&F-OkEQo$U=G>}JSX+ziDv3(e zC6Qx^Jjyz-CR#low)R!{LJzzMu_<F)J~u;Keg>YCI}3Yt>~!u_UF!X>yc-h4SAr99 zHa^iGsGR*D4*w%tu0-0rOA?N~O&0Qi%rd%Y;d+yqVjw*e?1x?c#wH$&X30n$h<LW) z58xOIE-!q^d4}tKuGP9&7#VDS64oq+ye5L-@tVjUcf=ZGjd+lBj%<Zipu*0yYLjpK zp%}&7<9L|13&~urWw&3m57lw2EDT=u)WcjK^k8b%sa>8Q5a0VXZ?Jb4c#Pph>o=4U zhJIpjgVZ<$7ZE{94$yXvIDV?Kqgc#%^X<wnK~0mW58mO`Qi7+7c4&DYBL>FC(jbph zAz)H78uJ}wu_rI_SQNHJp!lBb^TzE7oko`?cn1}YLNbaVSTG<un~yy{%|y2UdfOX1 z&YQrcrxIK7LMZork)zx|ML#ir^?+ONH%OqGIieZvOG&>9pC<*!Jq=I8_&nS>M2=88 zFqRHo;%*zWx!E(f%*35jlC!JNlVa*#m;L%1ku0XzbqIeakRs%IHpM&wwf%2$nz)!i zZoAatvoFT-X7n7h`ay})0>R`6fX1dPKTgcrmoxGb@T~J3iD>FAxaVI<Pd-G347zGw z8G&j<r#O5nPEN$(svj$6&~!RucbGSuKm}?46M>i*?=s&is41D;QE%8xIv-w{ZvU2> zAe>oVaQ|>(q<ow8sQjT6&(GAg!1AEQFZ2O&^V=q;D&)~=0d0s<qhbnoU&<Ch^nd+` zel*j&wGC-Dx;Gx%z|R7_7#J~`+B-@TSyp_2f@X$X#7|a!o0_g-LzAuk1}aP%r_k8_ zn}x#NR%}`rp7#2l>-k*JW@tGn-~<*2h7j>d&YdI(&lIFqXQYe1W&&7L>GU0A1ewpG z-)4m8*Ll-!ZHaY!pQkWQ^9%*;oLr=gC-58GFFN--dKl01@a^K_o-RN0r8^RIl-e#& z&2&*K4*M<M88W;MaN#Y&6Afiws{TI!5JB(0|1ux+Bi4N1K4o#mrN4i~IBR_m#(CeJ zYVtcC{DpXr^Ecz78<Y2DJQ5cjdRNx3&u<g!4udY(=BMAU_M<xn<~|e8{h9RCe)65q zWb+T~dDO$M7n~R$T)OQ3z=wR(<Gzbzi$%s!Dz7IWc_jY)!2R*S0}sa&&opACM5pr7 zN{phPn792^cE`^vKlBqXbcWhL2_=2AL4-k_M|Y+E2P2gt8lJEfao{|J^82=+RW_!< zEs26PMG)!3S`SuswCviGfXag)O!x!DzcRDMRZi+FR>`#YMq1HdX!LK#hf1}<iXGVi zS5|s-chA*IsxGa@!W*l?ThNb+y0fD#X5N2)Jax&1F>JBL(f|tk#zu0rlyI|3N)zs! zxxwE6{NUgs7(Sf?y|yWV7mg!L7Do$w4|r*e?Ak^qI}{8xl#!2e>koGqbdW_}6XC@i z`DVNUO_B!W%*ZVRb<Z|?&_pl74_!A^;1qB}e1im@aZI)9k#MKFk~h+bXvopU3abHD za}^GxrtY&&v3d(W<b)BCUh>E}#P)=&x6x5ck^nqB<1oW%mGw<*dli?!9FjIVQGAlN zy*ZgL^P&V{0T#VyUL;XaS@1_B?J>?M94M~y$SfXkIZ?;q4IMRVtZYJ8a3<WS7z{$g zs(OmW+zKCgz-tPMcbV7;1TK}4Dd!hzAZO{QN_tX_GHaoj^oZ6AT)N`G%SE|rwI~PW zCJ)>|4~LKYDbYbr<Tu|+^Xh*QG+&CxF33s9v6F6;=={Pb^eqKbj$+d`WXFeck{i_) zU(wOt75wn!$}_Ku8B<@>?wV3kGO$2bbT?M@a`x=m(btC~3%wyF%H&^nlttD4N-s7r zmrK?E*pOwUvT@lleKzJv4Wgb>ulZoN*fyrgjqOU$m{-;RGp3=%K{=>Lm0nNP_(%Gv z#(!9X>q*uAR{c-a|I${{k*HRvd8qndbrp1~RsUO!KmMb}UyOtn-M|QLp$&|?b0n?{ zg9`!|8rI^`W6`CziXR*%M?(=g<H!FSo31t`YMXsJPQ39cGAl)2WhO@W4vOPtkyH=% z1woQt+7m+GWK)=jzMc)C2@@xmU~cdgH)^R^Ut52HgNf~FKL19LQ?`oZzO3y7Nzm7{ zpL{+xebW-+^D}YMpK{{ZX-X!T1}`VNgFX`)iBvb-6JS6S5KrH7RUH3?55@Ymju<{- zM6``uF+QtF-Q=+3zRXl!l`8o+dHX8!$}g0h|6n48fF*{c?<o)``z2rK3|7hyTOJT6 zeYg81KBbYdG3&AT-RZ}~$2M6*+q8_*FUC7#;wE1<PRh4*-n7b}$&rF>Cb;I6|K;>e zMqi%bK!@ZNf<#duGSiA5wRF72TeV3awP$0xeweG%fpRsRVb+ahM-^42z*Ev6KXI~P z6W@x=g4mwOuOPbUzp>r2vG{!QJ6*VQ0w(jL%X!ORP$*9`N_-=~x!{H@U3uOK59=+b zRZzqarSI%xVp(S2$s#0Lu#^wJX8BXL8*lW6<Pf|?V9O*&D%}%##FMVAo8Gn0DX|5& z{@f8?-f5#)Zg@R*KjOT2h!sgiF#7_Ur~Vm<0LZKfy{>TuupC*-dvD5oHY-LTr`p6N zTIIj;eC6+7NjZy|OSA>bzfWImfKP$4;#cow7^E-mDN98(w%ah)WO0KNok{oQLteE= zs0iAQs9Z#(q(e7-V=VuMH^l0zuNJGWwn{Abh7G;tp6ixyXi97l7588%<e#_xDaDEH z@y2aFA2-i=GA{q-N6Q>W@`D{$iNkNwcBk;t?1*9VJ9;1*>%<DIP$iUnN-%UdZsOvJ zSI?^`<NWlIpYTfcuSoHwuceQIebE`Y-e&OuT}k@YSvTn%Ea~!|E8|$__^<fLXZMQ# zF6{I-zxsoBd~MwOyZEBhYjNOqZ<eJfzypkElKiP#uZ-gl-ZkFR))^y5j)=}tZ-{*! z0tR_hS43}U`Ewo&^!co@ye8%6lV9s2ql<-Oz$xv^TdWzYtiDF9v(9?4?z*~PbJO^) z8Av2Lt}Aiq(WoFQf+bp|&O<+$CsuHT5>WZ(>3=fyW%_qCSquKkNi4@h8>V4FS0<}? z_8g4}iNYXO-x4D^c{4#t<TYLloqPW?Pi%c94QPWi^;6LwQr7<_{g;k+w@)f{Ci(jY z`eIJEwk^|kWo#+<4+T{cR-eqc=iYey++Rk==y7(c*fjXEbz+PP8kjIPAr>bTSKE_p zka(}camAzm!mu=nsQQcctid90uI^G^P3U{OJRDNw1D$g6aa%84<D@Ygy5~h(Ppa>E z?|Lp8IDu#cT(?NmA0c(6YcZyvZ%h0nf<to1?&*)+H(>8#1E&`&csS!ICz0ih!m(wv zoSCKV1qDbxWj7wqZ6dj!Rc5M;@RX~M;6I%t=@3JQtWl-z7BVTF$u#O<It76dE(zee z3!~CWoh4NIc$+-MWFD=if(fVt22L?;r>FCQ69C3qr0Wj(bdU20ZTW00HzPz!djcno z-op+i>54!e=cDYEj-Gi2ySH=HJv^f`<nPln4o%CVXI9d2S`>Lm2Q3aMWJFi!*BlY= zbm#ylXv&K?@WG%h0a~&lJ?6HHnU15#V=R>uwCm18Zl&vE`%)(3(-RJ1n5xU;hD@d; zops2$+tyW&%YSiM%$PPqtLp!;m04X{#XN4@c(0o5>+el^Y%vJqB28IU?Ju_GBFaKS zCsqIB=C$g7sg<Q|$VeE&xLu$Pt;Rp-qZ<EVA4S`3Q^7#E$^NAp|Dq4-jXvs2y-h98 z`Cs)v>WZuW#}y~*P1XNa<Bw|ml|v2QiHfS>7m`JJ{87rWh+cUoT{uH&A?jx{U^E%Y zOKdCnzCAYl>J4$r>0k7UC%?$k8DDdJeB$lP#5<0<P7|m3!dv3v>JEzWuJD$rrcoMb zX_(Gb(oZh@t%;D56>z~<P6AAf<uoa4ZiORZpwJ#0eC39?`Lsi|ibC-ukVky(@wR2+ zo#JzLA!A;K(DDnq88Mx_)Azum@%{I8#L{owB0l}yGjl7vwKj|0cHK44eoEp7FIAe7 zi1&hik6xnZkzdfBz(IZmrU#HFxk)*FFM-vjIm|1+Wb$N-l9ZlCR#MP5MOS?-+D5M! zn|x&dIQe(?nD)E2-7P-6-KwcH(VfR}0tMda%}!2$n5g6PZhrbDEG^EU3Q~enj#ff# zF_)L0MZ<bwP*>EBX1ruM%6voZFDI%pQ=cZyvi!vp_D6uY&S8U#B1YFCY2+F5+)68f zm7mu#2gNbjRno5&+xU>DL;DjEKS-Y($}mKJQ09kkC5bltL7#1?2t(<Y6Jw5pu5$|p znU?zRxcI5x$G3M~Ipa~9{!cq_hj`<#o#H&7sRjO|l~hckg$MYdp;>ELe=<s90fTOn z{41Bg3k?>;hqIXMYolMvNyf6+3Q-IC!h<b<b7r?E!C=jy;4i&U#N<R@$*bcN(ovu= z4Ok<uJ}&<;gSE`y01`_4$~}+%Gd0tPFCFhW_-8Tm&R=L%lcH!_^!ehqE{r)X{U`g) z+N{!=265X)G>KZusOOi}Ke#tfe_Q{s)q#KoY^(f7tsUDJ+y2$g`&HZ}asPbn1?Hi- z_73r`C6|r2?WWau%2&JKl6au67LQ$Vs->*OM`GLc$1BN5v(4M4BbHr%%lPbf&h(av zvG(S%>xXuor~UVoWJ~^BMF0la>(;N}Te>aeC&Co;TwY<IMc0x3icopEc__+<vV67r zXCX@5L-Cbm+oC@|EdiG><|1iBhdU;3lVjPu;&3n`uFIcvPfRBS@T8HE^&_4H1CPpq z8Us{f(_}W=wK)z63%i65;6>AC>VT@EZ@pQA{|5bY4wlPJWy&wiHBTQ6E&J*7**pC) zNsj57%TnoC^sntIW9rc4{H!ORj3>`OD>^2~>8m)eZov+q+T^69#OnT_AmB-O#p7JU zqOcLD+h;<~R({{;ne|I*Gi7SFE#M7A?z~OMEG`bVumv4<$qh90Xv5ApR)wJlf?Z$0 z3e>#dy$}Lyn*crAxl9~9<nS{v!r5e-L3w%bD-5WwH4Z_cb$-R4zf@JM20?1B6wndQ z7(FNgc&ZQnkTxZd&prypv5TKBf)KyZ6EAj%S((JAvn6E|40T&L7*}a?V)xzlU&%k# zru@03pqx_hVP4?h(kO!b)Opep1~oV3T+>A>*fNu#gqe8dE%<QRfYiDYK0HDCZ&wu2 z)_NkgJYa&V!IY;@LiR}LK9vc@!Vjcy2qNpi04<TY6C7us;k2?&ln!EG?0C~Xy0l|Q zxcPJ02~MrJW%DXvm66Y7#P(cXq9`1_LgW=sU@;A?krRW^!<KX>{h31IhIw<MZ!siP z`l9TRPPgK_qrF{Q4QiXg(=XF%;JI=p;;2*_=?m~-%TF9ybLVJfmg=r{1l9N=^=HRg zVazTL@Wa3OFb&=3oiw7fs{OC}KiZ$F|EFH4u2kb6wHHNOA$?#QG#u6VkG@dtJ?*L5 z+oDI2YS5MXgKGS1UF4fAJ+kyfg+gCd|5Nq9)%b&E)ODd6f1!zL{JE%)zg38fbl^R7 zp$r~msE$xg@>`X~y{Y@t7SC=_3^hE~`_NalI^nsv>HHu1>={=u0o-ulyW-&M^UN0y zaSOcall{KR1OvC(SL?eY&&(-^&qtqOk6`%{0Np&Vzyz@PuKS_5{IZOxH&=?qhjCvF zu5~ufdb@r-Zl3$B`P^9<{3~POyZ(T8#i2Lk`9G!n<aB^wk}>@<`pzS_i+wNA6T)o! zjkxZisnNXssyOZR6XL)v#gn4Vv9HO62ed^Na1Jmjqi4%iU^h=hI%I08e}GH*J&{l_ z){<X&a&n0>8-%sWre7N$e)pFXtI`fU`=)q)ZZobu|I|43@N)Yxy~v9IBIzG&`Z%|* z_%zDE?aTB}B7~(x%Z`;hPa)yZ{M>gx5?8pqpt7RN%lgkToZ@tz7RUY&sZeslefeu< znC;L6NDH-q;NQA-hO+!qC**ZtP=GQEq~=!%W%(yQ5G8maksq+Wf~DxwxkN+t|H|?Y z;RzZb*9ZE{(LiD-{gyMs)ZjarC|HS(r8bHKfBxrq;i2Ehi3iDrVuZq_?d^8h=J<H5 z#O4gIEI(PwdC6K+2YgA-g!$!fF9n55_%1?<0FwNa6L5p_3-IsIA1Duj7iifa&QHIj zS0HOWw&=Sd;7Lsi7u#Q5=b`9U^lQz{<FXfv2{p}*F|o+xnzsQH?~U_59xO~7s(*{5 zxD@#1`Y%&Ts~f%ME^*;a-?MtGu1B8KnP>{srP7wQg`gG`v_jIrax^(<zDfEA>R+LM z=QRo;6BAawzedMf<XlgKJvV-L%kA;IbFQ^$Yk%gQ!Mc&vHrtNu;^kNI+uLr7tIt)s zLSwI;V_hvJEbZ^EBeswIX!8Ww+~M%}?L*H;<F+f~v{Qc^2dK?M4CDuXkUsVY@{B9g zk!GX#Qgq4-CTg*HT=;Bn%$du!r*mTVoH;RPwyxR=YWD0|G3$(vXv52bmUEM<ED2D| zFaO`L{~`1Xj?MqyDt~NB*%WBIu_q)@Pe$YD7ja3bNqu+%)~WF1d&hbOOQyk_EMMuo z;ImS}&RuZ2?M$wiAR~gbioR6wZ`8j_l(LjPbEXax_?)%V*WVMfWUFJwj`db@;&Q=) z3bsuvv1UE>L_G2H)AfTBZA*yt*icwCV{6khPNlSW`g&0>>JmIbQue1C|NcPFI16l} z+`BO%T_2n&x@I0SW<D?s4K>kg)PWNoY?3jH<sZ!Jc31XUo~>nvfSfcqHOxQx<<x){ zq?>98?ZB`jC!H!dq392tM>?$yu-YbRHN*q@_9`O@CT!kbbU-wbVL<!jmE)m?`Y~!% zt_+Y=I7~#Cn#Zqy+*`v4eUAb(UDdc(G%K)F(^5v!cbc=RE-HWdhXY5+Iyb8=I^<bu zQ{C^NZ0u#Cu7X<t%9CfBvDKmCK**A<qCEr<x?)JT$}jmaZ~q`k32@0X<Aih?0k8ay z)rEY@&o+vA=9PST@*}Yli|qrgD`jq|a0XO{eO$2#oJ`PF8s}koD@e63tlC0qR%_Kg zA>9rI2qh2P3(jqogaJR!RZm1(kaS`}pRt2Q)0fZ0(vxXftLQ*DN%No3N_Y83JE$~- zMo$O`u=u7ty)sL>y6n`;qgPwovQjTOgv-|+MvbN?sYiFuT-RYM4Bg;GQ#qk#@K)_F zy07}5s{gIVAGAx^*r;Ej^>dpiy;S2rH4&+kYWypEkac(rAamhIu-HtFLNwlRpT;vW z>S&Z+jsL6npX&XOdce3)^@VYAF-ES&U)A{QKXv>mD_^7o)pVf@9;eZ<((}#}s7!nY z0~3}W#|gGMd~&S6?Wf|G&8cz4m$xt^X=mK_=wJq3hRUaLMQ1-46ElB*QJg3M4;F{Q zI!_LwO>b<Ma}A|$km*mw?Y_|q^Jc5YlpzzxNmj^*Ego;)20mYiD-QcFH<mDa<}Hs~ zJotmYug=6B0onN|^xqvP9ek%?7>0Z~?mp*`*k~pFdfGwL70S|rF0(tWd?_zvWWomE zGAL8Mn5<0PWdc_kc_yWFt1KAM%j9<w_!uJPFKcyic<QR3#^q$x|E?E37T<aQ`Y};w z-$18VhbVxHO#FhGK~>2Y6B^Fscy%&E!Yk1S7TRF&d<*bnx*TUbPSc(6#k9w>ymZ^x zbhTJI*^3^LgnlzliR&NI0Z<N!wRnh!Z@$JbJTq}NPe@TL&ph$UK>$-tlWSI{<YxHo zpbHSC{0Z$C^{L2SzyWO7THJcctvY5YA&CZqp}HTAD?I6+vH6{FOv;&M6{ZKWB}hTv zHlP%snH<ajR%0$BV&aM$#mByRS<Jlm9Gx{rX63o#_wk6%<Ffwe1y{a;K6lc8w^1_b zcXHhDU>>vuL@7Un9=_#TV)U<prgcDUhBj=b43wwCkn%61N|^cR*R`DwgB6R#44>fV zrC;LLm3m>o7P6MjW=xT}fEp#=9Cf7`zlkeueZI()_+Tq#L`x+NMZS!Fk<Ax!@fi$5 z?Z0E)cf=kf38a4K(=okA+=>BgnShReU)VBOhSGoJ7TI#4hxzMYvWNWQbw2%@zOnPA zI&Y(Tx&Bvp+g6z_WCy-&z4)K&p&zl=W~*5K5$kR0?FZrgpbgfGz5bwd{e5odx0U`) zO)TFPKRfhJ>$Dz+#a+KVB;L8gL_af)>Ht#V@cg6lyRA}!WrIJkCdfSUlW7dwMk;T! z_M5osj%Q6jk(S?Rjn7~hs{bLehJsc}e`p%_U>U0aR=N_zUXjM#(2(@af%R-@R3~UX zprwzR2v2a+W`av`{xkd_E}Rcg!sM9<HbY_-6L8CJ9qFs6Q{XRUujr$?)Cao#cj%uo zuoEa};iFfp3}?@t8xzJ)h+)HqD|G>b<YAk%ffr}Q<ENjj?F2`9r3tbjqk3hTMQ)>J z+Y#M#W?&++Ah(U#KY80eF^H2bogvDKVWrA!+i7QZK?qOQOX><vue3AaqP;;3aFdAR z$JcC!SsCSYe={z@m645|x6&i8FeZ!~QO1)`c3nwk`ZnYs)_pJ)0u++9sfj_iXRsu8 z8cdSu*DL*MYB=wTs-b_&)@)0<*&YxJyRMbdl-dY(kohWVqHRZ-L79wHy6Gk-&Y&+= z854XFkZP>#jR<s-Kc?|xAth}JPL(!*$i(<lSGFMZU!gO$5_A^Y2OL+*L)3tUl3vW0 z@>9-2fnF_P5|eCl+^{sOc<u*I-Yd?$>d{yZx02;k-lAnT9+i^v;J|`Lwpsju0LfT& z)zFG3C}K$}0bjwE?K!#@tmKi~PHi2|L_wlFLFW~l5)R?6<1iC{InkTr7|u7#rV$Pc z{1VLi*BAM~U<;EI)NQnh3I?W3TleCitE)@S<KDRB^k3`jEIHe7GNO+K2%KFuapI)t zSN-i}HKmB)!!mD(C0&*EgII#UO$aXjJ?&2lTG6lcU)kTkqyMk!9}R8Q{#5Nx)&5lN z4`aq0OEN~Q-hUZ~GN@(vNDIO9yaUtf{ojN6YW~A7b$+c_WWN?-5mW<t$sMX%k6ZMm z_%h_=MxHH@ab=FhVv8L%QT5GG*SS8V_*r}2|Fyi=wr`Ggwr0$^<tH(A(=SJ?B{HVN z>tqoCg(vJ^p?=;U;yxBo@#5ctYQ|ls9vinBZ7sImWdpCYC}k<9XvpDgAwIX?Tu&Jq zI^!yt6ohEa6&};)i-ltFWWIE-UtT{$l>QoPjf=@lShV<<8h2=wk=clmo=7px0wT9* zDISUjuay@P#S1-o3UL#e=_^tp#TLYT@@FalG@o4cQ9f|ZewsBR+%;nbO}G*0fQXv? z=q-K*U#}(w$~;7ROB-$k=Q#`R70U8=f@8p41fgXTtqk?^{}2znn2<oF{v+-@^*C)$ zW=`Y1AAEb{F-@alvk!j~a{e6rgNtK!AxBI9-FL^2K5?Paljg^^ep3NmP*m+Q*5b=F z3y2ndXHD8gt|F5X3Y{6mU$VL4*TKMct@hqH#Q2nW!H44P2bnG^009u%C(b%DPUK#p zx!3NoK8_Xc^`YxeaFvs@`D+M$O%xTd%oSM}m%k9RH5*YBMp6EwSKTV!_jbTsqE-{> zIp31ykEAV}CO0NF+x?Tq#n(YUEc6UiA%95EKiosx&=C~<k*&~k2JrirW_q+1=P{1t z?{Cv5qbp8<u!U%lK1541(v^Wh8Cvoys*EkKQ5zkb?|oni8sFdSsJKPvhaonf(*8>O z&sY-3B8XCc9tp(jSLaioenFF{8Cvv>QQJ7(b5oooIAm^YzFw@_h5n`EkNl4jfa0JZ zUZgEd=c7OOo;ZGw3rnQ2`&Mt9mwqWfY{7gHO8QLwftz5v;s!p3mVa?3m@p_YZKU4( zQf#)O8aARvtr}b7>q0U7Oa5By9`9ejaLz+OE25s&h0s`gd@RnYg2Mjfk&fFhhb*{9 zMFZJ~(8o@a$D9~^x&BAT#-BW(MgO=hz85#i5!edcQueP<{*4(A#nqQx7FS($X<T~U zooq%5BlFNlM56!=_k1asE8iCp09gT9XLxdOW_^i%T@$z-pehSj+H(+cPp8gAECt2j zH7D<-rviOW0;`+^o7;~S3FIsL0xEpL2mA@tlfTR&dxE&4|8LVjliW4!LFRTy<-lZq zZ(pBRbaZxf#c-Th*uw&SWDjyo^v{?ckDh)?v=7smfk}DFJ`KV4fXy<e&#yMU(ucHG zAB$~ZseJLFO|TIWX<Ng&ge{R=XE3CY5Q@NlohIi)CM7<_+18yXoO;f&Sz+gbwL=ZZ zlM=l`Oz4u1l;u%wO2P}j{53)d62U^&tF*L|3*PKWB3?Z3BNJst-xRpWbR&?T{ zp3%lwQsVVt%er*^DX#>v{?uK%E`mp3`NNQOn80U0tB!CyfkFWMSOA>lh5dTbSY+L0 zg%qp0L`Csle5I@jT`&RDAmUNC@L1dm8F!*B#NfBcP%#c&bcH|tTZeX7;iQvOt}Y(! z=L1GIIH0jK*FHJ0`gH9P>K=Q*(iuZJLXGx{m0CW>%3~O7PAOtf0I)<G20x_WfMNw1 zE419UnHxlr0%1@v){ySeh1ZN>hfYIdy7#wm$(bq&b`a$`V95vIE*qs<RYD7|tZvL3 zrShXK%0|2-f0CPf{c)x2+S|Kg*34OP@y{<am)Mx|8>uk9hAR?{9Wypwnlo3<ES;Cd z)}5|b&=m>+fEGnn?QhlpRsFx}rYZ%^BG+pCV?|gO+4^O>Q;q-BH>fZ5Jb+X}sK&oJ zDyzo-*ajnj!Z2hT)%#B|cB$U~)Umj=kab`u)%dF#f65;I!^huP{Gu2b^DLZ!aTtw< zxyz2%{f#=F{8Ks+0_eHx2Qj?<o;c>rYvaCWr^Z|zcHZ;CJ#p&ya`GD-Tdc5{1~VYl z!|+kDlrA(-arGYYsh|EX9(wZ5xZv22$EdgLWtiF>p);lchQv_%N=~NqDtlbKW5PP| zor`ad7hV!<|IGN)NuQ3j4!PPn>&?w#pIrveed@d8nCPm#JB|{c_x@#S%+a1JJuloF zryM6f8Idb&xx$2`sz>My*9Yp&+BtFX_kI)4cK65J?zsswVobb&OnP~*-MN44dE}+> z_zN$@pZ|DXd|~62;#;ICu%hVlo1Yt$UpSdKD7$bbLqx*w+r+|2!H#coQpSk<+}<1p zTEqQmpQGcK4^G$F96d3Y$r=zjP1w=50<=KL^XR2CL7tECt#=#}XWji&Onc_uxZ?Yt zi3!`CXgCnxdd4;JsAV^_L`+;fF-5^sS^mgT(k-u~Ig46fu5i^<d2KX)-T1D`>-m>7 zxiRok+^F(e`_QYBzt}wX-Q|tO&DT=z|4e)iJmmh#PVu%w&yI&@cgu&<7cV|>ZG2(9 zHRF52>&cT3pA#QmfenL($j|%<!SqvpBS$U-(6tR+n!#q=_}Qc5tOuqFe|OB4r=qlf zrfM<+aY$y#<(yn4K7FdTYoq-2x7VAtjFWGA+V<byJuUup;-_Ny-G5<@;Of}VZ5CSm zX1b7MB9cdN`<Lf_NZcfNDoAPI_8c4OrvKMCZIg~zcmLz!s@orkXJ={RMdkm<Z%&Nw z|H0x4aJ5(x$14*{MZQ-38zR3TV(CK9+}EV%w|?=gc=V+nO^gl1%*U^dL)Kd>zK;Ne z51(Z{gVLOWzK|b5IWL4j8Zy2X`W<+P4IC<iBjcA3OpAfOZq-jk8=IQRAuXlPDJy6I zU=5j82|q}G^v3(gPdCi?W_&l^Htb_@(oK)XEI9%PdR~gDkKd;)_Kt}IkGd*mgCnKl z(kg#)n-9`ox+Ole^y1OE`KRN!bFYa%Ka=f9P5OWQx>IBOb@nE!KkxpqoU+MaEVV=0 zG8E#+JI4mn@xya^wX&dJI=&_jUVn`^mNfLR+u5=E@*VTiA1c4Vl7_wu`8%5<e2@BX z{LE3(;nZmK&5dqmL;)7wT66i>?67sAqBdb2Mb~2GuWuEr5CK?ovDk3yZ4-X2HHnSJ z-rL2xqkvQZ&xmoc0{4VF_KW{H;<9-3g{krIA1{bQHd#5oQ;=)aPK_&Xd`@_a2+?mV z+9R@RPS!NJH*UZbH|AZRjpH}SxJDcun~d8tPW{v4F>|0l`sdDy=}+Dt*PZwMIP`nh z=6QxjuZfh$E{PpJ_<`7Yr(I*WZ4Zmv=BUg}W03x<+5b@b2uU`+%K8sChA}?UZQaQ* zpq_At4zFZP1CxWgExw$woFq49!MSD&oHF5)Z8W*fBdC;-cqWN}=bi~w&wlFx+(m~` z(f>E;zoGV#N%sLwdiQjz|JC+p<HwIzAuV{Q$x+eP*Q4zOPu7n{v_V`a?tv_OR{n7C z6qEUN(JEKBu+9dP;6pw0k6&tidRB}a0Q%B@X^}aZL_f|d8|s?vRyXALHaCvM3iX^O zn)at>+ne&*u0gLD+qOC;J7na|Aq&<|e&=unQo}{P5Gy{|2}g_pfKv`|lBQrM4I=YQ zhbKUqF9tB!ezyDYpua-AlpAi+$-~4U<0YWb2RPgGLkT9+%o&au;Y2>4y#%!2?2Jl} zl2B6j1f)Fex@UzBPA)Cn@pI|aLYJ0W%yI8>K{$O_9j<@Jvx3=NmvPVpmmHVvT2Ym9 zgF~|Fi*;9CS%gin0u4EY7M|s+(r+o!iQ{voWPc6q1IR=&D#1p8#|c-qJ^hj;x9^2F zt@;uig$5jaSyaCzlQ;Fm)`B<$`MC@+toD*;5eoW8w-k|V6bGBUjOYXhk|%COz}q4N zD%d<zN?5EAB}$mw?hrU!QiyHg$>3+=;NP0V{>yZ8ESiGz1UkCa{jib4<9UtgufP0{ z+L>G{vp~0iVVKU!8Z&CN$M=1`s&7&@TQAc7Vt_c#s`gj9$JS*xlmVgY|7^ih1nmwM zD;22@qocA8rjtDNWqU$zv>&!(R|#sOpRHPDRI)zkx$6JX1=X*re^vdXVpQ!<)&5rf zPxdEO|6BFHj5w<C$D%v_(#U3!4jPp#q(N_jn1%n{Uh0d{q+;_AzO(YwduMC-er4>x z>t?a~l*uuoy;D2)tr5GQ^hdG_>eI3RmQ#usSw*z35uZG2lLDW%9o%!1c*AmQ$9DUj z?7nHm?KgI=TlG!l)FKLQ3V5jNw)kqs9dYnBZ;i#r>ZQ7KT)gcQKQbseK6mvg@otWo z0G1c(K27**%c=v!=Nd~*ijjKZ9X5H5_~=jn=sfj;Ps?rjN5vNZ`vp-JZT(+=;D5!E zBRYZuqK~*&&aCz~#coG!CiFlw<AMX<7b`5jc&zgF9pXFJB^$~{);RnfOGNFXzX%qf znH|2ZPhI@B<Dr?EP5N@4kQ2T^z<r_r`r13h51D-yk2uLb_@;@`-Z?x*?EDLDZ<hi6 zkj)<x6s#hrZ1rJnKbP^1+HtYVn#;zdDQm=*pZlRR7VoA}yXG^oqTs)Kcel#~O6E&Y zo@g;NMAA-pDH|Ff2^Gf<;iVxD<rh?5ON`NEL+6;-U=PYG0rpdQy=RQXA{PR*uO8pN z{p47eXZ_#%&7EWA(ZjWcOjk@;e$)8Q{Yj;*`M>e|@4sKCpA81M>Sn%!D1osJQBI`z zu>jNr)>_-gaVzRkfDP$#mp4s{&JJ{WrdACmT_#GnwGJ$A+8{AgcKd!@@>y-IroTp9 z9UtFd8QXuyh>5mEWg~0sc=GMB&l|OGns`aB73tYH02IRut!_yz<>%MPq=B2);<Efb z)g|EDkKHG>SWjDLjv40iU+LZZ#LXZP==NuRBvzBR0NO?j9(0=j#40EifchHo?K@72 zHxr}hdk^0wRvI%xdT5Vv%WoFnx-UW7;`4F+_jl6z!a@1ruO8EdhCkV=Knbt`^4CJY zzNX4xWoK|1d_eZx(K#|k?(}opGd%H2bL&OloCA{h^)33u&sBA?g(`~nVvzpgvByO> z#y;joWn4QYKC!_{F{ZO4+U1CzwEXI^$xfe-BToObS6`CTbfha^MHl*DPyN?}b&R!Z zj*rjow0XR7smU>_Lk?8czvVanXj~3q;5YkWoUnW0lqIfh&G^<GKa+EwP>Z{z<CRBu z>70*F>3H+__PtIJi36nL9pylukA9Og2F=JT*1uS1+c-{Mbs%UHKCtQ}*~Ew#zEie2 zwj<$OYxC_)zrkjns<XRpy;^2cF4$at(=E+N?asT6Y0n+s9>YymUxKI2`|y!!^8nV@ z1qZz^R$fAF-bQNkeqV5yY{oY?UNYKg^XTPNP6L9s4Yni^Ah3on?SJvu^W5LXXB16B zGft0BzH8N3a`c!OyV&GdX4N;xmLEPOzW2+AVh&6c<=<3W?(%mw8hzg+YIqggtJ?oO z^#5M@lP-jiHd;}Y(fgDb^kce;C?=mQx*Bk|A;_(Kn(oyzOmRmerDrDYjZ_!}?|EfC z6U&43E$qy-SM;S7{r@}k@71RwOi9~$AO}-lw;a-PLM^ex6!E39RFN&n2M-Cw|Kvr# zih(&g>qq??wqctQK0BGT+No~uQrZOcS>2*ql{SKz@K<jAXC5>eFGheW+hv})$DVMG zaMiz8-?$6cmrc=zn{r@uNF}$5;B_t%HfW&4!762Ncv4nZ2P1}<sJS0gti4jnPdYAg zB$0gMdI7)kD0o$la2O|7@DY-b&T`B+_k}uKkgZH`yrct2vE~tQWEamkUG&$ch34J{ zMxHCHQ%c~hE_saPlmS8nN>ZwKICk14E4orv^VhC;$^z$CCuvIb!c@`3DaEHla+sp- z(HxE*L}0r?&eH18IcV_0d1$P}Yin2es=ux4IXa|iwhd$mSn$JYwLZzmnN!52lPMiS z`CA3?uXN4?gZ(~%u@DON<HYk-?My2_%kc#0l@u-}0~WZIBwX1><&`Z6aXR6Ef=b#1 zP9$ZK{5Y<X4)8hgUKF>>PFgW%$_avO-_VV0i#jDsO+T3m&bEbZOJRshyNzRCn01v? z65fOj(wzAv(!x>KHiN_CzS|#)KU{OG^@_rQS&+}jk)!PR?CI_HN;hwh3BM>+n5y;{ zvyn3NZ@psIDx<3ZQ(cfQ(21;3%E>z5X0+=6U1u>G>MAW%HU6PNK@+kN+D^5FS*c_} z)%Y*_2Wbbb@KCkCD5C0rs{WT&LbXEwRsT!VS&cuc@z<h1{-kwZlmp}3g*fEE(}M^` zplUsHLN15vYC{y&jE=?Di_gAG6QVS&z&Qi(TH&<cPvh1XkBfCQ*<g6bM!adibK;@{ zx1>E5xbh|X_`nH&hzHL)DZWv>62vlIuaS5Q`aSa2_yu~uv*M=9j)?V=9broPwc3vH zf45GHBR5&fX#IL28p9^89iMq;@@ei$vP%1}{r@j+hfhx)6ih1jm`%POcb~q$BdmhF zi@Cj;PFMan?f*-iv9(i?A?YLko<I3r%xFFvr){OARE1`$dP=DjrOB#-{&4;JTDOC6 zx^36wc!p+7nLJ`1`6DLB-q&3hU)xBMf!mpN{cF1X$k!~~IwW_oO`w>C-x#$~oT{^w z{wIOVn)Sc==i|~xX2q<Vk1g0uq;pv1Wf~)rmhuhLL<_<A@=N!!4aJqLAdD#bo56>} zc1OoG=N~192`LH!=30*(;)L6##!;JUB5<Bii_W!okDH&nF^>JjhAsMJr2HYh+Yy(< zll|X~jWl-+Z9W;4S7&&ej%>)&+=GcNn5ZogpT6Pu@s*7gW#Hm6vs;g8|4}biz$qQ) zPDv$2pAcJp?=Nxx`QMNoioksKADitRzr1^DoVEK}sjq^vFIq(dN%Y?($4W`R1nH1N z&9nrx)M6YSRMx+?Sbj%sQ^<r42wHMc#yiF_*E|;I?6R_=^F^SvfAd=+_f?rGT>W>h z_0jm#^M8zE_S~>wqeQB!(s%#vrSZhT5%Ko1#AjN{uL--+%NAIhF|K8|W%&aQ4tSe~ zxE@OSi^tyAUl(6}SEeggLBKP6P09LESz6YmX%FV5546u#QhcqsQcQ5w8A5-;TjJQh zXX5gsKV7hnW|9QgT5avvX1A5+afFf#f34y)aX}9s8|!WThL-)!um5PS8~dK}+n90H zr(!uJg1?l1*qYMuvww<X_k8<&^wEzNyA`&);kZ&!gY?^_W7878@tVXXl=_ORbYTDh zKmbWZK~yJmt+_<(b)D?^og|Q+Ffp@7(<<Ok{f}5@^Y{RI5=6auU~IdpJ;y*eOZ^S+ zh(ozoOg%mtyS#OBqATR5{eRPbXU64+?P&T#<=^8+*Tl4ezr-oDc_sa)_2YqpzE?k* zP&0<R9*K*>{!04f98h^3IqUJb=*YeF1n<P^uDC|55%1e&r5LUGqCyF}6m>;FwOBkx zshT1sSxWuCy8W3-iw?9h4C+6L>zO)U@WkXftrwco+=FQG!mY+m(S?O2yk#ty7tj9P zf+oU+&6C4+upx_ZWLpUW9tv6{I0!$42m-0-qtkz#{yq7|Dh-tjlln|@v!&ZCor~2q zY=l<V&^Ih-(79M$o$>tT7e&tl_eGn2KtQpl$#A2O|FzNz+m?B;dRMLw!PxcVtF?el zIB(jISIA%}s)5)g^@pi50%);7oJ@8WG42s=@^izvhrs*nrdq#k&GpE6!NMkUI42a8 zm#u?%Vm=OMmunulNK^02S(KJZ!qqhvY*)s%(s`sjd7jjO=#wFxWjKiHEcX%yY#rI# z<a9z7`g6|9YL`RC_!ZY77@R4|gYw{*DjXx^1%aJC@KDI<IMGMv$Var@Dnf!I$~rLP z)LT(fMmw;C3;rkrPezK5c2!>D2*l&uffrVFb#$cT3O`kQr}V3vwl;NCIIq-a*1M!l z-8ZEeoLIC2jH&u%WBoess;`_3S3A+CXRQUa6NlzNn$T(?J(u^Q?}bv5oqUacw={Ns zQARik+XqBLY5i^#agZg?C;*)!w=vT$vGt>1ZI>!%R)zJ+OQwZkwn^|c1j9Cj269dz z5;BQi=)?$ZBRHL~<%U+-65G(~cWvUJ^S!`9{UVe2meULeT21_?Q;cz}GEkV%7B*IB zAbY1^8}<GeGk$d3e%<Zy%+t^1nOQKffMJ}r+@7N?bU81pAtt;^O~RM;-{@e`xLxzC zd+eZU|1n&byw&9X5<QjWpmMAFKdGkb|79ks<MgB0hU|j2ryBoIZKyyfBim3bhG^Os z8hL_1s`f`pkWT0aP)pVRR{c-a|5p94n@_$Js__R6qjXV?zibbTGZxD6XL7g5e%I#C zo$HZFPLLH9uc&~p7B@7W`&W7{;}_)03+ZgVz&-fjgR%3@TDK$4%$#0!d0qE|UwpZB z%sh&3bkB@w)2ByY$4Kq+_t)rLe1%wIlp5BeQ6ZP}F+eLS*6bG^jc5MK%ep3Lms&m+ zAFVh2GW}KPLubw$y*!T`A7l9OvbGd_;_<28Xs03Pz?7AjjNvT~ksuqjl74gU%$Po7 zM)Y)yhynPVEIv)Q0DT4e%~>zRBhNNs+(_-A-##%WP8#havy{W3XU1RR>FIMdpc)aA zmtQhQ<G3^3Iq~d6e~H<3t-P4BWK0;Q)f**#=gb#mtD|JKOn(*m$(GoAW7-o>#H@C$ zp3%$xsL7LJ^st;vD>QA$`Q=ag-SN!hPX~^wuF*@x(vyqBo207V=}*OzGrDz7$HZ82 z$~gbJ__dV3#VNi9>Hjs(-fCRzqNOU$&3+oQuKIY4?3)=+KJh~I8g_UrvEq~%NfG@W z`Fp1SC7yb*H^#}Y^xT}bSbUjfVlm496~Z9>5-C7MY^h)8Qyh~en$Vl}xVD^=O>}BP zWu#Wtjp<^#OyM=!zxF<hXCHeyUefk!U2|WI#_)-;{FHJ@Ac+1JeJ5v8mHfSi@}K?U zi!tr5{c;TS#mxSZvCOg)^C&mbO8a}Q@(<F_@*jw?+6VD@Ep?i_^fECKU!GA}BQ5NT zeZ{cg`WG5)n>Fo;$7Ii1b*GuDQIjUcDAkwOtp6dLyc+%JnGsJuIX!w+;hOCuV~i$_ z$Bi2kov*?EhRWYRcXqt+!ZR`b+3C?Ud_>IA_Ie{GEf*`Tx?+sA6XkE~zxTzz#FNvd z<KYAGJhr^_vT4iaLpr8G(8bz*t@da6vrTwOI_zq-3HI!vVExG|O8YXr;%xs;ZrPvd z{vG-~FFvg{uUjL75ixQ3DKUm+2@Z4PnTMa&)_<Kbe##PV^D>@^3yPC31Qkb2WEAw7 zETzfBK~TycbEn4>&q&9>wozWgWBk}rIS~yW;~2cQ`ny7TiQizR<#_<%Cr84nA2Hj~ zgA)B$rt6s%3;GtY#MC6~>^ZaCKmPZ&TG^&FWXVbAq+!I8A*EB_M?T6ASpE6l>9Rki zft^`nCcKl4%<S#Uz+LF3TnWUByMF@D6`a5jB{U9P6NPRn`u{Bb<2Z0psXTmsjwbH= zbS~Chjh7S^6SZ1!!Gjzea$?QA{pOf<#U*lLjTH&u7b4rFi&%Cd`~+-)3H`bXykA=g zMkBXSV_=Sr`urgrH~Ex#l*U;{I9A|44JDl!Yy%5D5^R4;2P~Z$fXYdrG|njU@+GAM zZ(Oo1eqg}Lpxmww=L!S_tE*S&l;pI19*z#2SJZ*5`UTFyN#WIPR8E`}a#qm>0Lv=Q zw0B)_zCZ;>2+@#(Mj{k1xgLp}B*L1!D6nJBoKG-H%#ZR}w^p{sox(ln@Jr2jHJqGd zZE~!%OAl-l*oGjI2TY~jz$0Hu(vb^{Gy=SlrW{ENUKPQrBf0JJr3!XRd}?C`<Rq#~ zFa26a-s}@ijU_2VR$1ZPLhshE+fEZPU8wXcFXiT~iUn_t0B0SQx`$V$|By%J4PN0y z-wB63C_x|O!1md+InQKMnljOLVri*law0o?DI2hI?BSHOGg0{sZG316C!w5d;)}^g zb0fLRZHdttAKE}{Pq!eq&XmEladJ5;WlKR5uQ>a-RGxEQniJdZzI9Aoa)Roq2Du9u zdb+z~=FAz|ePNVVdUZxkWsY2Rt&GGT%axB+`>Qfi5vr&%a8+4QWG)~*SN)&rmTVOJ zsrrBE!S+ELLbc|r8vnQ-p~^@XRGw=5hh4}z+}~vzf~mMoQTv;1OV+EZ{i)jDs{f&G zC{RbT3DJ!@W<6K^Z`J=+<Bx@V{B_Yq7se{9tP&$fj?_B_?>zYq^p9R?3Wnx=wdbMn z<^3yN|8Cqu?Z|?A1qPdH8$GCKHIjaLRIINg@}lcDv}j8ih>)9{+@>LUDX8L{)Jio- z3yP=AmGKq*MOpu|;;gO5#4eYqEH^zVW?cQz7*~~lW&c^V=c(sqD?w6K{|g1_^6zN> z+^!cayjJ>5S5j`Y?QY@e0*Z#dZ2#ppQrckq-vS^X6RxBwQ(69YHi1!bywtXM(PX7j z6Yq2;T@#K;aYJfWRky~MFih;~C0KEGP-SAKgGcn4i1oy%pNV5~mOQK$Xv&c_JN~R6 zdTg`pHlCcyS867xB(rC6Q#K}s-6xtSr7>S?VA7=l;d9_(rKRS8gPbR66RFabM(1kS z)Q$UEcr$24|Mk?rOA6al`8G6Lj+3QdGwD5Z=gJ=D#^Q@Fsfi~FcmaZnv#u3fy-z(E zPoMZb{pe>IFQdVcfM3O>?0Y?Ek2$s;YH~gn_w4V+nk3<1u*ykUtcXh2g5VUN#)88K zOgOG^Kq%IUIdN!X_Y4|V1Vg0DOp8aHX4t-077067V8G`<UIDRE31>uIj_UzjB-o|& zfsOYm4=#Y@L#vtO++cMU{HZ#b9;Cf>obcqY^OeTddg7U_=aLpKEF1`ek#hq$R(=)L z**xQ5DV=r=-Lp7~)@DF(UY#ah&=L+AIJV;)dGws^3^-GZtgNCQ@>3RQ;?ir=QY`u8 zO1~N+*kQz)u)28d*D@$1BfcTN(O)Oh<KWjnG@zR+lJu+x9fxKfy{d_<K0FF17o4Y~ zixo*a(J^@z4CRO;r(ZBQga|mS&=9oyMH^>UtxdVuijPRqM(&P|rdAqBE;(k37S!^j zzJx*O&`#>4(6{9GWQb(&wtwQAqDMc#_6s*ZpAr>+lh-Tg;8=Rh7b?+*2MLWWlv@R| zVvaMk*s2kH1g%lC{K}ZC;uM$l3kFmMob%O2J=CNAaERHYlvX-3y@E}vC3pSI_TIX2 zpr1OkVBy6VXGH%%Z;Tu@O6Qq%cr_r7Ib@^k&^#=ogV(eDL1q&~!LHBwNd2nlSNgB) zud07l`=h2&eK2jMn@P2kw3+H@+%c(3DjI9z)N82ibTF{)XwXR!ockfeD~>Tn)&8b_ ztg9TupsuR_sruh){85cRs`1DF`}pI+3m0ui7Tx7S8axCrZ@eth(bJ#vLY$F)$WESg z9v#%t8Kj7FyyD30e@7TR?*J}vDweo1exBHh{vxXX!XAo(%@WQsF3Y(p|9LFEvj3tT znMW&C{a-}uKZW@p*#0vqtD4FLD|YHb+11C<%`vdciCXS?Qlx=&<z?Fw^nxkk++X^I zSvVEPOJYu}^C0Bp(T(TyNz(_wivGV&|8{b!p!j35ysx*{POPzG#(82p3o6U$@88QV z<fxG+ET&#^w$2ls;%()G$aYlMiX@ySI1TD@j_6T#B?pU~SU6|6`UX3bDWubY>3=yM z6u~xqI0!gzsZ9qlv5j53wzkW&m=xzTn1oy2hq}&DtjjyY1dfMjx<VU7Y>5Xgw(Jw6 zVc2fZf5e%%^0O2M=Ymh76eRpBnU`EvGJ%WTP+9YY`vrT(;iUCs=GRULr8IF8rguUP zufn0!sjG#i4Z-0gK-HD<{79H)Y>8tA2U(l8=R<F8g2nlwTYZ$K%G0n@1>REFy0`li zJkAN}xja9M{H|MMCO`PVPd+b+6TI|`9$-xirW8omGqHjfc#J^Lavae@ppQ25El4|F zB!g_IrhWBlTG>~V1FNq6_3XR@P8ic^Drc0oc0}DM5E=v09c<9%-~eMf#STQ`%?EPJ z0VyXIj(b5_4$6X^4`7<JvQRY&H7?!DUnctK7zZR+X`_;!&?yK2S)rpVWq}hb*U3@d zFe$-FP#BQ@+oY#<36D!E8?M9&I%3(n4@Qh0Nra+LtGWDa8j91^jy~PseC(G#poMEH z9ap$f^IjL{?NE8LvhDJ7f2$akrr62=Z?Ek$X3QAr3x{>L`GhO#Ki|k$wZF1=DHd&3 z{hth1b(4BZ8&LKCw4vxC+sQN%DaVyrbw}-rn+bGg15%CG4RMTbs__r)3(AlZ(HT#) zVdzF56jil9Rr^!5zg7Q3>rnN-Y80#fw;F%Q3>L}pm+J7M99pke3!f0YW-8E1a`6M> zC~k^K-IsU7CCFg9fBnnIl+pdG2GaBqSTS_-wWLHmp`xF9SoHL-`MQ}d;fU$I#dd-z zODR!R{+0b#^}lNW7OnO_`!uiYqWWqw)-j%7P^YEIVs8&aBgagQJ1{|L;t#kydx$$t zi|WE>Xxr||cSZ+HraP#A1r0O2p5@K>ioUD{{k=~5PuvVbM2BtPv=7^WR(f=I_vj3s z&KN#IXIeQGh}ZVP0BSn7^0~84R$0n<qpizWamA!x$oYYviZ7fNHC84SP7@p?PM6~e zM+(beaHMc=XOvcr)O6NTO&%GXFY+SbJ&A@KHk`%O><}FeX;ORxuMN%{J=*DovjM)y zM>bv4A(KuV&TVQhd4aBg<tNFP2IZ}{$q577GS1wl&ZLE>sdFX8lXf?4hfm}06I&WP z$~%Jd4a3G+g@Z|?@l#13>D20=02Ik~iiubJ2oE32O`7P#JPtG__>cpfoWUjknz91~ zUkID_g7YegiBG&vI=9Mt#;He|@}k?)spql)uVlB<Bu7(DKxL91Bww+WH2TGPD5jLI zc*(+fWANpyIILtptg#|{yF4&;IiqSg1La9#L`^&sxhRy?XLj__uHXYStdh72mNTTh zVoq@Ov7tL<#UX@)$t$zamG~SG3=N2NX&Q1p3fS}{Plqz~Lrgf^1P7jeZMiJ1i7vRr zgOs8>dybUMoxoKdy7SsEL>E1;id7!Yuj--BVCUe`mw!30Crcn&tgNfcGlp{vop-9x z;IU7->Md}Hir|ZtS`sw%pg77?EH|tqG-5ZC=x95{uC93Up{L`I*WMDthYwR4e_(oT zAM9b$q{*u5-EwGYo5!O5H^nHrp^U2bSGvGXrEhEj#aPQK$g2Ot(iCK)RuURgT|rM( z|4%!OCaUp|>kp=3%SfB4#((t3G7rWJ4)i~&Mr!M2G71@AwZB#STlGIx|67ees_~b5 zghh1x=`L;&{^H$s;S9yt+ha{}SPm!hruC#26!z&%2Zv!fKvf=r@zM)4V6AKMz{?=7 zo(5!;(t>qHkNqq9Qj0Z{S1U2UG6J<N)cWs;)%QL=4&P;Fj9U85!HH3&F;wMW*?(34 z7uNPKUyv50{dGH}>OHjmXL!|W_sgoEO}!@r{RNR?vL|5&+yAnuBi_L`3FT*SF?cbf zx)ND1&Benz4{i*d=>~GP;)^_rWKxy36ryFGf>etlH-_SxFW32;Ir-TvlfC>xju))t zKoh&}-+&ZHV$5xyzL;AEwwON#r6z)vOKBE^d1YZ?`in_guSzj9#8&iEt>}giW%&B& zpBZ>o3^9S;-Pfxv#|C1uCb<_ls8CroG~?=DN1x8;tdE_DQ7GV$5c{5~(NzwW23{C> zFW6eHsU=O=jNKFVJh1jgb|nW9+uC6)-X4wvk2LwysA*`40oi$@l{qph+anXs0_Rys zb9*|;!sHNc0`yqdv$raOo}4l06>t!k2jK-*r=p<A$}P44gk8SaIt~vG+uk7>>uuWD z;!Zf~LeOk>i8XDANCZwK;l~-{#X`uT{7s!xiGxGF1Nns7wDKpf5LT?RfXrDnxdklp z0R+XYEq0v{51brJcK(4|IH+^fJ#P~yo;VAOWn-?30%!G9gR_yy%8Dsqbnl4r+TJ0~ zGvH()(RG_Ul@Vo$_PheiiqkV0K&k_;B$|0)TfKhiht+ZDAy*l3FF6DY0ER$$ziR?? zzFeswTF4=q?c`Bm$qgh&8Pt$oekSRJEgy0IVNyVYqfd6#j*W;3+RS#vQPwzAftUYK zA>*tA@jw(#P4lY)!S0X&rxVUh)Q%I4^0q@tx+~kie(`~Qke572O%eG=Za6E2oV=D% zAeeHGBE`7~NPZ=>i9oNMNA1!R&wavAdEs0$m_SQ<O&cN3EXgMZM^6|NcmL_ZSbDiB zvFyrAX(go`Qp)yP1J2Q|VZ&ptwh*oByx&@_)A~Zk=n1DB4lmQwH^x@A|I&uaNB;^c zGucJe|E1AU6RQ4Swn5dU?Qv69jeiz}@n83>X*wT#Y>XPNv4tB^>N#~><>^n={#EUN z)&Euff7Sn2<DY8$w;<zRdeKEWEWC~^zl02`mhsAbQJJVn1~E=!aO#l_1DgV#v5n%W z*aW@Pwh%ccqZ5Zmw*{^u-kJ2(!dFI=SHV^E7iRqrk9Bt2E7mQ_-^EsxtuMvB%djec zSCFB4Db2jH|5me6swA&cR#pH1`SpKjbw$yy#s0GTCS(g<H}karAS>!Tmy%A_e@%C) zgZM}7-}J>PwD~wdUw<B0>b^yDzWb6s`G&$2SO)PG5p;8`MBq(6`?g#Oz?3F@7>jN) zO;>>?XS$MCf|qCf&|9Jh<5W)bn;G<!6JNw;$jMwDEBddm{&A4B982;B;Kb_h?~S>$ zXUCY)ob>2IEz0G!T;w?D?1=8EQ{$!k?}_@PDJor+uvYMtTPZcX91Fa1O=!j+rxH#q zwwc3K(9k44#)8AZt9E1vY~jYaOLzqu%rUhO)0Z4zR3}aB4`@{lE4yrW#i}L$@JM)| zXD5vEwJ9@>2CXSd^Q9svoz+6#nos&*%Q^??V?elcRFTJg1DfFXYA*4Ep2URoBU{B8 z!RicF6JfOGQx-2LT4~!jtElzzvB+s6$Az6yLLr8!7qkg&O2j#Xdg{u{mUO0<UMk6` zRbJdPq83loFIK7fTraQ-ClkmGR-xgQ(|uipaR#xXi!|7CypnMu@vC_2QF}0QK3T0P zCrF=axM10a4_R1AhcmB+5a7|wEP7T>@!O{bbl`A}jt;Hr>4hG)L>%gnuF1pd6^W-0 z?l+Z{Xtc}2gaaT~T?viuS;>~?mazt^Uwm{ZFD^joN45evCeyfxVXe4=7x5)x@Y&I$ z{N4*u@+;ljQYs$vVmq`>ImYZXRIUaNO`Y$>5nuh1tpgmyYu1%DSawc`cP69T%&TC< zpKZ=Fv*K5YeZY&SY$4NeW#I>Kyg?XQL`zuFl(%J*&3M(Go_z*a3TCGl@}L865h*cA zN0&k*(PbAnaZ#oM+Uy+O8RwpIS?qbht}$#_mtwF_C%>kzabw5FGtWE~?LDk?6m?j} zHdt{dJE+=!D#QOj`oDqhIk|zV+PALZYQt2A{&xB2>Rp<qHnq$84TEj<U)BG!`g3l7 z4^4ti-f!k=8{IytE${3arrM->V>?b5J;|<%3@TT*jjamvdW=72#-(5URGjp{bJ6zZ z{o|xV-V-DKAL#dMD^Ru8vPsG&t9U7YyXwDod$s%v)A*~uM?8zKI{dw&{(H4DR1J?p zn;h$w0UZsozkaP8bzebQ{*&du^Msw_t@~bN`iI~6T<pK*m}~=w&_~s7!L4&Kp+@<i zHU4efe`b7epL0cFOuYXmKaQQ2mzL&}|DQ>}(bMa`vrRu{$*q+wl<2=6_W!S}e|_=X zefPvY&rH==R(<U7$+7C{YsQk})t5;`q<ppd-<bY*{PE5QVz$OW(d>-zZ&)+dUtvN~ z#(%s0Z}fKOZaiACK3qEoyjuHL>wYfox%J+7c+Nm{>2J)$#bc$l-V~D<gg6Z9zfb2^ z4oHTMuHlSE%=_zQf2kQ57^MGt+TXvn{ry+kpEQY`sl!>A+TVX~|5xe%|L^+Gwr$b< zR*$f726tu!YcxCz3*A$cSHC%GprU6!<wQ)z5SLw|^8rCG$;aJfflATDv;uF1MX2bP znnbs$<Ce0l#?&Pm<5TG$iy5?<%KirJ!xmE2zpDMI+Fx2qH>1=J8ctuiCoD++qs-;j zNvvq##e;U3NnIupG}Y?KAqHrsp+?+Q(1fyXIv<nBO#TYauVRMJOl-ZD6aNLzMOr>p z^j}Z?+lf`^zbVHITcq{Nc{0~q3U<ZFkt1D_3-X0ir|+*b;)RROh}u}KO~ygOHgp6Z zSmjfr^q>+h?MdkkIgA>5`RCfKYZ5@P{o1Z?K$8Lk!r8A0byipbGf>xx5!sqv?+xFN zcc@Kq%IDQjS^)(PCYYMaV@FI!m(zQ6?e82J-6KcG98C_)?HI0KV0T7u+lc7y?1~=A z+|xB8<_^=dU<Nel)~`>W(i++-aX{N54s?h=Rw{|VhPE<nv`a?eXlNToEg#aVr@Xd% zTSGa&WcY13*YuAUM$xVdIJ5FxFU3iOy6|@h2j_kP#F<u}oD>`$u(p~U6w(8Tnjq;? zox;(kw01cH>z#U*?3~xc3a=VlICgbtB8M}wl#i8RY{96!I0e~Wuqg)&xcZfbT;0-5 zpPV9nUC7#@)lIrmKAOJsRg>E|#zeqEv<W7s9`z{O>9bQ%?SPyt$d_9qsx1&5PB_C7 z+5|HUou~|RYDUSzN-^SeBGA&*HL;^_t%`%X?ob1YLVn?Md!jN1uhi-`M$z~e6J9*9 zqKc=6oN&0ph`^C(I<!~(35K?f?Gafym0%#ubZk{#MLV_d9kD$i&LbK>Yz!wW_c;xv zdxvs#hSOAVs%KsermIDiY{*0)o%|$FE?zmOIPkIBs~-;>Fl4maRi3)FLVS^~RSu)Z zkBKWUxK1`CjR?<zhQ$`s7K6P#(Wf)ByiKA+aT_l^AaB+FXNmnM_kRO-|5SD~A;ym% zALA#Cj<f!fR{gj7|632=Fvd*~{J8NkX6sW!yR0iv4^+P~TUFfGum683&e?Hvi~a=h zFn(O}KVibS7$;dqyzPVWt+Q{8nd0T&IsTY&&pC1NCD+9TzkM!dQ-R%VNWauo)iG<# z(X<^r(N1v{-{?_rx<ucD{}-bvpYh{dPUybWKk|<mwn2RM_{-u6H5;$L{>6HVVi{g- z{5R|N<78LK=Z7wQQqpCna{Sl*(3P?Ox??2|Wj7%<I_UvPI<Nd~JvYZkm4>Vn{)YV9 z{ro}YwKf+({%LXZ8R^7Q<~aW9hh9d%)c@;M|NHu0hzqW}Sf5|S{V#RDuJi})Ix$9# z!+yraJAZcX0@>e!$lo`6MogVHHKxthS(z&G*Sr4pJalP%ex0$g+`1daR$FZo+ibIK zZ2j)H$BI)%#U96A6E747I=}tt*E@0V83)D4rB;p2-@BdiDetyh#yeMADyDq)%y>){ z>D9~srMTe-drF_OOMNDe`c&M|gB88J{d?x>qho^!E5v&LwRP+Sjcwi&n{2pFEHmn@ zarpUnsa+sfS^uAppRJvBeAL^Hh)1<FT*(^8QZx9IHi35@$SJ4H9vHCjSy<}->(~BQ z@>k`b)?V5F!d?H}EG@!c3;ss+uM)Ow0q6kA&LDe%><t`OCggxJf4K#NJOiwc{~3C! z11fr!B1K>c$Avh82dP9?^iz$M{ww=a<)BKmDoIg+s8gBXROxB37A3Hr{a@9;s{N_j z-+yNR<33SsGe00;q8aA_4HY$z+D7-qHflU2EM2|gd3zERadq8mVS$1sa+$LszcQ9D zTy{1nj|gOdgzkLqjc)wog^K<^UH`1+K+h@`Pg<*VwA!T+z5Gg7Ta&RuV}XOpwoT_( zO~3BSh~XpUkkNTnoj4ux#XKji(h0+=Av;mz)bKD!j+6$D7CtyDgv+bAa1!C*0uNW` zD{%-$lY2N~kcL%NO?e{f0~nJek{2i)C2}|krD27)pRMZPNlOQCLiNcB(2KK54yXY+ zsCxBla2!)TT3Obk6$U*zhp4-2q~eFkxr0+n&Ko(18aR7K$k`)@*nn{LDz0BJ{c=X( z{K7fpUu5D;lLLY++;C3WNyWX=aj4*Q!YSdpt1FHkuf)=QT@Jmv_^WXSSC`Zx{-`VV z32IdiE3KOPWW7>-QN{8Wh^SCnNL7jtvOyF4x`H2P2XUOMg+olp^ejEeY1eF%;|_<K z^)DJlI<&G3<Y2M)NDd%uNtK&YP{|0N+6&>AXm(ENPHB8_;t;RAx`#vB5mr(GV}6BG zT)6y2-FT2GL+0n)u6C8J&mU8g-7MmPwnAT$PjHIGab?@msw<G=f&&$B+Vs)qWubT4 zAPJECn?78Dmo-#4!{AKMWt}m0U~;0!zq}PpO${CQ0`rPJc!03YQ7gpQ9+MRbgqoKX zrh~|iKrx0hnN?WOWb4J`3s`9tm7sejvxNguGbBB65?%ivd*1<AMX|mA-J3!ZTIfZJ zG^GZxpdvm*QG5!bqGCf(L47KA#r~{VKu~O`pkSp~KrEm>m5u_^mENWI03q$(|M#8Q zz4rzJL~QW;XOg>R=FI6cyE|uRmVUQx^(IW6IGeK~73^|+`;Z6Q>w9<!^!q&-83>V4 z&D7M)L%;u5pj$>2R+F9wh5f$_K~JGBY#C8$<_Nz2WrsC@9!(Dpn-Q^pe%Jr_jGyr4 zQ*)vfO3+9CX8HFV%+2SF#ABULM}>=rVw2b2)rM5<@4WvgqAt%8XN9UM@%T{ahq7&y z+{2aMZZ-zobrI?pzYRZaW#3_R)s{(5?brIML#Hpke_#7wi07K$;}~uE9Qw7dW__5G zKNmBG^gyXb=i}A+QCX7qaK0G<^4$M%x#NPQ?>6iv80BRBg5Q4@N8@w<6+wU9sWtbd zuTEF`Bh>GcUuX-ce~$xQbM}${Po$q4)6V1MPQ1QYinI$}XZF_r@1~!QQI{WuYE`SD zO1Y~sDP1`KI{(XAJRGGOcF5yLo>aE`;Qn(_wd<!y&&U5~zkD8!yY{76@W}Dj0oS1J zc`ss_a`v|WZxhk;%<?#+$9oa@Fm`g8V5h%W|6BI{EvV7<LClCi#vaVZ6PKTaI<L;~ z`UTamfG$J&IiNWYqtol`XZNOWHv<26u0L#8G4k)#{(ras{hs#k*`knsq5kO#h2sx@ zM*p9;{l)fnN8+)6i9Gyx*M(X?@76>&D0x$Cj&3aSo~tJBwA_vr?dI4AVYVgj!jq?} z=n0O$Li$pll;O5cY5rFEek#;|q5tLe2iNcl+n;qqY$k>M4|U+XNMZl$I?g|E{c!`s zR48$1aF%1Jyxi$QRDCt`ZGglD5p*3h)pNvE{ge$p%LbOoy+&f`sCqL`ferbp4U7pd zPi%075dMq|gSBg`5Es(_EA+2{X${WHkYP?U$>p+e8pJMEte6E{Y_LW)E65+s6l5T0 z$Lv|i+O&l;M2gt#7Oqxj_R|t&S~JhS4Mn>;(<<yi+Fri-g!v0Y9-K|2HL5ggE39Kp zMIo&Dot7z75QS$JRH1JvSdhygmdIrhPD`;VSdq&?)f^j)r$@P{4g&+kDX|G}Gn^F2 zk(()~!#~a9(af+o28t|?0W{5SGC$<88iE30wnQRnE3gt`;3urvV+@An=*NIlW=c`) zrY>`m6&TVCF5(g23>X9$m^1kp6eD>CrZ{s-fi3DOL_Y0XSDMMjW4#G%Gpxj)*if*K zcy!E4R^}o`z8ut(>`M7GrtFp+bhuPc{A$TMTQ-ki{<4FTUHY{4$a>P3+M|}Svsq%4 zSwy*|W(Cd493^!@DGt=Bz~IHdW=bh2=K@HCv@(5LLHWWfF*uQo$2>3qf-sm$E`-MV z8u_P|^izjHYy{J}0!R)Iqn6H=L~qL@v0_MpAJKI#WAe-1>aNu1sQ;o07>HvI_nJ8t zqOObwep^d4<O9YBLEKW8s_Q`X-73Q;-ozDo5sSI<1=)m2@@WQ^;8Zc3&2!SxQi8@D z*X|Q6ElV?zCK)ysRL*35DD$j7nN|O&Bz?;F#ijA1y5zyEL8g<66~PZ<e!{AyYb=;0 z@{*^Ze<g~SL}q3tvN$tK%Q$KfTsUmWOPPs$6!!m4<K|En{-m8~7qbwJdL&=}%s=I5 zURrzqJD8qDf1?vvGu_Mn>%SR{w|!vkcl`bG>pO;ix_8j$82!~~d^!3{j2`(up6poD zF9JUAg8s91vi-=1U0)#Q{`>AfqO908MveQB=&L95QlmTY?nfWtgAYHzN5enF3wNFE zm(V?5$LV*Eg2FnkV`49$KIw0kf73@V;yI72n;z|iisV81NBTm%dO>kCzve}+H1BTj z`_IfpGoXd{l-mFI6@2ji`xrck{x@h41`X!#?ZFuQ`a2liz8>Xtx^<0`6|7@Eko<`_ z{+`j;zG)*iY)!}gC#15k6Am?O_T946U*7*oDSjfae<gjN4ELJ#_gCM42e@2fIG)$4 zzs&zOV|drj5vfXbeHD|JuEq9^D=_J;+amdR|4Q_mvolZo4=s2DC*3<f0@HcGL~Piy z6)PvciPnDZ*n4r=Tl4c=|5ktX43cWK#uJl#py-~ja9P{-{V&KMTfOTBMgUHGWEg(o z(ueDo{EQDCx+s#r?ap5KVK*I(^=1FWhL_=;OI-2KcRh*kckzyc`MTc!U%dVlKL6QW zM8y7oZ~x=&Tb;N4#r+SPN8$6o>m&ZY`;P-%|Ex!`=a#?D{tokzy5$q};hF4aN*5en z6!d`RUv#W1QMO71#0*_J1gbLSxl4(AfN}X&%j!f>@q%OZRHTcKfjEcpaT!u#Eu>H7 zcq+7Aq5jR63jMFJ{kg7(t)j61`E&bU>tnPjc>ilQ*sK571BchE=iC1~GJgN>x;a)c zSzQ0G%L923azE+NU>u;}t=P-cP=;vgT9Y4rL!$vy!duk{f*AU)zyo#km1Ri>e4f%n zlakG<;jyk^_QttJVwCSOWnk8EYeP62&~v4>w2<YIV*%>lU3_&wcnukQxJ846_01ts zD5US{nS)Pe=RZmR7Q~>26)4aHg_ac5vSJ#fFIKELHUImPY@D@zJvLAH9}+55;Gnz< zs+hSoh~xz;%wNp`NL$$!bYS3uC&rTojm$SFXfD5x#6V3PdDAQ=g$+1Wgp9etd-<pQ z$F%|G>YORWk2~359cySAIAv?L4A;i90E=M43YaKR<F_I5r`aX?W|u`2xb&OeV7Gu0 z=g5!&26iZuX7{LmAemVV;SfkzLTV2RR%ygb@=-4B)n2k0Q3)lId)DPCv(<VvAmRKw ztm#_h#RkAt!s$~Xee=uUSc3u>RtgwMlr)ls$Go!^S$#7k$dizwGt?ucuvtCgK(nn( zpQ5EdGGswZq1CY)onxVR5+1@(M72UC(bb^_x)g8>=sOOi!7(Y);Ors3B%eqeZrMEQ z$PBK5Z^=rTMV~fHr2Vp}n*<7-%|MKCN#g`KwM-#L*Izihh8XmTqrPNn3mB44K#?K| zOB}XL4cW>fEqyaAf%%eAa)tRVE$L56GvB7Vq-PtfBcD#C;*6QbqvKh65uo}uNlq3S zyiq^InOc-Ro4LYafgJ9Gv>81Fdw8rR62+P&sfP&UCH6M9@l3iTY?#Tv)3nZrkNQl^ z;nI$hf#))zh>JffCoX$75FfHJi$zzpO<R;dsJbMoB@X4UrOTGY*I)jKYj0}LbHbTV z8g~cX#L>sglqrYw^lkhu2fs~5eVFbzGf%!Qy*PfHz~YlR%;QdqvkiGCU+y`HIqJJ4 z4|y!?|EVbb(^i(`EWRzx*0Q_&&T01VzW(K!AsuVlDi|_o!UH(Ib$QyDyopD@En+=} z_kAl0>>c@j8EgNY98mss!4hoS%|=bpi&w6TMh&Z==mF&4wrW0R{kjO5{EiHVbWyr? z1DsH^Tnv4o^7KgBL3F}-7oUY@>Z7Pdd0or1&&R0^+o9FNKNxpkPh5dV8a3EQ|KXe+ zSp4%W%-@*7nT>oEqG(k#Xwnc>Q`Fy*j(m6@`GH+)e!<Lnt2hUP{SgCxm1?IU?b!1C zzEeK_Z|%d-xjxwtJNs{2y8=7(Vg=VlO|4V~B@?7YO5xcf4}D7Nr^YvSMThfhc&EhG z_Cj3Q@g1Dq?0TE|5qSR<{P0|RoLfeHY%X@JS%n?!U*pSHMTMj+teG<d3%76vW_&8r zPHBuX^gG}GcCGytv*)ZrI<aS(Yz>fBw~{xL)#=^opIc*AY)BrpbzlDF`0#4yBSGAO zZYP$qmn`J}nTtl?t}&{^)aZ7+d3^@Db${JXSzQLrBY&JOI+oJ#@2k7v!pgcAaD9u* zce+%LI^kIV6Q2j`e?pmCv3biLUavC|U%3o;g*W<HTi0OSF4}`Ht5mOC9)ay^Fl+8Y ztlyPQh+?SJ^f)vqtLf6>VsH6%9oUKm(`RDQ#$3L`!fRmiQK)-Ded^!wsXDT@H3gwy zN=hX4U<OvwCzoy7!8VYH3iX<xaa9J`BJI!j{{!it*z@aurK3plt|esMeEcB&&#v{W zFmEy2vdJGnu}XE3#<rXiBY!Ak8+N9z!^)+ONC=c;<z_T2&Tl@YmPe^%&xgJCAI{l= zUuMk2(hWIC;?*{;d>u48{#caL%O*^D{68Q01L?ow^B)~8w0sfMUcMGb(J3Wm(<`3E zuYvWbcg+w37&Bo79!#t6fY~M{zw?M!5jd{TMD)M%c=Mg&$6tj{e#$_JX17}ToSTPY zN!LeETW_2MH{qLSACJ_#?D;ow)F<8W{6v?f?_~z`vI<Y7|4Bo-MPN^Sek{Je=|opn zvK}scXb?W%^a<Mbmpw<|t;rkFs&yGx9xjG9UG4^k_qMX$BYr`v%a0{}XFn(5A=v*g zz5W!$|Na#JFO=W;;{mR}=DYb_fAVR6`|tnv)BhCe|NlGvM>@bG^x&`!WbrPADvjO< z>DE`tE)gtq=XP7<N>uC$4Ne<(?PjJr1g~5-`#zinB3O`}o567zKH$d}0Y6#59Krv6 z^xaL;Ub6n}^!H#DKLG#R_5h0T4dfE#%Aj2NN+{0nwk!RW`aeA6|EKj|NZ;M~6|nu~ zWMGdze9w2tlU<{Yv}@<F!Xw8$c>6D?|Lw`l;KKw5^0+h=-`lrV;d%)>%$I&nE<et# zkJBb5LC*&P_BEM&#tOwJBUxWeCZ2-QC-7g=|NZ&&bNFFs4KK1Up{^vLbf<k%GCLHB ztx~^_bB1EJ6<EDP>3`jQogote;?agUC7@1tXnC>py<(NPVN6wG@_FN9Y~+*&c4lQf zAzq;h<?sQU%RPmHMUbSA$wcJfAz}S7Z&kL^2z_Sw^bMCiGP9Da7v)J0`d(cYX`n$k zZRU#&!deYgGEp_492Jxlb!wwr+|vj3K%)Cyjc_=;#K(s_;ng6Wq7Fd~o~x>0gqQpU zNlW!i&jc%^FJ)@r+E0I6{|Z`Y2|f*9XeqN011ve&Ih=`+V}sb9Yxx8Zy4UxYw3OL~ zDPxgPwwx`0$7gqQ5eqtSR9^%8)<ozdl14U{@imjm0y(y4z7b~##sM?jLm$yPdK_?2 zFiQ)-37dRH7+f0?4&s$t3A>0h87%3TA9Bpg&@f+vB6L<kTK}M6kMUyFh*zgJm_t~> z`#~uk6Q2vDFz81|*V24OmGrf|9#IlVc)2r~#IFJ!swe*^W`2Xn1}F)ntBZ6aLRwl* z^|j<;P&2JqN5KgfT%jCXo{mi0>?qg92+VR@9*{*GI^l+OI2fwB3Od+qBIBQ+!X<%B zZtX~)O0#b~F;AR|1<n!T5oHsz{8!5L22K=EvhS%0hyFONN?(DBV<1koq}3pG9j~S7 ztbH>$L;uKPFj6zi?Ak^i7;7Y~#Nhy|3?x_${;*7w-W0o(4%Ht>Ik~1#7V=+*3cl+4 zs2Oe=e7AmsQJ{p7y$eme<ce@|8^I{3#Z%8Fx$Juwz|yzah+k!zm8BSEfH<Uykb+`7 zmVRV61>j^njbVugaV~@!XR{zI^<#aTCktzuKPnI;SowmYs`5RlQn<~otgo423PkxL zD)1z5GHEyo$-2U$(4j2D=LyNod~quob;K~E%|cW^yl3ZbeEZd8oYSracJJnLamKTd z9y}%R-kdBTgY^Q%igFo8Qc(~~42qsJfXVL=GoSE<{lBLN8t+KG{;^f;;~)cjeTx5{ zbpy&-k?c<pI!Nw<&v57DeZb9+)zQfHgPe8q=DpXW``i8~a}+*^t1xid^SG=*ae5W; z60zEGICBLCJ$Myve06FR*gtCbIDUBbZZs=H<l-ZS-!MZip$uZ;dl*su$KjL<F9f_m zR;F$h)c|AeKQ@gUh%RT}f^U5qG5ebaOv2MwHep}mCntX(YZ->#*9l!-o#q!r_bu<o z*MlBHi%RAQ)~B(SRN^JJCw2(_{m;S=Zb90$1N}mLusj17RNyJ$^Sl31AK<6BOt*}l zVEy)2JgpO6dGIAP=aP?Me2<x{x8l6g#n_-{;L4i+a&q4KES_B70}l;#m;z{pFE)?C z8OeM(BX>E5_PA=lvW*$^FixuwtA8HH(0A7+XaC$^zeW#_*-B4eieuI9sV|lOz5K@A z-^I{g7vtz(2f!chSO24~KURLtmQo6$G3u12pV*nU`=>9Zi=5LxdrY3}@BVYe>t~=r zj|GPHfgiWxp+-qYf9bnz(X_{W;%JWnAGgBG9d6%edAJU5PQ=?+9nSzJX~nevb>m;b z^=I9kzi$ox3C~{I$n~$puBDLuv~A9Zxa*4R_gN;dUXS4z^H@8Sm4YJve+crs%8s0L z#6Q3Nsok2dl0>ZjgF6@Djs3RePI!}T`HK1_O#a1hoPj3PSv1W?*Tz-sv}E6@Sa(CC zi2tvpj=JTeBl%>X@q=;031wrrb?whCP%-j{<BFlON34C<)~HMY?9%JmziN|HSn2{< z3+)2z+FvkpE=Km*ZZ!kA0MB<i-u%j!KR)epyxZnhbQ+_p_|q7@@Lt?pn?Xk2XB06L zkjHU@$YW`II>z^2p^MTFX3xXNPq}3=gSY`N-Pnx9?CT=WKk+!T?*=Tmb35X)LP$EQ z9L1CKJN*~`*HyR|y=_+GcQ1^>@+<41x__@}+#Z7cWBNb!l?AcCDM@}Jz5h}FE2JM| z|3dv2`rpC(-y^;KIsT8_ZS?AV*vTO0(fxq?vugr*R6nhp*rW$VC3WKN$j&U!YWVqi zt66!NpT8Y)dQlFBC!=VaK|J$;{x14r!_kb$YMlLj^t0ED#qIS|P_5pHXnx9xIPL`A zj8^BHXXonUz<;&=|9ScUY5f<{|Goad6T>ekij)+#*_6vML9bjg9a{TW&4beq&wLFj zNu-&af|Cch2P)N6+JFC(jt@OPQ!e=c*?c2?*aay_PDw#Zo427`bk|=UoW9?&3G&bF z|0KbmOFwJ&%ciF!+ULcE#Qkf3lR25^y=HRYE+!rM^6$j3bIPH7`3k7m;XSjd6VJaA zQGWj0nNxF&^oMSLz3H!!Z4K<&g;EdNe7@3vxPBUnFmm1irv{_-O(1&+6bG!XHxu2t zcvL+x%IgmQgjvr+mTa$F;`C%Fr2psZ-|1R<X9$7H&*97@Eg`mh*KV$K7tbG~2)`%M zSn-^3v~BuS<ZRt$>$!!9Gl#(%4anzm@ZOeKBb)~DH3+A`fR?M1FUSXMwv}@WmeR-U zn0}-OeZeabp}+&-16nUGz+puOkn9^+9Ia45zy@FBUplAS>?a2#E@4r?OfyQ{JRxS1 z7m-p$<4?x~HveRizc-qS2#J5@Yk5G?4l^po*9|xxr~2ec^;xcs4b-ttNW6%;24`8B z?1=(5M$F1AK0#QbXAp%rwR|9viLT^UkSdPr?*+NEVH^W_L4GUCRHS?cv<;uAibccY ze+NrA`BR$}-=s~mP-i@#U8EBQaTK6(V<s-3rDMq>eTiS5u{whoWHiJXatdOZ9*8HT zXp=%Ggwx=#f@caMN){yxwUEB*n@prDTUo%4mLRnC58P2Crvu66lKKkfQw9s1@Yr-D zy^yATgG)TpN8&v{iR0jiN<}$d`X;QFFO(pHSF%&?ZRVUJKui|!Vl|_u{z^D_65uj} zrbCZ!?#M6e@~3ZDS#V4zHUorJWNIl*d}yGFz*)Q=>$_Oedx-W?5`Gt`Q@D-inq8-Q z<eBPmGzg<5F%|KPBb%CS$EIX-6}U5S@~WAX@*&Bs;Fe^NzKU>(!5_!Y#=?2a*{0QI zjC6rE(p$+AsSIrIMov~1<s?qoUCfDL*;6`|&2%cFI-&v!`+v1{DTRsqBk}s@n2*_x zy&WT#av)ZH3GMH$|5^C)^(SJ0{6l(oME-Pqaz*2OgIIzN;XPb?!VMU^jd-mNH#tl2 zY^h`O4`Qj(s7G){)jPP{A$9BfpYoYFHw5v?ddb0^JN;*3><4do89<j)YLS*&i~7I- z){Xuzs_Z9-rAn`MZH}hTPPVockw14CUOcW|{(&A<8v8Wb)M$$@*Q!rse`5TQrfdEL z;Ou3#AJJd+**!5qtTYUmxfK^yv{uDFixt`K)OQ*ZPyb$5CQ2%iLA2q2wEdN-Qe7pM zeEI^Z>Sy+g2C@7sGeXWv^lMu8fU=!a<2;OB&zAvw{pUm95eC*y{w9LH^BHx?Dw*)~ zkFrhh%13iB<+%<Vm}i_VJMVq_-tupp^HT&@I%kW0{bnEBcT0D4zvUL({m6^>;+M65 zsQ(EUIVOUi^Qa^GPbgBy6K5o@%O{AX!jHS1ir&*Xl0h5z{<o2~t(i}N#wYS>=Vs_M z%nSDTKI;|s?!0dhOGUpvdkNYNWKiu7_P^GR`;2IB^wlbKEpi2U^}hoj9k4CGi>@bh z!+1V$`trx3k3H54GJgBp%=TAfKRQwn_Kwr4;hAY3(mef7-s?{|sVREx+0CV~cVo!K zH61z1<hQ@&W20f}&h;xq=!dd*VXenp_{vLAzo^%onCIj#isqfJi?F}yH!e#^-RtG2 zqpy7f6V`r(8=5KVoY!})f=55JegP(W7($O;iN?XrnDR+~JbceB=yJ`qxaF4r;_WY% zqfFH*II3oKlu35Z5Yc~pb)0aqLlBtr9Trg?f7JfI{&i1d$@T}bKLHM)|GoPkAE&Q> zS1!Fp+rN6YLi&aJ_kBg3(Ej_MLjODB+n?v^N9rze`*zp~z_y`lwwjM6yMXK1JJ(U} zTs&DffTn4U(WpsdG-;BC#*G`>FRd}Bdh0ln$7Kb0Zg5Q-bG)N9-d?IH{am}ggrfz$ zEhb{T80z4l^aX0*y7=qZYV%0djbS^o4CbiRAY3KhRPceE^bOK0bmiRgU-<`=pXCnK zAECbly^d;ye!mJA@sOY6jbUQmoXKhP#*rgr$KJUo%O9uzPs{&D=%-^u*J=nh4kGoY z;T*({)r~Zx<mVl(_WvXD{}KP&j!&+wPTd7i{>G26Lu%sBv~|$-7sejJdUy4F$=vGw zmF+J($Z1r%NhYPl3?4^lDtmwJk9~^(<qF&P@cS^Xo}KeSIFkqeeEaw9pN^5&9*sbg z0Lt7v%<Lhy54r!LZDhtR{I(AtgZWbmU{^qT)FCk+7X9CLe0F_pBp#oLqi+5L+dSUn zPz94ejO3C|9+WWem7uJy+Dd-jpWOb1RwLvddV2=Z;EJA9`B1}0cB8JR5o;!VI#!XN zEx&WY2oH|u@?ztfXf^Qd6u?|&>PA7sJCZ_VxGSXp7wBI`vNw}CNTz^RR#rA=aAu)o z$x^0rU-bpqYc|&I^=q)@r-=yhMIC*oD#Vd{&2Gt3r%B()Wk4X8Q4|gQ%j60u<uH(; zFoJuqHH+)S{K0vMyhH>03J7T?it`MHRNQP9^9^~E0x<F&{wYvkgZ7@6Nlp=D1VG^- zzb{v?Mg4+&Sb7jY;cN{8YH*c_RjeNC7zK^w>qvFDR}f5rECuGw@3m)O$=V9}Q1C<i z>dkM4Qb>c;g<DNYxJ83BMJ>8ip~Gc?Ixp~GvxN*^e24~RBqAF?BspPM3@x5EP!KF$ z5gGBqfS2^DaR(|zS-clzJ@O?TX?a4M9c8{ncsm#Ws%sM4a(QaI?mJJ)%e7_ijCUG0 ztVj&?qF|3n#GTFTqRma8%++9vLWip3-ug9bnF<4nl(9_Zs;}^o3Zy6g8?QRHG8S1m z_tGin|4GZ%M~E}YB5aabgFkLo34v*M>5DNSyH0@DSL1{5QWd{WX5};xYf}~)NBr3L z#dxIU1I-3b0_Mn9JfC7++27pDOv!xXmmHHBr#A)3Xd4!2@J_rE3F}Dz+*1c}Y%9{U zT#TiLUs}-&Ed!?xv&}~Z&wT0G0~SA$+-9*5yJRx_+{xc7R4IoE-_Jk-zr&_kal&8F zUjo1LRy3tJXE}2zC<{tUNXk!MCA0;P4V!4n2HIPZBf`_d{@>X)q7drM{FS<q!yb;; zKlzlOo*eZax_BqI4*JRYtS-!yBW}xNJkx)ZmDc+2K)lhVs$b2uHJ$}me2y!=aoJi{ z?(>D~kiI8_%iGPtpqo#y0xhLAeA*goJ8Hwr-@6Zwx+>IFE4(&tDYop`iS=_w<KgD6 zK+7F=e{Uh(&G9OiR8nAU)JNZ9?APDmn{U3s=nr4V9cPz9o1U|*Jb3E}TvI=Zc$r8n zK4UI=U+90m38>fOJ<Qvfj@>&~W6HqjcXgINdM1V}=j?wqNy@)s*kibFv7s~`UzxlZ zJ2LiQ-TePWc+?>L#XUdgy{Kz9g7*2;aWZjj`(IDg>G-lvExk7F2V8NCmQgIg{f}Qs z`+eHqW=t6Ic?6<Jg10D+I;)tZ8Ai{I`Vn&%%)`$!-@<7rAuJpIXkOW-EWr-W%v`rH zuWT3f9L?nvJ$(DncSHhbTv93k06+jqL_t*H-IzDWpH-KJV@hidt=a$+^`BU^HLf|Y zHkHa;X7UOYN$Rr=y<MYRc6=%aQJ6w_7Z=oTiVJRi2>k{Q#6bRD?R_6EKE4Kydt?-x zSN{I~$M|xj+!C+i!MjF!*|xiB@OUiWupMicPQX+Dj+Q(=Y!a8d<vD+WJu~s>rBT~D z-`a{@+kV58x7|{8s`**xKA5~m_aS-ZS6SPhpYl6Oo3UxlTzq)famunZtN&+MNp1Q5 zzpwor+yVRF7-8+%lILoFx&r3se}R=>;L4b`{Kdlc*v{{%ZeKGSgKqNM@<<Gw_M6FH z`}+T3?TYDmhURrC4R6j|h4sspV(v9{jaXdvTs$4q{%#sP0jqXoSo{0_*{l4Dc>JdK zu!j8k?awZ{yoMH3{>-^=qT%hMB7B^3Y+0kP{&!Ezch?#>KbFID`^sOjPSXf4gMVF5 z`Doy9QJivhCmff`_U-$>Y#)<+{b#NFEi!{IZOeDKt7#Rqy6SfHdigC38S)|hw-;`@ zxEabeyB}jW>C3KrxBq0+Z_(B;t6%wPxdM9ym){Jc+T=U7{T+_ipZ)ot*gsVJ7s~HB zW}*EH{hxh{b^Yw@|MvE;MtlS(T^|qA<QljhF_ru?cA3$$jIEf+$q}>W%)#7QvoU8D z_p@i)Z_eyFTtj*`W;0L6?#D91&EhW{{tgQ^bAUDGW(?_mrxHWs0Q7yX^mL$$kP;8= z*l{fgcO*G<@r+>B-H`!v?~%20AyJu+&#UiY7llZf52JdAN<TE~TRcRJN~QiY1nbG; zv`{v-u3ms&KE51Wb=u1QD*EmUXe69Iboe*Q|HtTuuyfriU^e3v3({@a=SZ{vACup6 z+(YueAa-tWy4$ocodZI&yOgJNQ2TS8a%%>H=aNO-9;*KrSboy8R>r-)OX1SN<R@3W zm)66GIJBEpp0kPZ20O?lQFvf?fF3#@??L4+D1FDXuotBN*|A{-JJSHR%->~irTX=> zcN9H2yfZ&Hzy3!cCWgielnenisC+voE}i`2^3xC3u0&uCuxarQ1{=kz<TNf#Z<eKv zY-m4M=EFq5Iq5}XN%BQOD)~nR(ZA`#Djl4@IM86U2%10fAx|uuepy{=<q)mAycw|L zR=nzA%+$_npZ-KmaR%k<QPGyZCxA1L9^8n)a1f)&u*{uuTS)&;(Z2;2*jZ>GJitMI z&FlzqkUEoti=|V`*kHF@qo7FvAuTDm<;TegmUL_S>)S{in@2WhZ{+d;Kg*-T9cO=$ z9%-7XX=4q_%NI0DO8y~l@_pG&{-EE;33S!dJ(T=H^%X;5t_4%%U3{olxI}a{sGw58 zagijaH~NzMPLRtNT^<R6@u0wkyix%;H(Q9@Fc@U~*c2J^C1)moHq7Dqrt)$bAn^Ma zQFfRKD|iMmv`nCc)66Zs#Y<NCBfbO<Sn69?T0&5PCkDb4R0}g2A-z&8<`Xw(V_Cyd z9(7=R*wUhGC&J14yjbvGWo|%BTv&jR=k`{w;D|fO=}Cs0ya}BJ#Z)GJsGRUN%Zm+F zK|AR%NM(hoaQD3~;x*$5zlcy`AtJ2ot2#N<sp=7>>0IE_w*pYIEh&pVW=Jf4YfH1t zM2`p+h*1EBB@)%3Wd@OmV@3iG6pqm{hPpl~U-RNf!LTN1rj}}3UG6y=s_(+cf3%EG zFr;sf@l>{Fa?2Hxj`GxL5uxj=grD+TeU~qI@h4Cv$z=gA)|3A9jV|*e0@!RX!HABW zlCtYNW}2NSG71Js7YdRoNM(A|IsH)X8)h)j{FlczgHAMrmpHB8^yo=e&Dx^XcqA#+ zmK1<vJ;KCO5!<$H$Jbv>w%L3pr$H8MlblkNOBVCh7=8#%foKJkO*XX`@*{lGm~16| zNIBZ6%&e_F3!P5MyWsdI=?nXR>5F!y!mMpdfu=)hl(tiQaHrh<o!37Z(Mw6yTjH8K zT<{?9?8}(Eiv?syJTDnDD6(8ykIT<M$(_8<_L2qc2^cu44Q5TAjLDNGW7gUy(7IX) zh4m3%sur%kp{oy$PZn*ah(sD*jZgc05y|g8{UdZ~Rtd?8aVX9u@g5oe1zLNhGiR;v zmM5kEMOnskUE1NC_UGgL^Uudc*WQlTCiv*m@Y%iR@ViG*|Jy!!7$TvDE8fD`|8_u) zV(gEDWzd-4)tT{v8$1?<*S}oItqijoBYL_e%9P({`lq<I=~0{k3Y4sV3LYFW4qa5h z6nOJ}OvzBtojmef{gtIEMX~nhfvDW}2`>Y9Ve)zg*|=mGg*mAGWrRqg55=^<z@Fdm zP0y=w9hX8=(s#qos9DU>SBK#xEu;3yvf=1{W*TZ&tATpQRN%6Bl<n!LY|{U=O)A?r z2uoBs1rLuL8zb9$n3^HE4%Gg0uz4v5{+YBKV71cfy`%cy$NxRvv~zukYa7o0Gq7ax z=P?j0Lo3|OSuLGTi)R1Qt0U50n_+b17r(Fn@eQPUG3`$d@1?U|nT9@>9FOwFiy*b~ z@#w*zQY6eVYaRI21mk_vq>u5oU+IcL82e}k)MA}rQYoZe_6#OH-oQ!~lv~V~dCmWQ zc<p<9h2eL!L5)%=C|bG}+CMQQ5)=x|nT{p9-8JFB`rp6&7AW-S*|q;*{ZFMfm@|12 zCb2!wTKhO!RV~SHV**7=9fM9cN89p<g<DL1$yusAXBgFTL}dS(HOityrHUw(#1_G( zv}1g<{k3^{rs=f|AGFo}PQG;jzPz!#t32l(d^%4rDysd_?)(+>`V+Tt9J+enxDv7} zh7Lpf3Zy|)=6`yy_fn!JRprzEa`>$>Kh-)2eIL%Q@V@^^QC^ze@6pI|k!N@9j&7HE z(Rr26c>(8EdjZQRTps^p|DU~w!7DE%@kOVC%K!WPp9J!e|8Kqi6w*I<|NlGuztH}L z_n(pbkAL|7+wZ@Q)P4M6%ebyDF&A+ER98ygCg_^UHR7A#i7!XuW{rXyfV+q$CTzz? z|L%l=1_a#q{wSPYlpjo2P1aX7Py!9==|NzJU3e^y8)3E!kw6YcU(l+<4&IWG*daF_ z!bq9W5zax1hK~I+;a~;B_4m@>xZF*j7rVE0JBNWQ(T_vPqiUlhGqabE#&a)xjkU`+ zqw;M%aeu4I#<$?b|B)^~#V}JHn*JG#C?*WFW0fL&*x=qw%8eAn&Eal;$K^lae+)*M z?#MxvM0<#q&a8d<YCLHB6ZfWYw|7n%J^oYmPvqi<i9^k1-h%i)pAubaQjs6r<+3F^ zymRL3D^g0v_CM7AW9b*6J*@w$nm~JaC5}1c)WnbNe+A9*h>shrdA*Y=+!)nU`82ZG z4Hj6>Z6Y7M|8wMt@DS*mPpF>kZ;0GReXg@%ls=D;z{`MvAEmX`Rp!;>TdUJv?}g!W zmhsc+r{jUXol%QRRhiulx8!#eT%KmBh^**n@9-FI%Z{Z_E(s_4RxbPV0Zus@c(o+u z>c=FsHjrx2K7Q^w@TxM?Ew{Qk){wperQVP%2Wdn@91@%x4X<j@Qv=B2SF<Jzt(6m2 zIuJa|Y|vaV`m=li3BQP{ppZVb;OY0!^>0gqnW-7f;-GX6XVzq9@mo*Sv-{4R=M$uL z&_u(<bD6!Zvu9w>mW>D&ElE4l8|V|VY%Y<8HA_kErA@^A^ghq`<aQc}QMtW`%6kIy z2f<s&!uMUmn2*wLxxAgt=HaMdh!6Pk7Y*JAG<$|ei~-m(c%sKSN)|wpEDGR=j`|UL zr1_f7s1kkhEl%Wc=8G1%Ap&LD=%aXcIGAJHg|*%r>-zV4VFs7X-<j+Do#*7uzW>BL z(G?Gxp_QE+$M_UOFbPR0&KG(Twr=JJ=HpPTYz4x_+pOAc+xg-J?W1O(;Flq_`pnQs zF_U;QW{A~vEPX1I#gfgjF20O;W)gru*Y|kxDT`=i1s!QdT^#MBrR?;5C#go*je@5q z3yu-m&Bjtdh{u9sxd!B<UA24hz!Q?BuILL2X6alh&P6qNBv|4nENi$j!q|7B7&-EN z)_qTc+LME5V8{3ra@v_Phd44NACMeeAQRbfZuV7(x-x!QFE>7f1kQretP0Z?sfi8s zd8%iDMj=!wQ7f<~Uy;tVOr&*TtRP(&VeukZ@y~L3go0Uukc+!-k1<m+N;=k+2}}*z zSaJcbfQ_t)CNXj&oN<&(6cmt+;}V0aAydlwQmOiI1v71_L6%Ae1+{XyoS{N~^39^f zQ!s7fY#e)RbyTWaj)5t)kb<Q++AO(9GQX9z8}Y?B1Au|mI4Z_1tI54|NgCp;u>Y4w zIeW=1j@0X)e9KRJvP+`HHBSM3yHmE2==1GL3~OJ7HeZ9!uJr;QEnmd>N0-2N{yisk zU^vuv;!5M#rlqWXZQryS3+8Ocw%yyXJ7X6z)^4x>zzh<rt@cZ$#qC^&X^TDTjb6m1 z3hc<?z3YEY=`-+Y`erU$%Q>0xyq{;8-)Hzd18Hd3kZsmWbLY<Wj%K56l_Wep{x{ry zB4-}6A+DbLqYs9=|I-%5WjN+r%OuSPmvlwz+dsE}-SqFLVcSg&QEKNJO!awe*$)@j z*GIRa{vR%OB5ruF5eC`!sYYVTqMc}!##vy*?YDTme-#?NA0drr#;w8iO-eZbiJ?#7 zh&w93^DpriwbHaZPe7BA|3U>1`M7c8qKJ9a;@uuNE{RuH>%54|OX0Tdaau+7SYluO z4g2I+{kME!AN}VRYliD1vW>vRg&Am>R^$NfKY$dEFMYqvu1zFl*G!XB$5Hwb{fH^{ zE2glB{5e<?Bicm+CSbr7CvY_iY9;U#?)dN_9Cz(Ys)=oPK8MMjhoL!_nT*Swk0;LV zh~WtpB04f4Zqli%lZGrn-}9@P{OZf1DTcl=;!0YcT*GuJ&(n1{yVTK~*9LFKO#q4H zSJ#w{^J0DLT=Ol8Y)SGry?ZjYbk{39@klDd`xNQH72Ecyi%!~0{xYc9ghl3i0VL}J z<@x_1^}jLHWEZtR``eHIG5U<!O-hr2Ft%-6jYV_WmUr#IuHCz^XG63t*HrtbEUy1! zoA!i~{e#(5Od_w-lz;E`H)hpbOqjHeOI+J)e!Si!W0me7y|gV`uW5)w)}=4|`d9nk zpZvkiQ*mdtbMUc`q{m3~Kfii}zG}uMb2ZQGc0=R0Ki_Z!)-^VN`T~wg<WVx}zD1np zNiFZg#32u%X{vi|=c#*#;)>(CSU(fuE8q8xxD>-KtRf{+-Q<xtsx@oLlktY;*F{?p zu)eYI`RhRTFMR%V{%4m^>;Ih>`t8r!llmR{n7J9-L*etcuCGjNbFuADJ%#COzwKZ3 z)IYH*H%IFI-(PBf>GcRshi@QDZf6%&HDGGkyil6f0Tc7W{BrCG|8B<|Hg;Z^Y(Uju zcVowSo$!`kAPaZK1(%+OW_Hzfbq&PFX|;t=WxDw2$fI#k`T}-{^3oS?<VQV_7&Ux; zQ{t&8_}Mx$a@_Dgg2%wv0Er_4>%*yx^$q<Wq`!Uba&co^CUMCU-4~c1J^FFm=HsCk zUoe8Ht?ywV>nN4{Y4nBapOpWP(JzimhlJ2^i0^++FJ{Lh#QuLwei_d>a>Q>vzdpGC zOLt-Z#DSLz?En7Kf+SDRmH+&H`lM;?sbKym{8qu_<+1)%|A6v?%LgijaYEgrNiG?+ zTJs&ji8GOyRskigtYGwwSL4@Xx<K>=>+vl;`2y?6&nARxe<jQwmwYIFdNc@hDE&_$ zllA!@3^&0sdT}q|ShV48G~fKIS|&*p^P%tR_;wU~0{T7lO*~JosQ<YhU3&2QxxDl# z_xoA=5rQ_3*xBd<3qO1s{eD!<Omyw7K$fQ)((!o|UDhO8KEzoj&vjr9BKk_AudR~g zw;JwD^#!Xv2U{b2dh)Z-;0%G=I2*Ctr1KDKCknz~@+*UP$~M!)@H#pgr`3S5_%k+* zD;^sHwJ0|n;|J6PW6ZH!$68uT55zhtq)#<S7u1WX&$RdZ^sglZeG@BirP)$p21<7G zy8^`-gwmk>?@DASbNg1T<F^MA%ak*Y^lc?!;VOM(ln?TvK{zw52Ht5<v$JK$ZFoSw zoG%hy{z7;S!kcf~3>Lv?K!Zprd@wE%A>L6+4?!D97c@&5m<y7=IikL}P6!34jGluq zf0o}VIHJ9k1v$(>U$b*&xbIrAI&&O77hKcutTi7wrDTzR+A(WNE|ZzH#296;k9A8M z3SMw&Hw8&TiHS($fJ{ja#-?xCj?B%gv2EpIyz~7;Y)>qS5>=|8PVHlmQX~auwmgMz z!YhcuK}a?(ThdKDix2%t(G2EDha|^-kO2)ID_ajy8cdVDU0<UUhWp$Tt>aa?*11)1 zLoMo)8ACT(3Zj_5D5z(;SDA!!`f^R%+0G(3imcG)7Q`W#wOZO=Rl@xCnhiav5@(nR zHyzN)Kq4le)W)Ck?IDo7SOAQI2E-H-(YZht4>YqwIE6|}^XWd=9?+Se705!+W<pUo z-jho|3N*<ra>#>)yBO4>%UF^Mq*pC=DG7wr)3W1<^%M-_j&!&sfX&t-Tk=x{(imr= z4agJe<cOw_h(A#v92dJq0{K?1q)Ff=OLe3ZRVFX`UYQYRxp;DQsSO%aww0f2=u7!( zB`zRKEl_?JtW+I+Gt9lQt=Vjnt6YWBnDoQXxV&pS1}fzThM8Cno=TJ`i8bqYa+y%- zlz}X{yaLANVDdL*Q0Bt^pL+4^tNz4H>DiNNqRu?4QC-e2ytb-B<=Bpe`seXKcKtJM z+$NK=b+a3^!wa>#<Mt)|Jk?Vpu<n9eP-gmv=;6U#cH8+VN&9D*T*_2?R$Jf^H|xj0 zjqA?3IWl|8tCnXc-?nzecH`!Mv3{$gkt#1I4z(AxVW}`7KAAt)2BcFzpQVIuk1sb3 z<qM^*{b@FAIDI1~zyB1@y!{P<;K9=##~IuEp%EKkViEuDm@mBXT`1v?)jv{7N53hR z?gZp}1`!@jRy9=i!?FHfyxh^u<n((>e3dM$d0?&pb3ly0FZ41aJMmoan9_tXDf7@* z(~>j9%5Pbb+U{V%*m21FMO~MF$;;p4t&3|3h0%|#c6_Tw{Gyneu7ox+)>r!a7bChJ zs85ZhU$R_vLOa<)>}LZ(2J#Nn{tdgZY0)-vZw8b7^7DTWm^=BuJtIWu7srKTX5hr_ zydEZ`GB97ot^tNFl!$s)JcZAH8j804HxTm({J;+hHE&WBfnA$0WzqubM}PaK^~*P* zPoS#l$nSdv<zyDWPCv@iEVdJlCQjp?Tb2b9E27R>EVO0!1S|h%Kr5k?sxYOYPDO^> z)F@cf_%#d({2sDq2n$~RYQT}rE?)QZ%CF_++5sPp@?b=t8kIvFNdM9!aZBH^^vxC? zrbzoEU-nPX{Q94D<KIHJgS2HQf3*F3By6|0{bSo7xRhY)XJeuFI+mPFZYOCx{qINq zgdH>S;8CYVXIx&{AB!JrV=Jo&i!i9^y89|ajU0Y@H9z_FVvnEL4SKcrrqA;zn49tC z_5Zq0iKaAs_|6k(TGGuPm;H;?yA*>zpNpf~_BOC}Yxv^3t|6+%a`|GB(&Zv3Hg49` z*uCjf^ZysFKa^SO&d>kk!cLP1x4(b=QJWUNz5PFGe`hqo81_Q?h5Dy26#8G@{>QE} z)XN`he~~Wih&(uq16f`tX1y3qq*Lq2A_tz~ocVO3i<OM3cZhX`(FHXK-ganOa#088 zx>=U_)@PBU#4T^G-GyxvW_|k|rYzyx6)Z1#%*puo=}q|N4)J?8J?c>$Mz_t{v<TzJ zOvF;YwG!q)Zql(Q;oof<drR|qJR2=nFG}CTLJ&9jsB@lVZ^18<$7A}h>-dG4WE3w} z9L1|uL4#w{P@^0NgZH9u%w%l9w6S9`ZN(NLBTN#iH9Z+;G^@k6qZ}Pye&lY$iZyF7 zd;U~X6Mw)j^X6i8QYv<3XQOD<Iw-MY6_(BY)!mR0-?pD-VabXl<nHE;T*(TkU1BE| z{<e#Hk4M=$wNX|N=Okm;2%ouW1(s|1M&^{PUJn(Mbrh99mrGtOTD_Y$za>zoW+gu4 zvy2Ebx30$G1xvAf$trBwnT1f108*<qMf1}eqnxgSk|kFDJ?k)k`Bow?g7S50qI7%? zmQNdtDRUPiJ*x`Nx$Znv^9G<rKWqIWjQe&Xmh9qJiZbJnbj*o3uT2wZ0Vcaa<=#(v zSTK4KvXKMR=;oD6uwi#L;!`T3cGXgO<TrraE%<ffcuf6eJ@(KZMN6chRF!I|cWe_J zUEaGp69uBpV}Fl<So)heu(ru)RYI-mB@y6y@zW+u!CcyV4|z_lb2834qY3nGmb1SO zWcM&OuULXj8N5MDsen4wQfdCh82`T?F@MW$lxxx+9Zuv&R;5$FU1Y4sv>(Re=atl} zZY!zVN=;8eYx+`hjQ&GAH)8(k%_4-<qwAp(T~iv`oBpofmSA-{zrK=K0<~%D1k%~O zauGJ}=HQNas+yXYzHl&w*37`@aWnDT_H5qR7D3e}r{O#<X;R#q&80ypzez^hKP#I5 zQO0k^V`)0=%(c#w>NP`~v(+Y5?DXRF6RZCWEFSkYCjG*8N01`LYoPggZE#F79||QI z|1~g~$NyL&mF!I)0nYm5x0mom7N+qVSxO~RwWkkOuEra8zco1ed$zB}lKD%qOn#qE zd5eTms(KT&_*YYu(MXw*m3H&e-?4lq#!dX0`prgCQb{D2DTS)l8=!Go73k5<n6|x+ zqU|p>U;ejg)go-#m4i6?a-Hg_tVc>Q{vV((|1xPDrqP#o(-tL46ho=1)lipx($VF( z92ap&t%<c7;y51v%r!UdCG(QBEpY`=mP?rE>nG%5zxwz2RgJv#B|<oT6&9}E#qK>G z<&LezK1c8ZWEuPX?2Rk1gg&j&i`1HRQPGx;5H1Io!#-!R`Yb+h*Q!~8SS0siY@yu2 zl=9YwHOL<1vb8JMEQH+Ou{wgw(=J5SQk>bF6OYtdHBiRui_HJTg9hitM|cb7{xA+x zmu(}}5K7cM4y{gW#7}5R`_jJ~IMGA0IMZ+IvT2w!bso0x+M)dT)GBCv(n+XON?yXG zCnhF0SgShx<3qA$Q(2zT6@Y^=Dr(Qt58-T3mWVV?szId40~{HS3=Gq+ZI**)8wCLL z?H~J24Cw_~S$5N(9^ne<|8f1xw)W6&_M}!hg0DbJX67CajK`x`QLm$u@e7h@pCUz* zv2xu15G+xerjOp@Ws8{HLAH~PdCqu~B@OiRpFd{MuS49+FSNv)t_hlyLN{U=eT06Z zLCgSQLYiU1W%z6`NO0;eET04Fl8ki%HZ4d#!z4eJU$RVxYC^dj+*dqA<pIjCnu1n) z))BdNfgVAKfB7>@w6t50Zw70bI)xE5z#y@#Su#hW*phPOS^1L9X2~!Jm&E{KibUn? zs+7f(QF6r`#IwDB%WLW7P0Ql*<va1vilRv8H8VMWJF;f3!xS!6tr;-07XE@)o_Z9E zmoK;3ZE7bPdeLMolZ@v%qD>y80~-)yp2;OXR3Mg(K^+j5I-sJgO-V^kLh3+A8Wi*D zYq>ttwW<*hC9`waPpdDWwoGmv3x>fielv_p<17s3sVtlJ;;bmwZ_vtOj04bdELSi^ zGxF8e#kYb?!Y%rmxuxX{h1mBK@hNfQs9;&jmQf_vHcLvpFxO@Tk(W5>UxJg4Y#X56 zWHSw_D_o~pdO8Y(qzl6F-+YifYxzR;UGha6bmK7#h28jbvkm!%wTv%1WJ-Z0aX>KB zz4R&$B)8}*1}oXM#IMAY<M>Nqn%v@xeDG-kn%f|x5??>zSKH9CWzs+{GvtQSg=Qm4 zR`D<D@;&vV@@ZQll1JhzPIU;sWy5C7ocb#oHm!p!e)mf4u%M|_$<o-Bz5|Jz1!K!G zQcv-cPc$f`0&Qxzh5f%7!+hvSz5dB-{KR>W^ur3c=;>>5`=xI&esM2GExjD|-+j?Q zv~1l?XI7+hrXwj@&3sEUBr|?~1=Y{G$4AF~8cuCj4M&x)fr^}3(r@5b4v(ByE~G}} zr4R>e>7^DtKiK_;H3+YsUSX1N`}z+QE05+k^ud?&N8nrrIrM$4k@KHGqcnc3n)oA$ z*D&=FvG*UGzZnDJg4KE3O_GC9LyhtOFz>1JB+4hzh<=}>nQraRdI|HV-Hd8P9!p<6 zMt=7{v1k+syYrF8VC;?^Ko}YPZc*{7C*Z8}&qULTysk4}*J0}uW2oEpfraXG{rj(2 z{WG*@ZQQQIG53FZUhtFaK8a&5`S-d1V+GB~$zlc7+28#iRTxRqmwK33`BSUbMae2e zKzY=^s*kqkNu!^Lqnn<{T3;9r3(lxK=_qvUat;!*N+H!_U3iHE8LQLLpngT`FLnQE z%vo*M-}>|g>!%_Fv)ZJu{!jE{ime}(j~G6yG@I9Vy&xf9lKg66q9vR>kJW#a4B^$2 z^Uto0JR{PWVpbIq(P93<^zYd}4}D)C?zN1r98~4|^S|9czl<7Z-5pblZMiMma)rEY zS$<`##oqsWwd8|)+dqP^<(0U#b`nR@_Dy@%1yO^u)+E1h>%gwB(osJ0hqD*q@zYL5 z<m-3s`eWI^&ZuZQ%&Y$tE(h9yC^c(q=9sxizqY>3p0j%%+DZCfJ!b|>UAnSyWvM-X z`eM*aHbdOASR7~GM^d}HaC!y4)?y7XYX34VI-m=BV-NwS{xA(YIQz4tM_>Kl)&+|q zDE@VF_5A6pgW>-^?Jqz3=i`3|vcL2#aSEdULi*HGtp6A4->yG-`kzAoV|$La|NkGx zKO!C25qc0E<v8pF(9MGSXKm?Ly2`o?+q;XI_1{)*Z&}*alzF<C+Ko4xC+k@U?^RYk z9a>wpiy0kO7__Ne0+|~p;EwXAL35BSDPMFOKa3eu9!C?q8yC3GA29E|yU?&x9|v!U zh?DgK;af0z?Ta|80+|v2R*MCB=&PFejN;re=?!!|^+woI+CF^`J9<w;_|D_=&{xs2 zFZ<xq^X|s<82bK&Eg0^C59Yssj>j_ip>opCocRW7oOqu{ms!ky=du$q*r(Tf3f_F} zWOQ3<>^bW1UWGdEdFM@D!;J1j(Db^oR(9+7EqJj7-*ob23+%>cS09Z_B?OV5|H(3p zypR`pkG}LX=kdBYuJ>*}M0Cc~oIyA)ZV$e>uLaJ2_Gd>=Tc000?0}C}et?U(6kV+T zv*!**eafQL^ScQs`+N)B@FmF_FRk(Il?-ILrwRP>-aVeJoZU_Dg2PQ1v*u--S&7Fy zmjP{OTZzCkmtlKHKOG~_sDta45I*fSY?yT;$`MAgiSO-Z#~Wxzo)}W*i=a~P=?LG& z**TW-+CP8#+l^M&Wvp=i0L-{M15N*REAfe`XbOTpx27M?szf>wes^NzndDQpZ2ua5 zx@9+-wZ2PS89PTmcRVg?rmvwnnU{Upo4#}}eTm6{bl_3|o$=wXFQQ{zE?32@ZQ~w5 z{qqJ|VY!!PVZ+U75&5I^f5Qt^>fj;b3WooS`Qb-VhYwGq&Nv3wil?+!v3}-_7W6fi zZ4<z}f&W3nZvCAcj=b?x`}_;A_%mgAy#w*?-Tr_1;4U<{ifz&t($jyCZF0<SFQIj1 zSKp!a^uK;8XB?h{XMT0Lwzc|A(E0S4E|cdPgz|NzVx_(5`+BQ?$5Jfpv<FFLjxxB~ zoxjE6wizf=ri$UPOzg%t_n(F~^m}s;$?qo;2!t=D-@lIwtMJuS<3~Hmz8XVryBJsW zi!PPn0|WzS;@j=tqLqya7!qPsEgloU`KXR9N&X!ebvo^_oEeQ?r7!=7VJFpa%xwGd zb#y%CMttqjcU6Up<-N)Go%ChDtaNjHv0^#0_}!B-DMZ302H#$>jDsJEC}-#7!bsaj z04BGSiD-<ZqwLf7+uy2TSD;?EiAL*|@te`FIr|(Yr~h5}?3$YBIGX1~-G10Id~{(| zqUVWgRG9nZaX9h$?Yw!r8dLWSM5Ev~e12Aa+^~#D8orEG)4QP@A7J<V@)l~J`jFA_ z+t{5g8{<x~O#bd1w+@dsbzwp$3-c=%<Mrc5^sLhc{R!vyzec~|o%nvt{b;~h57sZ4 zUO9-dYd!|wb2WO5TxBfoZU3|GAB>*eS|C;Y+ej|yFqs|2i*(0_Bn=4bqNhP;vTx<g zH74Y(qN#^sd+6pMt1a24%MyV#NFjV~;M&7!x3{d$QCmk#Hi}q-rB<ns{-2<K4dUxR zm!s-o&U(q^izFF)vQVm&`?i%VQqUB~8AdzTu0{IFWk^UV!D_Ub*_eavLPAI2kO+UW zH*K5C*+}$*9Qut0^#fd%Ps_krz`$;zXnoq<e1txx+Rh*3d@56b->48b;mqlIuE31R z!~svv7E$m;eyIU<1;BE3=gC<GAqH7A)}x0@KM)mAq=2}MapPCl4cG6g2`Fe{zAAbO zyeMR0?2vaJs4q|;!Uq3{Tz|Hd9%obW6A=8?R1s8OG#y2L{2D(lT7)rt$zTCz-gHe% z#i_?6pct1FJ-$i_RNIh+Wei#;ahb-HB9t?pORf_C#Hmy8Xy2D{{goZDn}IF05SvLu z-b@(s!l6~3P;UK+AJUcXDW>VtwN=%0Vsb4&38*vsvxcd9c1B&A;QVeAZDheL2B@ST zYxjf^MZx-g0F~f)5f5s^3Svn~{13&G85XOS;ozx#2Za0yi+HsFCztFFkd6foSx=m4 znIj91$ey%goFX|?w5*#TyV6iv*-^{!<xn0y1m?2bh6<UdK1e=d6Z!1eSh8<MX&RP- zF>%~$sXxi7fko?Uv?pWoBc0pzz_?YrA^(gb1xQCVB$zF2NnARXFT~03B)eruaL0%H zww3~%4vyd~AwHf9l}-{_pQ4#b6u?!Hd|g2(m5XXn!CFRR?QK!=r~<Va;n#~V{AZ5v zus#`)c_f3DaV%M~IDYtYJgU{I#1~QYLWt@YEES<&rtjno^{gx;>zi(rPv1gQ;LnnD zExJTm*#ArK)CP@tL|*@#=b2e)QS;~WXLZ3fcnfbc_tyGVoz1ze^mI3zpumRN-_LeI z69sFRjI$ePE9msjRJ?FWBP7!w75GnBIV2Lu(o6z5a)9HzJ3KVO_vd2Wzzb2+&gozD zY0c2ww0b4@t{Q^HD)YrA&2-9}+)FU*i}L6{4%O-&L%<CNOjKs0?C`co<+U4l9Old! zwi}0&ZD_-M8(20Ve%C6A1zJus!sFN#*vP`vJpP}9RkMDI;4P8D9){&=r+y0J27EQG z14f;2wwp1+ZvfTp*%aIFYtHWu#n5M)(m$zs^6OlkgpY~0ldn96C$Bw*x>3IC`)p>0 z`Z0@!Tei_xYxVUNC!VDv<$3pCdGt@&Hj|f<M#`t3ixsn`Mu?Y6;j@BL9{FSapMf=x zSIx*uWJhK91CeV`Ui!l0C)X`XUL!yrm*LIsk73fDod~A!+h@0*$~%4ON=DI^fP68` zPkO;XdI%>}N2gam#g&GNd7l3{I7dI^$sg5@>%%EY9$l+W$n?+a6^~UO<=9~~|06$q zCD&zeyKvDqgz8i@c>n%4v~xX{Y~TyFl%itI%I;;rJn{>NPv6sj1fw+<yVl0auj&Qu zf1TtW&tChZqvrMh82XDRj*L+6^zKyjy|@8+CKmc!;)-ZnR)-<2xb|n<Me0dovG$K` ze-Ay|9}hH^)uK9$^;hvGHvM~#sQ#n&ck-{mYi-i-#6pj3%jYm}SQjoUX_ZNzyv6!o zQc-X?#!_I^r<k5`Ia;O&z}*8NkdBE%hj<V`wQ_6`G|Rs9_0owC#=2@-A$3%oMOy0= zj+nsOdT`WCtO;N0^%>3zYJb6X%P`BYetd1t`pj$p?Q5gsReN&W3%5>Jd&|#U%9^+T z^Zdp1znA=^>9>FBI8Xm4K}{y+TmP$b-igQ-tXD{1zFMe%zyJL`{g2w0T9{g8q5tU_ zO>OJ{cKh?Yw<C40>(ODG)KBY@;VyG>C+oRg2d<Xs`YCsh<$%rMOdz`;8Uj}?B!-Dw z4~@Zjd4~JlOHiTwzbuHwYrdmr^;kOVNi^*}-c>PLj{YyNTxfw2)eoWxu6v*dy0;_^ z7KeCwJg3rqn862oN5+ulLtnKWQ-PcXc#c6V4H#SA=~v^n+pkB5(;GV4+Q!fqorMFh zM(y+N;S30+Flt|LBOZJ7K6KDGOO1~~xU6m}dd+aR`I0|D-_0;Qjy2IT?mXpm;F{$n zPH^=dCj$1*xo^aEp-;Pk2QI(g=wCcUPDZ3p$8ZiP`*MHw^-K=eyD}q@y8s{c(##3! z>A|iHViA^a8Ll7iq>%p4zw$=hcH8Af!}0eqI@~rK+l+5k)W7QUts0dp`++lB;CjCJ zrF=_ae)!bg`{37CE<mGB&pVa_P0;1R`_cVhhK9O$4Q(p-aJCY0CL_bGP&xcA-xY{B zP^^xD0yT^9`#J*DhADdio;_7TEG6dAj(6PF4INt6bBHb9EAz1H%qZkbKZp{?5<uuj zc16?Ey7Slws#*kt`CR4h9HeJ4k?E48zv6mUBzR!Nf6z>CZ>dbgn71p*1qOv@(OXxe z7K2znvrIDAY)@Z${C-^GxnCHAaaldjmsqznWxS5{1iPjCCs^dmFVr6W%xNEUb!lY) zXAbI!+B)V*(Yh{=uXMRLo_Q*kbi=)5AZ^w4b*rP?lWw>ZcV6Gt&KHjy;qpBrN7O+4 z(*LioUf_aQ!o?uUHTU0#TTaul{$EC$qiAQpe^92l-#HE4Dk_L&9I!24jN9(No$Kri z$t=9{gUff|63mdfokL;xBlZ_Lf)z=vj9Rs7p-QR-eEDcpsxoTU=6NZdE2(lWHqh^N zq)P3sx)FEWafP_D;xOMy>u~GG{8+KagLb6<+pr!CVz~!%!FIgk4*Z8f+v8m^Z*Wyz zf69n#oZWS5Nd>AML@~1mk<*tGEmzfep0g0W6~q#}z|WvB-`Wiq{Y%PWxkKUYb&`yV z)vBZF(Up<H!Z6P(RjrQd)hh9vVB$ZLeEKfaw)y(Mcnsj^mg;kuSncJn=H=0UaL3R1 zSbdI)Sw7<1S$vByDt{n*K0bM#53wW?dY}u^^a?%8ORx<KH)<r9-10vf&gBWjj*K&- ztDMS7?66p7Zos{9H?%WqGl=yX%aw1*_T0>U9<5%U<gz?e!Cf=(NS#*bF=Ca~52HRV zz4>n3dU<POK{&s8x-(9^>ofLwM#14^eLeJvi1AHBYcSP%DiId{#u#&`Y(3vQUYTzv zbbjq+2$cz5k3W{Jhau(ZR+cw$iZa;0GR+%|Rw4aAu73rXeEn-6FvJmg4f1O?mQn%( zC$d{Xe+HVJiB+GEK%hubn}MTSk6hYWq*N~B+8~*1uK{}Q^c^3|qpic74Z|@@H!wlN z%dg}^vb=DZGiWFAJwH>v8$==;2gLN2s%GyfkQ87LOOFD6U?HrJVYBI2u!%t|O};Ta z3OF(NWyhMaBcCH4`#uEen7@fSdDZu+#Eb@`jW*9iA<hxV;$F+v89$zCc^pnjL2)is zmG<Q;82rfH=zrhsc)WK{Y}-B$sR=u=CM%3{%LLIPJ`2aB)y0-l#qrL<Yz79n7%YQW zxulcB0g4RHd{MJYDw4=mgg(LDk3Wubr5S8wx%ifhngyfKT3EqA{z*@+2}y?<P~q0v zF5d*Vzza{QCtK3bWM(btTehLB7MPQiTzgM5+o)F3(x9m1<3KENDY)jp<!&QEA|YH- z1ZA)pPz;!8`ACb<XyAiO3R-YaTryvQBd2uDeA28a@ul`pDzcYwk*|2-(}0|2wk7ab zOXVdnC|QKu_;0#u0vL%JUy@66a6=68D1IhcedZMABWj}`G^ZdwRi%(N*h%`*tJI}L zEVh+WEucoG6j;*CCW&TlCpnZSxugfyupkzX^o=S7l?;{zi7XeK0HsHtHPKR%-x8Gz zx``%7>ueT;8kG{O+SSE~M0qp+XP)e$pkIJ`Vlyz^C2F>tY(k~Raj$r9kS{l+mP*Bp zALk$?#g;7);sX67m6jjfvpWO18bq_eE~{#woU&?XI+q+gcPCz^&LcuI&$0{qf3+R? z#Nl}TliMk=h037pjGCbvzm1ePrJ?7=e0ZaM?fNfyyky^F!gehBZoK6L&<Yo|ZOr?! zsQrH$HpmC3yRfoI@#gTNvt4!wJ@M4Y6-J*P%su;vC7+<$F%3A2rUB~R{1r09o6&c5 z6fB9;Ew4FajQ_3s29Ml6AwsWuD%X1;${NkuNAd<fFaYx{vaYL;Ty_t>c=5hS`I)Vb z<5GN-wb-#Zw~fmdkNv(_<>Z%-lbxK!pW;Ez{8CcD>a-d~WBlK;5o*^Q%^I}8vp>G% zGPHfHHSYZ1Iv)7+*{;;NsDJk4*L9K{Se{=oAyZ4wGT)<r;P%J5UQ)B%+yA8hSlRl1 zxgrn!F!ld%jBG7xs2}m{pD+EAIR1=(8O0FZ#f+6)IpqNDU-J1$=wjs$gfp=4?V%X* z;TQPu{+{@L2RpTh{n<lh%|!p(-Mz17{?*poZBmK^6*6mZQUA-Y{Sn9~Z+&)@ek7Zy zJpBtngnqQ#*MHUK?IM{2I=qRQx>1Sve+b{+b2J(>tk3Vc)yCUP81OJQ_eWo}Vzoma z^3X4+{bS^p9A3)Nx|$?mewMHQ?Zo15qiwmvxsB{w%)b0nhQ8yYBA+~rw7(oKKOHR! z#k+edn>kE+vF-24r{2dVGfLF|*Gzm5k39S^?!D(l{KSZH9{<l*{`GjjeLdVc*`wL6 zALftgj#_F*hC4=nshatL_<Feb!8EI&*^yn}m~37kTC)G{$*<!&H^4&r58&U&cz%}; zeHS1TDj_#VH~$MKHo(PqlrS10^u<#jEOhJ;zw7_`67bXac;8v$`|RaXP1dOY@s*`a zyK6BV)k?6F%ZI*mO&QYjwcqLg`?o)F7C!$K!2hTw^*4q3&*T48ob%U6|Hsy)CKB;~ z=}iC1jJE$+|1b2v{|n<UH183d<i>|-@-OCUJl-)Im)-n`W41PHZ)#*Z5DfQ`TApNr zvcAhME`l>KyUsgcRwAsu1?l5yd^f&aw9y77)=z$c_&u!OFXFpA2IS~(7>TQI;h;M6 z!i^uoxUJLi=2N_Z{$V#JJbk9o3I}?l@0c|P?=vS1y3dNx_YRenIqyq6&ArO1^_qmx zcZ2Xk-~RaM`#H$nu?}mmZ=zC1U%R!R;fk*B65JlC@!;3Xu;|m*@bDu~V>mzhIq`*y zOg|F;{^NRMh3e>6_eQ?K#zFr+r}NCof6r8{|I1+*GWSu(H2Y@Gj_FTF<UhI>XM^cY zDwc=exdbI@pM<AO2;QtdH3kcb*wYlY&-f0*iPr{Vm>=x_4HoKq1IptsH0K9CYPj>q z+c&m)T3n`FyL&Kb`~qyt3Ss1Xuc2?>_YvMQmcbH-Iq>PHn8Em$gi>v1dwGbHUzx!` zYrOgMN@Rw!u_ygKv?xx%jh~^@EqrrHmC_!;gw50O))UTF6KN~S6bkf0->+yZOTHur z@;{dG-pP>eQ2nU<nZG(aO8#oSCnNmbVD#zpIzIYgo@Ynipcx4<<PIIhC|xTcP{jXT zh7+22&wOAg=4?zi-q%ll%|6g9`NDx$aPNr425tT?67+GSqzy^bXWhj+_>~V1fULN& zkz-}eXSn>jcO4vI9vZU@i$8spH>^)#*qj}h(Dy>e0cqcNTpz3uu98i0^}YN+Gyih& z7(Sip24NkbXofK1UHOn$I1}C5)-(L_|H#ed4ncY95GPyyhg-UiG@Jr{{--sV(*Jop z|N3VLZCZ#AZadfMKtxzBHmtS|)FyAHos}9tf=SzE;H{oL@zU7cnAnqTk}x6kLhmnW zXOi-3PwRC91{fk{c6yg@;t$6QJ^NzV+$<~~*Pq{bGGJ9;A|M44xa88$rymQY+=%`K z<P{2B@<-`&Y0h>%FmS?r^ZU=<eT}~I9zvVt_rlMc>Jgt{hSqklr(9+3#N<IAa4-M3 z7$Y}jV@RJqc;&s%FpYk{Wy1$(!RPdX(RZxyepm!JmC!iU2@{v$`sIsATdm%UzWhJ> z@(XX^<L~DpH=TXb4UG*>3OO|SJ^CI!+eI+N_&;S0*J_R@1wefUpW^H`4z&3C-#X)a z3?mQjoc{Lu*I2B<Vu`~|=$9Yxj3?To9K3NPRDp*wh<$6pNs!p^I?jq&je)1As(5IH zk?S(BYv(TP+O-Qe@`Jt}T4Oi1|3Sm<7&>DyHgDO2MPr^Z`o_cfrJRRo<jnq4`(6R} zbqLaL^Ax^Y@HKkh+Z}g3GZ0J04@O5ZDE3C&fj$$q@POx@{Y6_NvSOP(k83~D4_leQ zlnh22b2cGztxUxce%YV9{zZ?68mQHeu-scvL6BtL$a3RD8}35-e^~#Tffd$rf;5fx zS)7fvJ0laRscxBCS*l<^#yXOcux;T&<ZwODIDYTaW`fYF8mF;0W{FCB!>D^6-WX|2 zUVF=<eH|R_EI4iyl(AV>EYM#r8Pz?2&8iWQ+)9;&L4)=jW>UaJS?;@71Yk5k%MV&o z6$>^fpP>Z}0_oZmNaQ&oIIAQO<ck$tPD+8Tct%AmFhDqYuL3rzF8m@-W*EF;KBI5O zlV-G0DC3;+WEbVKMT-~W=VyCh{4Y~6Y3X8oxp)~?7b%CqtHBqSilKX>l4w{m4#`|9 zH6cA6J630*McEM6?#e~ETE`%Z0i^ik6vQ+5Q=|xIWicvIwp3Zno;MFeNB<9HQd1o> zq-Sqkv%RRj8+$ykR>u>y9sQ{>S<p`MN(~BH@!0Ar%c(|TDxT@w)zQp0>6+?QF8_H# z<teC>Amy<@cms-dsScApV)0lymvvOnzK2Gxg0cyNhRQQ=tFNleBWO^zuu=tIH2aD; zxEFdI$8kBrAZKI+xz`&2Rwi^B`(s}tJ88yIJYN`y=f~50-NZ9b!5te^XAnn30>YyJ z5C2t9eU*Gev+wMUV`iyu)2u87uM`{;A6m9hxZ=gT{YX>7D4%;bdyi%2(Bz4D=pv?D z1@dSL)4g8V*0DL2@(3TN#vq*5D2P&M$%P)`wE(8T^%H0QkKk4=n@hcFSyoR$D+xy4 z*@B3cVKU;;a*mQanFE$97p%h8&0HpsOEvlU3bIdPyBCp62C*fZ8nIo^y!PoDikLS~ z^te@PcCeC3oSJN`Q`rAgSJcB{cm4CcO=goH%Qt1>CRg8~vuJ8}C(b#F{-zw;_(jf7 z`C1#AoOzmMhVeaazNIh5&0CCx3npX8oh{J(k#T+n?wua=J?hqX@dY?9ebBKky7V7| zSxXjR$|rqsZo|%g5!zjO0$*Knq}8t}h43C;ePakd{q#c&89Ef7awf%#4_}R>n&;ya z2f~*lpF^vo`EmmrVq(*a`TZ}iU`|gQcgk%THgOte%={j2-qaWuy}I5CbzgRC+nTPA z4HUz<F+2{q=vZ9)+Gm(KV+MZwq!&&jk25@!m7ebGUSwihasKZW?AU{y%n3HS4)fo- z%*zA@w!Hwuc)jqUO|72()uOFsu{|sJ?I#mmr!tcA57_=Zdl@)k_wm2tXnSW={{t?P z{zqX3Wt;NJGib4wY>hQTRg4^feubvZ1Yv3ATE3(~>GpU3r)S&PWT&3|q4?Tpe`7f- zmOousp(6&4osFfdxQzEtAK^c#C)<n{188>>T2&FH-`D@d()P6J`G1r#^~<_OaA(Ox z_x#Tk!51TB!GuPaMtn;F&*mrJilJQEb<w<W=znJ`v>)v12XP0^tjW2=>|0~y&r4qz z)ua1~z7s<~cfmVo&i?sSzD#rF2U_aG$$cRCwb-GbX7%rdK7IT0*N4x9-1GN5pYvYm z`84`|HWyi8wdEEDF5TbMy&uNUU5Et>reOG8r=i6oKlrGq0x{;(FM*oP-B^;oTh`(3 ze)xLg1k7EV>9xQ1c-F5u>PA$%q#wpE_zmlp&c*0AZ$r)2-O#IdZ@m2S6yzkkdo#_b z+gtz6|2E;Xn`%UYPKLHdF2=q2GG2M<WxV<d_piK$*CgZ6X&kqq<vjmC{)+$jT;R9+ zPsfF?eUBAfabU@WSJC>6ha+Vz2XsU&lP$0Pqy8TOwS!pwpW6K`H+I63Pp)f>OP~H6 zvzIKvvUwBmO6QZ%aqw?m<up9hzCNkAX65?d^_ckSI4f6hyirxYR2^ggD1FLw!1iBw z{XJ0s<L=D_p<k^2UHkL<-~9d0t5K+bYR+%}ZqLT<X|&M){{Qwr>%xxMP4tR+xQW1? z%XL4x9nsI7*)`61<+-xGq*5hYVoG}sX6OOZ&)0!<h6csPt1_=V76z^QV%f~+a8Av# zR=51g7opcN!ox1|yBS!J>EjGz`dbg%@@wL>$D8-z)KpzW#Z)p*z3oZpHdyzt?+zSo zliBxApZpL|HN#vYMEvM1A(P)Ruv{xauy_SjC?03!#s#zIyz{V|iN)hnUYd?4TOZBZ zOop!nn%_1EgE{UmK63E{-ki8qg%SDV_@=U-xY7dQ94#qFd?d!XB_bq$B`tfxV&&U5 zP!ng|qnQi5l?yz9NvnMQXJPiJzK#Zg1s}pI_+g3O^;QaF-dC>@SPx`3<7}>p?&MFw z**%^^=N9}v7a#6b&*U$40?z)ocg!4q3)pa|zLE_U*|BaSTjSl8W6-rp6^^aMBe57C z@|mU$e8er4N2K?^(F3QJ;t+$$l8olJKZ#2P#IpAW$W}b?<d4<ADCL!3l`K~qW5@Tu zU?#uIB>Y5`w1;v#lm;IxRt^<qN29Nz82c+TU-~Ar)mQP|qZZ)Xr!GaqvW!+Rl|A`- zeDlTq=6|C3!;rC&Wi||e)tT)!4}OE0PhN_e#W+BfoP;C}B1!+VJzo;s$^E9|v9qgF zCh?<RF`Rn)U<^Lb;RppD!+?n#T&Iptx%j^hgm68Ed#_v(pK4*tIP`jHz3Cy;sXNXp zqfC}jIsQYgohwfzlz-8Pei*GY!Zdw-HtsyJqSY}XW$NIv7lz>7Q#|}+R-Ks1#{Kkx z|HU-!h3mcn_u-V1#svYKojV#}7#|EAgRLyG(>+u0`r~}WHC$aVe!x|zMx-j!5MlMx zuE&U}48|E&W_mdMQ|7oV!JGY*;qj+JCD!qabdtCKNkW?*PvhECk3|WMVR^ve($4Qi zP7h0ZgIqX_JTj5B-GK(cHl58;Jtjw=-*75h&dn~eTy73XpZst@IFfiLE<B<mnZw!Y zlO&JplN^0+$xD#mIjC6N4TP)yp~)|L!cR6$Nsd{cz7g`c3A4{>b&s4#96gQ+s~q3@ zX2hH?`#HWHYt+@N_+hcv=P+;XSN%;7LEMNoX<Q(}(`Do#Rb=zfPedZSNAaP-pW=FO zkLcecBANM%Y+5{x*%Kbe+0{#1R_PPk;!zIBP&@=D%*K)|lM?aUC!qH$+f<Wq=VI84 zolz%+GI{iaN43PGqaHEhqW@w4Pq9I5#-s1<$%RYu>n4<m4N7_xyfT!hb{5&IvK-HI zKEY}xjkC3CvHy$|yITX}N6dRkmewF?A$=;uY;|b*S9A0AFN5V;FpFNCmB|@DoS~Y? zH#>hv3UY>rY_ny~EW{TtiEI*JJi!LGolntIXj`#tdk)<5xFgxu002M$Nkl<ZpEX?X zDGQsKm1ig1D<DKZLmVB~5<ek+WQ)Z%Ger+TT01V3t-uzC?^JFTr4O$ys~@on<je%- z3G>7cJ&jN-r^9Kf73Wa@kG<~zu&OxQe(t?{xA(%*k)<nAY=8{`OT>m6F|jvdV($fe zV(cxp#4pwu6HDyImVgBmD<UYp7ikOZ!uE3S|2*%UbN4QyE+$_B-+yNJo-=34+vc5e z<~=jRn`O}8jqn7C>80PasqkFI2-0ZqG6M_qXjKp`AhcYN3pIZti9daeQxnd>TAnl4 zbIyBs=fNv*{l`=Bt50jt7|r1rDhtcFN8dfmqxc8sLuJ_MoRh|LKQqzHGqXArrK1lI zMD4?NZ4_5t_M{Q3p}LmF!6?uCBW>clsfmZir{I;>UnPF7N22_-3QL@u7<4Dy+Idg> zYE_qQDI<B%*~d}jkqec~&}iG@*^0cDsZeeAC@6v_V~WmpppSA<nJGqaC_fpqBuB}P zep_i}1|P|l(v#uHS%=JE>ar^jc~L&b>CZ@0dV{H~q=n-!$zH~)Fby*)G(4rspheJn zw)3|LBdjpXN3NM(ygHQRU1>SH7o{OCLOHP*Z6%k%rs30!IpjqXhT=iff?Ca_MOxAk zm9q>|&S*uN_^fadtQCLhQOce4kyOWnj6+HzUE@#E5)K0AKUYOFp|(+y{Vl@h6jlh) zYDQ9~6%-|x9GQhUq^ruVtNBQ^;1M><*2PhNOe-fziWctIN&L#^!bDsOVUc9U(@1M_ z6km#<ey2w8k5?xejIF)o=5ke5ZG&w~YQ|<!Ma40l@b1<(8$-lL!u<9pX#YKZVga$p zt-RdIC5ce7QVBa}t(N5J8Yc$I<JF!2K>zEJA=R@oH2hr;!y^azF~C_D9*A7=!621? zojm43Xz&>9I{FMh5a0aeavZeV01O&D5~n<<(Q}LQjhYI{-Df=ht}UcJ_sm5{Vo3ji z7;*fS_@^H@{CBu}Ocz5gv<-eZ@6TLxGLAd$RGf0ksW|SGQ*gx{`qZ(--SWT*=*&l{ zXgt&bXT1EE!~`>DJcN_?-xqrh8;x@xTbjsp{;R*o0UV<li<E!<-aIQTiN>cdJ{H4< z4a0~Nu1grPu=8*5$~oMgpXKO}e-dLrLbf7j``PX158}m>eN@wNYOfpdmEQlqr~KI} zv~rTaXtTTD7&r!7;a6MXZ;R-n9i(La%iZU)&E!ws_9Sn|U*DRyb9YI||NHQllnqJ9 z_ul*ePW(Tt|6)$np|$>}Vc*}pfKwDnC&S1&2M<C2-n}tkzZ3D83nugt`0M>AqeK$f z>h_24IG$@Q|8hT=Fj)^t9LY=Y?;DjA)Rd5adz}8#UlY7bw@%r2R}9?!AYAa^r%Gz> z>Pg&IQpF&KlU!^3uKp)QyDb~ZqRM^E%ulRrzMwzGkBdyXw^06$YA63zIyB=cTs3|? ze^=qEtMsFvzwy8R4aWcWV}5fOL)SybCD4EKm&;g}2eK}Yz{#7{Wm9b7HvCbP4Q;8* z6%SvIF$Wxg-Jbc{tAAZ_<`)mO$mrF}@smNl(0!-fG3LC768MgN{uT`56oh!)lKiEA zk*e8v`0+#*=ehSn{Nmh8aq*>>;u0F4FS+DmTulDPbDR1~3czoFBW0&x#vgv3$o%F- zqtU0VJ9ggxk`|rkIa?2((C0hxi?;eCq1LGlOwzyR4u|3|kDi{u@yf5qvR&(se!Cxt zOP*Pj2tWR>f5Blz>?@M$e`x6hoc)nY5<6@^^x+sSS^vJT{w23R$>s0V!x5ZZ|Apnh z-TwsmSyD;m|DW#v1NjH?|KHHRL?gGIdXk#=ZJYxQLg;jLK6~`W80<RKd+4V~@2;Dk z-8e*(0)C_-JXn^<J?ng-$*)|1ZkEo4ahGj$E%R}%LXGBFENUHQy*9%^VL)!xax9y_ z0JG=J!t7b|v1~;QJ(Ny~EA-{__u*$E>%D07=)iNMylnHY-WP>u-Ni5UIoq;D{&`6B zE7KhgZlQM0(HxivUxFujaxnUQ8aU{ad*q8{&cmz1+(6I8>ZRPh()p=H7X22^#A?93 ze7u<(F#5s-&c9Dy;QZWH?}a-mjf|tYecyp3L-}6&nDG|60I!TE-GrBN;ZYc@IXjR4 z*7%!HSI4hR>sDi}?W^noY9Y^+t={S^Dvsk`eFDdI^3|Gw=GJ5OtHkHIoSJ1=I)6Uq z%$|)oEUTp}xE&+oOg}d2<tqt+pJ|KoCtB)*CFgk7UM`iDXrmo=#4bY5=ebu8NAa)j z#5*cS<DWM=CAB>AZIORV<}Mz7%QW&4Tz!ZrCNyJ_7ycLSGaARxBe>z0zrbR?bUCLG z=fb!Kb8Z|-^UUV>*JFlsNiIZP`f1A`*TM{c4i35S3L{z&ANXR0;g9Zq2!2ESD!cGa zf5L~GEC(;#{_gch?2Is_zx>>hJf_$Pwm5}3%2ZzT8H`GN^vEkNoH~8(!QQqht>hm^ zT7e~JKHddHVB@Nj(><7~lPu?j3ovWe9L%20a{k7vlgh*ubeiau{2RXd1P{y4zu1Li zu?OEbHg_RA6xIlInY;wa@;4fMS}a~f`L1pC-|4^fzK(jo66N!lpA72HlM;P$x#*%Z z>G%{6O~BzD2H`i)Pr*`^c>-<1V}YjMEs+K%S^s4G-;zsfzazL&4P6}buh|!QXWfZ+ z=V+@Hh8PN7bl30S!oTBC@Dnbn{0AO#P6EyAlNK=vWovEDdivt{=@nPt01M^u(w{8! zKrF;-SAS*x_=QJcAol?k7RSGrggESc0*g_YOXJJm(kqXb+)|KdRb3`!`J92bo<190 z^locT0?9$A9elB@MYWWUu6F5Eyvw^~J^vK!t~2}uix&?oQv3e|<GV8v=?YJoiiOo~ z!p!j7g=vZ086ma8!lT9F3>?cxX&fR^qn9UhWZd!+n`{!oD@NqklL}UUl8+`jO-?S@ zXm%G5hKv-NUT3_?Lip$eD!?xpQ4o@yZb|YtHKFX9X~58GtVS9~YT4gqWos9HPkwE= z6Sh{vteEsJ8n~KE$b`lwAq9!?I_Jn7muCsDChb+$yfQ6Y7ArWVP+2RF=w?c-z>+Q) zvGmhYB*T@ATlCqVkdb@>ZE}V!8Mm}7$__~)EP{7!m-I<K=3^eUXa+%a@MnaII_VqZ zWDKwudC^F^%|H{8QG&*gG#W&>LMnxZ5v`Qs;X;UKWdoTxJbNP@oywPB_<N6|$CuCY znek~kD59|{B_)-Umr?Yfh3S@_X*^3Zi|uSZN^(*VA#c@H&8V-cK^9kD9o+#KiCOr| z=xp>V%B3MI-3%g4<X@JLqJl!MVwi==pM8$pY<`TxNeo5FN%pEUvRg~WHjZL|N<sP{ zcEz)dRZPu%+!oFW*<>SuE3KtuLWxa>y{j%tYAP=?<T1jblwneRfy$m3WzbS~;gaQu zPbNQBQfE+8TSq_RWf+pM!&?2OOvI%U5GFYpa<pp5Up-_NAf;jc6k3B)Xhk%mkBn55 zi*zxR&bEYx8j9P+v%F%2p*(`#Ox=?4$U|W?=s8SS#+T?M%`(DS8s!xog3q`J4Qg8L zCBK?fjbp{T#Y=CA$F>|~X0c}mExQwra5H@q<!Nmo!$pcd6j5Rs%v4gsuS%jnw|%4H z_%j`3TIQ0mjdoO}G?|NBm4|RDolmds+Tt+APS#egQ6*)B6CV_irAy7uz@`l~Sh8pZ zjauCLk#O4jOHFmB(lqj;6X}uZfb>B1mng`L!Afp_g7)8)vD!f^YnHA2PFSwoRUfvM z{x1^E6>;X$XuMU4S{cT(aQJWjikrCez)ipX6V4k_XlYD$r~^6LkwUI_HgX(;i1Zwb z6`wqfv--Ly|Jw1mTQQj{*Dvz|3fL~T@SlN^H@=TApS>CT`xz4V0XUt;kmYav0v)|D z;b&L&y{>=%!*Tu{FJfkSEzaM)u$BD7J;q@2ijQ#LsYAXEWB3Jl?#orUY5#7dPc_aT zf8=1)P48jab6cVj7<cFESo+x|=$E2;(Ng|u56toW<y2J|wYhv-IrzTm-2T}`Y4y%8 z{ybY%$yB68{w?^UNoADBuhOjVY(xE1|JB2xL8IP>4Zqs^Wc|ze9{H2EyI#lgPsN*K zM%VAd-_U6o#trq5zWN|0uCeBh0Y3jN_@fyu1(~m}?Mw*1{;~hc-WC5-J_8S(b)W~Z z^)3Gl>eb5EaAZ3#Ty1QU{C}waWfb>L0PK*_f<L{)DR4-eOOhu29BnEc4oPU_G}oDZ zzsb_cCem{ZCVjJI-6}im0z5lyHLlo=AL&{ie!!Q+e<43;*_?leO~IwePLhA++BqHp zz{uUZ5T3&?z~9AxO4KJhk#)<S0om3srIa0mZ$A0!7VGk)neQa(vh*<-fAQhBV#4n( zXfak1%g#CMu*DqdOznFjK3F^%H;yg)7XGrs&d1~LFTkUtH?My#yE2GV>xZIQ*sPgR z^p+hzYHq22PXBtI^cZG7d)*e(?|J>RSoZ8m=*TueeeUMv@AN+fMeSXyr1Hs9hrOBn zclh~z`1<8rw$QE-?an9Q(T|qk;W0fV7FYDrGjcfV<;UeQcigGNxUD0-7T3am(EmD_ zNFS2*@4NKh1h~caPx{na{syB}`ya?Z&_C(`o%HSd`oBQ`TE;&nu<iK55y7_U)cCvp zKm$q&To2X~CezCpMkM0BDCMv>Q$7261i)HB8!{zQ`d>^aAU0-C^ygfNq2fh%4Ujd7 zATV<FvTMGmO{ObGaaWD%i>v6-SDQj(&H&NJ7iZg~<p=N^&z%p&{nrh|p1=N*pm{9m z?=QxvKU@rqI17*5G#;l7>Er>|jWlRi8~VZ=j&##!cyuN)dQC2T&Tm&@euZ?mc$d!Q zlx!W%HrGWtDK;U0S!$AbVqA-hBXif0_-Xt)JjZ;0d+rm|{JaO!zy7B?XN<#wQ_emU zOP;+6Z_f*1!V4du@}$1Vo;AsxnM6Pr)A**LlbpjD!#AH##7oaVg2!%t##WmtoTQtx zj?kB{xFTMCSx%41edn@5hALcH954FZRdSM3*6}0zV0;3G$G^q$!U-VJli=S$GkBI+ zxRRaWVE{)_Mkl?7zw=LU?{$N**A3H5e(N5(6r&#E)(|6qg+Jar9;ffo*-|F!pToJC z{FCtuZ-Q?3&`SSvI$;lfnDnfTomZheVVG#i)I6q}eG%tEoctV1QA8;tqbEKHU8zeh z+_*{bpI^*35oKm%A9|dedvdFf{cz1$?=k!d{OQ9RvFAaZ7`q%V{rV|O8={V!xVw9! z_NmcbWhDJFZsesVr^`siurTT9Q|zH*oR3$jEQ=SW*GSQ={f&|hT&|o2l<-?Ak+5m4 z6~mP;O%NRT-TIYnvHX?YsC1-SdWE!-e<IYEi!Vb)n4lcK77#AKDCe{qR!n^luRQ-p zJVL$yT!BPtaim`px{gXq%u5vep7$6Iylsp-yDG#N?w{_3>zMY0Tc5|Z=N*L}d?9wQ znfwRw8#<34wtCFy@)CEagH4zByn){plK4%(zXT)ya0%ige#JKFDxAtT$;9uGW*WoH zD%-8b@8xNQUtt0y!SS9ocodF}-+-s-fBw0TQ2p~VWXzg?-!U>A8p*9C$6*P-6nuL= zF!99?QE_5#<g(4V#-s1DBM0jPc!G1~k(k6FJU1|A4E+h}J^8nkn+Hf7GM$wRJ+VWF zV8<->7o03oxSND`G&@<uc+`#Sui`1`21MZlIv1K@+1VP1mHmYAAJ0XHZcMhA^e~^_ zPAa2tYEo5Wc*CU&=^=LJ7jpY|a<epop)g0A>mU^-t{i;T6H#Yr<nv%UNW9v!q#`^4 z{vRuU$y4o|?oBlK#ApSQF{_@du~dptO_Zou+UV2<)mN-X`HX3Z7L;&pBHK>>5hTlB z1`R@G*~ZjS3avh?;h;u(VrN=WiF78DoXTFBZ+c}U3YLpe$*b%WsiXvS(z!6l2{y{H z#7yPDFsby-tr&8Os!W8V2~}3SL>)0=1&wj4Z!(U^D#V}3naSfB8A#EJDE775PEW2b zH3Lo23`A<`&~?Qu<ZM`s+~y64G*=>L$!t8&ZBiH4N6;=kiuPRbG9W({1(|8c3e{mu z_jG*nO$~bFM$nwb`dD9M1~L`|rq+h>w^fZ8zjFcF@qEL*vnp`csycMYi6SF2-3)mW zMPWe^Zoc~-TzbJp7&@pwDyu3<vSdaXsA18*jxwy!$;e|LzUZr6rcvF~bhQ7axEqIw zFQ%u=C<fzG6Eq5HA}ASIXc8f62U9q#TnNjph+{nQhz7~h$|3Gq&qc80#(!-qZ3tAl zglQ#9Sc0ugO`PlzeuW!6hN&Fnth|ZCO&~KpjWZGIkBmC9-e}k%-3l{Lv-lJg%D{|# z;+=Y^kEWW%BVig;USwEnCf*e3Ea{VBPW(1E)40WO<4D3_{*bKzBcH^fj}OG5lOIz_ zx0z4rm0YT=qF^BHbxv|Ja?$K&w2Kbru==8vR^pG`SbJyr9ffRvnO;27nGASW`X)|_ zYa2v`O4n0`Q!B)nmi9L@ROx10WwO|s&7j9Pm6LcBaViET$}P^p%rEDlci--4<f=jG zNn0GD&|s0rbKlm}2$pJe5u)*H0x%skt_+VM6pxf01;#s(Q#LMzl~~aJt3W6l_v6)` zrLRther)@1U{v5+DgSW4leq2d$t`6>Kz{$9J>W=OG{Ch1qR;zhS?A!eKh>h{Nd_4! zEL*Wf{DnIofjg$w;D!qBLBaDF8@al*Fq^w>Fm_jNIexu04SMq08p{|(Z%*{TQu_<6 zU$qhSjM5gedF|RElN0!=k5;3Ngd7}B+_g_Q-8TG$&MHD$lKB@sCXE)}<RiXt;Q*ZR z;5#_+wl!E+6-H)+t8MvlP=}IC;#E86!8Y1dE`%SCqR%0uvF1#yTUCJ=jYKhi7?xGs z5jm`@8egfUGmJ)57LI(W7B#8@j1d$oWx|X{d*aIJHMml#g+ukkQiyNHZ-yV7{I9J& zNlEliICPdqbxdI`^0z0$PmGcNxW2X)H&_bhQ(BKF2g!eKE&nF=Tk*PDWVY*sJo46B z{!TXEjlT$^FFy-7@<9?g9k;*mHOBl(Tc^1)OvWGSaUyE!#FwxCu0KfTKbGASC*Ju0 zVnCh05`K2|O3Yil2I1Tc)Ng7;VaM+1)-KEOPkxQ9R`Qo@Bz)l&_HX0wc=Y|K`RN1S z!r$?z2e}gU0h1M5aL2!3nXGeg4E67rC!8EMmw%*SAWnba9lkHE!TL=qBsSH2`7Gi2 z#WptLvjHNoAL75qFaL(RU;6rQ$eC*sX1zXHK*;Tx*n>t=txW$R{?YdY)YhD6^G=D0 ze^H{0p8O@FWc@E-{l9A(^=JJC4IsJYU<wMj8;!E;#=87#WffVi<e!6K<8HzS{53Vz zb1a&|EpFY|!q@*$=`OhViLY?(J!?>|%1-=|oP4xnJCTgv*A-X)gv|a8e>`;%?x1ep z&M<{;x&AYc{fo1f`sbj;(VbiG*H)a$zHup<igS6yKn=3X`k+Tq7G=vkCRF7l{6zV? zaz`u!Kl#G~)avkJ!_QQ$+8^d;p6&;pk5_BQar?w2Slf_})MmCFxm?xXrP$uj1Xe^! zM=1%8G3Vp2m%pz-(r_Zq8r7cRYF}FOuf%R_BJ8Bk;3T&{4*&P*zi>DnTkvnG{n;}A z0scV#(y>7Qg8H}R_DAi@_UzP}Zj(-Jz4d$6afn1dB?46=^<X`M+J7&x)KrZ&*-}sA zWl3bS<Sa-=xZEzkrDbw(e{AKKOXQ)C@7`W|!WUenQb*{AE0bCYhTDxk50$&~0~^cc z1%3;^!E-cedzxX_Pr>I;Uc;4HgvUJMFEsH%oH4XB_PKpB2lB#iz#LtA)afgBXIkqi z)!{kU<aP225FN?*{V1hW`egbEt_6Q0fjmBb=Exa<W4P^~GKOA!9@9CCG54L<9IOFH zW1kLPG4!}WmM8Se8<<T37QOL=fUxsF1xM|sRV9MQ{7s8+@1ZH^%q89D+``Fx#S9#Y z6OTV0yV5WEbhUd@`D+rz5zYfZwH@PT{2Ry8bO*rD87RS0m>8wA=v*r)^SfYQj(kd_ z6}=9auBLy?Chb!mhd&j2UOyRMJb5*CH9%heiND9VAzd*1&Pgms2g3*u|IE9&{Dss{ z#b`Q9MLfE@m=^snLYFd2#28I&_>Lv+^Uw3BlFQ$v5I-Jd5)kM4OAd=-ef%x~PhYVt zMyD?WM)f=FY?cx8(*MvyZ}T{5LiqAEoJ#|yVDJ1tM`I^>`1A2w{ShLYtnv9*8t0_b zW=FM0h9`*93j+f!NE2DkuK-s+J;``k46RG-1LoOY$|Qhvp3wCascW#H1S+PHKS48n z8aTW1cllf7pIrXF+zgx}!IHP|pGeWPka{0Qm)#D)S-uf#;3yn_{Bdq|rt#rky%W4h z_MMKvYs)9&mY?<XcyRK6^0K4RC;b?_xXke)3dF53LZ8n|0>5Gnhrr0=__91q&2R46 zCQZgvYm)@XLq}a!n>756NvO8OKazjL@0Y)WFA7@l8%9Sz1LJIS#&Ek-B?!OtBEIIf zEVKXlss+S$J{o&>+5tn49q8g;egpFuzv!($S^h9i!kEEs+rI?=4w2>eRKY~$xM4QN z`!aJxi3m~XsC4DeunMlCW6<X9k5U;i>X!&00gFC~I$E#bE%9%Nw~U_|-6W2q(q7@z zbcrth42Qe~AtVM}gz!hx0K@gNs7OV-#zBL9n?P40{WG(jpX9@2v?g{9Xn_A;lD~{s zYOGY>R7TBQ;Z$2&jr=_6ri9#fmztA_wO?vWL9OI+x$T8kAP8G+s8%#dFIDa|J6QSZ zV*!h|!d5>1F^$5c3!*}Iy)bK{Uxo=8FQhFIPK>J^lzCm@&Wb?=<o1IxcVLyUBg_h6 z+X_lqO+S@Z+DfAM>?Z0(ts*_giI@<LQ|X!9vnHI5MjCyiX&K1i`Bob?R3l!wkt<i+ zy?EXi=sE906uo!@w-5de=DzzBZl1IVpM3Z!ZeA9`3L2kIAJQ2`oK(x}(GRQnW%XCI z2x-E0($ZQQAtJ~m7x8s#i7N%^RPY)a5I)~ji%v}q=#$oj1z)YiQ9Bl)fcpT3Q@JXO z^+m>=!gd{zO5>W0G*A5HNu)B)o$W=*N!A>fggJP0^^4M?48$pCEs2Y~@~8HKpjhoB zZGD~~;S)Y@f+4v}(yj~`#)z1GT2A=Nz>Ds20@1{h^2jLa+90Bmj<K_hNeLuxK8Ltc z&f-O*bii<0R-+?iMi`p3w6cnHF`3b*%CCId7SC2^*$OP`uNa_VNo|FA)v7A-rWIH* z`gNvNjCqt!YM?l+Mp8C4ErKt&B0s7?I@$kZY*L`Dz9KDJeJ44Dc$aZTloK0`ZcHm$ z$&0PRVm1v5gjbV4f=@9r4Gm6&t24SpVu;VeE5n&k*%@8TW9b+kA^pNf*7)NySMe&Z z{YXQqc+ggh1SZ?FR;KCPu$1&LvQooH<4VCWR|7^3KIOoBoWMk*_?HpcwoK&R<V@I1 zg35|bnEBOw>Jx!(g-d50kx`+sp^0VA@}`7j&~znC20b}g&6OTl41<M~PeJ=nNl_M* zgvsjvm;NuCD@(JvqO_1JR@=^hCJIYCpkv4OXy2iP+moxEk;+ka{|n=fw5(EeY+r(c zcEnknNjlpy{>k7<j1Fi={@Qn-5i6?lRWrzXxZUf&lYePJK6&dv1D%ZCTQC38QD-Jr z>`c4p9!#mxC%6Ba{-@@5LjOSn(XU4z3>?@WU3m_rMhg1ZZ(EapdQN+Epngb~+ZF2U z+kcJ!7X7cmYEH|@#f~42Ue<5_@A99;vsJURxcZ#q8&(kwwXClEko;3pIKIkIr?}<z zFEwBFuLC-D?10iNwG(Zre{IJv#rUEA2Wh3)X~-TJ(7iVX4jF7lEah?i+rO**$wK?G ze%P5GlJwbW5c+m)$CZ2%B<Uj}jT20$<bUbk@5XH^T)LeeI1jt3eeu&u<F`WoZQ*}& z{K5O5)bQV3{#(}nEtP*D|3Lo#cl6J-W83RhZ!p`eQ=j2_V%{{kkh6}27w^$}G5Xb+ zxlY72Z1%FOApJ4Yy|nq6yt~V!oX%M~|G`7SFeS4ednR>GhKF~4v}@rZt~`2u1Mz6W zK$8`ksNqkORJLFJ^QWP}OX;8|<9G1%!Yv#IpJ#0Ca{RCHdCh8k_TqgwR!LkkOulSi zTs65e!M}LZgO=9wLo_B7$1P6rcBT|jT1RM6E%<FB%@d~l4!_H9sXX|)X`F0H)meKW zz*PggA9sRfi1XOq$)8Wfq!%VqL?P^U)?UbE#vMnD@$x;74;cUc3-9rn1EDj2#x1^> zmGG2)`t4(I{_E};NBkC(=9eS>#Xs?<C;y1cXe<-jg!BC(%=bIuzQw;}qPb!>5Ez9w zD_z;x#FEO(CVE&_d=rSjcp5j8bk4v^fOOxbe=gb)ps$Qu%RdtXS&pC8ti)$8--n+O zl;o@5q)Ufm{A7MTWxyT(#)<=F!RAfI@7GpZr4q?J{*B7og?Rf7W)%XI@e6b#$1VyH z|8mk6bKbL)zj(ArrsFme)Fn%mjGxhNMWP^(W={H8CME1N0_V%PAotS!cz0t1rag59 zqXl&!u0DJx-aWi_r(f9(zQSAdUoT{$HN-D3`C*y4&E@aSy%=<Re^V;T-_8RtAs>LZ zSSPLiX);G;>)(kp{sPNcq$!(O`9u!C?AEpwo-=BF{+TABe@gGOA{dSp!{5661)K54 zi<i(~dzlqPH{<prasJ;OejG);pSRBR{?C8@BQBSb*kr@{qHOw!5D!GO<6gM@FY{17 zcQPJPC6OclvC#84`p^flNY6ijfAjJeA|I7wKp-+P_yn&_dg(zs|4)g;!er^P&P)52 z{xe7k+JwKQ{6(^yvFOX+XIO#M&mli!n?rvL&tvk`srcZ9cPz)ivxZrl(|6R7mP7HA zrhb8UUwqGWDt6{r40em5j4tmYbdF9#>K>gG<QHxHDbDco;-?dT38x8Gr}2J}wXaH} zERus&!j{a6Z{!#Bt=oT>+wdEFhd;UeeOL+frV~OyHW;bN0wJ_|;;8pXQUZA$Oq)QL zj0KP|Y?Xzc-M=j+vF1cs7^VWXNmu&)L7bvYI7XDb0siljzeMZHpQ@r_py7wx*)`Ph z{2Z<*)ykl)a4Fn^tZrQeDi<%{Ou9SIlGF7p8#n21TfPaNR>EjoGflR8DqyRF=vR5F zDK~u~ftt8i8n$@0vLl6UXO#V<R>x?2G;3b@!3~oz3w4GbP5Nt6KF)KOQixkd1cOO~ zg5XH6bdHuC+9g8^+fW_OE*O%BR7X!~1$hY5(9~(xdnkYIVa$2y3GBY%b8O%iINjg7 z9h;uG7QegwYTSFnc)a@JQ@G{1m+-gOp26JJ%W&v`QdDGQ;mOZt;_Ag2cyxXhCf9I5 z<Hj&{$&X^yl7*PLx)O8OR^!=~&DeK`Jj|_ZM34LkGV<Bius|ZDU-pCQidtMZvJ;I7 zA#`e=k87u_z+VsSf*4mXG;<3@@%+v5r97W03Y|~1Xz4fjkYk&?>`d+wr7ya@K0?cs zj5kd*s^3;Q_~Sz{&+?bNBnwv7n2Z^Ot-e*0CQO|;M=MNNVZvoGG7s-eD*=YQPSUnB zl!b<QHU4bmc7<{>X{dgNNVnM!g@ABnc+ww{5vR(Le*WvCvXoxvOeYz5WVn-|%<4W- z$RflN7Z~PK87n`x4|Fp<R-TGe1EQu$#y^*saD2LzN5Nj4+CX!Jmnu0(r}$H_U>I#W z6HW5e*DEZqdKzp(Gy-euO#KO^_?LD{RuSsGc+q#}CNJZKNl2#|%J`hZNq8Boyj}hr zudD=GDdijWQaDacq47y~od?DRehASo16GvVyot_e28~)YV5Ku11H?4z0;!T=kU#O` zZ@s8WrWIK-W|?eFzM_-5n3aJ~Kb(q&2Jd`F6H41IIo!*ww!RjPtYc=pq%8eO`@~qw zgcP*@YHy^^Hb|kItd3~#sYcrU2mPPM;$F41%0<~&8$kI4{eRL}PYslGNb1D<clG}+ zf$H+MQU8$I8<$VK!y1<u{)|_qtPJ%3-&FrY^-J)<6xVK#8ZnS>P;ycbcMsa1?YaG3 zhxZ?S)Jhb?e}l(Q<`D?nVf_#KKh;OI+x%&a9Q6M|`~Poh|D{v*YNK}#*XVD%?Z0cu zw%e<{wr-QuTW9ae-O;B(qYJc`TAygPLvk8y+gMUBj(XPnh($<=%#%<hAC4Dcv0jn{ zjznS)zQwbV6Ap(z&T|onhY>Lzb^G?0Yg^%W`ALBqNOLW!{4M-acn@JBPT4ZrVb>$h z#$V&*c<cK8J%-|VeA>bU%m$lF;J`WbCrn;YM>#nDlkqS7>|IMQkop2RfkS?3fR9_u zB;s1gZV7WhJ^m9UV27ccKvx0q|I#75;>^inJC4&2=pzp@b{U1SgeQ;}Gye1s=;6bK zKi|WaY+HqInt?~{+$_ykT!XKl8;`wv6d6o@=B+>nAc-2Iz-Xq=!@ni|l}`J_3x5m~ z@aELj3i4p<{vGm9PGfilfpCb^Im+6TzwrC3F)Z4W@}lxjZ;xFMKL>w_uf?0!9bo;Y zh<W<UMIM;8;MbIv9Ittt_;xuHJcxa4ScYl5N%pZ3ebLdr086BFc}!kjn9qmDf1M}e zSm-f)Ft^TO@Y682{^m`cVBzv>D<GA*Tqsn81Ag%f=Z}AZ`)|1wx82SI#}t3!)fio> z=}hN*9h2-_{$&2$!K_Lf3q6j{miUu74!<D8Lyi1u**whd2oV1wCzs_c{t^EN-sC># zCVypOy3O%>SrO(c0xt<ZpY#=1%F+3W9e9MeJ%bBVU31C(Ji7b%zf1qV6MyqpPVWgL zjO*~#v(kH>abWnhNtnF4`sL5(E#NQewHHpk^>u8V`8*A#l&5~vCt;y6!|dO~zhq?6 z@#`2T@O<`t896E#$~I}2BYtIV(%aV^Xwgdjr)i6guC3<ZNJ}n%53^4|g4g8o2iu&3 zOc08`WGLI5DfIFG%>DZrP1%F?<9Tt$HZB{s8_xVt902Ey-Q6ZN6=ey{<6W3vlMv?Y z=H%e6-f9X)wwAvrppycy)3FI)J$w0`Y!%>w9H)Xv%~e+ZrceA5RW1XsE%-zAi!te4 z<x`l-pPd?=@GC?UlTNE0EKQz^d@Fm!bK+cEW>{K28*6;vbUASos^Ac$>X1@7Xw0Jt zRtu9twBTfr;nbvYfd9wKKV%jpeel9{Nn9PH^QIc=>)1!>916d*+HkkR29{5LhZFg1 zOj$m%e#ls2AJY()j5F$&TnEZCI~32+wI=1Yn#7`r%5;&bY|@{B(jk?8IL`K$^brc% zdxlxKR&#KwPR1>zQD*58;Y3-xv~ngwgNh6wPUkpT&ve>O(6$s5UF1E&$##8A!sdqC z1EwRlt_t&CehW*UycxGX|03@Gaz6I%n~m6vw=i+#Cd^GO#0~{Km!PQ~dhE~<89j!e z)2^fWK@mUNXb5vbWDM`luR$iy8Vb?c)4oGz%&CgwypO&?MJN@uq#`3N6<L`XC`n7h z<4c;csG=T`Mvj}ZJlUsZB3@LAJxX)2Y3)WDA)?%3rV*zP?23szg?w=POxh^8@`{xw zKQ9LjjrFz?r?e;s_x<61%v!htpMO1{eFV>@NzWkHDpAQw^-6N1tW<AR`K-;5!I1)> zkxDgCPV$V<IHj7WE?fo?L9zVGE~AHZhw{`%7%_g0Z&}rDo7GD3GQ@CY8`J7cu@G0A z#dVfgRL=}I+zz(YcRnl33{u2wlhvB!*H2VideZGkv0Vy`6{aOSR-VpECYtyYozfM> zvG7&i28RYPixWp4EVU-K#U8_G?z0G;p=BQ!Nw1Wa!LbJEA&rOx>W}Zqj;JFn<uvIU zt){&)P?2vLZ$mUTiBHMGR(6pNKCtX4Ck{lk>MKMeRG0=Q8M(|jM`II<pXYorjA<hj zpI|5~!iQ8dMhPCp%55v7)O*z{t-8|LVNv21E}iYARb;kW%r{(#Xa3wD;rh=s(3ydY zb#xhZDLq3Q%98mu{!*#m&5ccH;#pa;TgrB<+-eV8U1X7}eEDGIVDdEyGM!2yX#cG~ zm@cW+lHO8=QbJFsgZ?k*|E)%<PFd|zdqMTsPRCzaL(k!A@EUGgS%;fPm0BC;+R{M( z|CRdRxNI>$qmvteBlpnxSoHE2w7>rs`kx~F{KXopH??nGiXAyn+g|IxdVjTJLH{3& ze}eJf|DWSu>!!Bji$*Hjq_dYScKYi3-Ia~4y-m0mTc2n*HgKt2W9(wIHHp3AGLOA{ zTQe<4g5&4rGyQteX0SOm>2k^VEx84|SeGIfBYwpdCtkjL_q!dRaqd3>T1bRj!0aN- zir)f$hAE%ol|xha$@qB^0}dQBilK7+YB{c#Te%$Ucd|1ch><Jrdj-`lg2_Dmbzk9u zaW5wbJ9#uGdJ{x4STDLZ3U?VjiZ{d0I3wN|F|UtCpyEA;;zkps<HB99#mMe<ssPFC zheQ3<I-X3zIN7!pv}}S{R}Fp(W_V(Q3Q(*`0|F8(U=5~m#fqF(={W0`dv@_k=zg}> zwk6cFFMpQRFE8^lgmB-8JMgiVXwmuj1;>}ah4Y~Wzl;60{;Bi#922t%Y<Z@T8x!~q zBH<TXIXWrwAb2jJ+Zz1totl#>FHONLF3NLINvDT(#uN8&J4UBV2OT$*yXX1*Gt9k@ zGchM?TvnG~VzNBB7%5#c;zGFm!PjiNILDvIf9=<J@bp(KpH$|gL;4zKAAkFiCtxgN zmHMBzT#Kg(OuBadFGulfv~TOb!8Xtu+WYcPN4K(4_r$mhA9|fSZHWj=#BIVqu0IaH z_>f+P%kW^qmLuEMNyRYf??&8(PwVMXwk_bdP=bz@bg?b`^o%Eei)R+ofW$n0`Pa?* z8&2F)yX4C$!ufQS*XKXE{Ylh6CHfxxsHwpUFHLM9_a2vVkIvyQ$26_5qYHuChOtgK zzq@l|^KaqL?sqUo@9FaEmC0)cnc>^=7nBzLGa@}&oeuf@D=#<f^yKd)0S%X9MkHh( zp)PM7|IJwZ(d&5mjW_YitFPgsWp1NQPh(rjU-*SJx&Fm_4#SNM_sd?4gyUCXM44+F zW4Zls$WNGyS*`u&UE2yCwM(&uiFY~iXnlpxz6a1Rf3KM^Am5U|^7}NHurxX8IUyzx z<43UhD5v&GQR%%$;#`I4_ttrMc_Alg>9zC<=EKsz{}Ip9FBd<aTXTAgbu67r%ow#g znoJfTO+fR`$yTF;v%M-4@o%vv4EZgT@**~iQwTMM@iu`=SlTYlgd+tqJ`^n|oRk&Z z0KW>$<k437>l7*Fk+f-pusIS<@at@>7>zp7sLoJuVsFb`2C15L<y?)m91*Sr;%qzN zySCK83l^VcP0&gi>A6j8TiL1XWwy|db%#b4TRkF{=yaA)m_{}oJ|v@+D|=Ed7N`$Q zZeeEdBJIK|t>fH1jVW3a#ym`;73yRTF~ZUWyNq^RD#ZLGPCqVbi4=E2-!%&{Xu{3t zJLO)yy=Xl?SRcZss#=`%;M>^5l|?&t=b4LK0#m)Q5m^<B@!^7%$X&DmXV3jB`c!?2 zNmU_qD9XeN4xR=V^K1^%1fExwN-IM<Zc#X`yw+AEMbq-oTwjlso9gh+l8q?f`6;tE zQf}4d2yyEw88@P7Ayih@A+;nIjWWE@ymD}-7!J>_#L_An33#4_wwi0;Hpb~`Q5p=I z>{pPRi8nu=f!C%l#Bsko72m8~i!P-)<dHCJWtu9J%7YST8Cc!(3)*zam7lhkj%gb_ ziB3ipZ4+m8PoONJm61THE{1uA6c@3voEUF)Snyd^YzMSTN;vJyTN+>VY`D$9qBz1A zNrEU3iIQPQcQao3^eG+x+*Wlm!SEMj|05lv^{knmxPRUo{VIENqL*+r#uRv;KG7qC z9Z6)o^o_8URFAq4u5MZ-FV`eI%5TOyOJ(8B#tiAFAvaE>&M3#kWI@JMvPnynij_tz z8LI?b^+c<r=r<#ij7u~`Y1NnvR1q4z(lWJOpbT9MS6<1IQc@Qzmc)k)WM=d-IrB_9 z-etViYBJ-QWo{ogi5Jo>s+rM@N_x_>ZHp~t8E*X>?_wz{BNMY|5RFiORgQi!{Lo!x zm(IL3oS1HAz0nqfYGa7OjH}jP5wq|I?Z5PaqIc3@AyFzSSLv@5Si+Wms%&@*`afxr z+LWOGw>C;jL3y;b|JTP2QY6*Ap#J^eZ+{{^kD;N1XT;TgjMI8Wt^EzkKhXc6{s-+} z(Ek75Z~yfYWSVY$z8imUtL?u=GTXD$FnybJ_Tr!y3zd8;r@^#-Elw|hdgriFq8IFP zxmOg;m$Y_%EOTgZsdr_)J^FANq$kA*zh1z-5HE!Tm^b_a{0}FMl_rMUF*M^8Jod>V zRPu$sxo#86m(Iewf8#;mxBs)nz$8#iFDEDtM+=_~U*3zf(1Ez?>31=6)mqeX0;pll zOgw(S3<%6enhq@EiVe?oKJr{#;6MD~SnP52vsh5wz{!?oR4jQHSMD+Z_xSNAK8KUL z^K;T9{CekhZ^`1q@ui#3e_A}tOC7?e=iP;8=9Y8PhF_v^g3EWIco{}qJJ@^V*)$yG z_q_37^dcN_7LONU*da%__yGefEcUA-F_=eS`1~Wi2tAp?UgoD=gkRk829}hs!Ge!o z#+Ac+;b!m6L92A$_}p7j<zWnI`ySt^Jk2?79DXih8h)Xbl_+Y)o!B$|R6O$WBAX;@ zuHA_BOXlFczuk!|Zl8eKB>p9p)=uz!9Q0Cm{4~PlyN2n%Lt6L%-0}2#`0AT-)Nrz^ zel^RH#zsrWq@#D>q`K*tLR#_)yq<jhb1=PlrjLj2$Da9vaocO3au059t<zYAj~+Q2 z1IABeQo;%yfQydlXH*KZO>+A+-DW}@EOC*Hzw?pj-~yk$KOBRh*FK9yRgKi8CR8qc z7vl%-jNdV<^2Di2Cz>wt*{^>&!!Yg~8ll|mfTM*wu#elLz_F0Hdb~(>@^Yf3h5uCS z{mUB!)Z#*S9f^G|dIX=&nT=21d<y6F&&5xE{g$imR5dZF2|vI7=c-Qb?ZRW+!Frfi z&Xt;MWI3-}GK=N>J6v|h1gn$c1>FwDHOIO<q4;#1-u)2#?%iov{M8gZf9n~@-0>JZ z>*=593Tu)h$tCztE<?%PKuZ2eiOuWyx8TfN^ir7GpD!=OxZB^r;x*-%|Iterzh4jB z;z=eJdIE2J#&cXes65aQe;yviE*Cw32~+1{)kYrH+f<7M6CS}mGV&34h^LaZOY>zT zB))6GpIrV5wfaZ)q%JOw6SmXu;n^{sE?b+_Xl>FHYLg642nTiNgzZ-GUxNw9AA%zf zIT%MAemI6bGtVc^gV}<=B|<()O+T;Ap*M^{ia?LwsLfHFTrq~Q&9T(|ceaq&nPV_0 zTV=Ny|CUH$US8fz7QD!I<YHdNwZDG{tGL}$JrCDTcHE83Inxn8=KIS(p3(!S+;^0x z|NIDH-;?pov~SqntM919wCAqD@Jn7MZdWs|I(2VuI4ftwI!ayTu@u_&%hh$_RrxW_ zwh9w3)GhmKMW323Ckssw+f=84R{J764CGxfrSo#;cbMHZ!0$<ggYvDAzpYrIfv1Uv z06QCt+X`y(+0HmJNw?v`Vo9a(s{E^&Na4yLEe+OaM`dT{n%Q0bB0c^ZL>mY(4eLmw zR$1|`v5kxhTG?YZ2PSu442uS}%QUdE_~TlsLU7vhPKK3`r}X~nGE))NJsFS$m-jez zIYi@CoM%q)Byk24C;8T2D3#iro{f&|cNaZ;Gd_F#R)$5;chnwOwqXO(xk{?3W+R%o z&)*-vuEzB8N>r^~gC5;^1_Zb6>z7i8voj`RNoqB&oVpG(sv|gWY6W^_MKN_<E%Gwc zd5+cwu885eSKMweD>D;So2vNrNG16reUUW6NyjQ0w9>i486A6YMKibh&B;dNdiJN4 z4M?lwYAs2xs1rpIM{&Cx)XHGOGl&{kX7vp<WJ{}l$X)|iz+@C+16PF=aeKGjMjV1` z@4gSuy!KBN<>k|E;+;Jrxw+~jVN&L<7HU+YQKXCF>bGVBrBmsdfrog__$RqijtY}8 zQCkse9g|jWkt=54k4m6At&%i-pmEOW0PiYfTj9k7LZ&R9hil61+0}o>G2Yq`!gOUP z+KFF!WO<pH9u>QEMXibOYr>x<OG{!=^htN9K|*KoBEgyuFHGyHM5SB#Wq?dCQ<#t# zWOs5#BLScjf6`sSF(a7_f8<j(IBoqG^;TEKOmB&o32kdcA)&K2k;}Q1R@N@nfe7zh z#Ad6jBrlVV)eYq!C&DRNSfz38YnVnZTDgo6iME;Wnwdt$;#yr3l*?}bt(54~o#mq~ z6765|a(~Q9dgItgeVzH`TpHA5K5M(n&7rYY;~naz8ID;nR%V-la3w}ch|o$)q^f*P z#>RkAX$^p)L_e=`cC`XjsFSUHwgQ;=g8s+phXfV$zpf@&-8SuUmq7p2Vg~guXn%tC zH|T%ZQK(Z5`rlyu5sbfB5rXk2hX!mCc=->^zqk?E_IuSk(>ChVu<La%$=Q39N>?7| z>?=7pi{gb?Z(wI4*-JHF(HgvbiZL(m=J$ZxxjJ5Mv(FfKMtb<`l+H`5)lx0^OEK={ zk8r*h8OIYmSiB4cI^a1o4<+4q!pLJT!W~b|=e9PEmo4EpWi|NpaRMhE`Ufug`3Usy zSc*)3v7A=gAE!S2kx>|qpN)$S>S%tuM0UchUp`_hN(6i6Z;wSU9@?veq6^AK;?`L% zX&9Gc^1VL=ZAV6}&^fX3Y#Wn`OJ~<4{xR?f+^3m#X5f+L_*tJ4Zmp7q%wwK{76tk8 zA2{*|56U#-^teNKCKBN&UhlhQ`*ABU285=6X~0f9b||tunHv9*UO4ft;f$jrVJ}}g z8r|EqN3UT=;g<Iq=B3sBroGxDbkd)b@N<Gi*>oYkgiFGYczcX{^<&TI$8YFp5F0nN z4EZUkEUSDJ@315GJLVGH%Ch3e-2%k_AJV^&>6xY<l-_j1{G^3n*~dc@a2d;S=T0Ta z;@9@+?fc`jN1T-*96t+}{iK7Dnq2-C@Ll*7DYA^kX}IFBJ<uVS6J)8m7<R^kj(;Y( z;GM^CU>-e5{MTC^1#s~je|q%VNBX^hl>XGE$Eiy~0(^Dj&(I?$-Bt<|bQ_7A=eTsC z_@(&p9;Zuw`8$Xy7<%#rgyzaz1wZ88vDiuTFrF+4L7@4Id-akJ?6jO+R55(o@pQa* zDOVtQdA_)N9ESAW5qpe25%+z~ye=6+QYAXu649XQsU60>;*~S;b0bcip>n4DQ&`UJ zRL)~B#O;5c2XFI4rpd&Zn_tDQ%1)>Hcj1V^C>yXBj=AD72ie1E55AviTk~(Zb#ac& z`uhKE{yq6e`r!DxM*2DM%4LV3J68tu9(E-4-szvA<K^bPOR4uyVI$?@yJ>fyg9CQ$ ziw=3|JliD;z4kvBUkERMM?8HZcGASNl7CD79)3l6<?qWwD>xd&sFx=$U5-z{rN>d1 zJG4UvWtmpG6WgRIMn(u{;Sx`m1ufx3hgbi7SVoHBj3ceDd3Xt7Sehw`%c?|4_+22c z9v^}wH)w=2j>l|6P2l*^Y;%(EcOQ9>Wx<RYmj1M{!@k}AF($z`{Y?U$z@Li)F1o}) zBwJI)AA%k{T)VKS7<bKdxm1Uo{uv7D^yd6?#f^(Hz=E$7`gJ(^xA@bk?JPWwNx0;& zA?Q<9hO)lgisaHK6Z(Jf9e>9uJJ2F2y2Lwwn$)%lG6K?FTSw7jes${Z#ZYBW9nzOU zvTg|}olX4mt}pU!g@hl$FrB?)k22PJa*%!qt)iqGs+R%&A18kqk2HOyyNo^!P5kJD z+kk2Ed23t>#~8I6Dp9d~2`Arah|w&%6__Sa1z$!CSKu~9F5?Gr%3z>>wJa(}qlLPp zv@z+4%ANmlu9}iQS)tQn66SN9%VHEQ0P;KI2GhuR#gBJv+d%OpTr~DHH?tMtwyiQ= z#rZ)F%@JHVR)pNl67-t=J{I0P9(5BR!n5zZg9G;LgixoB_;l)W9MT~Zl~tQiTwH{q zV@|<-V-CW_m!E)TX<hL7@&>FgufY9>mmzy-Z%kg9!f`?=rZ=Qw!oq62U6+PD8Y3FX zleT`-`D2?lZls)>kjJ`PT~~)f-Z$291t<+?Bl1Gnp)>c0uG}c)2l!z@gn7^CT|hfq zHX3qs5vu3@tmLU?eJ!^Vqy+Qw(6LKLq;rqC`s!*l5_U>j1~#o;f$9~DFm2+?sNu&u z4crRvrrWQ@6VE-5-o5%FpLk`iQb{={ndq5@7JZCk5frcuXK2t?edf=toZ*T##w$rk z9;UIPAgyx#iY#|Fm&!mE9m<}td9g=ZdC#;ecjpY6>56^OAv)|&x~=l{%b0X(We*Xm z%mq(+;LgYtjpBfL*+3X%qLkkmGqm!_g-b8BvdPy~YrjaNNQ^Svt&U<o`KiwmgPkoU z*fKZ~K#WEs10e>azs4p3Grd+=MQO>hl~VL;MV7Yn(@%MABAs^`ufp1sP)^U1F@f5O zMAGW&g^alTV_w_JP&|-l;kOSwWHIBv7^WGFck#=gSs3}u`p4uX(V$3VB9|AJM=Qx> z?u#?Mw7{ifB*RrlCFb;ubbR*N47LwRUyU*Q4>|Ff!BvR$)O9<vmk|B--*10JO3?lX z{a?`ks|8l2bS@bGuwAq^iVct&3AII%5dCc4)M!}y7>xhaN3w0Ftb*}3`!J3BG+v=h zq$cXqs3_Lw2Jaui`<FlduolI}M8WtY7=H!huWfDorTV!&I`3_68zf!*paxGynqCI! z7^cqB{kb8QA~ewQQY7wCeWa|;6&;adFP!RR1ynE$jNNrf*YOA%k#yo@w?XH#k}4g& zd7S4^d<bPIB&=5Wi}t`>O{?(cUFTS0w$X;d(5NHlYJoAw^+Yy9w~XK65F(KmEg67w z_TAC&603(-gv4>s1rKA|hWjy)Uuz1!T^SV}a2h^e^(pQiH%#y4t?&!P$+!L;%bRY) zUU_0lFb$mDBe`AN1K}5F^M41`(mDQ1arUIixM3e<OmZ6=++fA<g^)F96tt*C_+{ug zykCw;b^*MHd+&{_3_1Nc1t;vr30$U?vl}mcF8CYXy8dXx?L`R~&V1;7Y>2PK69*^J zz&(U)u*8J%P$pr}!~ZOu)J`YaB;&V-g57a<!z#Rf_u2NS(lLliXo&}6%n4=gP*w){ z<uAZSj}kMT`*S$BQxU@$+nL5gd0k4D<3OCdPd|nz%>NlS9B?7aaXrh?`_R^4^J401 z(3#=8@C)FWJ23H;J2BXUEBx;7Xgo5t9Cr=pHcb3W=3hE)+)~FSAr~iLjy4e~{HX&@ z!l$b~!98aT^CBfBMp_0QcXiv}v8?en3@vc{TRux+Tp)Y5vG{dwBcJa)198bQySNAD z-(3Hrq{$@GC2BOa@SlQxZ&`_t9z4tNCgaD5i}Ch~HF*16?&WT@w?`)BXld-3bQJ7? zyBk;H&61l(!vFw407*naR6Cj9!W@rYX)|OHjyS%jt+w&w(fv?NSvV1w?<>K(^okST z;~x7AYv(`Z415gA%H@`jyi3NL^Y7EKx%>rZbN-cAZpRCs#oN+*Imy|>f5t=ap@Mq< z<Y+Hk@tnxj7A4$>3_BciGImp#SN?)0RRoU4of8(~g|R(cfQbDb{Fa6Bsa`vWjx<y; zi?9D_#k=5~;ZBzY-FE`}lMDZdsTKEQu-aI<t>HgW{=_}kUXTUBq-rwo@h6~qd?<yy znY)a@&y<BsN4WCuh<==O_JnE@>aiEDR5X9uR`B>;*yb1vhIx0zwrc;Wgo@Hd_;dHU z4qrTazL!A}&ed`9+EOx&^)<rMDT;JuqEnp15k?-r9#CiqT~MGe@cH24@-gbhPw@U@ zmttojlv9LD0t`C=_rLWy?mM!t<+mh^cYg%pDh%gLHD#)2X}GnDeBy*GubNjC_ijrv z4~J$+>1+^17(%J}WaTy;6)0v@xL!;(t17?EnQMPKqe0;e6r2D*r675HxBOKOX84hQ z(I}t^<|f`7xy@a6Ci_ZPaZR2-d|}ye;(ht2Q>+N$oLpD=YSmPTD}UmgWS6ajC^S`W z+ri0zq6vEanpmE$<VX_}3AgD0Ymsm4P@R&~ReB`aW86Yc+XmWCtFmaQkr6AdEd#aU ziuVxb++*B>GoF%$oQ!M~<>w+p@ig>gtz3xaiBICSdoIOMx7~}o=d8pfbE)PfdEf#n zR9A9E>4sVw6dF;(S+ne&Mq*e6w;YT%;od7A;Y!uDcy!JtTt6@eO)J-t|D`yITZtC1 zLo4P=D{ak~LA)|Sr11=_6nzAgk%7#tEIy}l#ZDBJ)iqeRp@MZj8?%<L#cl)nG06sQ z$V_9s^gLd*5jh2Ec$a5uJ;yOdxMCwJH_^zInTqO~X52j>4ZrN)1$k*5P|H<W-TUlh zWssed$?}Y2<-9MsdbI(Wb<5GMYkTa}X8>M(`8gbR>{v{kJO%A&uyiXCR6i+Sle1qQ zGSX1uY$LR)$IhVSwt>z7$v75jgI3v)P8I^mWw|i93_dAb!6iS<U9Jr2*A|7EeU!n; z%HCnLGHn(f{dD7MB~@i>SFD^}E8+~5q)mz>;P%h7(h0)UxnD8>DMHPHydkcN()M=p z>-;Ghf=riq50fuFn}N&HDoWe-u>;pL)5~zBRZd~9j!LDmHpC@T;dI@#T8igVF^w6j z_~Ane!_!%=sodUChTTXSO-jr!yhZ@&a=J@erQ_n27x8IroAB@_y%2j%TD3(yB#B`> zTZ_E7bG4{o+-5Muv85TubjFzKnku#Gp7POa7kaF%q<j>l1~_JoE5r3CJPc-bQX!+5 z5{Z3L<>YF#84bL!V3sXih4gfdF5B+XS>NipdbrWr8tI61faNIX-GlaDdf;@yiik1_ z`af!+bd!2(dZ>y)eKDPuf(HFR<zp>~)lI8T!T5(_ke;Y*b$uCIMAfEX{AumG`e1of zfpl~2aM1n+?QhWk1pTl2)?oah9wZol{kO)Su4CGMuOaT?YrU&|A*?=DZ?xV$*`FMi z94`Nsp8fExxodK#nqRoiojVs}$Bq>h{Fi!D$yM9UX~3ia?`D4Y5~vr&7RLzv^G(r0 z&2QOU5-*>@QVPMhFr_w+yKfEtx(X~?u^#o3A-B%S&CWx9VYV4K94&3f-&|Xb^&863 zkdlq&jg?#h(G8`}B9|b~sPrz5Vor2atiaOpCggLu)7t6~N;-7|kBqQ9dM7biNCJLl z-P^=}1Gi;cf=yiYk=7VOc4-N>=HUdxX7~loIY#LJN65cn!*VQJ$FI3V=_u*i5nOcS zm47W(&0ona;W&BKxg*cF;N-%O#b3J~OINPfaUF<9vyq#dg@XKSe$o3clz)qKDFVlT z6VLvtU^&*OaH4C|CZv~kM`^YuD44|8xi-mvBc2<bhp}%k--t(1JMmPcHE+W5MQhN& zUN9cd<nBlvoe|Coz~TQf^7n{Cy_G{8c^Pq(b6H|3b*WH$tr_htEQk*ml+Z4hNF@A- z@=qWj)Y!&yELyRS^@$TzxrNxFq%aX}IK9hv;YZyDtCJ0+C`R4Q;}`Y?1zCvtnRRa^ z|7LCpx(MafoG9b=L<Jok&;N<`r(yjHZmY!!Rc<0z(oK3#;;j9t#cCe>UQOdwe#g!z zqTY*S$3hb)fY+gXV-r{XHKC$0ixa5DOsTxe{_ku5Vs+e_aeW2bq)fy%apJhN4DGY1 z%RjpOEAiwZ`8etI5U%{795)T4b=0eWt{d|CSFpI1^BMQ~SCG>`6NshJ#qqCKM$<|M zioqTn-IUL)Gfd(8iQi55DVO3Mp4g_<SiH6wIqBS1F{KbC#oP*xutb*s@@^;@=K4bi z+g@3PlmGUL@5S3$FA5=kMT6Tyu3okho4DOtD!0Ilr4^!MyDY<RUpq3b>mO?{cg|cK ze#GIH&sGO0Kgo5tJboFZ=}}F}>RcNUDos!yph0tt9*J693Xr{M8=V41XA`oD6?dAb z<z4XvXoD@q=uvQ$g-HYaCN3vadVTq8i!V=6X!l{6)9BO46-xE>b+%e4FR#!HFP5bZ z7a0R$%=^_d&v0A3e9gMs)@d>6F0C5UKk1s?wTg<9?Q$wjrO}EbZGmRz_At<l3s%OY zSo%n7l+MWFp+ACRIW-Eiu^i)V)lZz~??{=<(b&S}D)C4v>LT1$uX+aJS%rA`AMav) zZ8oZwypKPAwVrxcgW+8YQN_NbE|Sf@ssYap%SE&(18Ll=I8w156$OPD|G`?kT~5>V zfMWE^tm4NhAxvIejV?R`>$Z;<;*G<0!aK`1;E29OSd^26qaT@pJ$jbni{+JQV*QDv zrXpVk4;n)_RH015>OMHOtU?`^O;=V|pmSk9nlg&;*8XY8ZQ|-muFz_zr`a!qM*N&Y zOj^gYuvS-M_)hI;$g08uo{iNpUWZV6CK|cg?4-%-kay_Wm^E<%vg(%5P(Y&@w>+$= zsima2&0Th9lrNcyl6D1Lt(AhTY_9q)YLDMubum`2Sc$rL6J;&Kp=uYMCWw`jdJ)m; zBN_-*KVzCCrJTbY8#n2$q|6Zuar;3tWXW*DK$WrSnJW`BKr@(yq$^>mU6VPJj&LG0 zaHx)lc~?2=Of$86?(1@wPJGxBRi-m2%<MsP@E9(f(ltBBDJCPTwxVQu<4ZV&&n~?2 zPCnHhiCwipP1G~3Vv@ntjABd^lhH~#F8)L>uR1GC-vG!E)yOtTT_e}5884>UgyY(3 z>8}Wt=8`V{NrX+JN8xmmVk{+wD2b5a&BB>K#OG#iQJBKjRJJmgbechoc_k6Go4kpf zq`PQz_zW$hL}Rn^GT4lfOrd(Gl2f38Q2o*)o#@ubDGE3F%P$#<LmDqLv(j<+QKPW2 zvdW3la{bUHj@7GIA)EChJw1blKAjiF@wyCm#3b2E#=>c`Qdz2e^pjH@(=dQ!GA(He z+JBX4(EkPfzpEpvD#7?iZ55jdHWk*KNhWGP%(1Showv47?Hk)PMh4?g%7lVYmte9| zUlp{!LH`r<zrpw;7=L+PM=<{UPmaG|e)Sdf?%f+%{OHqm#9-&7_o5&BQz0hj{jTTa zaNobB`wxZj^?qA+Zs6lOd)MphW!RoIEV2QV8%4=)?_Ffak9RS86=NP{R{|I5G2QZP zX<Nl9$yVY|FF@xW1ql>tlLYd|;E(WY<`Vvlu68_sMjpZX0sf=;ozRnWTXIFhPXc}n zeg`3$|5Oxp>xDuezXMDJMxovQUGh&Y=)^6&Twyrqq{hlF6Qw=MoP7UP{ON`0nsnBf z$;dICbWP@;^hlOI|9ohR{-x-vbe_>++?2GeLi6S8B2-4Mtdfu`#IdbF^3VAd&&6%K zvh;8cy7aVVGzLI067o`BJ`3-UE&sHF&MXH9qr?NYwfz4p_=P!?TY?_^`OIuJex6&> zxu;hr+f@HkP~5dAPgt@N^U)GNpZUMl__sp-sfE=0LMJh1qw~u@1MSOtCh+^haQYWP zR(>h6xH3>A7FjMYujl`<<==vzfCxOCo`>QNTJ=QN&My<E7(c50ty_qxuM-P1my}SC z4X}Xw&gY-cZIHhvROK8PU;o8@OZ)FqSTdK=!)f7L#P9l>aCSSCah0!(NlK>lYTx~a zPy7qN!C|nduxMUwqL-OCADR^J(l}z7hAT-*cHl<`%oL9o7;Nd9TYAngPU;#=L&`*a z<TL@{IXpHAtyu#l6GqBQUcqpkpB^mACXq#q`a?}lYE^`rg<uka5H96YdQ&pq%@LzF zK`Y<^{;iY0ZLvoKg;qz<EMZ#;HdCKcX?WQhm&)^=mQMc)q09{1Qci_Ovki?PR$!(x z(g$1dq184lE0wV((=`d%$jNNgIc<feqPB@`&Mrw~w7P^}4bYCl=Lii2DrNcwS<Aer zF@&cnE3QhRF~ug~Ek1(mSOe;wzZs`5;0lr~ZlkwxCEi|I$!*RGuzNqQ4h^ScJ<kPe zh;Klc+x1n4Q*r&*n{e~+Od5V@fJzJD)fI7!>6(pCR<FU~9r7`^Jchi~bgpEK;hov* zaQneK<Gp#`U_Q^dsxQq)ZyJyK=Vf4aRg|m1yCYn?#*Bi0URH~I8FpyQYHDueN*=eW zr<q2pG_KqVu}@yKbQu<}FTntQ*r0VX8)%3rq!FcZ$!Zi*26YUtE2jaDlT2Up1ErpW zx?#h*P1sc1j7JXaj#n4G&kqk4q9H4T^@7Gpo|BcrRXcUu(k(Z(8d=@BGMc!fnMK%8 zS&4bG{()N_$j3!zoWc(R*7747uK41rDU&T_DZ`BpeNvrNS5I-%;3Oj<^@WDH6c!|- zD03RSSW)%DVTMuqwGvLVhGukNB2`maeqscoB6a<i_8U+NZCj{7W?~*`u}WG-7wL+e zvWH~I)JH@rbqlADIF(3n6r<IEHm(-Iv>1g+i?l`N5+j276eT^8dYb+S1pj0{GoF}6 z+Ybt&X`%R)rOU!aE%7q1^jBJ)LRmL4y$oQ@rniJfhGmcy9<6v3BylR;B^#FCcv2nU zbE;Mil0;hpXEUozLwV7J#x~HX5K)98wirfQnA3x6q|vWOV~TabHK9sjb%z8CinfOo z5C@466i&LWeI~KuM_`p-NW_nAB`FyZuf$!>^WhdR{061%wOys#z*?xk--VEqlZ&eA zjXd)!&6SI2W&5LZ!>s)$uR;6IQj$VQ`RIcFPpU!vkgo9GDvn7;7uNNl|EEkO7n6q7 zafvAyf3dYyJ(6tHs<ADTHyD3XJJh(FFibST_?v2C{SS2{=zoI#C+L5J@kcQJVw*_! zUmJfq^xN%KUCOrWY=o%sv<3qt(;E}WuP6(17xOELescC2X%F5@sbcKqQjs1!Kczh~ zUT>>%2Hd;TAK>@orJF<~QAtiFE>C8>$>%)<@}~q$R=WF=`B(LiFWZ6q1O1aaZU6PJ z7B8K$3+`cY#!q+-r}g4we$f6>8WM=R*`59^_djk@S2MTT+RwE$Hj8VS^##4c{I7a! z^^M>voDkjgwVnx|{h>{;s`0i-TTQrHW}A@EAi*YFb!E7WYl3270sc10Un^HAHp-1s z(<&G~*VNW>g=n6WHD%lurxheBwDN^>xezPOCdD=S<svV_cIDJ;6XnjJ5ZB}qjX2sO zO=TV9wrJrLZkxs}+hR2GXoW_cD>XQ4&lRhjNay5zGsBu07gHMLVO|*pY>PT>KO73N zu5!XXqH}_nhS|_u+z}b?y?~3RFG5Eeu1X5H#wNEIyLRJ>R&L9;X6X{FU%n7wu24=V z{2H!uYDl9&uBr}M+!`(tX~O#4d^|j90p6>q$L0MBu&$~eJ&JR%prRTF_sHkDQxQBq zZ3((|$w&V#?Qq&#b(pcb36GC0LnGnU);Hjs?u9sv7U#O!dgD_<X`q2gwhCHxBm!<@ zn2F|wW}f?1hiHFpnHu5hvPe1#Q@LSlD2nX%`80GiV-2?)tmSH$%HsCuH}n9+yA@!{ z*Q>Z)U@_7vD=;E`5k_^Qac*NBs;eq(MOUh1E8`@$G%V^ux|*U`wVY+uT*ECSvoYnJ z*KpMxf8hB?8QeNg+aQuK$xlWLn+Ozz`pK~z{JN%kr?(s#j#xG_&?%iJ0rWLDv-9Wb zynWp*BaA?M;abtuOv9w=xfwJW9*?se1y}f(u$e|YmAAI1G@aopo;dkw5>D!fj8^ne zhg9yeaPgUWtW7X_35#K(NgPODBzRjPMZ7W+*-9T#E-RAEXV%U*ewB`&OIVu|4{N0u zX;u3oFqD)&A`nQeu5M;o8o!)am)%Nfo4J~;nP;NeiZ4yLt2q=dZ`>q9mtl}TOIG}8 zB8|3H@F+JY2ja6d3>S^IqKf3HJvD&5iaR~ZAZ=Zi58rY+9FmQ=VicW#E1c<7hK7k{ z#spS=iZMVkVySIa3SJ3A^-;#rFQ$EMMmLG8tuB-2WW{N?YUCMwYH!FaVTu+RzC{fk z;RWr#>WyEP)IaH=>7~j`8mV%Ww0LEB(Emw0gZ|%iA{hU$oe##Ju3csuOMQ?F#@}jF z)!nGWqMv<_b)med=L!0sp#KfVAFLX|_$wHH>Rsc%JpNRlwLLq{U~Ici9U-Z+29H;D zfeNuJ3*UN5yDO1iFj~?p4Qq&{H?QSZ0+-LhbkN)&L`gjy46yu3@I*y`Us4I=Z&LU# z=wE$>r_$VZQCsn-EKJ8mP@w-o{ihz7DmcyXltm%*TI;0*+e-TvMYjX5!8IfI!7qPt z0Cdz`a{KG+wa<^wfjCr{ZEvH7JGuQ=IDcNvaB=n`<>yu`Uo@G|Z~qORg5|vS-%Y6M z+5Ww>PJ-$Klw60`8Vu`W=u`a@3_9JFMiYdll)UTD{62mQQ)<E!Ud!a}!te9t;3%Cz z;MK76Djz3d`KT}WZBo=GDm^+>&cb1LX6J02ty(bNJ@~>d`PifQB1}y@>wTPIoS|Tx zo4j+|$yo-=<5r3V_}e6Zl?z3wZR6y$t&CPyXktE-#*M9UDKucLoc<;1Hr60LpA*$I z4``x3u6@^7Uc%t?LesA-QyH-6RGv*4dB~w5DJ?aEDjFoRX-sM4IZvGBMiXh1+NI}m zd%S9Hp-0GJTBu_2sBM!Lrh%ZDMk`xY#wq+Xu99k|;V7hYHF+LS`=zsy8(K(%QXISN z8o`zCtwBe^D$GbnI`{R9reyJ4AQ~?k>(S6ieB^!Yilw;X;2jaKt3_;mC8kxS<Az;| zv8(`-Ky1H0ih*6SFmFB6a;xcDuH?FD%4)n{-Nf^-+H=)=JItfO>+w-L;>LH^V0LW- zGPuq0({om!M|LS*TfPy)O4G23t8UiU)pN_gRMhfJyNZem?6A|$XsjjfZ)jA@%EcGl z#<1T&?!COJ2~nQ0grYobT(JQQQ*yBXo}Ca|v>44rG2Hyt5^g`Z5+`*o;cB2LSCi2! z!_{CTORKOtt1GJ7^~H=yud-ZeW8z+ar8^8jDOa$^YpZBv+=zN^U6`Gd!L1Er_;A9r zSTuTHlyL=SeKWV>qkh=gO;%S~2rP)0_Rdqestg$v=3aMkhUwXrC=Dr0uQ)4lO%$=L zwHC>Ol2W>_<CT*}D1|eD+8eUKCwgR4QhsIRkG2n^L5XC<RG`Kiif%GPj7z6=Ty8ZV zb%zROl&QUtk;;_P%u<F^z}2=WSVjUtZRUxzMuC)*0SdGBijZuZKj9=p&Aey@Sqf=v zU@lt~!o;@Kq7h9xNwl>|1m%oEnrQdvA`h-j7Y#&Wyf931C#ez9ri#OcPq&ELP0Bzk z4&^K_X*AhMUMeS2>!@eEXp#K9w8|rS8qM_DVmZQ68*1c|2(91{43j@|#uZP9j%G$F zEpJ?iNSk38YgVtvh7Fb6qEf~w<!zhG;8r18DVRoMv5cj*>W-!6_!BF{;>k>PK4|}0 zA{4L067+vmY}IGg4=K5|3)B$`C+PoG--Gc_o5nw`xwQ6HZNIgYYJlj1_9tk6gZ_t2 zE8End{|&|;!T2i}fBiScpVk>~$Cqu`kfm2VHST)P(wi3Vx+UJg6ypV|0Q6{%x$NbP z0rtYlK<2S8?C5n6ladRDIRWrv6%gPL<i9QHUlje%{ylC!wgNewcjLr=p#MSr-=5pQ z6bwG?*BET=uiD_&?XOzjt!{s;DgS}?-)5*<+J9kjt~GwY{a2h?0l(YP<fnB+)){fe z%kGxQ)KM4fb`-u@|6?3!6394nSRMWr8Wbz1@K&LQmKSdVKzGT<CcxFdS)b>TMnCNY ze9%;>H(Ba4Ao>ly_+>uQX<NtHOs>F_0*i9#j0MZfI9t)6T*?~YZ;SkG(oeE7d2xQ5 zOQ-a!uWzIgD@S5%yJNYi_*PAujx=p&CxZbe>A52wi<&EDSm@ScY0{Bt&0N4T(>8Cl z=~?Jnxe^`Txf=tXn~PXp7xd}f7uTJ4Iw#Llc$Sm)&5YyoPiJDt9y=nHD{$7<)bpG^ z0;j>MmghpHZdk*K@CJ0r58;zrZpZy=d46K&?pRsdh!+P{Af0H(@6iF*O#TL^4c!sT zcy8a~WeZ72gj@S@;-9}-8kR~j!|2*~2SmE=!t)9%5XxVRSYZK5=hFDqz7WrUydIkt zZp6`<wdgvr9D_?}hzg}~bxJCR6{jPWtGIqXYzM4gu?j0V!9Tk(jVq{{P|7U^Z=X|- zbsMVi&#`@R%Dd&rr!lUHvW_*?WAxEuF{d&G>ppyu28<B8<YZ&;F}nj_O{KMAHI_x& zA!o@dWN=Hs+)tJuI<Jb$x6+Vby$(a0%JCvfv2pndq;}6lXP!M&zGfXl<r{GCF+=gd zr!f?c9fyUVy^kgHXX4{Y@1S=>CI;?)5K=O^%_6rvY|bdflBw^ZXZJGv^w1;l@n;{= zIHUSx>y0RXrwTf6j8+iVO(};JBtqoFwycw>LwgRYh*eQ}mkpEVFf%r3i#}&0QGRE9 zajSfokZ(x5vTdM|L|@TUU);G=T2-Yj>vUIJqBes@9O{laYvZW53Kw2$Lr5dbRpu8N z$e78s3BoUunZ~y1BQN?oUEAq7^OYvXm6R*ul-3v_O$sA2YtMKWum1T`ijii!EiL&Z z8kkp=M`uwPdBQJQvRri+JmGIvn?=2|2~_116191Z*H(fd%2I|q)g5NjyuF=|6(W5O z4_DYxZfg4|9WzcvSnsp~PR>>{F~9LBID$<WhL`DG{nlN`?cd=cZDzExFv)>*7!M3E z8i`AAnM!flndv+maVhp0zAGv#sF!VYY1~$@va*J{m(E3eG(^(~CTYefKk1k4hfg9C zvSs0@d_2OPyu^gak}MS^+{(kJp#Pz~D2t%~rDo_~KPpf#{$L%UEQ0Zu+BUWr)`n0Z z)_154p<h?EmugGYXeuOVe}eYcRKt3ip#PB=tnTm@^uJ!K;banwKZ5aBF#i1aj6c=) zZqIHTHe|V%CXIpAdg<j#{aeeclzZ}`8KY*+g~_j!{#On*x@O3ho$}Bzi~lvK56fZ# z{DJ(b2>*Tk%fR5{e~H1SkGjZF$L%VAp#MSr|G(4z`7OP#;BBjast1yRs}*YhHF?|S z_TSIv)g^=ERj_a4cewnT=<1(;)l0eSf7*^;ulx4O?_H(MeD)9sKOY&^!k;M6)>sy# zNoma@X;MHDT>W5ktwuOQ?9O;^;z02hrioI9DOxMLTy71JH6blXjIhZEwl9ij5JL=( zZUKHzAm1T>(?QCS^WvP`;}kNJH*<AR16L;Haf>@ER0*;TF2afEs<o?W(4hgTpol9; z;;5jpiJSddImEQQgoUF?bDLP#3Mi)0q<%VA2K9LCBK)&`DQcq`=$sKlblK-P>-zQB z$SwRz3JZ}Lu1DqCWjJKP5m>Tp6=u(!hZ3&(8q9P1y7lZzLrDbv+ZUkW!w<0U0R_mV zp=Z*<h3Lj}r&4<lpi!p*KdD`T-)BcLVa_7ta%;L6R~%_ZJ}s9k&zc+1t8Z_l=akZr z6h$#7*@u^`LwxN<M7TPvYhEfMSyA-n7I=f(WufB^DR`@MF;0JOK9HTl?fRmax1kns zohioiw3;|MpO+ayMl}r<+#4=4I~UCrm3VOfE||G!6^f|iH8Q{vPZM?gorzOukgGw5 ztZdBZxkLNpHK1(POj-uNK`195wM$lFLrN-oX|)@-wreOZ!Md78w5QVV+^-}4@%~aA z@xZSTTDKM%%a)+?kpAe@t_$kt&&RmjDY#(C?uay{pdF2Sxw!@S^4({!YC#Y59keIr zt=WLaB{Pvh+!d9ZaMA@AVV}MB#h_l@xcy)QVvSn!r23{JV}X%&)ivpdnlSb5Hmjop zpIH8G!cP%laAQQxm|C4xN~_~cuk}Q#!a8e7@MHjsF)tVRSTbdjfk+2znUTpR6Sb<# z8%t1Ts^9*K3>k@N|1u*^h%5D+(TmSYFGH2!dUs7sx_Gu3G$ff}Ohy!{WD3*7Xee#c z$|4acnq{2hzqS%IbF2Z2b6Z2UYvkFcLn)Uq`H%t4eb7b@2-~(CB&|BrO0Xn8+XazN zsv~|I%#8xYGFJvtcbF#BOyjTcX>UQ*Pi5B(JYk9z8M$nNmDxlh{~fuakPq%GECEtR z=3zRk<9yV5DwPqTnG<QvB8+LxFvd_b#;Hw^+!bXwl$ks*K!!6Br8Ckr;k$J4O4RI8 zhX@O>S$m1L!9{r<oVH<XWIafs)ii9&@CZ*vJW?rxq6$u=1?@k}%$0J`{{{WOwO>{- zgYger8nzc~B!cmuX#_89FzJHvFZ(Eo;ycE_*0ET}#zc}Cf3};(|6}hu0OKl-_IG#c zy;`y*S6S`_+hAj=!GN(1m`-Sc5LzH4lmtRcAcX`%3#JnwbV3h=&@o_)F}U|47s<A4 z_1>ks|NCa|Bw;X^gd}$UTj}oJ+cL8|J3G5?=gq9<aZNf}Juogj|Agn?@cJXX{s^zX zC>OOd{|~Rfh;)w*dS2T-gXTHaOmkh=Pw+k%sRU)x!*(#EE925NZ)%bZW$XO4Oja!T z#S~4pgb^&sc>53IcLWJ_Lzw<Xk04P(3>D_T@c0YMAB_eR$DxP3u>2)G{!R0bW-FWZ zD0^(`BLC@LN(?;|+NOiWX<OLExoMC05?{P=Z^EkAn1dUpmd-D}_~#zbmBc+(#k-kN zWtoo|6c@%X+V7nH+W+D<HNUi>%`43l+&I>mHBx3pM@NgoyBwkuVo+7I8TD-usGs{D zuD|Cor04W;8}N3H5tnn^sMaFb!_97;LFJ`#2kDu}@z<lQPdcW)xDC0PnTSnD#E{;( zNNp}bFK-o^w=P3XMJe*f9fDV0eHoc~Ly#NOjD7YUjV%d1F{iu@FV0_$X}^95N4-*v zQFpJznwSI(O>D=+yaf2_TIhPO4VBS}=$Dy+NLpUC)HkBJxf!Y1bjQawr}rC-Ewx^( zS^OE^|KMF5R5}|`39;x99ms!m&3?3&Rbe0c866$phPys#z&cW=j?_y^WLv0x$cv>l zTVo8h5mD$dGzXQfqAh96|Bp8m<HCWd=pWUFSh_w$Yb~-;Q;kofh$AMV2^nb#h)+&| zFFFRt?mq?{>sKQ{*r+bYps|CHOT}GHT`T(ZOGYEzK30{NV{<9p6V_GZS3f!i38}-; zlDj|Z_c|F{GWJKs+~t_Fq6+C(-;Jk_OvBXpZBzo5&~4%-jGMS0s<*Di;&+}#dnw&6 zHr1FiBa!$&{pbx`dg<Bt&7CuOR#pthm&TYej4l{BW;N<G80}gd#Cs`KEGP5o4PEk- z(oKt`OY)lj6fH|E<&iOvlBCDc_-z-(7_YOh+Nea4lRSOPibx*?6_swu%8I;<m%c?7 zSWbzibf>71%3Nn!35E#|mbY`V$cHo~bMi*YEavw~KA9p;8(4(P4KV4BOqnCRDr2=} zJl$FP<WiB4^{uMO+aEz0OtsTXg-*zdi?JjFd7tg_DH98rEYx_AmWl&X(Sjz=jnXd5 zI#Nn8DT_=;#tc#*DZi9pYN3bqP<B?EX@aS|de|gPtCX&(bYnXdOhz(Y^3fW{Y*IVP z0!qE;R8UN(5>53}@Drc#tL;wVt$f18dI$$yiZ<6apkPg*Yn!s}LQq}eY5CdI(#+<I z)^c>nnvoV^`A<3+{YiV$KS+M-Qrn;wec7jq7q1!Tke=cB&(TW!{dM!7Mvoi28vBlp zj)o*9i5lj=F#m<eAIAd6Nm%}b<!^ZYar1(fJK_1)xFNj$2(Q2XBkNDiLVI%9eJ!%= z0i%nw?qQ<qzVpf!$nG)27RP*8)WV=MKQBUWhN_I7J?)t!^b^FRMYnAVFoQ(}<5fnX z6P~;6`er^W8_X1P2h*89j6Y0&@}#|GO&$sJpNQawPxo;a9)Dr^(_Q|CHuxN;?3(=5 z=Ib}gUjgjKe<3`M|F~-U7v#U;=WHO^ua5=EfBtoUo7HftuFMd+4&hh1?(q&tH+aDa zO>?&C+bLVLMaq3uVbg`6@WRO*{&EA?)y$%qM1IrGw3@6GW;d8DY4vplc;}Q?igkha z${fbOOY|3gU5ALOezT5f;h8ltw8qjV^R9-7NLsMe@qDY+7Bs#6B+h#6Lkv%k#~TmE zV9bn@sjx}m@l#CWc~c1qaVTz$LeCYmv9`1p9aJz)h+Tkp>tZn?Jr31Wq8*;($L5-P zc%$NJ?BqoQJ<CP&{GH9q=b=w}D(3v{N%Txl!{?u^M&^M27(8+Us%k#MdB<jR)5XVg zr{eJ9oLM-uqXuW~GY*yYwD{oJT2+mHY^iE6MOq`<*+_*^Q^|HD#U`S1+h!`w{3zj> zS)+5)aL_<9CC|a~Qz_L!3!TWQ4#dQ#Vnlo#?psoeKW*}(eO)nnX7)r2_uo&QFc4Rd z1y-%Cz$5QB;@X3=P{VVu8k<`YNvo4T@12er{bI1Bsu6LK(MV28LS0i6>PfeV_!x|$ z0&n5QA_S7+(St4%j~JYem>x&MQ(A+z6-&{ux&WzJnW(O;<VHW0b7d76)T0MBZKrF& zUdf27T!Xfk3b0{IIkr|e!AHxmgNLNxfQS|}KYRyP7jDJdn;MZw8!3N#Bn`bvk=?U5 z%1TO*K$DzIwxg=58jVfONK8q^kmOV>T{Ii3H_X7;;X_eYRZfkET*`60axgl#861He zr=~#Rm^0-PnI?kDnhxgW{=1w?n$knO6jGd<(u7JQd-0j+8oka+h!^BLv84tvx6sfk z8KNOg;PTP$&c$-$-p;$Cl1j>+b}58ds*T+iL2Zo0fM2FY0`BKoX$G%r?adYt9_5nY zN+U)~J1K0;%^sC1l2ycFxFZNmn-`K|I<v~$wMpyL2~#y?8}wx|iwYi=ZKumcS$LUS zKIYZGDRKpeC7j-mI0Q$EJk^C(UNQz_W%%Xr%O#^Mw?q-6HFs0m)d%D|(Zj<6!sTNg z)kLZ-R+sUPwo>$o6e5aXSpTujRxjpLo77iQhP8=q%%!{zqjibvL&0ZWv({oBHCJbW z>D;bJp0T!aWdZUB_az2vD!;!u#3v-6p{$M;aI(sx1sh>W^m}yx7b~T@5=B`4t4l~u z^{8`QDcZXJ=%P07MJ($+_KwDm?p=?vzZ_pMfq6n{{1tnt5QF$8JpYRC#DAhxnE%4# zFD!p3N=!n8<xg1thUXufFl}CS&q;3XwD~wZ|C*o(KmUi<U*FaG(-x+C@E18@_Y5|f z2dk!qzaABW&jG>NUV@Di9>4X`gRlFuoVGX)rCScI67;cL`gR5FSJw)9nh%CBen(r8 zBTRqCV~%M=kRVZb5#~QfoACGx%b&3P?V2^TIU_+4nvHDk`7Y-lLY5VPf;LFa0z%hX z+u0wtNEsho^P3R2DbPx|x>-4Hz-sebQ=e_Fs*GyQEaq0rcHq=5-Mch*7skJ<^w-9* z&fwAcG_u5Mp>;$`a$0ahlQb2rzviPZi=g7=_B-#wq|?5Sne*mj+Sm~&^CjV(rHgRn zX(!<OSKovu-<gBF{6U!c+5$8@bR()CzXe6l{s|}7zmBM;Mm)Nt5<l$|g+r2}a9n;5 ztgCFaP5M+?E#+jTsMnDk6^ZuxS|r3qp{QsBN(+}@`J4~ g<baM^qCWRJxB<%LM2 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%0D<uVuB-0Z+Y!z$|M<P%awrj= z4LRNc_x|?+>mZ=OvCIi!*ED%!DN9T&V_@wF;Xlkl{+lnEqGQFNb7MwB(6RhEDAX*M ze*ze;G?HC%HEt++H2OazktDuTMbZ#dmnw|7emGT)u+6+VesJ<zJYFz<%BA^5H0s6a z*+Wt?j8@8yjz@1td_k`p&)Gtq1?7wP&;gYyKv(KG;TR~l>{L~9q#gYW)I@7eVWkaH zh8_#}(vQs(Dt-828eyb^k&vzc^#fLct$cR}%i?aR|8Gknv9!pS+SD$rsn|DH!)aHI zTW3I4i|-l%EsO!);IIk$*GNhypp-_w<vCa(bG29q^5LtFs2e8rTJAPr*-CXlbh{OD zgk1cZFZI=LkL{`Y!FE89$~m()U?@GorKKI`E?HRqDX<XDcNjGPUy$DqQIglWR8^_< zRxUNb2MjC1;;IyjJN?-bs#y|rd6B1WIsX<mM2F5u%=(ztL|&<v3zDx3AX@Lw;{~&0 zYGYp!@9q{6DukPy9ytD2!7;delYgS62+ugSKv?b@il+$b!I`SL?>)y}tv71tMH?6$ zO))9%RLbWwg$8P|t{HFHA(rf@UbT%H{XY|I{lGTa+m+bd|G@hc?UxrQ&W;;M!eb$g zI}L#wOGWF&MM7U@Ljg(U%+V?gkxG@Ue8yOQwCl~xL@C{HdW#$pXF7Kf6dSb`X&P{) z*0teMIs0#bF9~&um?r$qFLUXhd9s|UBy1<Z*E%_|Hd4WY;~=-eo-$~3yWUZ&z)dNE zOV-a#6RUwq0zE=b#c()_vOXlsRlgw_N<XA3|NDF~;_N+35jkX<i@GvVG02z@MM6{* z=1(Dc>HA|7UMVvj@-l*_7et|v;DsG!7?UW%Xb1_km;?ebQD)$m6n+>I|DzQi`aFpW zNDqHh6LbwxA&9<b6eG!)V6$K3#4;Z-TM!Rei0a5f6hMv7dJSw{gfMQaY0tYA<0pyZ z`Qn`{rn39WzY-@{6cg|p>i~oBX})|ukf)Vwj1#n-I-6>bxUkuz1<MMuoW#E35{$Wc zq^BCDD2cQ28)F5W&D%=Bk~Obz2!|RQGxxXUXa7S$vKFHg#b^#G7<HJo)qo`z)sxYv zCSw;NU6V^lRdo{v?!Rx}q&m^%^Ug@97!|}+FD7Z01zmB$n^xBb!akcJl1(}OOVAYw z?#(iAXYzbo1VvVh07o58uLwCi1Qk2EZyVTHFtCC7H4sNq7_h5OFe|)cLcfcyfv%Lt z6_2*DsB*z((Mdf2pT!UC9$a|yvR|7K!91Y>>WUlBN;h^{uIRCiElLFhw!41|Y!atZ zRuF}EEa`VE(5=`~1Ha^`>@j>oVZ7vTE9k#Ok*5s0k!nlDhkv39FGfJZbWLEu37af+ zmLnk5wFa>YZy><jy7cC#cSW0@HQfJlH`C!-ebyVMHr~_l+e?3A4+ime_}3J~N*Z;U zx4wN|vRcF&gYTlM#O81bMqD~-swvolD?AW`=JrE@#w!(G%N_CKd@05{MK1p($%$QP z_i8g*QIW?Rbr}wQ+R<}Yz-0om4scP`NU_5ihornSleS+Hs>}%7n5&@wbjwnZON4cq zxVDt{TY=}%sU^-A3wDM14br+?_>uV93^_;d#_btW7(oo$A4`AH_HUqYI@Q+vx&K!3 z#(asC)oV_P?8tJt|A@6|Yi_+ZPs0y+pTw5B!Z#)2q>2@xxP!G{{(J56!4+Q95(aKu zunJ|CE)MrUyM#rAGyjW~TuxzS9I>0leMIJtsau~KNXGn$fbZk}_Wk;)wtoEq$FZn+ z4AxbR$yhROwX{rQ!tu9#tI`Sn6UJ%6g?q-(u7a{YG3Kt!k%c1YKx~3~{NKfz-U-{4 zz<X-jU3@Jje&RT^7}IZMNuX4X<k1@{6t8<?b6Xtiq{h@D#LQNlA1H%X^Uis4)H|tN zxJ0|4Q@P}5a{cO)3IVCo@c&w;)2SuTX@pHL$}81a$1-)fWR`sLL`bIJjG6KFG2q{A MRh^rq%GQtnA7!k=XaE2J literal 0 HcmV?d00001 From 6fd77cea4adac868c7ccc0f5093362d70a02f76a Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Wed, 8 Feb 2017 19:22:19 +0100 Subject: [PATCH 165/174] :memo: added screenshots --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f8f756448..178bac0ff 100644 --- a/README.md +++ b/README.md @@ -831,6 +831,10 @@ Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I The library is currently used in Apple macOS Sierra and iOS 10. I am not sure what they are using the library for, but I am happy that it runs on so many devices. +<img src="https://raw.githubusercontent.com/nlohmann/json/develop/doc/usages/macos.png" alt="macOS Sierra"> + +<img src="https://raw.githubusercontent.com/nlohmann/json/develop/doc/usages/ios.png" alt="iOS 10" width="375" height="667"> + ## Notes From c485d46ceaf938598773c7c7d325a5522f1302ac Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Wed, 8 Feb 2017 20:00:46 +0100 Subject: [PATCH 166/174] :memo: screenshoots look ugly --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 178bac0ff..f8f756448 100644 --- a/README.md +++ b/README.md @@ -831,10 +831,6 @@ Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I The library is currently used in Apple macOS Sierra and iOS 10. I am not sure what they are using the library for, but I am happy that it runs on so many devices. -<img src="https://raw.githubusercontent.com/nlohmann/json/develop/doc/usages/macos.png" alt="macOS Sierra"> - -<img src="https://raw.githubusercontent.com/nlohmann/json/develop/doc/usages/ios.png" alt="iOS 10" width="375" height="667"> - ## Notes From ed8516dc39bdc6016b204c57baef26ffb629bece Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Thu, 9 Feb 2017 17:38:02 +0100 Subject: [PATCH 167/174] :construction_worker: added Codacy badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f8f756448..9732a0fa1 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json) [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f3732b3327e34358a0e9d1fe9f661f08)](https://www.codacy.com/app/nlohmann/json?utm_source=github.com&utm_medium=referral&utm_content=nlohmann/json&utm_campaign=Badge_Grade) [![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/4NEU6ZZMoM9lpIex) [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) From 9f5dccbab5765638632b5b380fdecd4533dc5c3e Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Sat, 11 Feb 2017 15:55:53 +0100 Subject: [PATCH 168/174] :lipstick: cleanup --- src/json.hpp | 146 ++++++++++++++++++++-------------------------- src/json.hpp.re2c | 146 ++++++++++++++++++++-------------------------- 2 files changed, 128 insertions(+), 164 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 143ae0b8e..2d98db8c5 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -10840,13 +10840,13 @@ basic_json_parser_66: /*! - @brief parse string into a built-in arithmetic type as if - the current locale is POSIX. + @brief parse string into a built-in arithmetic type as if the current + locale is POSIX. - note: in floating-point case strtod may parse - past the token's end - this is not an error. + @note in floating-point case strtod may parse past the token's end - + this is not an error - any leading blanks are not handled. + @note any leading blanks are not handled */ struct strtonum { @@ -10855,36 +10855,37 @@ basic_json_parser_66: : m_start(start), m_end(end) {} - /// return true iff parsed successfully as - /// number of type T. - /// - /// @val shall contain parsed value, or - /// undefined value if could not parse. - template<typename T, - typename = typename std::enable_if< - std::is_arithmetic<T>::value>::type > + /*! + @return true iff parsed successfully as number of type T + + @param[in,out] val shall contain parsed value, or undefined value + if could not parse + */ + template<typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>::type> bool to(T& val) const { return parse(val, std::is_integral<T>()); } - /// return true iff token matches ^[+-]\d+$ - /// - /// this is a helper to determine whether to - /// parse the token into floating-point or - /// integral type. We wouldn't need it if - /// we had separate token types for integral - /// and floating-point cases. + /*! + This is a helper to determine whether to parse the token into + floating-point or integral type. + + @note We wouldn't need it if we had separate token types for + integral and floating-point cases. + + @return true iff token matches `^[+-]\d+$` + */ bool is_integral() const { const char* p = m_start; - if (!p) + if (p == nullptr) { return false; // LCOV_EXCL_LINE } - if (*p == '-' or * p == '+') + if ((*p == '-') or (*p == '+')) { ++p; } @@ -10894,39 +10895,31 @@ basic_json_parser_66: return false; // LCOV_EXCL_LINE } - while (p < m_end and* p >= '0' - and * p <= '9') + while ((p < m_end) and (*p >= '0') and (*p <= '9')) { ++p; } - return p == m_end; + return (p == m_end); } private: const char* const m_start = nullptr; - const char* const m_end = nullptr; + const char* const m_end = nullptr; // overloaded wrappers for strtod/strtof/strtold // that will be called from parse<floating_point_t> - - static void strtof(float& f, - const char* str, - char** endptr) + static void strtof(float& f, const char* str, char** endptr) { f = std::strtof(str, endptr); } - static void strtof(double& f, - const char* str, - char** endptr) + static void strtof(double& f, const char* str, char** endptr) { f = std::strtod(str, endptr); } - static void strtof(long double& f, - const char* str, - char** endptr) + static void strtof(long double& f, const char* str, char** endptr) { f = std::strtold(str, endptr); } @@ -10934,37 +10927,32 @@ basic_json_parser_66: template<typename T> bool parse(T& value, /*is_integral=*/std::false_type) const { - // replace decimal separator with locale-specific - // version, when necessary; data will point to - // either the original string, or buf, or tempstr - // containing the fixed string. + // replace decimal separator with locale-specific version, + // when necessary; data will point to either the original + // string, or buf, or tempstr containing the fixed string. std::string tempstr; std::array<char, 64> buf; const size_t len = static_cast<size_t>(m_end - m_start); - // Since dealing with strtod family of functions, - // we're getting the decimal point char from the - // C locale facilities instead of C++'s numpunct - // facet of the current std::locale; + // since dealing with strtod family of functions, we're + // getting the decimal point char from the C locale facilities + // instead of C++'s numpunct facet of the current std::locale const auto loc = localeconv(); assert(loc != nullptr); - const char decimal_point_char = !loc->decimal_point ? '.' - : loc->decimal_point[0]; + const char decimal_point_char = (loc->decimal_point == nullptr) ? '.' : loc->decimal_point[0]; const char* data = m_start; if (decimal_point_char != '.') { - const size_t ds_pos = static_cast<size_t>( - std::find(m_start, m_end, '.') - m_start ); + const size_t ds_pos = static_cast<size_t>(std::find(m_start, m_end, '.') - m_start); if (ds_pos != len) { - // copy the data into the local buffer or - // tempstr, if buffer is too small; - // replace decimal separator, and update - // data to point to the modified bytes - if (len + 1 < buf.size()) + // copy the data into the local buffer or tempstr, if + // buffer is too small; replace decimal separator, and + // update data to point to the modified bytes + if ((len + 1) < buf.size()) { std::copy(m_start, m_end, buf.data()); buf[len] = 0; @@ -10985,13 +10973,12 @@ basic_json_parser_66: // this calls appropriate overload depending on T strtof(value, data, &endptr); - // note that reading past the end is OK, the data may be, - // for example, "123.", where the parsed token only - // contains "123", but strtod will read the dot as well. - const bool ok = endptr >= data + len - and len > 0; + // note that reading past the end is OK, the data may be, for + // example, "123.", where the parsed token only contains + // "123", but strtod will read the dot as well. + const bool ok = (endptr >= (data + len)) and (len > 0); - if (ok and value == 0.0 and * data == '-') + if (ok and (value == 0.0) and (*data == '-')) { // some implementations forget to negate the zero value = -0.0; @@ -11000,16 +10987,12 @@ basic_json_parser_66: return ok; } - signed long long parse_integral( - char** endptr, - /*is_signed*/std::true_type) const + signed long long parse_integral(char** endptr, /*is_signed*/std::true_type) const { return std::strtoll(m_start, endptr, 10); } - unsigned long long parse_integral( - char** endptr, - /*is_signed*/std::false_type) const + unsigned long long parse_integral(char** endptr, /*is_signed*/std::false_type) const { return std::strtoull(m_start, endptr, 10); } @@ -11018,20 +11001,20 @@ basic_json_parser_66: bool parse(T& value, /*is_integral=*/std::true_type) const { char* endptr = nullptr; - errno = 0; // these are thread-local + errno = 0; // these are thread-local const auto x = parse_integral(&endptr, std::is_signed<T>()); - static_assert(std::is_signed<T>() // called right overload? - == std::is_signed<decltype(x)>(), ""); + // called right overload? + static_assert(std::is_signed<T>() == std::is_signed<decltype(x)>(), ""); value = static_cast<T>(x); - return x == static_cast<decltype(x)>(value) // x fits into destination T - and (x < 0) == (value < 0) // preserved sign - and (x != 0 or is_integral()) // strto[u]ll did nto fail - and errno == 0 // strto[u]ll did not overflow - and m_start < m_end // token was not empty - and endptr == m_end; // parsed entire token exactly + return (x == static_cast<decltype(x)>(value)) // x fits into destination T + and (x < 0) == (value < 0) // preserved sign + and ((x != 0) or is_integral()) // strto[u]ll did nto fail + and (errno == 0) // strto[u]ll did not overflow + and (m_start < m_end) // token was not empty + and (endptr == m_end); // parsed entire token exactly } }; @@ -11061,20 +11044,20 @@ basic_json_parser_66: strtonum num(reinterpret_cast<const char*>(m_start), reinterpret_cast<const char*>(m_cursor)); - const bool is_negative = *m_start == '-'; + const bool is_negative = (*m_start == '-'); result.m_type = value_t::discarded; if (not num.is_integral()) { - ; // will parse as float below + // will parse as float below } else if (is_negative) { number_integer_t val{0}; if (num.to(val)) { - result.m_type = value_t::number_integer; + result.m_type = value_t::number_integer; result.m_value = val; } } @@ -11089,14 +11072,13 @@ basic_json_parser_66: } number_float_t val{0}; - if (result.m_type != value_t::discarded - or !num.to(val)) + if (result.m_type != value_t::discarded or (not num.to(val))) { - return; // already have a value from above - // or couldn't parse as float_t + // already have a value from above or couldn't parse as float_t + return; } - result.m_type = value_t::number_float; + result.m_type = value_t::number_float; result.m_value = val; // replace infinity and NAN by null diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 698fbb3b6..b3f7af8db 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -9990,13 +9990,13 @@ class basic_json /*! - @brief parse string into a built-in arithmetic type as if - the current locale is POSIX. + @brief parse string into a built-in arithmetic type as if the current + locale is POSIX. - note: in floating-point case strtod may parse - past the token's end - this is not an error. + @note in floating-point case strtod may parse past the token's end - + this is not an error - any leading blanks are not handled. + @note any leading blanks are not handled */ struct strtonum { @@ -10005,36 +10005,37 @@ class basic_json : m_start(start), m_end(end) {} - /// return true iff parsed successfully as - /// number of type T. - /// - /// @val shall contain parsed value, or - /// undefined value if could not parse. - template<typename T, - typename = typename std::enable_if< - std::is_arithmetic<T>::value>::type > + /*! + @return true iff parsed successfully as number of type T + + @param[in,out] val shall contain parsed value, or undefined value + if could not parse + */ + template<typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>::type> bool to(T& val) const { return parse(val, std::is_integral<T>()); } - /// return true iff token matches ^[+-]\d+$ - /// - /// this is a helper to determine whether to - /// parse the token into floating-point or - /// integral type. We wouldn't need it if - /// we had separate token types for integral - /// and floating-point cases. + /*! + This is a helper to determine whether to parse the token into + floating-point or integral type. + + @note We wouldn't need it if we had separate token types for + integral and floating-point cases. + + @return true iff token matches `^[+-]\d+$` + */ bool is_integral() const { const char* p = m_start; - if (!p) + if (p == nullptr) { return false; // LCOV_EXCL_LINE } - if (*p == '-' or * p == '+') + if ((*p == '-') or (*p == '+')) { ++p; } @@ -10044,39 +10045,31 @@ class basic_json return false; // LCOV_EXCL_LINE } - while (p < m_end and* p >= '0' - and * p <= '9') + while ((p < m_end) and (*p >= '0') and (*p <= '9')) { ++p; } - return p == m_end; + return (p == m_end); } private: const char* const m_start = nullptr; - const char* const m_end = nullptr; + const char* const m_end = nullptr; // overloaded wrappers for strtod/strtof/strtold // that will be called from parse<floating_point_t> - - static void strtof(float& f, - const char* str, - char** endptr) + static void strtof(float& f, const char* str, char** endptr) { f = std::strtof(str, endptr); } - static void strtof(double& f, - const char* str, - char** endptr) + static void strtof(double& f, const char* str, char** endptr) { f = std::strtod(str, endptr); } - static void strtof(long double& f, - const char* str, - char** endptr) + static void strtof(long double& f, const char* str, char** endptr) { f = std::strtold(str, endptr); } @@ -10084,37 +10077,32 @@ class basic_json template<typename T> bool parse(T& value, /*is_integral=*/std::false_type) const { - // replace decimal separator with locale-specific - // version, when necessary; data will point to - // either the original string, or buf, or tempstr - // containing the fixed string. + // replace decimal separator with locale-specific version, + // when necessary; data will point to either the original + // string, or buf, or tempstr containing the fixed string. std::string tempstr; std::array<char, 64> buf; const size_t len = static_cast<size_t>(m_end - m_start); - // Since dealing with strtod family of functions, - // we're getting the decimal point char from the - // C locale facilities instead of C++'s numpunct - // facet of the current std::locale; + // since dealing with strtod family of functions, we're + // getting the decimal point char from the C locale facilities + // instead of C++'s numpunct facet of the current std::locale const auto loc = localeconv(); assert(loc != nullptr); - const char decimal_point_char = !loc->decimal_point ? '.' - : loc->decimal_point[0]; + const char decimal_point_char = (loc->decimal_point == nullptr) ? '.' : loc->decimal_point[0]; const char* data = m_start; if (decimal_point_char != '.') { - const size_t ds_pos = static_cast<size_t>( - std::find(m_start, m_end, '.') - m_start ); + const size_t ds_pos = static_cast<size_t>(std::find(m_start, m_end, '.') - m_start); if (ds_pos != len) { - // copy the data into the local buffer or - // tempstr, if buffer is too small; - // replace decimal separator, and update - // data to point to the modified bytes - if (len + 1 < buf.size()) + // copy the data into the local buffer or tempstr, if + // buffer is too small; replace decimal separator, and + // update data to point to the modified bytes + if ((len + 1) < buf.size()) { std::copy(m_start, m_end, buf.data()); buf[len] = 0; @@ -10135,13 +10123,12 @@ class basic_json // this calls appropriate overload depending on T strtof(value, data, &endptr); - // note that reading past the end is OK, the data may be, - // for example, "123.", where the parsed token only - // contains "123", but strtod will read the dot as well. - const bool ok = endptr >= data + len - and len > 0; + // note that reading past the end is OK, the data may be, for + // example, "123.", where the parsed token only contains + // "123", but strtod will read the dot as well. + const bool ok = (endptr >= (data + len)) and (len > 0); - if (ok and value == 0.0 and * data == '-') + if (ok and (value == 0.0) and (*data == '-')) { // some implementations forget to negate the zero value = -0.0; @@ -10150,16 +10137,12 @@ class basic_json return ok; } - signed long long parse_integral( - char** endptr, - /*is_signed*/std::true_type) const + signed long long parse_integral(char** endptr, /*is_signed*/std::true_type) const { return std::strtoll(m_start, endptr, 10); } - unsigned long long parse_integral( - char** endptr, - /*is_signed*/std::false_type) const + unsigned long long parse_integral(char** endptr, /*is_signed*/std::false_type) const { return std::strtoull(m_start, endptr, 10); } @@ -10168,20 +10151,20 @@ class basic_json bool parse(T& value, /*is_integral=*/std::true_type) const { char* endptr = nullptr; - errno = 0; // these are thread-local + errno = 0; // these are thread-local const auto x = parse_integral(&endptr, std::is_signed<T>()); - static_assert(std::is_signed<T>() // called right overload? - == std::is_signed<decltype(x)>(), ""); + // called right overload? + static_assert(std::is_signed<T>() == std::is_signed<decltype(x)>(), ""); value = static_cast<T>(x); - return x == static_cast<decltype(x)>(value) // x fits into destination T - and (x < 0) == (value < 0) // preserved sign - and (x != 0 or is_integral()) // strto[u]ll did nto fail - and errno == 0 // strto[u]ll did not overflow - and m_start < m_end // token was not empty - and endptr == m_end; // parsed entire token exactly + return (x == static_cast<decltype(x)>(value)) // x fits into destination T + and (x < 0) == (value < 0) // preserved sign + and ((x != 0) or is_integral()) // strto[u]ll did nto fail + and (errno == 0) // strto[u]ll did not overflow + and (m_start < m_end) // token was not empty + and (endptr == m_end); // parsed entire token exactly } }; @@ -10211,20 +10194,20 @@ class basic_json strtonum num(reinterpret_cast<const char*>(m_start), reinterpret_cast<const char*>(m_cursor)); - const bool is_negative = *m_start == '-'; + const bool is_negative = (*m_start == '-'); result.m_type = value_t::discarded; if (not num.is_integral()) { - ; // will parse as float below + // will parse as float below } else if (is_negative) { number_integer_t val{0}; if (num.to(val)) { - result.m_type = value_t::number_integer; + result.m_type = value_t::number_integer; result.m_value = val; } } @@ -10239,14 +10222,13 @@ class basic_json } number_float_t val{0}; - if (result.m_type != value_t::discarded - or !num.to(val)) + if (result.m_type != value_t::discarded or (not num.to(val))) { - return; // already have a value from above - // or couldn't parse as float_t + // already have a value from above or couldn't parse as float_t + return; } - result.m_type = value_t::number_float; + result.m_type = value_t::number_float; result.m_value = val; // replace infinity and NAN by null From c2d55109c1f6b5b39902f52291dee28263b90fa1 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Sat, 11 Feb 2017 16:54:25 +0100 Subject: [PATCH 169/174] :hammer: make lexer distinguishes number types --- src/json.hpp | 318 ++++++++++++++++++++-------------- src/json.hpp.re2c | 136 +++++++-------- test/src/unit-class_lexer.cpp | 36 ++-- 3 files changed, 275 insertions(+), 215 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2d98db8c5..b8cdc480f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9444,7 +9444,9 @@ class basic_json literal_false, ///< the `false` literal literal_null, ///< the `null` literal value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value + value_unsigned_integer, ///< an unsigned integer -- use get_number() for actual value + value_signed_integer, ///< a signed integer -- use get_number() for actual value + value_float, ///< an floating point number -- use get_number() for actual value begin_array, ///< the character for array begin `[` begin_object, ///< the character for object begin `{` end_array, ///< the character for array end `]` @@ -9596,7 +9598,9 @@ class basic_json return "null literal"; case token_type::value_string: return "string literal"; - case token_type::value_number: + case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_signed_integer: + case lexer::token_type::value_float: return "number literal"; case token_type::begin_array: return "'['"; @@ -9869,11 +9873,11 @@ basic_json_parser_12: } if (yych <= '0') { - goto basic_json_parser_13; + goto basic_json_parser_43; } if (yych <= '9') { - goto basic_json_parser_15; + goto basic_json_parser_45; } goto basic_json_parser_5; basic_json_parser_13: @@ -9883,23 +9887,23 @@ basic_json_parser_13: { if (yych == '.') { - goto basic_json_parser_43; + goto basic_json_parser_47; } } else { if (yych <= 'E') { - goto basic_json_parser_44; + goto basic_json_parser_48; } if (yych == 'e') { - goto basic_json_parser_44; + goto basic_json_parser_48; } } basic_json_parser_14: { - last_token_type = token_type::value_number; + last_token_type = token_type::value_unsigned_integer; break; } basic_json_parser_15: @@ -9918,7 +9922,7 @@ basic_json_parser_15: { if (yych == '.') { - goto basic_json_parser_43; + goto basic_json_parser_47; } goto basic_json_parser_14; } @@ -9926,11 +9930,11 @@ basic_json_parser_15: { if (yych <= 'E') { - goto basic_json_parser_44; + goto basic_json_parser_48; } if (yych == 'e') { - goto basic_json_parser_44; + goto basic_json_parser_48; } goto basic_json_parser_14; } @@ -9957,7 +9961,7 @@ basic_json_parser_23: yych = *(m_marker = ++m_cursor); if (yych == 'a') { - goto basic_json_parser_45; + goto basic_json_parser_49; } goto basic_json_parser_5; basic_json_parser_24: @@ -9965,7 +9969,7 @@ basic_json_parser_24: yych = *(m_marker = ++m_cursor); if (yych == 'u') { - goto basic_json_parser_46; + goto basic_json_parser_50; } goto basic_json_parser_5; basic_json_parser_25: @@ -9973,7 +9977,7 @@ basic_json_parser_25: yych = *(m_marker = ++m_cursor); if (yych == 'r') { - goto basic_json_parser_47; + goto basic_json_parser_51; } goto basic_json_parser_5; basic_json_parser_26: @@ -10055,13 +10059,27 @@ basic_json_parser_31: } basic_json_parser_32: m_cursor = m_marker; - if (yyaccept == 0) + if (yyaccept <= 1) { - goto basic_json_parser_5; + if (yyaccept == 0) + { + goto basic_json_parser_5; + } + else + { + goto basic_json_parser_14; + } } else { - goto basic_json_parser_14; + if (yyaccept == 2) + { + goto basic_json_parser_44; + } + else + { + goto basic_json_parser_55; + } } basic_json_parser_33: ++m_cursor; @@ -10142,7 +10160,7 @@ basic_json_parser_35: } if (yych <= 'u') { - goto basic_json_parser_48; + goto basic_json_parser_52; } goto basic_json_parser_32; } @@ -10261,6 +10279,71 @@ basic_json_parser_42: } goto basic_json_parser_32; basic_json_parser_43: + yyaccept = 2; + yych = *(m_marker = ++m_cursor); + if (yych <= 'D') + { + if (yych == '.') + { + goto basic_json_parser_47; + } + } + else + { + if (yych <= 'E') + { + goto basic_json_parser_48; + } + if (yych == 'e') + { + goto basic_json_parser_48; + } + } +basic_json_parser_44: + { + last_token_type = token_type::value_signed_integer; + break; + } +basic_json_parser_45: + yyaccept = 2; + m_marker = ++m_cursor; + if ((m_limit - m_cursor) < 3) + { + fill_line_buffer(3); // LCOV_EXCL_LINE + } + yych = *m_cursor; + if (yych <= '9') + { + if (yych == '.') + { + goto basic_json_parser_47; + } + if (yych <= '/') + { + goto basic_json_parser_44; + } + goto basic_json_parser_45; + } + else + { + if (yych <= 'E') + { + if (yych <= 'D') + { + goto basic_json_parser_44; + } + goto basic_json_parser_48; + } + else + { + if (yych == 'e') + { + goto basic_json_parser_48; + } + goto basic_json_parser_44; + } + } +basic_json_parser_47: yych = *++m_cursor; if (yych <= '/') { @@ -10268,16 +10351,16 @@ basic_json_parser_43: } if (yych <= '9') { - goto basic_json_parser_49; + goto basic_json_parser_53; } goto basic_json_parser_32; -basic_json_parser_44: +basic_json_parser_48: yych = *++m_cursor; if (yych <= ',') { if (yych == '+') { - goto basic_json_parser_51; + goto basic_json_parser_56; } goto basic_json_parser_32; } @@ -10285,7 +10368,7 @@ basic_json_parser_44: { if (yych <= '-') { - goto basic_json_parser_51; + goto basic_json_parser_56; } if (yych <= '/') { @@ -10293,32 +10376,32 @@ basic_json_parser_44: } if (yych <= '9') { - goto basic_json_parser_52; + goto basic_json_parser_57; } goto basic_json_parser_32; } -basic_json_parser_45: +basic_json_parser_49: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_54; + goto basic_json_parser_59; } goto basic_json_parser_32; -basic_json_parser_46: +basic_json_parser_50: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_55; + goto basic_json_parser_60; } goto basic_json_parser_32; -basic_json_parser_47: +basic_json_parser_51: yych = *++m_cursor; if (yych == 'u') { - goto basic_json_parser_56; + goto basic_json_parser_61; } goto basic_json_parser_32; -basic_json_parser_48: +basic_json_parser_52: ++m_cursor; if (m_limit <= m_cursor) { @@ -10333,7 +10416,7 @@ basic_json_parser_48: } if (yych <= '9') { - goto basic_json_parser_57; + goto basic_json_parser_62; } goto basic_json_parser_32; } @@ -10341,7 +10424,7 @@ basic_json_parser_48: { if (yych <= 'F') { - goto basic_json_parser_57; + goto basic_json_parser_62; } if (yych <= '`') { @@ -10349,12 +10432,12 @@ basic_json_parser_48: } if (yych <= 'f') { - goto basic_json_parser_57; + goto basic_json_parser_62; } goto basic_json_parser_32; } -basic_json_parser_49: - yyaccept = 1; +basic_json_parser_53: + yyaccept = 3; m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) { @@ -10365,27 +10448,30 @@ basic_json_parser_49: { if (yych <= '/') { - goto basic_json_parser_14; + goto basic_json_parser_55; } if (yych <= '9') { - goto basic_json_parser_49; + goto basic_json_parser_53; } - goto basic_json_parser_14; } else { if (yych <= 'E') { - goto basic_json_parser_44; + goto basic_json_parser_48; } if (yych == 'e') { - goto basic_json_parser_44; + goto basic_json_parser_48; } - goto basic_json_parser_14; } -basic_json_parser_51: +basic_json_parser_55: + { + last_token_type = token_type::value_float; + break; + } +basic_json_parser_56: yych = *++m_cursor; if (yych <= '/') { @@ -10395,7 +10481,7 @@ basic_json_parser_51: { goto basic_json_parser_32; } -basic_json_parser_52: +basic_json_parser_57: ++m_cursor; if (m_limit <= m_cursor) { @@ -10404,35 +10490,35 @@ basic_json_parser_52: yych = *m_cursor; if (yych <= '/') { - goto basic_json_parser_14; + goto basic_json_parser_55; } if (yych <= '9') { - goto basic_json_parser_52; + goto basic_json_parser_57; } - goto basic_json_parser_14; -basic_json_parser_54: + goto basic_json_parser_55; +basic_json_parser_59: yych = *++m_cursor; if (yych == 's') { - goto basic_json_parser_58; + goto basic_json_parser_63; } goto basic_json_parser_32; -basic_json_parser_55: +basic_json_parser_60: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_59; + goto basic_json_parser_64; } goto basic_json_parser_32; -basic_json_parser_56: +basic_json_parser_61: yych = *++m_cursor; if (yych == 'e') { - goto basic_json_parser_61; + goto basic_json_parser_66; } goto basic_json_parser_32; -basic_json_parser_57: +basic_json_parser_62: ++m_cursor; if (m_limit <= m_cursor) { @@ -10447,7 +10533,7 @@ basic_json_parser_57: } if (yych <= '9') { - goto basic_json_parser_63; + goto basic_json_parser_68; } goto basic_json_parser_32; } @@ -10455,7 +10541,7 @@ basic_json_parser_57: { if (yych <= 'F') { - goto basic_json_parser_63; + goto basic_json_parser_68; } if (yych <= '`') { @@ -10463,30 +10549,30 @@ basic_json_parser_57: } if (yych <= 'f') { - goto basic_json_parser_63; + goto basic_json_parser_68; } goto basic_json_parser_32; } -basic_json_parser_58: +basic_json_parser_63: yych = *++m_cursor; if (yych == 'e') { - goto basic_json_parser_64; + goto basic_json_parser_69; } goto basic_json_parser_32; -basic_json_parser_59: +basic_json_parser_64: ++m_cursor; { last_token_type = token_type::literal_null; break; } -basic_json_parser_61: +basic_json_parser_66: ++m_cursor; { last_token_type = token_type::literal_true; break; } -basic_json_parser_63: +basic_json_parser_68: ++m_cursor; if (m_limit <= m_cursor) { @@ -10501,7 +10587,7 @@ basic_json_parser_63: } if (yych <= '9') { - goto basic_json_parser_66; + goto basic_json_parser_71; } goto basic_json_parser_32; } @@ -10509,7 +10595,7 @@ basic_json_parser_63: { if (yych <= 'F') { - goto basic_json_parser_66; + goto basic_json_parser_71; } if (yych <= '`') { @@ -10517,17 +10603,17 @@ basic_json_parser_63: } if (yych <= 'f') { - goto basic_json_parser_66; + goto basic_json_parser_71; } goto basic_json_parser_32; } -basic_json_parser_64: +basic_json_parser_69: ++m_cursor; { last_token_type = token_type::literal_false; break; } -basic_json_parser_66: +basic_json_parser_71: ++m_cursor; if (m_limit <= m_cursor) { @@ -10867,42 +10953,6 @@ basic_json_parser_66: return parse(val, std::is_integral<T>()); } - /*! - This is a helper to determine whether to parse the token into - floating-point or integral type. - - @note We wouldn't need it if we had separate token types for - integral and floating-point cases. - - @return true iff token matches `^[+-]\d+$` - */ - bool is_integral() const - { - const char* p = m_start; - - if (p == nullptr) - { - return false; // LCOV_EXCL_LINE - } - - if ((*p == '-') or (*p == '+')) - { - ++p; - } - - if (p == m_end) - { - return false; // LCOV_EXCL_LINE - } - - while ((p < m_end) and (*p >= '0') and (*p <= '9')) - { - ++p; - } - - return (p == m_end); - } - private: const char* const m_start = nullptr; const char* const m_end = nullptr; @@ -11011,7 +11061,7 @@ basic_json_parser_66: return (x == static_cast<decltype(x)>(value)) // x fits into destination T and (x < 0) == (value < 0) // preserved sign - and ((x != 0) or is_integral()) // strto[u]ll did nto fail + //and ((x != 0) or is_integral()) // strto[u]ll did nto fail and (errno == 0) // strto[u]ll did not overflow and (m_start < m_end) // token was not empty and (endptr == m_end); // parsed entire token exactly @@ -11035,46 +11085,56 @@ basic_json_parser_66: interpreted as a number @param[out] result @ref basic_json object to receive the number. + @param[in] token the type of the number token */ - void get_number(basic_json& result) const + void get_number(basic_json& result, const token_type token) const { assert(m_start != nullptr); assert(m_start < m_cursor); + assert((token == token_type::value_unsigned_integer) or + (token == token_type::value_signed_integer) or + (token == token_type::value_float)); strtonum num(reinterpret_cast<const char*>(m_start), reinterpret_cast<const char*>(m_cursor)); - const bool is_negative = (*m_start == '-'); - - result.m_type = value_t::discarded; - - if (not num.is_integral()) + switch (token) { - // will parse as float below - } - else if (is_negative) - { - number_integer_t val{0}; - if (num.to(val)) + case lexer::token_type::value_unsigned_integer: { - result.m_type = value_t::number_integer; - result.m_value = val; + number_unsigned_t val{0}; + if (num.to(val)) + { + result.m_type = value_t::number_unsigned; + result.m_value = val; + return; + } + break; } - } - else - { - number_unsigned_t val{0}; - if (num.to(val)) + + case lexer::token_type::value_signed_integer: { - result.m_type = value_t::number_unsigned; - result.m_value = val; + number_integer_t val{0}; + if (num.to(val)) + { + result.m_type = value_t::number_integer; + result.m_value = val; + return; + } + break; + } + + default: + { + break; } } number_float_t val{0}; - if (result.m_type != value_t::discarded or (not num.to(val))) + if (not num.to(val)) { - // already have a value from above or couldn't parse as float_t + // couldn't parse as float_t + result.m_type = value_t::discarded; return; } @@ -11330,9 +11390,11 @@ basic_json_parser_66: break; } - case lexer::token_type::value_number: + case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_signed_integer: + case lexer::token_type::value_float: { - m_lexer.get_number(result); + m_lexer.get_number(result, last_token); get_token(); break; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b3f7af8db..51760eef4 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -9444,7 +9444,9 @@ class basic_json literal_false, ///< the `false` literal literal_null, ///< the `null` literal value_string, ///< a string -- use get_string() for actual value - value_number, ///< a number -- use get_number() for actual value + value_unsigned_integer, ///< an unsigned integer -- use get_number() for actual value + value_signed_integer, ///< a signed integer -- use get_number() for actual value + value_float, ///< an floating point number -- use get_number() for actual value begin_array, ///< the character for array begin `[` begin_object, ///< the character for object begin `{` end_array, ///< the character for array end `]` @@ -9596,7 +9598,9 @@ class basic_json return "null literal"; case token_type::value_string: return "string literal"; - case token_type::value_number: + case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_signed_integer: + case lexer::token_type::value_float: return "number literal"; case token_type::begin_array: return "'['"; @@ -9684,18 +9688,22 @@ class basic_json "false" { last_token_type = token_type::literal_false; break; } // number - decimal_point = "."; - digit = [0-9]; - digit_1_9 = [1-9]; - e = "e" | "E"; - minus = "-"; - plus = "+"; - zero = "0"; - exp = e (minus | plus)? digit+; - frac = decimal_point digit+; - int = (zero | digit_1_9 digit*); - number = minus? int frac? exp?; - number { last_token_type = token_type::value_number; break; } + decimal_point = "."; + digit = [0-9]; + digit_1_9 = [1-9]; + e = "e" | "E"; + minus = "-"; + plus = "+"; + zero = "0"; + exp = e (minus | plus)? digit+; + frac = decimal_point digit+; + int = (zero | digit_1_9 digit*); + number_unsigned = int; + number_unsigned { last_token_type = token_type::value_unsigned_integer; break; } + number_signed = minus int; + number_signed { last_token_type = token_type::value_signed_integer; break; } + number_float = minus? int frac? exp?; + number_float { last_token_type = token_type::value_float; break; } // string quotation_mark = "\""; @@ -10017,42 +10025,6 @@ class basic_json return parse(val, std::is_integral<T>()); } - /*! - This is a helper to determine whether to parse the token into - floating-point or integral type. - - @note We wouldn't need it if we had separate token types for - integral and floating-point cases. - - @return true iff token matches `^[+-]\d+$` - */ - bool is_integral() const - { - const char* p = m_start; - - if (p == nullptr) - { - return false; // LCOV_EXCL_LINE - } - - if ((*p == '-') or (*p == '+')) - { - ++p; - } - - if (p == m_end) - { - return false; // LCOV_EXCL_LINE - } - - while ((p < m_end) and (*p >= '0') and (*p <= '9')) - { - ++p; - } - - return (p == m_end); - } - private: const char* const m_start = nullptr; const char* const m_end = nullptr; @@ -10161,7 +10133,7 @@ class basic_json return (x == static_cast<decltype(x)>(value)) // x fits into destination T and (x < 0) == (value < 0) // preserved sign - and ((x != 0) or is_integral()) // strto[u]ll did nto fail + //and ((x != 0) or is_integral()) // strto[u]ll did nto fail and (errno == 0) // strto[u]ll did not overflow and (m_start < m_end) // token was not empty and (endptr == m_end); // parsed entire token exactly @@ -10185,46 +10157,56 @@ class basic_json interpreted as a number @param[out] result @ref basic_json object to receive the number. + @param[in] token the type of the number token */ - void get_number(basic_json& result) const + void get_number(basic_json& result, const token_type token) const { assert(m_start != nullptr); assert(m_start < m_cursor); + assert((token == token_type::value_unsigned_integer) or + (token == token_type::value_signed_integer) or + (token == token_type::value_float)); strtonum num(reinterpret_cast<const char*>(m_start), reinterpret_cast<const char*>(m_cursor)); - const bool is_negative = (*m_start == '-'); - - result.m_type = value_t::discarded; - - if (not num.is_integral()) + switch (token) { - // will parse as float below - } - else if (is_negative) - { - number_integer_t val{0}; - if (num.to(val)) + case lexer::token_type::value_unsigned_integer: { - result.m_type = value_t::number_integer; - result.m_value = val; + number_unsigned_t val{0}; + if (num.to(val)) + { + result.m_type = value_t::number_unsigned; + result.m_value = val; + return; + } + break; } - } - else - { - number_unsigned_t val{0}; - if (num.to(val)) + + case lexer::token_type::value_signed_integer: { - result.m_type = value_t::number_unsigned; - result.m_value = val; + number_integer_t val{0}; + if (num.to(val)) + { + result.m_type = value_t::number_integer; + result.m_value = val; + return; + } + break; + } + + default: + { + break; } } number_float_t val{0}; - if (result.m_type != value_t::discarded or (not num.to(val))) + if (not num.to(val)) { - // already have a value from above or couldn't parse as float_t + // couldn't parse as float_t + result.m_type = value_t::discarded; return; } @@ -10480,9 +10462,11 @@ class basic_json break; } - case lexer::token_type::value_number: + case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_signed_integer: + case lexer::token_type::value_float: { - m_lexer.get_number(result); + m_lexer.get_number(result, last_token); get_token(); break; } diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index ac43de8ad..268f503aa 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -65,25 +65,37 @@ TEST_CASE("lexer class") SECTION("numbers") { CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("0"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("2"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("3"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("4"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("5"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("6"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("7"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("8"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("9"), - 1).scan() == json::lexer::token_type::value_number)); + 1).scan() == json::lexer::token_type::value_unsigned_integer)); + + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("-0"), + 2).scan() == json::lexer::token_type::value_signed_integer)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("-1"), + 2).scan() == json::lexer::token_type::value_signed_integer)); + + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1.1"), + 3).scan() == json::lexer::token_type::value_float)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("-1.1"), + 4).scan() == json::lexer::token_type::value_float)); + CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1E10"), + 4).scan() == json::lexer::token_type::value_float)); } SECTION("whitespace") @@ -109,7 +121,9 @@ TEST_CASE("lexer class") CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_false) == "false literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_null) == "null literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::value_string) == "string literal")); - CHECK((json::lexer::token_type_name(json::lexer::token_type::value_number) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_unsigned_integer) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_signed_integer) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_float) == "number literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_array) == "'['")); CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_object) == "'{'")); CHECK((json::lexer::token_type_name(json::lexer::token_type::end_array) == "']'")); From c8191c81728a389cc8869935575eae9cca8117dd Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Sun, 12 Feb 2017 18:50:17 +0100 Subject: [PATCH 170/174] :hammer: further cleanup --- Makefile | 2 +- src/json.hpp | 42 +++++++++++++++++---------------- src/json.hpp.re2c | 44 ++++++++++++++++++----------------- test/src/unit-class_lexer.cpp | 28 +++++++++++----------- test/src/unit-regression.cpp | 2 +- 5 files changed, 61 insertions(+), 57 deletions(-) diff --git a/Makefile b/Makefile index 56cbdb0c3..8bd7a2dd2 100644 --- a/Makefile +++ b/Makefile @@ -94,7 +94,7 @@ cppcheck: # run clang sanitize (we are overrding the CXXFLAGS provided by travis in order to use gcc's libstdc++) clang_sanitize: clean - CXX=clang++ CXXFLAGS="-g -O2 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer" $(MAKE) + CXX=clang++ CXXFLAGS="-g -O2 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer" $(MAKE) check ########################################################################## diff --git a/src/json.hpp b/src/json.hpp index b8cdc480f..873b8252f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -9444,8 +9444,8 @@ class basic_json literal_false, ///< the `false` literal literal_null, ///< the `null` literal value_string, ///< a string -- use get_string() for actual value - value_unsigned_integer, ///< an unsigned integer -- use get_number() for actual value - value_signed_integer, ///< a signed integer -- use get_number() for actual value + value_unsigned, ///< an unsigned integer -- use get_number() for actual value + value_integer, ///< a signed integer -- use get_number() for actual value value_float, ///< an floating point number -- use get_number() for actual value begin_array, ///< the character for array begin `[` begin_object, ///< the character for object begin `{` @@ -9598,8 +9598,8 @@ class basic_json return "null literal"; case token_type::value_string: return "string literal"; - case lexer::token_type::value_unsigned_integer: - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: case lexer::token_type::value_float: return "number literal"; case token_type::begin_array: @@ -9903,7 +9903,7 @@ basic_json_parser_13: } basic_json_parser_14: { - last_token_type = token_type::value_unsigned_integer; + last_token_type = token_type::value_unsigned; break; } basic_json_parser_15: @@ -10301,7 +10301,7 @@ basic_json_parser_43: } basic_json_parser_44: { - last_token_type = token_type::value_signed_integer; + last_token_type = token_type::value_integer; break; } basic_json_parser_45: @@ -11091,19 +11091,19 @@ basic_json_parser_71: { assert(m_start != nullptr); assert(m_start < m_cursor); - assert((token == token_type::value_unsigned_integer) or - (token == token_type::value_signed_integer) or + assert((token == token_type::value_unsigned) or + (token == token_type::value_integer) or (token == token_type::value_float)); - strtonum num(reinterpret_cast<const char*>(m_start), - reinterpret_cast<const char*>(m_cursor)); + strtonum num_converter(reinterpret_cast<const char*>(m_start), + reinterpret_cast<const char*>(m_cursor)); switch (token) { - case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_unsigned: { - number_unsigned_t val{0}; - if (num.to(val)) + number_unsigned_t val; + if (num_converter.to(val)) { result.m_type = value_t::number_unsigned; result.m_value = val; @@ -11112,10 +11112,10 @@ basic_json_parser_71: break; } - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_integer: { - number_integer_t val{0}; - if (num.to(val)) + number_integer_t val; + if (num_converter.to(val)) { result.m_type = value_t::number_integer; result.m_value = val; @@ -11130,8 +11130,10 @@ basic_json_parser_71: } } - number_float_t val{0}; - if (not num.to(val)) + // parse float (either explicitly or because a previous conversion + // failed) + number_float_t val; + if (not num_converter.to(val)) { // couldn't parse as float_t result.m_type = value_t::discarded; @@ -11390,8 +11392,8 @@ basic_json_parser_71: break; } - case lexer::token_type::value_unsigned_integer: - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: case lexer::token_type::value_float: { m_lexer.get_number(result, last_token); diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 51760eef4..cf6ed432d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -9444,8 +9444,8 @@ class basic_json literal_false, ///< the `false` literal literal_null, ///< the `null` literal value_string, ///< a string -- use get_string() for actual value - value_unsigned_integer, ///< an unsigned integer -- use get_number() for actual value - value_signed_integer, ///< a signed integer -- use get_number() for actual value + value_unsigned, ///< an unsigned integer -- use get_number() for actual value + value_integer, ///< a signed integer -- use get_number() for actual value value_float, ///< an floating point number -- use get_number() for actual value begin_array, ///< the character for array begin `[` begin_object, ///< the character for object begin `{` @@ -9598,8 +9598,8 @@ class basic_json return "null literal"; case token_type::value_string: return "string literal"; - case lexer::token_type::value_unsigned_integer: - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: case lexer::token_type::value_float: return "number literal"; case token_type::begin_array: @@ -9699,9 +9699,9 @@ class basic_json frac = decimal_point digit+; int = (zero | digit_1_9 digit*); number_unsigned = int; - number_unsigned { last_token_type = token_type::value_unsigned_integer; break; } - number_signed = minus int; - number_signed { last_token_type = token_type::value_signed_integer; break; } + number_unsigned { last_token_type = token_type::value_unsigned; break; } + number_integer = minus int; + number_integer { last_token_type = token_type::value_integer; break; } number_float = minus? int frac? exp?; number_float { last_token_type = token_type::value_float; break; } @@ -10163,19 +10163,19 @@ class basic_json { assert(m_start != nullptr); assert(m_start < m_cursor); - assert((token == token_type::value_unsigned_integer) or - (token == token_type::value_signed_integer) or + assert((token == token_type::value_unsigned) or + (token == token_type::value_integer) or (token == token_type::value_float)); - strtonum num(reinterpret_cast<const char*>(m_start), - reinterpret_cast<const char*>(m_cursor)); + strtonum num_converter(reinterpret_cast<const char*>(m_start), + reinterpret_cast<const char*>(m_cursor)); switch (token) { - case lexer::token_type::value_unsigned_integer: + case lexer::token_type::value_unsigned: { - number_unsigned_t val{0}; - if (num.to(val)) + number_unsigned_t val; + if (num_converter.to(val)) { result.m_type = value_t::number_unsigned; result.m_value = val; @@ -10184,10 +10184,10 @@ class basic_json break; } - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_integer: { - number_integer_t val{0}; - if (num.to(val)) + number_integer_t val; + if (num_converter.to(val)) { result.m_type = value_t::number_integer; result.m_value = val; @@ -10202,8 +10202,10 @@ class basic_json } } - number_float_t val{0}; - if (not num.to(val)) + // parse float (either explicitly or because a previous conversion + // failed) + number_float_t val; + if (not num_converter.to(val)) { // couldn't parse as float_t result.m_type = value_t::discarded; @@ -10462,8 +10464,8 @@ class basic_json break; } - case lexer::token_type::value_unsigned_integer: - case lexer::token_type::value_signed_integer: + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: case lexer::token_type::value_float: { m_lexer.get_number(result, last_token); diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 268f503aa..79dbb7664 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -65,30 +65,30 @@ TEST_CASE("lexer class") SECTION("numbers") { CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("0"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("2"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("3"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("4"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("5"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("6"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("7"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("8"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("9"), - 1).scan() == json::lexer::token_type::value_unsigned_integer)); + 1).scan() == json::lexer::token_type::value_unsigned)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("-0"), - 2).scan() == json::lexer::token_type::value_signed_integer)); + 2).scan() == json::lexer::token_type::value_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("-1"), - 2).scan() == json::lexer::token_type::value_signed_integer)); + 2).scan() == json::lexer::token_type::value_integer)); CHECK((json::lexer(reinterpret_cast<const json::lexer::lexer_char_t*>("1.1"), 3).scan() == json::lexer::token_type::value_float)); @@ -121,8 +121,8 @@ TEST_CASE("lexer class") CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_false) == "false literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::literal_null) == "null literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::value_string) == "string literal")); - CHECK((json::lexer::token_type_name(json::lexer::token_type::value_unsigned_integer) == "number literal")); - CHECK((json::lexer::token_type_name(json::lexer::token_type::value_signed_integer) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_unsigned) == "number literal")); + CHECK((json::lexer::token_type_name(json::lexer::token_type::value_integer) == "number literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::value_float) == "number literal")); CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_array) == "'['")); CHECK((json::lexer::token_type_name(json::lexer::token_type::begin_object) == "'{'")); diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 251c4cb82..dcfcf62bd 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -417,7 +417,7 @@ TEST_CASE("regression tests") // disabled, because locale-specific beharivor is not // triggered in AppVeyor for some reason -#if 0 +#ifndef _MSC_VER { // verify that strtod now uses commas as decimal-separator CHECK(std::strtod("3,14", nullptr) == 3.14); From b84705d5577c8e44bbb9e3fde81886ade19fcb81 Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Sun, 12 Feb 2017 20:14:43 +0100 Subject: [PATCH 171/174] :white_check_mark: improved test coverage --- test/src/unit-class_parser.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index 59ea3cefb..caa672a1e 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -101,6 +101,7 @@ TEST_CASE("parser class") CHECK_THROWS_WITH(json::parser("\"\b\"").parse(), "parse error - unexpected '\"'"); // improve code coverage CHECK_THROWS_AS(json::parser("\uFF01").parse(), std::invalid_argument); + CHECK_THROWS_AS(json::parser("[-4:1,]").parse(), std::invalid_argument); // unescaped control characters CHECK_THROWS_AS(json::parser("\"\x00\"").parse(), std::invalid_argument); CHECK_THROWS_AS(json::parser("\"\x01\"").parse(), std::invalid_argument); From 265c5b5207cec0327c9e4844a56bcecaaa1f9a8d Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Mon, 13 Feb 2017 18:51:23 +0100 Subject: [PATCH 172/174] :hammer: more work on the number parser --- src/json.hpp | 60 ++++++++++++++++++++++------------ src/json.hpp.re2c | 60 ++++++++++++++++++++++------------ test/src/unit-class_parser.cpp | 7 +++- 3 files changed, 84 insertions(+), 43 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 873b8252f..bf9386b3f 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -10957,6 +10957,8 @@ basic_json_parser_71: const char* const m_start = nullptr; const char* const m_end = nullptr; + // floating-point conversion + // overloaded wrappers for strtod/strtof/strtold // that will be called from parse<floating_point_t> static void strtof(float& f, const char* str, char** endptr) @@ -10984,6 +10986,9 @@ basic_json_parser_71: std::array<char, 64> buf; const size_t len = static_cast<size_t>(m_end - m_start); + // lexer will reject empty numbers + assert(len > 0); + // since dealing with strtod family of functions, we're // getting the decimal point char from the C locale facilities // instead of C++'s numpunct facet of the current std::locale @@ -11023,10 +11028,9 @@ basic_json_parser_71: // this calls appropriate overload depending on T strtof(value, data, &endptr); - // note that reading past the end is OK, the data may be, for - // example, "123.", where the parsed token only contains - // "123", but strtod will read the dot as well. - const bool ok = (endptr >= (data + len)) and (len > 0); + // parsing was successful iff strtof parsed exactly the number + // of characters determined by the lexer (len) + const bool ok = (endptr == (data + len)); if (ok and (value == 0.0) and (*data == '-')) { @@ -11037,6 +11041,8 @@ basic_json_parser_71: return ok; } + // integral conversion + signed long long parse_integral(char** endptr, /*is_signed*/std::true_type) const { return std::strtoll(m_start, endptr, 10); @@ -11087,7 +11093,7 @@ basic_json_parser_71: @param[out] result @ref basic_json object to receive the number. @param[in] token the type of the number token */ - void get_number(basic_json& result, const token_type token) const + bool get_number(basic_json& result, const token_type token) const { assert(m_start != nullptr); assert(m_start < m_cursor); @@ -11105,9 +11111,10 @@ basic_json_parser_71: number_unsigned_t val; if (num_converter.to(val)) { + // parsing successful result.m_type = value_t::number_unsigned; result.m_value = val; - return; + return true; } break; } @@ -11117,9 +11124,10 @@ basic_json_parser_71: number_integer_t val; if (num_converter.to(val)) { + // parsing successful result.m_type = value_t::number_integer; result.m_value = val; - return; + return true; } break; } @@ -11133,22 +11141,24 @@ basic_json_parser_71: // parse float (either explicitly or because a previous conversion // failed) number_float_t val; - if (not num_converter.to(val)) + if (num_converter.to(val)) { - // couldn't parse as float_t - result.m_type = value_t::discarded; - return; + // parsing successful + result.m_type = value_t::number_float; + result.m_value = val; + + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + result.m_type = value_t::null; + result.m_value = basic_json::json_value(); + } + + return true; } - result.m_type = value_t::number_float; - result.m_value = val; - - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - result.m_type = value_t::null; - result.m_value = basic_json::json_value(); - } + // couldn't parse number in any format + return false; } private: @@ -11396,8 +11406,16 @@ basic_json_parser_71: case lexer::token_type::value_integer: case lexer::token_type::value_float: { - m_lexer.get_number(result, last_token); + const bool ok = m_lexer.get_number(result, last_token); get_token(); + + // if number conversion was unsuccessful, then is is + // because the number was directly followed by an + // unexpected character (e.g. "01" where "1" is unexpected) + if (not ok) + { + unexpect(last_token); + } break; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cf6ed432d..e15f7b1f1 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -10029,6 +10029,8 @@ class basic_json const char* const m_start = nullptr; const char* const m_end = nullptr; + // floating-point conversion + // overloaded wrappers for strtod/strtof/strtold // that will be called from parse<floating_point_t> static void strtof(float& f, const char* str, char** endptr) @@ -10056,6 +10058,9 @@ class basic_json std::array<char, 64> buf; const size_t len = static_cast<size_t>(m_end - m_start); + // lexer will reject empty numbers + assert(len > 0); + // since dealing with strtod family of functions, we're // getting the decimal point char from the C locale facilities // instead of C++'s numpunct facet of the current std::locale @@ -10095,10 +10100,9 @@ class basic_json // this calls appropriate overload depending on T strtof(value, data, &endptr); - // note that reading past the end is OK, the data may be, for - // example, "123.", where the parsed token only contains - // "123", but strtod will read the dot as well. - const bool ok = (endptr >= (data + len)) and (len > 0); + // parsing was successful iff strtof parsed exactly the number + // of characters determined by the lexer (len) + const bool ok = (endptr == (data + len)); if (ok and (value == 0.0) and (*data == '-')) { @@ -10109,6 +10113,8 @@ class basic_json return ok; } + // integral conversion + signed long long parse_integral(char** endptr, /*is_signed*/std::true_type) const { return std::strtoll(m_start, endptr, 10); @@ -10159,7 +10165,7 @@ class basic_json @param[out] result @ref basic_json object to receive the number. @param[in] token the type of the number token */ - void get_number(basic_json& result, const token_type token) const + bool get_number(basic_json& result, const token_type token) const { assert(m_start != nullptr); assert(m_start < m_cursor); @@ -10177,9 +10183,10 @@ class basic_json number_unsigned_t val; if (num_converter.to(val)) { + // parsing successful result.m_type = value_t::number_unsigned; result.m_value = val; - return; + return true; } break; } @@ -10189,9 +10196,10 @@ class basic_json number_integer_t val; if (num_converter.to(val)) { + // parsing successful result.m_type = value_t::number_integer; result.m_value = val; - return; + return true; } break; } @@ -10205,22 +10213,24 @@ class basic_json // parse float (either explicitly or because a previous conversion // failed) number_float_t val; - if (not num_converter.to(val)) + if (num_converter.to(val)) { - // couldn't parse as float_t - result.m_type = value_t::discarded; - return; + // parsing successful + result.m_type = value_t::number_float; + result.m_value = val; + + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + result.m_type = value_t::null; + result.m_value = basic_json::json_value(); + } + + return true; } - result.m_type = value_t::number_float; - result.m_value = val; - - // replace infinity and NAN by null - if (not std::isfinite(result.m_value.number_float)) - { - result.m_type = value_t::null; - result.m_value = basic_json::json_value(); - } + // couldn't parse number in any format + return false; } private: @@ -10468,8 +10478,16 @@ class basic_json case lexer::token_type::value_integer: case lexer::token_type::value_float: { - m_lexer.get_number(result, last_token); + const bool ok = m_lexer.get_number(result, last_token); get_token(); + + // if number conversion was unsuccessful, then is is + // because the number was directly followed by an + // unexpected character (e.g. "01" where "1" is unexpected) + if (not ok) + { + unexpect(last_token); + } break; } diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index caa672a1e..2fb0da2b9 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -270,6 +270,11 @@ TEST_CASE("parser class") } } + SECTION("overflow") + { + CHECK(json::parser("1.18973e+4932").parse() == json()); + } + SECTION("invalid numbers") { CHECK_THROWS_AS(json::parser("01").parse(), std::invalid_argument); @@ -294,7 +299,7 @@ TEST_CASE("parser class") CHECK_THROWS_AS(json::parser("+0").parse(), std::invalid_argument); CHECK_THROWS_WITH(json::parser("01").parse(), - "parse error - unexpected number literal; expected end of input"); + "parse error - unexpected number literal"); CHECK_THROWS_WITH(json::parser("--1").parse(), "parse error - unexpected '-'"); CHECK_THROWS_WITH(json::parser("1.").parse(), "parse error - unexpected '.'; expected end of input"); From c95ff863bfcd08325ad3d8e6023b1264b070fdca Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Mon, 13 Feb 2017 18:55:11 +0100 Subject: [PATCH 173/174] :arrow_up: updated Catch to v1.7.2 --- test/thirdparty/catch/catch.hpp | 22073 +++++++++++++++--------------- 1 file changed, 11069 insertions(+), 11004 deletions(-) diff --git a/test/thirdparty/catch/catch.hpp b/test/thirdparty/catch/catch.hpp index c1ef3ed67..2a09fd193 100644 --- a/test/thirdparty/catch/catch.hpp +++ b/test/thirdparty/catch/catch.hpp @@ -1,11004 +1,11069 @@ -/* - * Catch v1.7.0 - * Generated: 2017-02-01 21:32:13.239291 - * ---------------------------------------------------------- - * 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 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? -// **************** -// 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_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) -# endif - -#endif // __clang__ - -//////////////////////////////////////////////////////////////////////////////// -// 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 - -# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) -# 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 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_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_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_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 <stdexcept> -#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 ); - 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 ); - -#include <ostream> - -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 - -#include <memory> -#include <vector> -#include <stdlib.h> - -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(); \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ - 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, ... ) \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } - - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ - namespace{ \ - struct TestName : ClassName{ \ - void test(); \ - }; \ - Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ - } \ - 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); - -#else - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ - static void TestName(); \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ - 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 ) \ - namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } - - /////////////////////////////////////////////////////////////////////////////// - #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ - namespace{ \ - struct TestCaseName : ClassName{ \ - void test(); \ - }; \ - Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ - } \ - 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); -#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& ); - }; - - struct AssertionInfo - { - AssertionInfo() {} - AssertionInfo( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - std::string const& _capturedExpression, - ResultDisposition::Flags _resultDisposition ); - - std::string macroName; - SourceLineInfo lineInfo; - std::string capturedExpression; - ResultDisposition::Flags resultDisposition; - }; - - 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 { - - namespace Generic { - template<typename ExpressionT> class AllOf; - template<typename ExpressionT> class AnyOf; - template<typename ExpressionT> class Not; - } - - template<typename ExpressionT> - struct Matcher : SharedImpl<IShared> - { - typedef ExpressionT ExpressionType; - - virtual ~Matcher() {} - virtual Ptr<Matcher> clone() const = 0; - virtual bool match( ExpressionT const& expr ) const = 0; - virtual std::string toString() const = 0; - - Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const; - Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const; - Generic::Not<ExpressionT> operator ! () const; - }; - - template<typename DerivedT, typename ExpressionT> - struct MatcherImpl : Matcher<ExpressionT> { - - virtual Ptr<Matcher<ExpressionT> > clone() const { - return Ptr<Matcher<ExpressionT> >( new DerivedT( static_cast<DerivedT const&>( *this ) ) ); - } - }; - - namespace Generic { - template<typename ExpressionT> - class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> { - public: - explicit Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {} - Not( Not const& other ) : m_matcher( other.m_matcher ) {} - - virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE { - return !m_matcher->match( expr ); - } - - virtual std::string toString() const CATCH_OVERRIDE { - return "not " + m_matcher->toString(); - } - private: - Ptr< Matcher<ExpressionT> > m_matcher; - }; - - template<typename ExpressionT> - class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> { - public: - - AllOf() {} - AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} - - AllOf& add( Matcher<ExpressionT> const& matcher ) { - m_matchers.push_back( matcher.clone() ); - return *this; - } - virtual bool match( ExpressionT const& expr ) const - { - for( std::size_t i = 0; i < m_matchers.size(); ++i ) - if( !m_matchers[i]->match( expr ) ) - return false; - return true; - } - virtual std::string toString() const { - std::ostringstream oss; - oss << "( "; - for( std::size_t i = 0; i < m_matchers.size(); ++i ) { - if( i != 0 ) - oss << " and "; - oss << m_matchers[i]->toString(); - } - oss << " )"; - return oss.str(); - } - - AllOf operator && ( Matcher<ExpressionT> const& other ) const { - AllOf allOfExpr( *this ); - allOfExpr.add( other ); - return allOfExpr; - } - - private: - std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; - }; - - template<typename ExpressionT> - class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> { - public: - - AnyOf() {} - AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} - - AnyOf& add( Matcher<ExpressionT> const& matcher ) { - m_matchers.push_back( matcher.clone() ); - return *this; - } - virtual bool match( ExpressionT const& expr ) const - { - for( std::size_t i = 0; i < m_matchers.size(); ++i ) - if( m_matchers[i]->match( expr ) ) - return true; - return false; - } - virtual std::string toString() const { - std::ostringstream oss; - oss << "( "; - for( std::size_t i = 0; i < m_matchers.size(); ++i ) { - if( i != 0 ) - oss << " or "; - oss << m_matchers[i]->toString(); - } - oss << " )"; - return oss.str(); - } - - AnyOf operator || ( Matcher<ExpressionT> const& other ) const { - AnyOf anyOfExpr( *this ); - anyOfExpr.add( other ); - return anyOfExpr; - } - - private: - std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; - }; - - } // namespace Generic - - template<typename ExpressionT> - Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const { - Generic::AllOf<ExpressionT> allOfExpr; - allOfExpr.add( *this ); - allOfExpr.add( other ); - return allOfExpr; - } - - template<typename ExpressionT> - Generic::AnyOf<ExpressionT> Matcher<ExpressionT>::operator || ( Matcher<ExpressionT> const& other ) const { - Generic::AnyOf<ExpressionT> anyOfExpr; - anyOfExpr.add( *this ); - anyOfExpr.add( other ); - return anyOfExpr; - } - - template<typename ExpressionT> - Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const { - return Generic::Not<ExpressionT>( *this ); - } - - namespace StdString { - - inline std::string makeString( std::string const& str ) { return str; } - inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } - - struct CasedString - { - CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) - : m_caseSensitivity( caseSensitivity ), - m_str( adjustString( str ) ) - {} - std::string adjustString( std::string const& str ) const { - return m_caseSensitivity == CaseSensitive::No - ? toLower( str ) - : str; - - } - std::string toStringSuffix() const - { - return m_caseSensitivity == CaseSensitive::No - ? " (case insensitive)" - : std::string(); - } - CaseSensitive::Choice m_caseSensitivity; - std::string m_str; - }; - - struct Equals : MatcherImpl<Equals, std::string> { - Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( str, caseSensitivity ) - {} - Equals( Equals const& other ) : m_data( other.m_data ){} - - virtual ~Equals(); - - virtual bool match( std::string const& expr ) const { - return m_data.m_str == m_data.adjustString( expr );; - } - virtual std::string toString() const { - return "equals: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct Contains : MatcherImpl<Contains, std::string> { - Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - Contains( Contains const& other ) : m_data( other.m_data ){} - - virtual ~Contains(); - - virtual bool match( std::string const& expr ) const { - return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos; - } - virtual std::string toString() const { - return "contains: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct StartsWith : MatcherImpl<StartsWith, std::string> { - StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - - StartsWith( StartsWith const& other ) : m_data( other.m_data ){} - - virtual ~StartsWith(); - - virtual bool match( std::string const& expr ) const { - return startsWith( m_data.adjustString( expr ), m_data.m_str ); - } - virtual std::string toString() const { - return "starts with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - - struct EndsWith : MatcherImpl<EndsWith, std::string> { - EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) - : m_data( substr, caseSensitivity ){} - EndsWith( EndsWith const& other ) : m_data( other.m_data ){} - - virtual ~EndsWith(); - - virtual bool match( std::string const& expr ) const { - return endsWith( m_data.adjustString( expr ), m_data.m_str ); - } - virtual std::string toString() const { - return "ends with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); - } - - CasedString m_data; - }; - } // namespace StdString - } // namespace Impl - - // The following functions create the actual matcher objects. - // This allows the types to be inferred - template<typename ExpressionT> - inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) { - return Impl::Generic::Not<ExpressionT>( m ); - } - - template<typename ExpressionT> - inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2 ) { - return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ); - } - template<typename ExpressionT> - inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2, - Impl::Matcher<ExpressionT> const& m3 ) { - return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); - } - template<typename ExpressionT> - inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2 ) { - return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ); - } - template<typename ExpressionT> - inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, - Impl::Matcher<ExpressionT> const& m2, - Impl::Matcher<ExpressionT> const& m3 ) { - return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); - } - - inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Equals( str, caseSensitivity ); - } - inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity ); - } - inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Contains( substr, caseSensitivity ); - } - inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { - return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity ); - } - inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { - return Impl::StdString::StartsWith( substr ); - } - inline Impl::StdString::StartsWith StartsWith( const char* substr ) { - return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); - } - inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { - return Impl::StdString::EndsWith( substr ); - } - inline Impl::StdString::EndsWith EndsWith( const char* substr ) { - return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); - } - -} // namespace Matchers - -using namespace Matchers; - -} // 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 = "" ); - - 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::Matcher<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 ); - - private: - AssertionInfo m_assertionInfo; - AssertionResultData m_data; - CopyableStream m_stream; - - bool m_shouldDebugBreak; - bool m_shouldThrow; - }; - -} // 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 -#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 const& nsstring ); - std::string toString( NSObject* const& nsObject ); -#endif - -namespace Detail { - - extern const std::string unprintableString; - - 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 ) }; - }; - -#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) {} - - template<typename RhsT> - BinaryExpression<T, Internal::IsEqualTo, RhsT const&> - operator == ( RhsT const& rhs ) const { - return captureExpression<Internal::IsEqualTo>( rhs ); - } - - template<typename RhsT> - BinaryExpression<T, Internal::IsNotEqualTo, RhsT const&> - operator != ( RhsT const& rhs ) const { - return captureExpression<Internal::IsNotEqualTo>( rhs ); - } - - template<typename RhsT> - BinaryExpression<T, Internal::IsLessThan, RhsT const&> - operator < ( RhsT const& rhs ) const { - return captureExpression<Internal::IsLessThan>( rhs ); - } - - template<typename RhsT> - BinaryExpression<T, Internal::IsGreaterThan, RhsT const&> - operator > ( RhsT const& rhs ) const { - return captureExpression<Internal::IsGreaterThan>( rhs ); - } - - template<typename RhsT> - BinaryExpression<T, Internal::IsLessThanOrEqualTo, RhsT const&> - operator <= ( RhsT const& rhs ) const { - return captureExpression<Internal::IsLessThanOrEqualTo>( rhs ); - } - - template<typename RhsT> - BinaryExpression<T, Internal::IsGreaterThanOrEqualTo, RhsT const&> - operator >= ( RhsT const& rhs ) const { - return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs ); - } - - BinaryExpression<T, Internal::IsEqualTo, bool> operator == ( bool rhs ) const { - return captureExpression<Internal::IsEqualTo>( rhs ); - } - - BinaryExpression<T, Internal::IsNotEqualTo, bool> operator != ( bool rhs ) const { - 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_truthy ); - } - -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 ) {} - - 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 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; - }; -} - -/////////////////////////////////////////////////////////////////////////////// -// 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(); - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ - try { \ - CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - ( __catchResult <= expr ).endExpression(); \ - } \ - 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( expr, resultDisposition, macroName ) \ - INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ - if( Catch::getResultCapture().getLastResult()->succeeded() ) - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ - INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ - if( !Catch::getResultCapture().getLastResult()->succeeded() ) - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ - 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( expr, resultDisposition, matcher, macroName ) \ - 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( expr, exceptionType, resultDisposition, macroName ) \ - do { \ - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, 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( messageType, resultDisposition, macroName, ... ) \ - 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( messageType, resultDisposition, macroName, 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( log, macroName ) \ - Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; - -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ - 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; - }; -} - -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 CATCH_PLATFORM_WINDOWS -typedef unsigned long long uint64_t; -#else -#include <stdint.h> -#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_t 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 <iterator> -#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 ) { - std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); - 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 IRegistryHub { - virtual ~IRegistryHub(); - - virtual IReporterRegistry const& getReporterRegistry() const = 0; - virtual ITestCaseRegistry const& getTestCaseRegistry() 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; - }; - - 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_scale( 1.0 ), - m_value( value ) - {} - - Approx( Approx const& other ) - : m_epsilon( other.m_epsilon ), - m_scale( other.m_scale ), - m_value( other.m_value ) - {} - - static Approx custom() { - return Approx( 0 ); - } - - Approx operator()( double value ) { - Approx approx( value ); - approx.epsilon( m_epsilon ); - approx.scale( m_scale ); - return approx; - } - -#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) - 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); - return fabs( lhs_v - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs_v), fabs(rhs.m_value) ) ); - } - - 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; - } -#else - friend bool operator == ( double lhs, Approx const& rhs ) { - // Thanks to Richard Harris for his help refining this formula - return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) ); - } - - 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; - } -#endif - - Approx& epsilon( double newEpsilon ) { - m_epsilon = newEpsilon; - return *this; - } - - Approx& scale( double newScale ) { - m_scale = newScale; - return *this; - } - - std::string toString() const { - std::ostringstream oss; - oss << "Approx( " << Catch::toString( m_value ) << " )"; - return oss.str(); - } - - private: - double m_epsilon; - 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_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 _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; - char storage[sizeof(T)]; - }; - -} // 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 { - - template<typename MatcherT> - struct StringHolder : MatcherImpl<MatcherT, NSString*>{ - StringHolder( NSString* substr ) : m_substr( [substr copy] ){} - StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} - StringHolder() { - arcSafeRelease( m_substr ); - } - - NSString* m_substr; - }; - - struct Equals : StringHolder<Equals> { - Equals( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str isEqualToString:m_substr]; - } - - virtual std::string toString() const { - return "equals string: " + Catch::toString( m_substr ); - } - }; - - struct Contains : StringHolder<Contains> { - Contains( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location != NSNotFound; - } - - virtual std::string toString() const { - return "contains string: " + Catch::toString( m_substr ); - } - }; - - struct StartsWith : StringHolder<StartsWith> { - StartsWith( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location == 0; - } - - virtual std::string toString() const { - return "starts with: " + Catch::toString( m_substr ); - } - }; - struct EndsWith : StringHolder<EndsWith> { - EndsWith( NSString* substr ) : StringHolder( substr ){} - - virtual bool match( ExpressionType const& str ) const { - return (str != nil || m_substr == nil ) && - [str rangeOfString:m_substr].location == [str length] - [m_substr length]; - } - - virtual std::string toString() const { - 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 -// #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 - -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]-i ) + token.substr( m_escapeChars[i]+1-i ); - 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 <iostream> -#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 <iostream> -#include <ctime> - -#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 ), - 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 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; } - - std::string getProcessName() const { return m_data.processName; } - - bool shouldDebugBreak() const { return m_data.shouldDebugBreak; } - - std::vector<std::string> const& getReporterNames() const { return m_data.reporterNames; } - std::vector<std::string> const& getSectionsToRun() const CATCH_OVERRIDE { return m_data.sectionsToRun; } - - int abortAfter() const { return m_data.abortAfter; } - - TestSpec const& testSpec() const { return m_testSpec; } - - bool showHelp() const { return m_data.showHelp; } - bool showInvisibles() const { return m_data.showInvisibles; } - - // IConfig interface - virtual bool allowThrows() const { return !m_data.noThrow; } - virtual std::ostream& stream() const { return m_stream->stream(); } - virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } - virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; } - virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; } - virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; } - virtual RunTests::InWhatOrder runOrder() const { return m_data.runOrder; } - virtual unsigned int rngSeed() const { return m_data.rngSeed; } - virtual UseColour::YesOrNo useColour() const { return m_data.useColour; } - - 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> - -// 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>( ::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( 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[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> - -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( "Argment 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-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> -#include <assert.h> - -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, tagsAttr; - nameAttr.setInitialIndent( 2 ).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( !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 << '"' << std::endl; - else - Catch::cout() << testCaseInfo.name << 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() ) - 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 <map> -#include <string> -#include <assert.h> -#include <vector> -#include <iterator> - -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 - std::copy( filters.begin(), filters.end(), std::back_inserter( m_filters ) ); - } - } - void addNextFilters( std::vector<std::string> const& filters ) { - if( filters.size() > 1 ) - std::copy( filters.begin()+1, filters.end(), std::back_inserter( m_filters ) ); - } - }; - - 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 - -// #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 ) ///////////////////////////////////////// - -#define NOMINMAX -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#undef WIN32_LEAN_AND_MEAN -#undef NOMINMAX - -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; - } - - // 32k seems enough for Catch to handle stack overflow, - // but the value was found experimentally, so there is no strong guarantee - FatalConditionHandler():m_isSet(true), m_guaranteeSize(32 * 1024), m_exceptionHandlerHandle(CATCH_NULL) { - // Register as first handler in current chain - m_exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException); - // Pass in guarantee size to be filled - SetThreadStackGuarantee(&m_guaranteeSize); - } - - void reset() { - if (m_isSet) { - // Unregister handler and restore the old guarantee - RemoveVectoredExceptionHandler(m_exceptionHandlerHandle); - SetThreadStackGuarantee(&m_guaranteeSize); - m_exceptionHandlerHandle = CATCH_NULL; - m_isSet = false; - } - } - - ~FatalConditionHandler() { - reset(); - } - private: - bool m_isSet; - ULONG m_guaranteeSize; - PVOID m_exceptionHandlerHandle; - }; - -} // namespace Catch - -#else // Not Windows - assumed to be POSIX compatible ////////////////////////// - -#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 // 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_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(); - dynamic_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++; - } - - if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) - m_messages.clear(); - - // Reset working state - m_lastAssertionInfo = AssertionInfo( std::string(), 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 handleFatalErrorCondition( std::string const& message ) { - ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); - resultBuilder.setResultType( ResultWas::FatalErrorCondition ); - resultBuilder << message; - resultBuilder.captureExpression(); - - 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; - try { - m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, std::string(), 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(...) { - 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.c_str(), - m_lastAssertionInfo.lineInfo, - m_lastAssertionInfo.capturedExpression.c_str(), - 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; - }; - - 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, - std::string 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 - std::string const branchName; - unsigned int const buildNumber; - - friend std::ostream& operator << ( std::ostream& os, Version const& version ); - - private: - void operator=( Version const& ); - }; - - extern 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; - } - - 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 <iostream> -#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; - }; -} - -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; - } - - 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 ); - } - - private: - TestRegistry m_testCaseRegistry; - ReporterRegistry m_reporterRegistry; - ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; - }; - - // 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 <ostream> - -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 - -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 ) ///////////////////////////////////////// - -// #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 - -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() { - 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( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - std::string const& _capturedExpression, - ResultDisposition::Flags _resultDisposition ) - : macroName( _macroName ), - lineInfo( _lineInfo ), - capturedExpression( _capturedExpression ), - resultDisposition( _resultDisposition ) - {} - - 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.empty(); - } - - bool AssertionResult::hasMessage() const { - return !m_resultData.message.empty(); - } - - std::string AssertionResult::getExpression() const { - if( isFalseTest( m_info.resultDisposition ) ) - return '!' + m_info.capturedExpression; - else - return m_info.capturedExpression; - } - std::string AssertionResult::getExpressionInMacro() const { - if( m_info.macroName.empty() ) - return m_info.capturedExpression; - else - return m_info.macroName + "( " + m_info.capturedExpression + " )"; - } - - 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 - -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 && !isalnum( tag[0] ); - } - inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { - if( isReservedTag( tag ) ) { - { - Colour colourGuard( Colour::Red ); - Catch::cerr() - << "Tag name [" << tag << "] not allowed.\n" - << "Tag names starting with non alpha-numeric characters are reserved\n"; - } - { - Colour colourGuard( Colour::FileName ); - Catch::cerr() << _lineInfo << std::endl; - } - exit(1); - } - } - - 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, - std::string 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; - - if( !version.branchName.empty() ) { - os << '-' << version.branchName - << '.' << version.buildNumber; - } - return os; - } - - Version libraryVersion( 1, 7, 0, "", 0 ); - -} - -// #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() { - 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_t getCurrentTicks() { - static uint64_t hz=0, hzo=0; - if (!hz) { - QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) ); - QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) ); - } - uint64_t t; - QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) ); - return ((t-hzo)*1000000)/hz; - } -#else - uint64_t getCurrentTicks() { - timeval t; - gettimeofday(&t,CATCH_NULL); - return static_cast<uint64_t>( t.tv_sec ) * 1000000ull + static_cast<uint64_t>( 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> - -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; - } - bool contains( std::string const& s, char infix ) { - return s.find(infix) != std::string::npos; - } - char toLowerCh(char c) { - return static_cast<char>( ::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(); - } - - 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 ); - } - } - - // 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 - -#include <iostream> - -#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(){ - 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 - extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA( const char* ); - 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 const& 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 { - - std::string capturedExpressionWithSecondArgument( std::string const& capturedExpression, std::string const& secondArg ) { - return secondArg.empty() || secondArg == "\"\"" - ? capturedExpression - : capturedExpression + ", " + secondArg; - } - ResultBuilder::ResultBuilder( char const* macroName, - SourceLineInfo const& lineInfo, - char const* capturedExpression, - ResultDisposition::Flags resultDisposition, - char const* secondArg ) - : m_assertionInfo( macroName, lineInfo, capturedExpressionWithSecondArgument( capturedExpression, secondArg ), resultDisposition ), - m_shouldDebugBreak( false ), - m_shouldThrow( false ) - {} - - 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::Generic::AllOf<std::string>() ); - else - captureExpectedException( Matchers::Equals( expectedMessage ) ); - } - - void ResultBuilder::captureExpectedException( Matchers::Impl::Matcher<std::string> const& matcher ) { - - assert( !isFalseTest( m_assertionInfo.resultDisposition ) ); - AssertionResultData data = m_data; - data.resultType = ResultWas::Ok; - data.reconstructedExpression = m_assertionInfo.capturedExpression; - - 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( 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 = m_assertionInfo.capturedExpression; - } - -} // end namespace Catch - -// #included from: catch_tag_alias_registry.hpp -#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED - -// #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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - static TagAliasRegistry& get(); - - private: - std::map<std::string, TagAlias> m_registry; - }; - -} // end namespace Catch - -#include <map> -#include <iostream> - -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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { - - if( !startsWith( alias, "[@" ) || !endsWith( alias, ']' ) ) { - std::ostringstream oss; - oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; - throw std::domain_error( oss.str().c_str() ); - } - if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { - std::ostringstream oss; - oss << "error: tag alias, \"" << alias << "\" already registered.\n" - << "\tFirst seen at " << find(alias)->lineInfo << '\n' - << "\tRedefined at " << lineInfo; - throw std::domain_error( oss.str().c_str() ); - } - } - - TagAliasRegistry& TagAliasRegistry::get() { - static TagAliasRegistry instance; - return instance; - - } - - ITagAliasRegistry::~ITagAliasRegistry() {} - ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } - - RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { - try { - TagAliasRegistry::get().add( alias, tag, lineInfo ); - } - catch( std::exception& ex ) { - Colour colourGuard( Colour::Red ); - Catch::cerr() << ex.what() << std::endl; - exit(1); - } - } - -} // end 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> - -namespace Catch { - - 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 ) { - 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 ); } - -#define INTERNAL_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' ) - 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() ) - { - // We encode control characters, which requires - // XML 1.1 - // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 - *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; - } - - XmlWriter( std::ostream& os ) - : m_tagIsOpen( false ), - m_needsNewline( false ), - m_os( &os ) - { - *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; - } - - ~XmlWriter() { - while( !m_tags.empty() ) - endElement(); - } - - XmlWriter& startElement( std::string const& name ) { - ensureTagClosed(); - newlineIfNecessary(); - stream() << 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 ) { - stream() << "/>\n"; - m_tagIsOpen = false; - } - else { - stream() << m_indent << "</" << m_tags.back() << ">\n"; - } - m_tags.pop_back(); - return *this; - } - - XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { - if( !name.empty() && !attribute.empty() ) - stream() << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; - return *this; - } - - XmlWriter& writeAttribute( std::string const& name, bool attribute ) { - stream() << ' ' << 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 ) - stream() << m_indent; - stream() << XmlEncode( text ); - m_needsNewline = true; - } - return *this; - } - - XmlWriter& writeComment( std::string const& text ) { - ensureTagClosed(); - stream() << m_indent << "<!--" << text << "-->"; - m_needsNewline = true; - return *this; - } - - XmlWriter& writeBlankLine() { - ensureTagClosed(); - stream() << '\n'; - return *this; - } - - void setStream( std::ostream& os ) { - m_os = &os; - } - - private: - XmlWriter( XmlWriter const& ); - void operator=( XmlWriter const& ); - - std::ostream& stream() { - return *m_os; - } - - void ensureTagClosed() { - if( m_tagIsOpen ) { - stream() << ">\n"; - m_tagIsOpen = false; - } - } - - void newlineIfNecessary() { - if( m_needsNewline ) { - stream() << '\n'; - m_needsNewline = false; - } - } - - bool m_tagIsOpen; - bool m_needsNewline; - std::vector<std::string> m_tags; - std::string m_indent; - std::ostream* m_os; - }; - -} -// #included from: 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 - - -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"; - } - - 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 ); - 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", testInfo.name ); - - if ( m_config->showDurations() == ShowDurations::Always ) - m_testCaseTimer.start(); - } - - 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 ); - } - } - - virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } - - virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { - const AssertionResult& assertionResult = assertionStats.assertionResult; - - // Print any info messages in <Info> tags. - 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 ) { - 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( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) - return true; - - // Print the expression if there is one. - if( assertionResult.hasExpression() ) { - m_xml.startElement( "Expression" ) - .writeAttribute( "success", assertionResult.succeeded() ) - .writeAttribute( "type", assertionResult.getTestMacroName() ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ); - - m_xml.scopedElement( "Original" ) - .writeText( assertionResult.getExpression() ); - m_xml.scopedElement( "Expanded" ) - .writeText( assertionResult.getExpandedExpression() ); - } - - // And... Print a result applicable to each result type. - switch( assertionResult.getResultType() ) { - case ResultWas::ThrewException: - m_xml.scopedElement( "Exception" ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::FatalErrorCondition: - m_xml.scopedElement( "FatalErrorCondition" ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::Info: - m_xml.scopedElement( "Info" ) - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::Warning: - // Warning will already have been written - break; - case ResultWas::ExplicitFailure: - m_xml.scopedElement( "Failure" ) - .writeText( assertionResult.getMessage() ); - break; - default: - break; - } - - if( assertionResult.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() ); - - 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 CATCH_PLATFORM_WINDOWS - 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 CATCH_PLATFORM_WINDOWS - 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_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 bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { - if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) - 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; - }; - - INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) - -} // end namespace Catch - -// #included from: ../reporters/catch_reporter_console.hpp -#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED - -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 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; - } - - lazyPrint(); - - AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); - 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_headerPrinted ) { - if( m_config->showDurations() == ShowDurations::Always ) - stream << "Completed in " << _sectionStats.durationInSeconds << 's' << std::endl; - m_headerPrinted = false; - } - else { - if( m_config->showDurations() == ShowDurations::Always ) - stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << 's' << std::endl; - } - 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 message"; - 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.front().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 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 passOrFail ) const { - if( !passOrFail.empty() ) { - { - Colour colourGuard( colour ); - stream << ' ' << passOrFail; - } - stream << ':'; - } - } - - void printIssue( std::string 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::StdString::Equals::~Equals() {} - Matchers::Impl::StdString::Contains::~Contains() {} - Matchers::Impl::StdString::StartsWith::~StartsWith() {} - Matchers::Impl::StdString::EndsWith::~EndsWith() {} - - 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__ - -// Standard C/C++ main entry point -int main (int argc, char * argv[]) { - 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 - -#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) -#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) - -#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "CATCH_REQUIRE_THROWS" ) -#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) -#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "CATCH_REQUIRE_THROWS_WITH" ) -#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) - -#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) -#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) -#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) -#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) -#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) - -#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CATCH_CHECK_THROWS" ) -#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) -#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) -#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) - -#define CATCH_CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) -#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) - -#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) -#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) -#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) -#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) -#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) - -#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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) - #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) - #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", 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 - -#define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) -#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) - -#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "REQUIRE_THROWS" ) -#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) -#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "REQUIRE_THROWS_WITH" ) -#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) - -#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) -#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) -#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) -#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) -#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) - -#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CHECK_THROWS" ) -#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) -#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CHECK_THROWS_WITH" ) -#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) - -#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) -#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) - -#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) -#define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) -#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) -#define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) -#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) - -#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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) - #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) - #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", 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; - -#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED - +/* + * Catch v1.7.2 + * Generated: 2017-02-13 15:57:33.350226 + * ---------------------------------------------------------- + * 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 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? +// **************** +// 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_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +# endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// 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 + +# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) +# 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_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 + +#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_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(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ + 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, ... ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + namespace{ \ + struct TestName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ + } \ + 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); + +#else + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ + static void TestName(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ + 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 ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ + namespace{ \ + struct TestCaseName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ + } \ + 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::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); +#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& ); + }; + + struct AssertionInfo + { + AssertionInfo() {} + AssertionInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ); + + std::string macroName; + SourceLineInfo lineInfo; + std::string capturedExpression; + ResultDisposition::Flags resultDisposition; + }; + + 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 { + + namespace Generic { + template<typename ExpressionT> class AllOf; + template<typename ExpressionT> class AnyOf; + template<typename ExpressionT> class Not; + } + + template<typename ExpressionT> + struct Matcher : SharedImpl<IShared> + { + typedef ExpressionT ExpressionType; + + virtual ~Matcher() {} + virtual Ptr<Matcher> clone() const = 0; + virtual bool match( ExpressionT const& expr ) const = 0; + virtual std::string toString() const = 0; + + Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const; + Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const; + Generic::Not<ExpressionT> operator ! () const; + }; + + template<typename DerivedT, typename ExpressionT> + struct MatcherImpl : Matcher<ExpressionT> { + + virtual Ptr<Matcher<ExpressionT> > clone() const { + return Ptr<Matcher<ExpressionT> >( new DerivedT( static_cast<DerivedT const&>( *this ) ) ); + } + }; + + namespace Generic { + template<typename ExpressionT> + class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> { + public: + explicit Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {} + Not( Not const& other ) : m_matcher( other.m_matcher ) {} + + virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE { + return !m_matcher->match( expr ); + } + + virtual std::string toString() const CATCH_OVERRIDE { + return "not " + m_matcher->toString(); + } + private: + Ptr< Matcher<ExpressionT> > m_matcher; + }; + + template<typename ExpressionT> + class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> { + public: + + AllOf() {} + AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} + + AllOf& add( Matcher<ExpressionT> const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( !m_matchers[i]->match( expr ) ) + return false; + return true; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " and "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AllOf operator && ( Matcher<ExpressionT> const& other ) const { + AllOf allOfExpr( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + private: + std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; + }; + + template<typename ExpressionT> + class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> { + public: + + AnyOf() {} + AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} + + AnyOf& add( Matcher<ExpressionT> const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( m_matchers[i]->match( expr ) ) + return true; + return false; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " or "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AnyOf operator || ( Matcher<ExpressionT> const& other ) const { + AnyOf anyOfExpr( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + private: + std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; + }; + + } // namespace Generic + + template<typename ExpressionT> + Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const { + Generic::AllOf<ExpressionT> allOfExpr; + allOfExpr.add( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + template<typename ExpressionT> + Generic::AnyOf<ExpressionT> Matcher<ExpressionT>::operator || ( Matcher<ExpressionT> const& other ) const { + Generic::AnyOf<ExpressionT> anyOfExpr; + anyOfExpr.add( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + template<typename ExpressionT> + Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const { + return Generic::Not<ExpressionT>( *this ); + } + + namespace StdString { + + inline std::string makeString( std::string const& str ) { return str; } + inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } + + struct CasedString + { + CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_str( adjustString( str ) ) + {} + std::string adjustString( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No + ? toLower( str ) + : str; + + } + std::string toStringSuffix() const + { + return m_caseSensitivity == CaseSensitive::No + ? " (case insensitive)" + : std::string(); + } + CaseSensitive::Choice m_caseSensitivity; + std::string m_str; + }; + + struct Equals : MatcherImpl<Equals, std::string> { + Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( str, caseSensitivity ) + {} + Equals( Equals const& other ) : m_data( other.m_data ){} + + virtual ~Equals(); + + virtual bool match( std::string const& expr ) const { + return m_data.m_str == m_data.adjustString( expr );; + } + virtual std::string toString() const { + return "equals: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct Contains : MatcherImpl<Contains, std::string> { + Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + Contains( Contains const& other ) : m_data( other.m_data ){} + + virtual ~Contains(); + + virtual bool match( std::string const& expr ) const { + return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos; + } + virtual std::string toString() const { + return "contains: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct StartsWith : MatcherImpl<StartsWith, std::string> { + StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + + StartsWith( StartsWith const& other ) : m_data( other.m_data ){} + + virtual ~StartsWith(); + + virtual bool match( std::string const& expr ) const { + return startsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "starts with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct EndsWith : MatcherImpl<EndsWith, std::string> { + EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + EndsWith( EndsWith const& other ) : m_data( other.m_data ){} + + virtual ~EndsWith(); + + virtual bool match( std::string const& expr ) const { + return endsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "ends with: \"" + m_data.m_str + '"' + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + } // namespace StdString + } // namespace Impl + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + template<typename ExpressionT> + inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) { + return Impl::Generic::Not<ExpressionT>( m ); + } + + template<typename ExpressionT> + inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2 ) { + return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ); + } + template<typename ExpressionT> + inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2, + Impl::Matcher<ExpressionT> const& m3 ) { + return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); + } + template<typename ExpressionT> + inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2 ) { + return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ); + } + template<typename ExpressionT> + inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1, + Impl::Matcher<ExpressionT> const& m2, + Impl::Matcher<ExpressionT> const& m3 ) { + return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 ); + } + + inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( str, caseSensitivity ); + } + inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity ); + } + inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( substr, caseSensitivity ); + } + inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity ); + } + inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { + return Impl::StdString::StartsWith( substr ); + } + inline Impl::StdString::StartsWith StartsWith( const char* substr ) { + return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); + } + inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { + return Impl::StdString::EndsWith( substr ); + } + inline Impl::StdString::EndsWith EndsWith( const char* substr ) { + return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); + } + +} // namespace Matchers + +using namespace Matchers; + +} // 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 = "" ); + + 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::Matcher<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 ); + + private: + AssertionInfo m_assertionInfo; + AssertionResultData m_data; + CopyableStream m_stream; + + bool m_shouldDebugBreak; + bool m_shouldThrow; + }; + +} // 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 +#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 const& nsstring ); + std::string toString( NSObject* const& nsObject ); +#endif + +namespace Detail { + + extern const std::string unprintableString; + + 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 ) }; + }; + +#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) {} + + 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_truthy ); + } + +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 ) {} + + 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 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; + }; +} + +// #included from: catch_type_traits.hpp +#define TWOBLUECUBES_CATCH_TYPE_TRAITS_HPP_INCLUDED + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) +#include <type_traits> +#endif + +namespace Catch { + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) + + template <typename T> + using add_lvalue_reference = std::add_lvalue_reference<T>; + + template <typename T> + using add_const = std::add_const<T>; + +#else + + template <typename T> + struct add_const { + typedef const T type; + }; + + template <typename T> + struct add_lvalue_reference { + typedef T& type; + }; + template <typename T> + struct add_lvalue_reference<T&> { + typedef T& type; + }; + // No && overload, because that is C++11, in which case we have + // proper type_traits implementation from the standard library + +#endif + +} + +/////////////////////////////////////////////////////////////////////////////// +// 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(); + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + ( __catchResult <= expr ).endExpression(); \ + } \ + 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( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( !Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ + 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( expr, resultDisposition, matcher, macroName ) \ + 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( expr, exceptionType, resultDisposition, macroName ) \ + 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( Catch::add_const<Catch::add_lvalue_reference<exceptionType>::type>::type ) { \ + __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( messageType, resultDisposition, macroName, ... ) \ + 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( messageType, resultDisposition, macroName, 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( log, macroName ) \ + Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ + 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 CATCH_PLATFORM_WINDOWS +typedef unsigned long long uint64_t; +#else +#include <stdint.h> +#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_t 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 <iterator> +#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 ) { + std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); + 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 IRegistryHub { + virtual ~IRegistryHub(); + + virtual IReporterRegistry const& getReporterRegistry() const = 0; + virtual ITestCaseRegistry const& getTestCaseRegistry() 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; + }; + + 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_scale( 1.0 ), + m_value( value ) + {} + + Approx( Approx const& other ) + : m_epsilon( other.m_epsilon ), + m_scale( other.m_scale ), + m_value( other.m_value ) + {} + + static Approx custom() { + return Approx( 0 ); + } + + Approx operator()( double value ) { + Approx approx( value ); + approx.epsilon( m_epsilon ); + approx.scale( m_scale ); + return approx; + } + +#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) + 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); + return std::fabs( lhs_v - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs_v), std::fabs(rhs.m_value) ) ); + } + + 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; + } +#else + friend bool operator == ( double lhs, Approx const& rhs ) { + // Thanks to Richard Harris for his help refining this formula + return std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) ); + } + + 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; + } +#endif + + Approx& epsilon( double newEpsilon ) { + m_epsilon = newEpsilon; + return *this; + } + + Approx& scale( double newScale ) { + m_scale = newScale; + return *this; + } + + std::string toString() const { + std::ostringstream oss; + oss << "Approx( " << Catch::toString( m_value ) << " )"; + return oss.str(); + } + + private: + double m_epsilon; + 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_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 _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; + char storage[sizeof(T)]; + }; + +} // 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 { + + template<typename MatcherT> + struct StringHolder : MatcherImpl<MatcherT, NSString*>{ + StringHolder( NSString* substr ) : m_substr( [substr copy] ){} + StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} + StringHolder() { + arcSafeRelease( m_substr ); + } + + NSString* m_substr; + }; + + struct Equals : StringHolder<Equals> { + Equals( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str isEqualToString:m_substr]; + } + + virtual std::string toString() const { + return "equals string: " + Catch::toString( m_substr ); + } + }; + + struct Contains : StringHolder<Contains> { + Contains( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location != NSNotFound; + } + + virtual std::string toString() const { + return "contains string: " + Catch::toString( m_substr ); + } + }; + + struct StartsWith : StringHolder<StartsWith> { + StartsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == 0; + } + + virtual std::string toString() const { + return "starts with: " + Catch::toString( m_substr ); + } + }; + struct EndsWith : StringHolder<EndsWith> { + EndsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == [str length] - [m_substr length]; + } + + virtual std::string toString() const { + 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 +// #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]-i ) + token.substr( m_escapeChars[i]+1-i ); + 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 ), + 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 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; } + + 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> + +// 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>( ::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( 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[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-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, tagsAttr; + nameAttr.setInitialIndent( 2 ).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( !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 << '"' << std::endl; + else + Catch::cout() << testCaseInfo.name << 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() ) + 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 <map> +#include <string> +#include <assert.h> +#include <vector> +#include <iterator> +#include <stdexcept> + +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 + std::copy( filters.begin(), filters.end(), std::back_inserter( m_filters ) ); + } + } + void addNextFilters( std::vector<std::string> const& filters ) { + if( filters.size() > 1 ) + std::copy( filters.begin()+1, filters.end(), std::back_inserter( m_filters ) ); + } + }; + + 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 + +// #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) { + reset(); + 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 ////////////////////////// + +#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 // 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_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++; + } + + if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) + m_messages.clear(); + + // Reset working state + m_lastAssertionInfo = AssertionInfo( std::string(), 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 handleFatalErrorCondition( std::string const& message ) { + ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); + resultBuilder.setResultType( ResultWas::FatalErrorCondition ); + resultBuilder << message; + resultBuilder.captureExpression(); + + 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; + try { + m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, std::string(), 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(...) { + 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.c_str(), + m_lastAssertionInfo.lineInfo, + m_lastAssertionInfo.capturedExpression.c_str(), + 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; + }; + + 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, + std::string 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 + std::string const branchName; + unsigned int const buildNumber; + + friend std::ostream& operator << ( std::ostream& os, Version const& version ); + + private: + void operator=( Version const& ); + }; + + extern 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; + } + + 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; + }; +} + +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; + } + + 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 ); + } + + private: + TestRegistry m_testCaseRegistry; + ReporterRegistry m_reporterRegistry; + ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; + }; + + // 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 + +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() { + 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( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + capturedExpression( _capturedExpression ), + resultDisposition( _resultDisposition ) + {} + + 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.empty(); + } + + bool AssertionResult::hasMessage() const { + return !m_resultData.message.empty(); + } + + std::string AssertionResult::getExpression() const { + if( isFalseTest( m_info.resultDisposition ) ) + return '!' + m_info.capturedExpression; + else + return m_info.capturedExpression; + } + std::string AssertionResult::getExpressionInMacro() const { + if( m_info.macroName.empty() ) + return m_info.capturedExpression; + else + return m_info.macroName + "( " + m_info.capturedExpression + " )"; + } + + 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 ) ) { + { + Colour colourGuard( Colour::Red ); + Catch::cerr() + << "Tag name [" << tag << "] not allowed.\n" + << "Tag names starting with non alpha-numeric characters are reserved\n"; + } + { + Colour colourGuard( Colour::FileName ); + Catch::cerr() << _lineInfo << std::endl; + } + exit(1); + } + } + + 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, + std::string 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; + + if( !version.branchName.empty() ) { + os << '-' << version.branchName + << '.' << version.buildNumber; + } + return os; + } + + Version libraryVersion( 1, 7, 2, "", 0 ); + +} + +// #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() { + 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_t getCurrentTicks() { + static uint64_t hz=0, hzo=0; + if (!hz) { + QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) ); + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) ); + } + uint64_t t; + QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) ); + return ((t-hzo)*1000000)/hz; + } +#else + uint64_t getCurrentTicks() { + timeval t; + gettimeofday(&t,CATCH_NULL); + return static_cast<uint64_t>( t.tv_sec ) * 1000000ull + static_cast<uint64_t>( 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(); + } + + 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 ); + } + } + + // 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(){ + 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 const& 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 { + + std::string capturedExpressionWithSecondArgument( std::string const& capturedExpression, std::string const& secondArg ) { + return secondArg.empty() || secondArg == "\"\"" + ? capturedExpression + : capturedExpression + ", " + secondArg; + } + ResultBuilder::ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg ) + : m_assertionInfo( macroName, lineInfo, capturedExpressionWithSecondArgument( capturedExpression, secondArg ), resultDisposition ), + m_shouldDebugBreak( false ), + m_shouldThrow( false ) + {} + + 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::Generic::AllOf<std::string>() ); + else + captureExpectedException( Matchers::Equals( expectedMessage ) ); + } + + void ResultBuilder::captureExpectedException( Matchers::Impl::Matcher<std::string> const& matcher ) { + + assert( !isFalseTest( m_assertionInfo.resultDisposition ) ); + AssertionResultData data = m_data; + data.resultType = ResultWas::Ok; + data.reconstructedExpression = m_assertionInfo.capturedExpression; + + 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( 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 = m_assertionInfo.capturedExpression; + } + +} // end namespace Catch + +// #included from: catch_tag_alias_registry.hpp +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED + +// #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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + static TagAliasRegistry& get(); + + private: + std::map<std::string, TagAlias> m_registry; + }; + +} // end namespace Catch + +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( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + + if( !startsWith( alias, "[@" ) || !endsWith( alias, ']' ) ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" already registered.\n" + << "\tFirst seen at " << find(alias)->lineInfo << '\n' + << "\tRedefined at " << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + } + + TagAliasRegistry& TagAliasRegistry::get() { + static TagAliasRegistry instance; + return instance; + + } + + ITagAliasRegistry::~ITagAliasRegistry() {} + ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } + + RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + try { + TagAliasRegistry::get().add( alias, tag, lineInfo ); + } + catch( std::exception& ex ) { + Colour colourGuard( Colour::Red ); + Catch::cerr() << ex.what() << std::endl; + exit(1); + } + } + +} // end 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> + +namespace Catch { + + 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 ); } + +#define INTERNAL_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; + }; + +} +// #included from: 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 + + +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(); + } + + 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 ); + + 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 ); + m_xml.ensureTagClosed(); + } + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + const AssertionResult& assertionResult = assertionStats.assertionResult; + + // Print any info messages in <Info> tags. + 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 ) { + 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( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) + return true; + + // Print the expression if there is one. + if( assertionResult.hasExpression() ) { + m_xml.startElement( "Expression" ) + .writeAttribute( "success", assertionResult.succeeded() ) + .writeAttribute( "type", assertionResult.getTestMacroName() ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ); + + m_xml.scopedElement( "Original" ) + .writeText( assertionResult.getExpression() ); + m_xml.scopedElement( "Expanded" ) + .writeText( assertionResult.getExpandedExpression() ); + } + + // And... Print a result applicable to each result type. + switch( assertionResult.getResultType() ) { + case ResultWas::ThrewException: + m_xml.scopedElement( "Exception" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::FatalErrorCondition: + m_xml.scopedElement( "FatalErrorCondition" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Info: + m_xml.scopedElement( "Info" ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Warning: + // Warning will already have been written + break; + case ResultWas::ExplicitFailure: + m_xml.scopedElement( "Failure" ) + .writeText( assertionResult.getMessage() ); + break; + default: + break; + } + + if( assertionResult.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_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 bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) + 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; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_console.hpp +#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED + +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 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; + } + + lazyPrint(); + + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); + 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_headerPrinted ) { + if( m_config->showDurations() == ShowDurations::Always ) + stream << "Completed in " << _sectionStats.durationInSeconds << 's' << std::endl; + m_headerPrinted = false; + } + else { + if( m_config->showDurations() == ShowDurations::Always ) + stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << 's' << std::endl; + } + 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 message"; + 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 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 passOrFail ) const { + if( !passOrFail.empty() ) { + { + Colour colourGuard( colour ); + stream << ' ' << passOrFail; + } + stream << ':'; + } + } + + void printIssue( std::string 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::StdString::Equals::~Equals() {} + Matchers::Impl::StdString::Contains::~Contains() {} + Matchers::Impl::StdString::StartsWith::~StartsWith() {} + Matchers::Impl::StdString::EndsWith::~EndsWith() {} + + 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__ + +// Standard C/C++ main entry point +int main (int argc, char * argv[]) { + 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 + +#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) +#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) + +#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "CATCH_REQUIRE_THROWS" ) +#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) +#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "CATCH_REQUIRE_THROWS_WITH" ) +#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) + +#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) +#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) +#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) +#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) +#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) + +#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CATCH_CHECK_THROWS" ) +#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) +#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) +#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) + +#define CATCH_CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) +#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) + +#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) +#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) +#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) + +#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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) + #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __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::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) + #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", 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 + +#define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) +#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) + +#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "REQUIRE_THROWS" ) +#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) +#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "REQUIRE_THROWS_WITH" ) +#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) + +#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) +#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) +#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) +#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) +#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) + +#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CHECK_THROWS" ) +#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) +#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CHECK_THROWS_WITH" ) +#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) + +#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) +#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) + +#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) +#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) +#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) + +#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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) + #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __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( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) + #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", 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; + +#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + From 82fb6137633e630a7c5ab0de3aebdde831ef61af Mon Sep 17 00:00:00 2001 From: Niels Lohmann <mail@nlohmann.me> Date: Tue, 14 Feb 2017 07:28:30 +0100 Subject: [PATCH 174/174] :memo: update after #302 --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9732a0fa1..ab44c9692 100644 --- a/README.md +++ b/README.md @@ -809,7 +809,7 @@ I deeply appreciate the help of the following people. - [Vladimir Petrigo](https://github.com/vpetrigo) made a SFINAE hack more readable. - [Denis Andrejew](https://github.com/seeekr) fixed a grammar issue in the README file. - [Pierre-Antoine Lacaze](https://github.com/palacaze) found a subtle bug in the `dump()` function. -- [TurpentineDistillery](https://github.com/TurpentineDistillery) pointed to [`std::locale::classic()`](http://en.cppreference.com/w/cpp/locale/locale/classic) to avoid too much locale joggling, found some nice performance improvements in the parser and improved the benchmarking code. +- [TurpentineDistillery](https://github.com/TurpentineDistillery) pointed to [`std::locale::classic()`](http://en.cppreference.com/w/cpp/locale/locale/classic) to avoid too much locale joggling, found some nice performance improvements in the parser, improved the benchmarking code, and realized locale-independent number parsing. - [cgzones](https://github.com/cgzones) had an idea how to fix the Coverity scan. - [Jared Grubb](https://github.com/jaredgrubb) silenced a nasty documentation warning. - [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check. @@ -823,6 +823,7 @@ I deeply appreciate the help of the following people. - [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite. - [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section. - [rswanson-ihi](https://github.com/rswanson-ihi) noted a type in the README. +- Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. @@ -856,7 +857,7 @@ $ make json_unit -Ctest $ ./test/json_unit "*"" =============================================================================== -All tests passed (11202549 assertions in 47 test cases) +All tests passed (11202562 assertions in 47 test cases) ``` Alternatively, you can use [CMake](https://cmake.org) and run