LLVMFuzzerTestOneInput:
   11|  9.77k|{
   12|  9.77k|	std::string s(reinterpret_cast<const char*>(data), size);
   13|  9.77k|	std::istringstream is(s);
   14|       |
   15|  9.77k|    default_json_visitor visitor;
   16|  9.77k|	cbor_options options;
   17|  9.77k|	options.max_nesting_depth(std::numeric_limits<int>::max());
   18|       |
   19|  9.77k|	cbor_stream_reader reader(is, visitor, options);
   20|  9.77k|	std::error_code ec;
   21|  9.77k|	reader.read(ec);
   22|       |
   23|  9.77k|	return 0;
   24|  9.77k|}

_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13from_bytes_beEiPKhm:
  475|   246k|    {
  476|   246k|        static const double radix_log2 = std::log2(next_power_of_two(256));
  477|       |        // Estimate how big the result will be, so we can pre-allocate it.
  478|   246k|        double bits = radix_log2 * n;
  479|   246k|        double big_digits = std::ceil(bits / 64.0);
  480|       |        //std::cout << "ESTIMATED: " << big_digits << "\n";
  481|       |
  482|   246k|        bigint_type v = 0;
  483|   246k|        v.reserve(static_cast<std::size_t>(big_digits));
  484|       |
  485|   246k|        if (n > 0)
  ------------------
  |  Branch (485:13): [True: 158k, False: 88.2k]
  ------------------
  486|   158k|        {
  487|  1.20M|            for (std::size_t i = 0; i < n; i++)
  ------------------
  |  Branch (487:37): [True: 1.05M, False: 158k]
  ------------------
  488|  1.05M|            {
  489|  1.05M|                v = (v * 256) + (uint64_t)(str[i]);
  490|  1.05M|            }
  491|   158k|        }
  492|       |        //std::cout << "ACTUAL: " << v.length() << "\n";
  493|       |
  494|   246k|        if (signum < 0)
  ------------------
  |  Branch (494:13): [True: 0, False: 246k]
  ------------------
  495|      0|        {
  496|      0|            v.common_stor_.is_negative_ = true;
  497|      0|        }
  498|       |
  499|   246k|        return v;
  500|   246k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE17next_power_of_twoEm:
 1591|      1|    static uint64_t next_power_of_two(uint64_t n) {
 1592|      1|        n = n - 1;
 1593|      1|        n |= n >> 1;
 1594|      1|        n |= n >> 2;
 1595|      1|        n |= n >> 4;
 1596|      1|        n |= n >> 8;
 1597|      1|        n |= n >> 16;
 1598|      1|        n |= n >> 32;
 1599|      1|        return n + 1;
 1600|      1|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7reserveEm:
  519|  3.98M|    {
  520|  3.98M|       if (capacity() < n)
  ------------------
  |  Branch (520:12): [True: 51.9k, False: 3.93M]
  ------------------
  521|  51.9k|       {
  522|  51.9k|           if (!is_dynamic())
  ------------------
  |  Branch (522:16): [True: 51.9k, False: 0]
  ------------------
  523|  51.9k|           {
  524|  51.9k|               size_type size = short_stor_.length_;
  525|  51.9k|               size_type is_neg = short_stor_.is_negative_;
  526|  51.9k|               uint64_t values[2] = {short_stor_.values_[0], short_stor_.values_[1]};
  527|       |
  528|  51.9k|               ::new (&dynamic_stor_) dynamic_storage();
  529|  51.9k|               dynamic_stor_.reserve(n, get_allocator());
  530|  51.9k|               dynamic_stor_.length_ = size;
  531|  51.9k|               dynamic_stor_.is_negative_ = is_neg;
  532|  51.9k|               dynamic_stor_.data_[0] = values[0];
  533|  51.9k|               dynamic_stor_.data_[1] = values[1];
  534|  51.9k|           }
  535|      0|           else
  536|      0|           {
  537|      0|               dynamic_stor_.reserve(n, get_allocator());
  538|      0|           }
  539|  51.9k|       }
  540|  3.98M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE8capacityEv:
  348|  3.98M|    {
  349|  3.98M|        return is_dynamic() ? dynamic_stor_.capacity_ : 2;
  ------------------
  |  Branch (349:16): [True: 2.70M, False: 1.27M]
  ------------------
  350|  3.98M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10is_dynamicEv:
  338|  2.67G|    {
  339|  2.67G|        return common_stor_.is_dynamic_;
  340|  2.67G|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2Ev:
  202|  51.9k|        {
  203|  51.9k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7reserveEmRKNS2_ImEE:
  255|  51.9k|        {
  256|  51.9k|            real_allocator_type alloc(a);
  257|       |
  258|  51.9k|            size_type capacity_new = round_up(n);
  259|  51.9k|            uint64_t* data_old = data_;
  260|  51.9k|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_new);
  261|  51.9k|            if (length_ > 0)
  ------------------
  |  Branch (261:17): [True: 0, False: 51.9k]
  ------------------
  262|      0|            {
  263|      0|                std::memcpy( data_, data_old, length_*sizeof(uint64_t));
  264|      0|            }
  265|  51.9k|            if (capacity_ > 0 && data_ != nullptr)
  ------------------
  |  Branch (265:17): [True: 0, False: 51.9k]
  |  Branch (265:34): [True: 0, False: 0]
  ------------------
  266|      0|            {
  267|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_old, capacity_);
  268|      0|            }
  269|  51.9k|            capacity_ = capacity_new;
  270|  51.9k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage8round_upEm:
  274|  2.76M|        {
  275|  2.76M|            return (i/word_length + 1) * word_length;
  276|  2.76M|        }
_ZNK8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEE13get_allocatorEv:
   64|  9.66M|        {
   65|  9.66M|            return alloc_;
   66|  9.66M|        }
_ZN8jsonconsplENS_12basic_bigintINSt3__19allocatorIhEEEEl:
 1156|  1.05M|    {
 1157|  1.05M|        return x += y;
 1158|  1.05M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IlEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|  1.05M|    {
  329|  1.05M|        ::new (&short_stor_) short_storage(n);
  330|  1.05M|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2Ev:
   56|  1.73M|        {
   57|  1.73M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IlEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Esr3std9is_signedIS7_EE5valueEvE4typeE:
  124|  1.05M|        {
  125|  1.05M|            values_[0] = n < 0 ? (uint64_t(0)-static_cast<uint64_t>(n)) : static_cast<uint64_t>(n);
  ------------------
  |  Branch (125:26): [True: 0, False: 1.05M]
  ------------------
  126|  1.05M|            values_[1] = 0;
  127|  1.05M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEpLERKS4_:
  571|  1.05M|    {
  572|  1.05M|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (572:14): [True: 0, False: 1.05M]
  ------------------
  573|      0|            return *this -= -y;
  574|  1.05M|        uint64_t d;
  575|  1.05M|        uint64_t carry = 0;
  576|       |
  577|  1.05M|        resize( (std::max)(y.length(), length()) + 1 );
  578|       |
  579|  2.00M|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (579:31): [True: 2.00M, False: 567]
  ------------------
  580|  2.00M|        {
  581|  2.00M|            if ( i >= y.length() && carry == 0 )
  ------------------
  |  Branch (581:18): [True: 1.05M, False: 944k]
  |  Branch (581:37): [True: 1.05M, False: 567]
  ------------------
  582|  1.05M|                break;
  583|   944k|            d = data()[i] + carry;
  584|   944k|            carry = d < carry;
  585|   944k|            if ( i < y.length() )
  ------------------
  |  Branch (585:18): [True: 944k, False: 567]
  ------------------
  586|   944k|            {
  587|   944k|                data()[i] = d + y.data()[i];
  588|   944k|                if ( data()[i] < d )
  ------------------
  |  Branch (588:22): [True: 1.20k, False: 943k]
  ------------------
  589|  1.20k|                    carry = 1;
  590|   944k|            }
  591|    567|            else
  592|    567|                data()[i] = d;
  593|   944k|        }
  594|  1.05M|        reduce();
  595|  1.05M|        return *this;
  596|  1.05M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11is_negativeEv:
  353|  5.25M|    {
  354|  5.25M|        return common_stor_.is_negative_;
  355|  5.25M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEEngEv:
  550|  7.31k|    {
  551|  7.31k|        basic_bigint<Allocator> v(*this);
  552|  7.31k|        v.common_stor_.is_negative_ = !v.is_negative();
  553|  7.31k|        return v;
  554|  7.31k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmIERKS4_:
  599|  7.31k|    {
  600|  7.31k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (600:14): [True: 7.31k, False: 0]
  ------------------
  601|  7.31k|            return *this += -y;
  602|      0|        if ( (!is_negative() && y > *this) || (is_negative() && y < *this) )
  ------------------
  |  Branch (602:15): [True: 0, False: 0]
  |  Branch (602:33): [True: 0, False: 0]
  |  Branch (602:48): [True: 0, False: 0]
  |  Branch (602:65): [True: 0, False: 0]
  ------------------
  603|      0|            return *this = -(y - *this);
  604|      0|        uint64_t borrow = 0;
  605|      0|        uint64_t d;
  606|      0|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (606:31): [True: 0, False: 0]
  ------------------
  607|      0|        {
  608|      0|            if ( i >= y.length() && borrow == 0 )
  ------------------
  |  Branch (608:18): [True: 0, False: 0]
  |  Branch (608:37): [True: 0, False: 0]
  ------------------
  609|      0|                break;
  610|      0|            d = data()[i] - borrow;
  611|      0|            borrow = d > data()[i];
  612|      0|            if ( i < y.length())
  ------------------
  |  Branch (612:18): [True: 0, False: 0]
  ------------------
  613|      0|            {
  614|      0|                data()[i] = d - y.data()[i];
  615|      0|                if ( data()[i] > d )
  ------------------
  |  Branch (615:22): [True: 0, False: 0]
  ------------------
  616|      0|                    borrow = 1;
  617|      0|            }
  618|      0|            else 
  619|      0|                data()[i] = d;
  620|      0|        }
  621|      0|        reduce();
  622|      0|        return *this;
  623|      0|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE7compareERKS4_:
 1321|   253k|    {
 1322|   253k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (1322:14): [True: 0, False: 253k]
  ------------------
 1323|      0|            return y.is_negative() - is_negative();
 1324|   253k|        int code = 0;
 1325|   253k|        if ( length() == 0 && y.length() == 0 )
  ------------------
  |  Branch (1325:14): [True: 0, False: 253k]
  |  Branch (1325:31): [True: 0, False: 0]
  ------------------
 1326|      0|            code = 0;
 1327|   253k|        else if ( length() < y.length() )
  ------------------
  |  Branch (1327:19): [True: 0, False: 253k]
  ------------------
 1328|      0|            code = -1;
 1329|   253k|        else if ( length() > y.length() )
  ------------------
  |  Branch (1329:19): [True: 108k, False: 144k]
  ------------------
 1330|   108k|            code = +1;
 1331|   144k|        else
 1332|   144k|        {
 1333|   145k|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (1333:42): [True: 144k, False: 290]
  ------------------
 1334|   144k|            {
 1335|   144k|                if (data()[i] > y.data()[i])
  ------------------
  |  Branch (1335:21): [True: 1.80k, False: 142k]
  ------------------
 1336|  1.80k|                {
 1337|  1.80k|                    code = 1;
 1338|  1.80k|                    break;
 1339|  1.80k|                }
 1340|   142k|                else if (data()[i] < y.data()[i])
  ------------------
  |  Branch (1340:26): [True: 142k, False: 290]
  ------------------
 1341|   142k|                {
 1342|   142k|                    code = -1;
 1343|   142k|                    break;
 1344|   142k|                }
 1345|   144k|            }
 1346|   144k|        }
 1347|   253k|        return is_negative() ? -code : code;
  ------------------
  |  Branch (1347:16): [True: 0, False: 253k]
  ------------------
 1348|   253k|    }
_ZN8jsonconsltERKNS_12basic_bigintINSt3__19allocatorIhEEEES6_:
 1111|   253k|    {
 1112|   253k|       return x.compare(y) < 0 ? true : false;
  ------------------
  |  Branch (1112:15): [True: 142k, False: 111k]
  ------------------
 1113|   253k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6resizeEm:
  508|  3.74M|    {
  509|  3.74M|        size_type len_old = common_stor_.length_;
  510|  3.74M|        reserve(n);
  511|  3.74M|        common_stor_.length_ = n;
  512|  3.74M|        if ( common_stor_.length_ > len_old )
  ------------------
  |  Branch (512:14): [True: 2.65M, False: 1.08M]
  ------------------
  513|  2.65M|        {
  514|  2.65M|            memset( data()+len_old, 0, (common_stor_.length_ - len_old)*sizeof(uint64_t) );
  515|  2.65M|        }
  516|  3.74M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6lengthEv:
  343|  24.4M|    {
  344|  24.4M|        return common_stor_.length_;
  345|  24.4M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  368|  2.65G|    {
  369|  2.65G|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (369:16): [True: 2.56G, False: 88.6M]
  ------------------
  370|  2.65G|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  363|  2.80M|    {
  364|  2.80M|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (364:16): [True: 1.02M, False: 1.78M]
  ------------------
  365|  2.80M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6reduceEv:
 1573|  2.54M|    {
 1574|  2.54M|        uint64_t* p = end() - 1;
 1575|  2.54M|        uint64_t* pBegin = begin();
 1576|  90.1M|        while ( p >= pBegin )
  ------------------
  |  Branch (1576:17): [True: 89.9M, False: 198k]
  ------------------
 1577|  89.9M|        {
 1578|  89.9M|            if ( *p )
  ------------------
  |  Branch (1578:18): [True: 2.34M, False: 87.6M]
  ------------------
 1579|  2.34M|            {
 1580|  2.34M|                break;
 1581|  2.34M|            }
 1582|  87.6M|            --common_stor_.length_;
 1583|  87.6M|            --p;
 1584|  87.6M|        }
 1585|  2.54M|        if ( length() == 0 )
  ------------------
  |  Branch (1585:14): [True: 198k, False: 2.34M]
  ------------------
 1586|   198k|        {
 1587|   198k|            common_stor_.is_negative_ = false;
 1588|   198k|        }
 1589|  2.54M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE3endEv:
  504|  2.54M|    uint64_t* end() { return begin() + length(); }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE5beginEv:
  502|  5.08M|    uint64_t* begin() { return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_; }
  ------------------
  |  Branch (502:32): [True: 3.97M, False: 1.11M]
  ------------------
_ZN8jsonconsmlENS_12basic_bigintINSt3__19allocatorIhEEEEl:
 1181|  1.05M|    {
 1182|  1.05M|        return x *= y;
 1183|  1.05M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmLEl:
  626|  1.05M|    {
  627|  1.05M|        *this *= uint64_t(y < 0 ? -y : y);
  ------------------
  |  Branch (627:27): [True: 0, False: 1.05M]
  ------------------
  628|  1.05M|        if ( y < 0 )
  ------------------
  |  Branch (628:14): [True: 0, False: 1.05M]
  ------------------
  629|      0|            common_stor_.is_negative_ = !is_negative();
  630|  1.05M|        return *this;
  631|  1.05M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmLEm:
  634|  1.05M|    {
  635|  1.05M|        size_type len0 = length();
  636|  1.05M|        uint64_t hi;
  637|  1.05M|        uint64_t lo;
  638|  1.05M|        uint64_t dig = data()[0];
  639|  1.05M|        uint64_t carry = 0;
  640|       |
  641|  1.05M|        resize( length() + 1 );
  642|       |
  643|  1.05M|        size_type i = 0;
  644|   667M|        for (i = 0; i < len0; i++ )
  ------------------
  |  Branch (644:21): [True: 666M, False: 1.05M]
  ------------------
  645|   666M|        {
  646|   666M|            DDproduct( dig, y, hi, lo );
  647|   666M|            data()[i] = lo + carry;
  648|   666M|            dig = data()[i+1];
  649|   666M|            carry = hi + (data()[i] < lo);
  650|   666M|        }
  651|  1.05M|        data()[i] = carry;
  652|  1.05M|        reduce();
  653|  1.05M|        return *this;
  654|  1.05M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9DDproductEmmRmS5_:
 1438|   752M|    {
 1439|   752M|        uint64_t hiA = A >> basic_type_halfBits, loA = A & r_mask,
 1440|   752M|                   hiB = B >> basic_type_halfBits, loB = B & r_mask,
 1441|   752M|                   mid1, mid2, old;
 1442|       |
 1443|   752M|        lo = loA * loB;
 1444|   752M|        hi = hiA * hiB;
 1445|   752M|        mid1 = loA * hiB;
 1446|   752M|        mid2 = hiA * loB;
 1447|   752M|        old = lo;
 1448|   752M|        lo += mid1 << basic_type_halfBits;
 1449|   752M|            hi += (lo < old) + (mid1 >> basic_type_halfBits);
 1450|   752M|        old = lo;
 1451|   752M|        lo += mid2 << basic_type_halfBits;
 1452|   752M|            hi += (lo < old) + (mid2 >> basic_type_halfBits);
 1453|   752M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ERKS4_:
  301|  4.13M|    {
  302|  4.13M|        if (!n.is_dynamic())
  ------------------
  |  Branch (302:13): [True: 1.42M, False: 2.71M]
  ------------------
  303|  1.42M|        {
  304|  1.42M|            ::new (&short_stor_) short_storage(n.short_stor_);
  305|  1.42M|        }
  306|  2.71M|        else
  307|  2.71M|        {
  308|  2.71M|            ::new (&dynamic_stor_) dynamic_storage(n.dynamic_stor_, get_allocator());
  309|  2.71M|        }
  310|  4.13M|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2ERKS4_:
   60|  4.13M|        {
   61|  4.13M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ERKS5_:
  177|  1.42M|        {
  178|  1.42M|            values_[0] = stor.values_[0];
  179|  1.42M|            values_[1] = stor.values_[1];
  180|  1.42M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2ERKS5_RKNS2_ImEE:
  211|  2.71M|        {
  212|  2.71M|            create(stor.length_, alloc);
  213|  2.71M|            std::memcpy(data_, stor.data_, stor.length_*sizeof(uint64_t));
  214|  2.71M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage6createEmNS2_ImEE:
  229|  2.71M|        {
  230|  2.71M|            capacity_ = round_up(length);
  231|  2.71M|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_);
  232|  2.71M|            JSONCONS_TRY
  ------------------
  |  |  239|  2.71M|    #define JSONCONS_TRY try
  ------------------
  233|  2.71M|            {
  234|  2.71M|                std::allocator_traits<real_allocator_type>::construct(alloc, extension_traits::to_plain_pointer(data_));
  235|  2.71M|            }
  236|  2.71M|            JSONCONS_CATCH(...)
  237|  2.71M|            {
  238|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_, capacity_);
  239|      0|                JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  240|      0|            }
  241|  2.71M|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE12write_stringIcNS1_11char_traitsIcEENS2_IcEEEEvRNS1_12basic_stringIT_T0_T1_EE:
  981|   177k|    {
  982|   177k|        basic_bigint<Allocator> v(*this);
  983|       |
  984|   177k|        size_t len = (v.length() * basic_type_bits / 3) + 2;
  985|   177k|        data.reserve(len);
  986|       |
  987|   177k|        static uint64_t p10 = 1;
  988|   177k|        static uint64_t ip10 = 0;
  989|       |
  990|   177k|        if ( v.length() == 0 )
  ------------------
  |  Branch (990:14): [True: 38.7k, False: 138k]
  ------------------
  991|  38.7k|        {
  992|  38.7k|            data.push_back('0');
  993|  38.7k|        }
  994|   138k|        else
  995|   138k|        {
  996|   138k|            uint64_t r;
  997|   138k|            if ( p10 == 1 )
  ------------------
  |  Branch (997:18): [True: 1, False: 138k]
  ------------------
  998|      1|            {
  999|     20|                while ( p10 <= (std::numeric_limits<uint64_t>::max)()/10 )
  ------------------
  |  Branch (999:25): [True: 19, False: 1]
  ------------------
 1000|     19|                {
 1001|     19|                    p10 *= 10;
 1002|     19|                    ip10++;
 1003|     19|                }
 1004|      1|            }                     
 1005|       |            // p10 is max unsigned power of 10
 1006|   138k|            basic_bigint<Allocator> R;
 1007|   138k|            basic_bigint<Allocator> LP10 = p10; // LP10 = p10 = ::pow(10, ip10)
 1008|       |
 1009|   138k|            do
 1010|   218k|            {
 1011|   218k|                v.divide( LP10, v, R, true );
 1012|   218k|                r = (R.length() ? R.data()[0] : 0);
  ------------------
  |  Branch (1012:22): [True: 217k, False: 488]
  ------------------
 1013|  1.96M|                for ( size_type j=0; j < ip10; j++ )
  ------------------
  |  Branch (1013:38): [True: 1.88M, False: 79.9k]
  ------------------
 1014|  1.88M|                {
 1015|  1.88M|                    data.push_back(char(r % 10 + '0'));
 1016|  1.88M|                    r /= 10;
 1017|  1.88M|                    if ( r + v.length() == 0 )
  ------------------
  |  Branch (1017:26): [True: 138k, False: 1.75M]
  ------------------
 1018|   138k|                        break;
 1019|  1.88M|                }
 1020|   218k|            } 
 1021|   218k|            while ( v.length() );
  ------------------
  |  Branch (1021:21): [True: 79.9k, False: 138k]
  ------------------
 1022|   138k|            if (is_negative())
  ------------------
  |  Branch (1022:17): [True: 5.54k, False: 132k]
  ------------------
 1023|  5.54k|            {
 1024|  5.54k|                data.push_back('-');
 1025|  5.54k|            }
 1026|   138k|            std::reverse(data.begin(),data.end());
 1027|   138k|        }
 1028|   177k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2Ev:
  288|   142k|    {
  289|   142k|        ::new (&short_stor_) short_storage();
  290|   142k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2Ev:
  113|   142k|        {
  114|   142k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|   289k|    {
  329|   289k|        ::new (&short_stor_) short_storage(n);
  330|   289k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ImEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Entsr3std9is_signedIS7_EE5valueEvE4typeE:
  137|   289k|        {
  138|   289k|            values_[0] = n;
  139|   289k|            values_[1] = 0;
  140|   289k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6divideES4_RS4_S5_b:
 1351|   253k|    {
 1352|   253k|        if ( denom.length() == 0 )
  ------------------
  |  Branch (1352:14): [True: 0, False: 253k]
  ------------------
 1353|      0|        {
 1354|      0|            JSONCONS_THROW(std::runtime_error( "Zero divide." ));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1355|      0|        }
 1356|   253k|        bool quot_neg = is_negative() ^ denom.is_negative();
 1357|   253k|        bool rem_neg = is_negative();
 1358|   253k|        int x = 0;
 1359|   253k|        basic_bigint<Allocator> num = *this;
 1360|   253k|        num.common_stor_.is_negative_ = denom.common_stor_.is_negative_ = false;
 1361|   253k|        if ( num < denom )
  ------------------
  |  Branch (1361:14): [True: 142k, False: 111k]
  ------------------
 1362|   142k|        {
 1363|   142k|            quot = uint64_t(0);
 1364|   142k|            rem = num;
 1365|   142k|            rem.common_stor_.is_negative_ = rem_neg;
 1366|   142k|            return;
 1367|   142k|        }
 1368|   111k|        if ( denom.length() == 1 && num.length() == 1 )
  ------------------
  |  Branch (1368:14): [True: 111k, False: 0]
  |  Branch (1368:37): [True: 2.09k, False: 108k]
  ------------------
 1369|  2.09k|        {
 1370|  2.09k|            quot = uint64_t( num.data()[0]/denom.data()[0] );
 1371|  2.09k|            rem = uint64_t( num.data()[0]%denom.data()[0] );
 1372|  2.09k|            quot.common_stor_.is_negative_ = quot_neg;
 1373|  2.09k|            rem.common_stor_.is_negative_ = rem_neg;
 1374|  2.09k|            return;
 1375|  2.09k|        }
 1376|   108k|        else if (denom.length() == 1 && (denom.data()[0] & l_mask) == 0 )
  ------------------
  |  Branch (1376:18): [True: 108k, False: 0]
  |  Branch (1376:41): [True: 0, False: 108k]
  ------------------
 1377|      0|        {
 1378|       |            // Denominator fits into a half word
 1379|      0|            uint64_t divisor = denom.data()[0], dHi = 0,
 1380|      0|                     q1, r, q2, dividend;
 1381|      0|            quot.resize(length());
 1382|      0|            for (size_type i=length(); i-- > 0; )
  ------------------
  |  Branch (1382:40): [True: 0, False: 0]
  ------------------
 1383|      0|            {
 1384|      0|                dividend = (dHi << basic_type_halfBits) | (data()[i] >> basic_type_halfBits);
 1385|      0|                q1 = dividend/divisor;
 1386|      0|                r = dividend % divisor;
 1387|      0|                dividend = (r << basic_type_halfBits) | (data()[i] & r_mask);
 1388|      0|                q2 = dividend/divisor;
 1389|      0|                dHi = dividend % divisor;
 1390|      0|                quot.data()[i] = (q1 << basic_type_halfBits) | q2;
 1391|      0|            }
 1392|      0|            quot.reduce();
 1393|      0|            rem = dHi;
 1394|      0|            quot.common_stor_.is_negative_ = quot_neg;
 1395|      0|            rem.common_stor_.is_negative_ = rem_neg;
 1396|      0|            return;
 1397|      0|        }
 1398|   108k|        basic_bigint<Allocator> num0 = num, denom0 = denom;
 1399|   108k|        int second_done = normalize(denom, num, x);
 1400|   108k|        size_type l = denom.length() - 1;
 1401|   108k|        size_type n = num.length() - 1;
 1402|   108k|        quot.resize(n - l);
 1403|  85.6M|        for (size_type i=quot.length(); i-- > 0; )
  ------------------
  |  Branch (1403:41): [True: 85.5M, False: 108k]
  ------------------
 1404|  85.5M|            quot.data()[i] = 0;
 1405|   108k|        rem = num;
 1406|   108k|        if ( rem.data()[n] >= denom.data()[l] )
  ------------------
  |  Branch (1406:14): [True: 3.15k, False: 105k]
  ------------------
 1407|  3.15k|        {
 1408|  3.15k|            rem.resize(rem.length() + 1);
 1409|  3.15k|            n++;
 1410|  3.15k|            quot.resize(quot.length() + 1);
 1411|  3.15k|        }
 1412|   108k|        uint64_t d = denom.data()[l];
 1413|  85.6M|        for ( size_type k = n; k > l; k-- )
  ------------------
  |  Branch (1413:32): [True: 85.5M, False: 108k]
  ------------------
 1414|  85.5M|        {
 1415|  85.5M|            uint64_t q = DDquotient(rem.data()[k], rem.data()[k-1], d);
 1416|  85.5M|            subtractmul( rem.data() + k - l - 1, denom.data(), l + 1, q );
 1417|  85.5M|            quot.data()[k - l - 1] = q;
 1418|  85.5M|        }
 1419|   108k|        quot.reduce();
 1420|   108k|        quot.common_stor_.is_negative_ = quot_neg;
 1421|   108k|        if ( remDesired )
  ------------------
  |  Branch (1421:14): [True: 108k, False: 0]
  ------------------
 1422|   108k|        {
 1423|   108k|            unnormalize(rem, x, second_done);
 1424|   108k|            rem.common_stor_.is_negative_ = rem_neg;
 1425|   108k|        }
 1426|   108k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9normalizeERS4_S5_Ri:
 1530|   108k|    {
 1531|   108k|        size_type r = denom.length() - 1;
 1532|   108k|        uint64_t y = denom.data()[r];
 1533|       |
 1534|   108k|        x = 0;
 1535|   200k|        while ( (y & l_bit) == 0 )
  ------------------
  |  Branch (1535:17): [True: 91.9k, False: 108k]
  ------------------
 1536|  91.9k|        {
 1537|  91.9k|            y <<= 1;
 1538|  91.9k|            x++;
 1539|  91.9k|        }
 1540|   108k|        denom <<= x;
 1541|   108k|        num <<= x;
 1542|   108k|        if ( r > 0 && denom.data()[r] < denom.data()[r-1] )
  ------------------
  |  Branch (1542:14): [True: 0, False: 108k]
  |  Branch (1542:23): [True: 0, False: 0]
  ------------------
 1543|      0|        {
 1544|      0|            denom *= max_basic_type;
 1545|      0|                    num *= max_basic_type;
 1546|      0|            return 1;
 1547|      0|        }
 1548|   108k|        return 0;
 1549|   108k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEElSEm:
  735|   217k|    {
  736|   217k|        size_type q = (size_type)(k / basic_type_bits);
  737|   217k|        if ( q ) // Increase common_stor_.length_ by q:
  ------------------
  |  Branch (737:14): [True: 0, False: 217k]
  ------------------
  738|      0|        {
  739|      0|            resize(length() + q);
  740|      0|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (740:42): [True: 0, False: 0]
  ------------------
  741|      0|                data()[i] = ( i < q ? 0 : data()[i - q]);
  ------------------
  |  Branch (741:31): [True: 0, False: 0]
  ------------------
  742|      0|            k %= basic_type_bits;
  743|      0|        }
  744|   217k|        if ( k )  // 0 < k < basic_type_bits:
  ------------------
  |  Branch (744:14): [True: 61.3k, False: 156k]
  ------------------
  745|  61.3k|        {
  746|  61.3k|            uint64_t k1 = basic_type_bits - k;
  747|  61.3k|            uint64_t mask = (uint64_t(1) << k) - uint64_t(1);
  748|  61.3k|            resize( length() + 1 );
  749|  22.4M|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (749:42): [True: 22.4M, False: 61.3k]
  ------------------
  750|  22.4M|            {
  751|  22.4M|                data()[i] <<= k;
  752|  22.4M|                if ( i > 0 )
  ------------------
  |  Branch (752:22): [True: 22.3M, False: 61.3k]
  ------------------
  753|  22.3M|                    data()[i] |= (data()[i-1] >> k1) & mask;
  754|  22.4M|            }
  755|  61.3k|        }
  756|   217k|        reduce();
  757|   217k|        return *this;
  758|   217k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10DDquotientEmmm:
 1457|  85.5M|    {
 1458|  85.5M|        uint64_t left, middle, right, qHi, qLo, x, dLo1,
 1459|  85.5M|                   dHi = d >> basic_type_halfBits, dLo = d & r_mask;
 1460|  85.5M|        qHi = A/(dHi + 1);
 1461|       |        // This initial guess of qHi may be too small.
 1462|  85.5M|        middle = qHi * dLo;
 1463|  85.5M|        left = qHi * dHi;
 1464|  85.5M|        x = B - (middle << basic_type_halfBits);
 1465|  85.5M|        A -= (middle >> basic_type_halfBits) + left + (x > B);
 1466|  85.5M|        B = x;
 1467|  85.5M|        dLo1 = dLo << basic_type_halfBits;
 1468|       |        // Increase qHi if necessary:
 1469|   132M|        while ( A > dHi || (A == dHi && B >= dLo1) )
  ------------------
  |  Branch (1469:17): [True: 46.6M, False: 86.1M]
  |  Branch (1469:29): [True: 561k, False: 85.5M]
  |  Branch (1469:41): [True: 561k, False: 7]
  ------------------
 1470|  47.2M|        {
 1471|  47.2M|            x = B - dLo1;
 1472|  47.2M|            A -= dHi + (x > B);
 1473|  47.2M|            B = x;
 1474|  47.2M|            qHi++;
 1475|  47.2M|        }
 1476|  85.5M|        qLo = ((A << basic_type_halfBits) | (B >> basic_type_halfBits))/(dHi + 1);
 1477|       |        // This initial guess of qLo may be too small.
 1478|  85.5M|        right = qLo * dLo;
 1479|  85.5M|        middle = qLo * dHi;
 1480|  85.5M|        x = B - right;
 1481|  85.5M|        A -= (x > B);
 1482|  85.5M|        B = x;
 1483|  85.5M|        x = B - (middle << basic_type_halfBits);
 1484|  85.5M|            A -= (middle >> basic_type_halfBits) + (x > B);
 1485|  85.5M|        B = x;
 1486|       |        // Increase qLo if necessary:
 1487|   132M|        while ( A || B >= d )
  ------------------
  |  Branch (1487:17): [True: 1.51M, False: 131M]
  |  Branch (1487:22): [True: 45.7M, False: 85.5M]
  ------------------
 1488|  47.2M|        {
 1489|  47.2M|            x = B - d;
 1490|  47.2M|            A -= (x > B);
 1491|  47.2M|            B = x;
 1492|  47.2M|            qLo++;
 1493|  47.2M|        }
 1494|  85.5M|        return (qHi << basic_type_halfBits) + qLo;
 1495|  85.5M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11subtractmulEPmS5_mRm:
 1499|  85.5M|    {
 1500|  85.5M|        uint64_t hi, lo, d, carry = 0;
 1501|  85.5M|        size_type i;
 1502|   171M|        for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1502:22): [True: 85.5M, False: 85.5M]
  ------------------
 1503|  85.5M|        {
 1504|  85.5M|            DDproduct( b[i], q, hi, lo );
 1505|  85.5M|            d = a[i];
 1506|  85.5M|            a[i] -= lo;
 1507|  85.5M|            if ( a[i] > d )
  ------------------
  |  Branch (1507:18): [True: 17.1M, False: 68.3M]
  ------------------
 1508|  17.1M|                carry++;
 1509|  85.5M|            d = a[i + 1];
 1510|  85.5M|            a[i + 1] -= hi + carry;
 1511|  85.5M|            carry = a[i + 1] > d;
 1512|  85.5M|        }
 1513|  85.5M|        if ( carry ) // q was too large
  ------------------
  |  Branch (1513:14): [True: 0, False: 85.5M]
  ------------------
 1514|      0|        {
 1515|      0|            q--;
 1516|      0|            carry = 0;
 1517|      0|            for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1517:26): [True: 0, False: 0]
  ------------------
 1518|      0|            {
 1519|      0|                d = a[i] + carry;
 1520|      0|                carry = d < carry;
 1521|      0|                a[i] = d + b[i];
 1522|      0|                if ( a[i] < d )
  ------------------
  |  Branch (1522:22): [True: 0, False: 0]
  ------------------
 1523|      0|                    carry = 1;
 1524|      0|            }
 1525|      0|            a[n] = 0;
 1526|      0|        }
 1527|  85.5M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11unnormalizeERS4_ii:
 1552|   108k|    {
 1553|   108k|        if ( secondDone )
  ------------------
  |  Branch (1553:14): [True: 0, False: 108k]
  ------------------
 1554|      0|        {
 1555|      0|            rem /= max_basic_type;
 1556|      0|        }
 1557|   108k|        if ( x > 0 )
  ------------------
  |  Branch (1557:14): [True: 30.6k, False: 78.2k]
  ------------------
 1558|  30.6k|        {
 1559|  30.6k|            rem >>= x;
 1560|  30.6k|        }
 1561|  78.2k|        else
 1562|  78.2k|        {
 1563|  78.2k|            rem.reduce();
 1564|  78.2k|        }
 1565|   108k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEErSEm:
  761|  30.6k|    {
  762|  30.6k|        size_type q = (size_type)(k / basic_type_bits);
  763|  30.6k|        if ( q >= length() )
  ------------------
  |  Branch (763:14): [True: 0, False: 30.6k]
  ------------------
  764|      0|        {
  765|      0|            resize( 0 );
  766|      0|            return *this;
  767|      0|        }
  768|  30.6k|        if (q > 0)
  ------------------
  |  Branch (768:13): [True: 0, False: 30.6k]
  ------------------
  769|      0|        {
  770|      0|            memmove( data(), data()+q, (size_type)((length() - q)*sizeof(uint64_t)) );
  771|      0|            resize( length() - q );
  772|      0|            k %= basic_type_bits;
  773|      0|            if ( k == 0 )
  ------------------
  |  Branch (773:18): [True: 0, False: 0]
  ------------------
  774|      0|            {
  775|      0|                reduce();
  776|      0|                return *this;
  777|      0|            }
  778|      0|        }
  779|       |
  780|  30.6k|        size_type n = (size_type)(length() - 1);
  781|  30.6k|        int64_t k1 = basic_type_bits - k;
  782|  30.6k|        uint64_t mask = (uint64_t(1) << k) - 1;
  783|  22.3M|        for (size_type i = 0; i <= n; i++)
  ------------------
  |  Branch (783:31): [True: 22.3M, False: 30.6k]
  ------------------
  784|  22.3M|        {
  785|  22.3M|            data()[i] >>= k;
  786|  22.3M|            if ( i < n )
  ------------------
  |  Branch (786:18): [True: 22.3M, False: 30.6k]
  ------------------
  787|  22.3M|                data()[i] |= ((data()[i+1] & mask) << k1);
  788|  22.3M|        }
  789|  30.6k|        reduce();
  790|  30.6k|        return *this;
  791|  30.6k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEED2Ev:
  333|  5.87M|    {
  334|  5.87M|        destroy();
  335|  5.87M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7destroyEv:
 1429|  5.87M|    {
 1430|  5.87M|        if (is_dynamic())
  ------------------
  |  Branch (1430:13): [True: 2.76M, False: 3.10M]
  ------------------
 1431|  2.76M|        {
 1432|  2.76M|            dynamic_stor_.destroy(get_allocator());
 1433|  2.76M|        }
 1434|  5.87M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7destroyERKNS2_ImEE:
  244|  2.76M|        {
  245|  2.76M|            if (data_ != nullptr)
  ------------------
  |  Branch (245:17): [True: 2.76M, False: 0]
  ------------------
  246|  2.76M|            {
  247|  2.76M|                real_allocator_type alloc(a);
  248|       |
  249|  2.76M|                std::allocator_traits<real_allocator_type>::destroy(alloc, extension_traits::to_plain_pointer(data_));
  250|  2.76M|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_,capacity_);
  251|  2.76M|            }
  252|  2.76M|        }
_ZN8jsonconsmiENS_12basic_bigintINSt3__19allocatorIhEEEERKS4_:
 1161|  7.31k|    {
 1162|  7.31k|        return x -= y;
 1163|  7.31k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IiEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|   253k|    {
  329|   253k|        ::new (&short_stor_) short_storage(n);
  330|   253k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IiEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Esr3std9is_signedIS7_EE5valueEvE4typeE:
  124|   253k|        {
  125|   253k|            values_[0] = n < 0 ? (uint64_t(0)-static_cast<uint64_t>(n)) : static_cast<uint64_t>(n);
  ------------------
  |  Branch (125:26): [True: 7.31k, False: 246k]
  ------------------
  126|   253k|            values_[1] = 0;
  127|   253k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEaSERKS4_:
  557|  1.45M|    {
  558|  1.45M|        if ( this != &y )
  ------------------
  |  Branch (558:14): [True: 1.45M, False: 0]
  ------------------
  559|  1.45M|        {
  560|  1.45M|            resize( y.length() );
  561|  1.45M|            common_stor_.is_negative_ = y.is_negative();
  562|  1.45M|            if ( y.length() > 0 )
  ------------------
  |  Branch (562:18): [True: 1.28M, False: 170k]
  ------------------
  563|  1.28M|            {
  564|  1.28M|                std::memcpy( data(), y.data(), y.length()*sizeof(uint64_t) );
  565|  1.28M|            }
  566|  1.45M|        }
  567|  1.45M|        return *this;
  568|  1.45M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE16write_string_hexIcNS1_11char_traitsIcEENS2_IcEEEEvRNS1_12basic_stringIT_T0_T1_EE:
 1039|  69.2k|    {
 1040|  69.2k|        basic_bigint<Allocator> v(*this);
 1041|       |
 1042|  69.2k|        std::size_t len = (v.length() * basic_bigint<Allocator>::basic_type_bits / 3) + 2;
 1043|  69.2k|        data.reserve(len);
 1044|       |        // 1/3 > ln(2)/ln(10)
 1045|  69.2k|        static uint64_t p10 = 1;
 1046|  69.2k|        static uint64_t ip10 = 0;
 1047|       |
 1048|  69.2k|        if ( v.length() == 0 )
  ------------------
  |  Branch (1048:14): [True: 64.9k, False: 4.29k]
  ------------------
 1049|  64.9k|        {
 1050|  64.9k|            data.push_back('0');
 1051|  64.9k|        }
 1052|  4.29k|        else
 1053|  4.29k|        {
 1054|  4.29k|            uint64_t r;
 1055|  4.29k|            if ( p10 == 1 )
  ------------------
  |  Branch (1055:18): [True: 1, False: 4.29k]
  ------------------
 1056|      1|            {
 1057|     16|                while ( p10 <= (std::numeric_limits<uint64_t>::max)()/16 )
  ------------------
  |  Branch (1057:25): [True: 15, False: 1]
  ------------------
 1058|     15|                {
 1059|     15|                    p10 *= 16;
 1060|     15|                    ip10++;
 1061|     15|                }
 1062|      1|            }                     // p10 is max unsigned power of 16
 1063|  4.29k|            basic_bigint<Allocator> R;
 1064|  4.29k|            basic_bigint<Allocator> LP10 = p10; // LP10 = p10 = ::pow(16, ip10)
 1065|  4.29k|            do
 1066|  35.3k|            {
 1067|  35.3k|                v.divide( LP10, v, R, true );
 1068|  35.3k|                r = (R.length() ? R.data()[0] : 0);
  ------------------
  |  Branch (1068:22): [True: 32.7k, False: 2.57k]
  ------------------
 1069|   511k|                for ( size_type j=0; j < ip10; j++ )
  ------------------
  |  Branch (1069:38): [True: 480k, False: 31.0k]
  ------------------
 1070|   480k|                {
 1071|   480k|                    uint8_t c = r % 16;
 1072|   480k|                    data.push_back((c < 10) ? ('0' + c) : ('A' - 10 + c));
  ------------------
  |  Branch (1072:36): [True: 348k, False: 132k]
  ------------------
 1073|   480k|                    r /= 16;
 1074|   480k|                    if ( r + v.length() == 0 )
  ------------------
  |  Branch (1074:26): [True: 4.29k, False: 476k]
  ------------------
 1075|  4.29k|                        break;
 1076|   480k|                }
 1077|  35.3k|            } 
 1078|  35.3k|            while (v.length());
  ------------------
  |  Branch (1078:20): [True: 31.0k, False: 4.29k]
  ------------------
 1079|       |
 1080|  4.29k|            if (is_negative())
  ------------------
  |  Branch (1080:17): [True: 1.76k, False: 2.53k]
  ------------------
 1081|  1.76k|            {
 1082|  1.76k|                data.push_back('-');
 1083|  1.76k|            }
 1084|  4.29k|            std::reverse(data.begin(),data.end());
 1085|  4.29k|        }
 1086|  69.2k|    }

_ZN8jsoncons13encode_base64IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  179|  1.19k|    {
  180|  1.19k|        static constexpr char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  181|  1.19k|                                                   "abcdefghijklmnopqrstuvwxyz"
  182|  1.19k|                                                   "0123456789+/"
  183|  1.19k|                                                   "=";
  184|  1.19k|        return detail::encode_base64_generic(first, last, alphabet, result);
  185|  1.19k|    }
_ZN8jsoncons6detail21encode_base64_genericIPKhNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS4_9enable_ifIXsr3std7is_sameINS4_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESD_SD_PKcRT0_:
   35|  9.32M|    {
   36|  9.32M|        std::size_t count = 0;
   37|  9.32M|        unsigned char a3[3];
   38|  9.32M|        unsigned char a4[4];
   39|  9.32M|        unsigned char fill = alphabet[64];
   40|  9.32M|        int i = 0;
   41|  9.32M|        int j = 0;
   42|       |
   43|  65.4M|        while (first != last)
  ------------------
  |  Branch (43:16): [True: 56.1M, False: 9.32M]
  ------------------
   44|  56.1M|        {
   45|  56.1M|            a3[i++] = *first++;
   46|  56.1M|            if (i == 3)
  ------------------
  |  Branch (46:17): [True: 17.4M, False: 38.6M]
  ------------------
   47|  17.4M|            {
   48|  17.4M|                a4[0] = (a3[0] & 0xfc) >> 2;
   49|  17.4M|                a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   50|  17.4M|                a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   51|  17.4M|                a4[3] = a3[2] & 0x3f;
   52|       |
   53|  87.0M|                for (i = 0; i < 4; i++) 
  ------------------
  |  Branch (53:29): [True: 69.6M, False: 17.4M]
  ------------------
   54|  69.6M|                {
   55|  69.6M|                    result.push_back(alphabet[a4[i]]);
   56|  69.6M|                    ++count;
   57|  69.6M|                }
   58|  17.4M|                i = 0;
   59|  17.4M|            }
   60|  56.1M|        }
   61|       |
   62|  9.32M|        if (i > 0)
  ------------------
  |  Branch (62:13): [True: 1.97M, False: 7.34M]
  ------------------
   63|  1.97M|        {
   64|  4.04M|            for (j = i; j < 3; ++j) 
  ------------------
  |  Branch (64:25): [True: 2.06M, False: 1.97M]
  ------------------
   65|  2.06M|            {
   66|  2.06M|                a3[j] = 0;
   67|  2.06M|            }
   68|       |
   69|  1.97M|            a4[0] = (a3[0] & 0xfc) >> 2;
   70|  1.97M|            a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   71|  1.97M|            a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   72|       |
   73|  7.83M|            for (j = 0; j < i + 1; ++j) 
  ------------------
  |  Branch (73:25): [True: 5.85M, False: 1.97M]
  ------------------
   74|  5.85M|            {
   75|  5.85M|                result.push_back(alphabet[a4[j]]);
   76|  5.85M|                ++count;
   77|  5.85M|            }
   78|       |
   79|  1.97M|            if (fill != 0)
  ------------------
  |  Branch (79:17): [True: 356, False: 1.97M]
  ------------------
   80|    356|            {
   81|    943|                while (i++ < 3) 
  ------------------
  |  Branch (81:24): [True: 587, False: 356]
  ------------------
   82|    587|                {
   83|    587|                    result.push_back(fill);
   84|    587|                    ++count;
   85|    587|                }
   86|    356|            }
   87|  1.97M|        }
   88|       |
   89|  9.32M|        return count;
   90|  9.32M|    }
_ZNK8jsoncons16byte_string_view5beginEv:
  409|  9.36M|        {
  410|  9.36M|            return data_;
  411|  9.36M|        }
_ZNK8jsoncons16byte_string_view3endEv:
  413|  9.36M|        {
  414|  9.36M|            return data_ + size_;
  415|  9.36M|        }
_ZN8jsoncons13encode_base16IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  153|  1.58k|    {
  154|  1.58k|        static constexpr char characters[] = "0123456789ABCDEF";
  155|       |
  156|  1.41M|        for (auto it = first; it != last; ++it)
  ------------------
  |  Branch (156:31): [True: 1.40M, False: 1.58k]
  ------------------
  157|  1.40M|        {
  158|  1.40M|            uint8_t c = *it;
  159|  1.40M|            result.push_back(characters[c >> 4]);
  160|  1.40M|            result.push_back(characters[c & 0xf]);
  161|  1.40M|        }
  162|  1.58k|        return (last-first)*2;
  163|  1.58k|    }
_ZN8jsoncons16encode_base64urlIPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  168|  9.32M|    {
  169|  9.32M|        static constexpr char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  170|  9.32M|                                                      "abcdefghijklmnopqrstuvwxyz"
  171|  9.32M|                                                      "0123456789-_"
  172|  9.32M|                                                      "\0";
  173|  9.32M|        return detail::encode_base64_generic(first, last, alphabet, result);
  174|  9.32M|    }
_ZNK8jsoncons16byte_string_view4dataEv:
  392|   624k|        {
  393|   624k|            return data_;
  394|   624k|        }
_ZNK8jsoncons16byte_string_view4sizeEv:
  403|   668k|        {
  404|   668k|            return size_;
  405|   668k|        }
_ZN8jsoncons16byte_string_viewC2EPKhm:
  355|  10.5M|        {
  356|  10.5M|        }
_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE:
  362|  43.7k|        {
  363|  43.7k|        }

_ZN8jsoncons6binary11decode_halfEt:
  111|  17.0M|    {
  112|       |    #if defined(__F16C__) && !defined(APPLE_MISSING_INTRINSICS)
  113|       |        return _cvtsh_ss(half);
  114|       |    #else
  115|  17.0M|        int64_t exp = (half >> 10) & 0x1f;
  116|  17.0M|        int64_t mant = half & 0x3ff;
  117|  17.0M|        double val;
  118|  17.0M|        if (exp == 0) 
  ------------------
  |  Branch (118:13): [True: 3.50M, False: 13.5M]
  ------------------
  119|  3.50M|        {
  120|  3.50M|            val = ldexp(static_cast<double>(mant), -24);
  121|  3.50M|        }
  122|  13.5M|        else if (exp != 31) 
  ------------------
  |  Branch (122:18): [True: 12.7M, False: 859k]
  ------------------
  123|  12.7M|        {
  124|  12.7M|            val = ldexp(static_cast<double>(mant) + 1024.0, static_cast<int>(exp - 25));
  125|  12.7M|        } 
  126|   859k|        else
  127|   859k|        {
  128|   859k|            val = mant == 0 ? std::numeric_limits<double>::infinity() : std::nan("");
  ------------------
  |  Branch (128:19): [True: 13.2k, False: 845k]
  ------------------
  129|   859k|        }
  130|  17.0M|        return half & 0x8000 ? -val : val;
  ------------------
  |  Branch (130:16): [True: 6.76M, False: 10.3M]
  ------------------
  131|  17.0M|    #endif
  132|  17.0M|    }
_ZN8jsoncons6binary9byte_swapItEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|  3.59M|    {
  147|  3.59M|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|  3.59M|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|  3.59M|#      define JSONCONS_BYTE_SWAP_16    __builtin_bswap16
  ------------------
  149|       |    #else
  150|       |        return (static_cast<uint16_t>(val) >> 8) | (static_cast<uint16_t>(val) << 8);
  151|       |    #endif
  152|  3.59M|    }
_ZN8jsoncons6binary9byte_swapIjEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|  1.95M|    {
  158|  1.95M|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|  1.95M|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|  1.95M|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|  1.95M|    }
_ZN8jsoncons6binary9byte_swapImEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|  1.33M|    {
  170|  1.33M|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|  1.33M|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|  1.33M|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|  1.33M|    }
_ZN8jsoncons6binary9byte_swapIsEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|   249k|    {
  147|   249k|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|   249k|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|   249k|#      define JSONCONS_BYTE_SWAP_16    __builtin_bswap16
  ------------------
  149|       |    #else
  150|       |        return (static_cast<uint16_t>(val) >> 8) | (static_cast<uint16_t>(val) << 8);
  151|       |    #endif
  152|   249k|    }
_ZN8jsoncons6binary9byte_swapIiEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|   414k|    {
  158|   414k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|   414k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|   414k|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|   414k|    }
_ZN8jsoncons6binary9byte_swapIlEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|   339k|    {
  170|   339k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|   339k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|   339k|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|   339k|    }
_ZN8jsoncons6binary9byte_swapIfEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  182|   305k|    {
  183|   305k|        uint32_t x;
  184|   305k|        std::memcpy(&x,&val,sizeof(uint32_t));
  185|   305k|        uint32_t y = byte_swap(x);
  186|   305k|        T val2;
  187|   305k|        std::memcpy(&val2,&y,sizeof(uint32_t));
  188|   305k|        return val2;
  189|   305k|    }
_ZN8jsoncons6binary9byte_swapIdEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  194|   444k|    {
  195|   444k|        uint64_t x;
  196|   444k|        std::memcpy(&x,&val,sizeof(uint64_t));
  197|   444k|        uint64_t y = byte_swap(x);
  198|   444k|        T val2;
  199|   444k|        std::memcpy(&val2,&y,sizeof(uint64_t));
  200|   444k|        return val2;
  201|   444k|    }

_ZN8jsoncons6binary13big_to_nativeItNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   351k|    {
  205|   351k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 351k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   351k|        T val;
  210|   351k|        std::memcpy(&val,first,sizeof(T));
  211|   351k|        return byte_swap(val);
  212|   351k|    }
_ZN8jsoncons6binary13big_to_nativeIjNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  7.69k|    {
  205|  7.69k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 7.69k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  7.69k|        T val;
  210|  7.69k|        std::memcpy(&val,first,sizeof(T));
  211|  7.69k|        return byte_swap(val);
  212|  7.69k|    }
_ZN8jsoncons6binary13big_to_nativeImNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  14.7k|    {
  205|  14.7k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 14.7k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  14.7k|        T val;
  210|  14.7k|        std::memcpy(&val,first,sizeof(T));
  211|  14.7k|        return byte_swap(val);
  212|  14.7k|    }
_ZN8jsoncons6binary13big_to_nativeIfNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  13.1k|    {
  205|  13.1k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 13.1k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  13.1k|        T val;
  210|  13.1k|        std::memcpy(&val,first,sizeof(T));
  211|  13.1k|        return byte_swap(val);
  212|  13.1k|    }
_ZN8jsoncons6binary13big_to_nativeIdNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  3.02k|    {
  205|  3.02k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 3.02k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  3.02k|        T val;
  210|  3.02k|        std::memcpy(&val,first,sizeof(T));
  211|  3.02k|        return byte_swap(val);
  212|  3.02k|    }

_ZN8jsoncons6detail6grisu3EdPcPiS2_:
  294|  16.8M|{
  295|  16.8M|    diy_fp_t w_m, w_p;
  296|  16.8M|    int q = 64, alpha = -59, gamma = -56;
  297|  16.8M|    normalized_boundaries(v, &w_m, &w_p);
  298|  16.8M|    diy_fp_t w = normalize_diy_fp(double2diy_fp(v));
  299|  16.8M|    int mk = k_comp(w_p.e + q, alpha, gamma);
  300|  16.8M|    diy_fp_t c_mk = cached_power(mk);
  301|  16.8M|    diy_fp_t W  = multiply(w,   c_mk);
  302|  16.8M|    diy_fp_t Wp = multiply(w_p, c_mk);
  303|  16.8M|    diy_fp_t Wm = multiply(w_m, c_mk);
  304|  16.8M|    *K = -mk;
  305|  16.8M|    bool result = digit_gen(Wm, W, Wp, buffer, length, K);
  306|  16.8M|    buffer[*length] = 0;
  307|  16.8M|    return result;
  308|  16.8M|}
_ZN8jsoncons6detail21normalized_boundariesEdPNS0_8diy_fp_tES2_:
  189|  16.8M|{
  190|  16.8M|    diy_fp_t v = double2diy_fp(d);
  191|  16.8M|    diy_fp_t pl, mi;
  192|  16.8M|    bool significand_is_zero = v.f == dp_hidden_bit;
  193|  16.8M|    pl.f  = (v.f << 1) + 1; pl.e  = v.e - 1;
  194|  16.8M|    pl = normalize_boundary(pl);
  195|  16.8M|    if (significand_is_zero)
  ------------------
  |  Branch (195:9): [True: 1.52M, False: 15.3M]
  ------------------
  196|  1.52M|    {
  197|  1.52M|        mi.f = (v.f << 2) - 1;
  198|  1.52M|        mi.e = v.e - 2;
  199|  1.52M|    } else
  200|  15.3M|    {
  201|  15.3M|        mi.f = (v.f << 1) - 1;
  202|  15.3M|        mi.e = v.e - 1;
  203|  15.3M|    }
  204|  16.8M|	int x = mi.e - pl.e;
  205|  16.8M|    mi.f <<= x;
  206|  16.8M|    mi.e = pl.e;
  207|  16.8M|    *out_m_plus = pl;
  208|  16.8M|    *out_m_minus = mi;
  209|  16.8M|}
_ZN8jsoncons6detail18normalize_boundaryENS0_8diy_fp_tE:
  172|  16.8M|{
  173|  16.8M|    diy_fp_t res = in;
  174|       |    /* Normalize now */
  175|       |    /* the original number could have been a denormal. */
  176|  17.2M|    while (!(res.f & (dp_hidden_bit << 1)))
  ------------------
  |  Branch (176:12): [True: 410k, False: 16.8M]
  ------------------
  177|   410k|    {
  178|   410k|        res.f <<= 1;
  179|   410k|        res.e--;
  180|   410k|    }
  181|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  182|  16.8M|    res.f <<= (diy_significand_size - dp_significand_size - 2);
  183|  16.8M|    res.e = res.e - (diy_significand_size - dp_significand_size - 2);
  184|  16.8M|    return res;
  185|  16.8M|}
_ZN8jsoncons6detail16normalize_diy_fpENS0_8diy_fp_tE:
  135|  16.8M|{
  136|  16.8M|    diy_fp_t res = in;
  137|       |    /* Normalize now */
  138|       |    /* the original number could have been a denormal. */
  139|  17.2M|    while (!(res.f & dp_hidden_bit))
  ------------------
  |  Branch (139:12): [True: 410k, False: 16.8M]
  ------------------
  140|   410k|    {
  141|   410k|        res.f <<= 1;
  142|   410k|        res.e--;
  143|   410k|    }
  144|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  145|  16.8M|    res.f <<= (diy_significand_size - dp_significand_size - 1);
  146|  16.8M|    res.e = res.e - (diy_significand_size - dp_significand_size - 1);
  147|  16.8M|    return res;
  148|  16.8M|}
_ZN8jsoncons6detail13double2diy_fpEd:
  152|  33.7M|{
  153|  33.7M|    uint64_t d64 = double_to_uint64(d);
  154|  33.7M|    int biased_e = (d64 & dp_exponent_mask) >> dp_significand_size;
  155|  33.7M|    uint64_t significand = (d64 & dp_significand_mask);
  156|  33.7M|    diy_fp_t res;
  157|  33.7M|    if (biased_e != 0)
  ------------------
  |  Branch (157:9): [True: 33.6M, False: 36.1k]
  ------------------
  158|  33.6M|    {
  159|  33.6M|        res.f = significand + dp_hidden_bit;
  160|  33.6M|        res.e = biased_e - dp_exponent_bias;
  161|  33.6M|    } 
  162|  36.1k|    else
  163|  36.1k|    {
  164|  36.1k|        res.f = significand;
  165|  36.1k|        res.e = dp_min_exponent + 1;
  166|  36.1k|    }
  167|  33.7M|    return res;
  168|  33.7M|}
_ZN8jsoncons6detail16double_to_uint64Ed:
  121|  33.7M|uint64_t double_to_uint64(double d) {uint64_t d64; std::memcpy(&d64,&d,sizeof(double)); return d64; }
_ZN8jsoncons6detail6k_compEiii:
   83|  16.8M|{
   84|  16.8M|    constexpr double d_1_log2_10 = 0.30102999566398114; //  1 / lg(10)
   85|  16.8M|	int x = alpha - e + 63;
   86|  16.8M|    return static_cast<int>(std::ceil(x * d_1_log2_10));
   87|  16.8M|}
_ZN8jsoncons6detail12cached_powerEi:
   98|  16.8M|{
   99|  16.8M|    diy_fp_t res;
  100|  16.8M|    int index = 343 + k;
  101|  16.8M|    res.f = powers_ten[index];
  102|  16.8M|    res.e = powers_ten_e[index];
  103|  16.8M|    return res;
  104|  16.8M|}
_ZN8jsoncons6detail8multiplyENS0_8diy_fp_tES1_:
   66|  50.6M|{
   67|  50.6M|    uint64_t a, b, c, d, ac, bc, ad, bd, tmp;
   68|  50.6M|    diy_fp_t r; uint64_t M32 = 0xFFFFFFFF;
   69|  50.6M|    a = x.f >> 32; b = x.f & M32;
   70|  50.6M|    c = y.f >> 32; d = y.f & M32;
   71|  50.6M|    ac = a * c; bc = b * c; ad = a * d; bd = b * d;
   72|  50.6M|    tmp = (bd >> 32) + (ad & M32) + (bc & M32);
   73|  50.6M|    tmp += 1U << 31; /// mult_round
   74|  50.6M|    r.f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32);
   75|  50.6M|    r.e = x.e + y.e + 64;
   76|  50.6M|    return r;
   77|  50.6M|}
_ZN8jsoncons6detail9digit_genENS0_8diy_fp_tES1_S1_PcPiS3_:
  251|  16.8M|{
  252|  16.8M|    const uint32_t TEN2 = 100;
  253|       |
  254|  16.8M|    uint32_t div, p1; uint64_t p2, tmp, unit = 1;
  255|  16.8M|    int d, kappa;
  256|  16.8M|    diy_fp_t one, wp_W, Delta;
  257|  16.8M|    Delta = minus(Wp, Wm); Delta.f += 2 * unit;
  258|  16.8M|    wp_W = minus(Wp, W); wp_W.f += unit;
  259|  16.8M|    one.f = ((uint64_t)1) << -Wp.e; one.e = Wp.e;
  260|  16.8M|    p1 = static_cast<uint32_t>((Wp.f + 1) >> -one.e);
  261|  16.8M|    p2 = (Wp.f + 1) & (one.f - 1);
  262|  16.8M|    *len = 0; kappa = 3; div = TEN2;
  263|  67.2M|    while (kappa > 0)
  ------------------
  |  Branch (263:12): [True: 50.5M, False: 16.6M]
  ------------------
  264|  50.5M|    {
  265|  50.5M|        d = p1 / div;
  266|  50.5M|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (266:13): [True: 33.3M, False: 17.2M]
  |  Branch (266:18): [True: 821k, False: 16.4M]
  ------------------
  267|  50.5M|        p1 %= div; kappa--;
  268|  50.5M|        tmp = (((uint64_t)p1) << -one.e) + p2;
  269|  50.5M|        if (tmp < Delta.f)
  ------------------
  |  Branch (269:13): [True: 238k, False: 50.3M]
  ------------------
  270|   238k|        {
  271|   238k|            *K += kappa;
  272|   238k|            return round_weed(buffer, *len, wp_W.f, Delta.f, tmp,
  273|   238k|                              ((uint64_t)div) << -one.e, unit);
  274|   238k|        }
  275|  50.3M|        div /= 10;
  276|  50.3M|    }
  277|   131M|    while (1)
  ------------------
  |  Branch (277:12): [Folded - Ignored]
  ------------------
  278|   131M|    {
  279|   131M|        p2 *= 10; Delta.f *= 10; unit *= 10;
  280|   131M|        d = static_cast<int>(p2 >> -one.e);
  281|   131M|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (281:13): [True: 123M, False: 7.47M]
  |  Branch (281:18): [True: 7.47M, False: 0]
  ------------------
  282|   131M|        p2 &= one.f - 1; kappa--;
  283|   131M|        if (p2 < Delta.f)
  ------------------
  |  Branch (283:13): [True: 16.6M, False: 114M]
  ------------------
  284|  16.6M|        {
  285|  16.6M|            *K += kappa;
  286|  16.6M|            return round_weed(buffer, *len, wp_W.f * unit, Delta.f, p2,
  287|  16.6M|                              one.f, unit);
  288|  16.6M|        }
  289|   131M|    }
  290|  16.6M|}
_ZN8jsoncons6detail5minusENS0_8diy_fp_tES1_:
   57|  33.7M|{
   58|  33.7M|    assert(x.e == y.e);
   59|      0|    assert(x.f >= y.f);
   60|      0|    diy_fp_t r = { x.f = x.f - y.f, x.e };
   61|  33.7M|    return r;
   62|  33.7M|}
_ZN8jsoncons6detail10round_weedEPcimmmmm:
  231|  16.8M|{
  232|  16.8M|    uint64_t wp_Wup = wp_W - ulp;
  233|  16.8M|    uint64_t wp_Wdown = wp_W + ulp;
  234|  19.4M|    while (rest < wp_Wup &&  /// round1
  ------------------
  |  Branch (234:12): [True: 4.47M, False: 15.0M]
  ------------------
  235|  19.4M|           Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (235:12): [True: 3.16M, False: 1.31M]
  ------------------
  236|  19.4M|           (rest + ten_kappa < wp_Wup || /// closer
  ------------------
  |  Branch (236:13): [True: 684k, False: 2.47M]
  ------------------
  237|  3.16M|            wp_Wup - rest >= rest + ten_kappa - wp_Wup))
  ------------------
  |  Branch (237:13): [True: 1.94M, False: 535k]
  ------------------
  238|  2.62M|    {
  239|  2.62M|        buffer[len - 1]--; rest += ten_kappa;
  240|  2.62M|    }
  241|  16.8M|    if (rest < wp_Wdown && /// round2
  ------------------
  |  Branch (241:9): [True: 14.6M, False: 2.22M]
  ------------------
  242|  16.8M|        Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (242:9): [True: 755k, False: 13.8M]
  ------------------
  243|  16.8M|        (rest + ten_kappa < wp_Wdown ||
  ------------------
  |  Branch (243:10): [True: 0, False: 755k]
  ------------------
  244|   755k|         wp_Wdown - rest > rest + ten_kappa - wp_Wdown)) return 0;
  ------------------
  |  Branch (244:10): [True: 189k, False: 565k]
  ------------------
  245|  16.6M|    return 2 * ulp <= rest && rest <= Delta - 4 * ulp; /// weed
  ------------------
  |  Branch (245:12): [True: 16.6M, False: 1.83k]
  |  Branch (245:31): [True: 16.6M, False: 1.02k]
  ------------------
  246|  16.8M|}

_ZN8jsoncons6detail8chars_toC2Ev:
 1082|  18.1M|    {
 1083|  18.1M|        struct lconv * lc = localeconv();
 1084|  18.1M|        if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (1084:13): [True: 18.1M, False: 0]
  |  Branch (1084:30): [True: 18.1M, False: 0]
  ------------------
 1085|  18.1M|        {
 1086|  18.1M|            decimal_point_ = lc->decimal_point[0];    
 1087|  18.1M|        }
 1088|      0|        else
 1089|      0|        {
 1090|      0|            decimal_point_ = '.'; 
 1091|      0|        }
 1092|  18.1M|        buffer_.reserve(100);
 1093|  18.1M|    }
_ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m:
 1106|   192k|    {
 1107|   192k|        CharT *end = nullptr;
 1108|   192k|        double val = strtod(s, &end);
 1109|   192k|        if (s == end)
  ------------------
  |  Branch (1109:13): [True: 0, False: 192k]
  ------------------
 1110|      0|        {
 1111|      0|            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("Convert string to double failed"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1112|      0|        }
 1113|   192k|        return val;
 1114|   192k|    }

_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE4sizeEv:
  111|  2.44k|        {
  112|  2.44k|            return size_;
  113|  2.44k|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE5beginEv:
  127|  2.44k|        {
  128|  2.44k|            return data_;
  129|  2.44k|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE3endEv:
  131|   920k|        {
  132|   920k|            return data_ + size_;
  133|   920k|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE4sizeEv:
  111|  22.3k|        {
  112|  22.3k|            return size_;
  113|  22.3k|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE5beginEv:
  127|  22.3k|        {
  128|  22.3k|            return data_;
  129|  22.3k|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE3endEv:
  131|  18.3M|        {
  132|  18.3M|            return data_ + size_;
  133|  18.3M|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE4sizeEv:
  111|  5.62k|        {
  112|  5.62k|            return size_;
  113|  5.62k|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE5beginEv:
  127|  5.62k|        {
  128|  5.62k|            return data_;
  129|  5.62k|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE3endEv:
  131|  1.64M|        {
  132|  1.64M|            return data_ + size_;
  133|  1.64M|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE4sizeEv:
  111|  17.1k|        {
  112|  17.1k|            return size_;
  113|  17.1k|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE5beginEv:
  127|  17.1k|        {
  128|  17.1k|            return data_;
  129|  17.1k|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE3endEv:
  131|   904k|        {
  132|   904k|            return data_ + size_;
  133|   904k|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE4sizeEv:
  111|  4.65k|        {
  112|  4.65k|            return size_;
  113|  4.65k|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE5beginEv:
  127|  4.65k|        {
  128|  4.65k|            return data_;
  129|  4.65k|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE3endEv:
  131|  27.8k|        {
  132|  27.8k|            return data_ + size_;
  133|  27.8k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE4sizeEv:
  111|  4.84k|        {
  112|  4.84k|            return size_;
  113|  4.84k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE5beginEv:
  127|  4.84k|        {
  128|  4.84k|            return data_;
  129|  4.84k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE3endEv:
  131|  1.18M|        {
  132|  1.18M|            return data_ + size_;
  133|  1.18M|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE4sizeEv:
  111|  48.4k|        {
  112|  48.4k|            return size_;
  113|  48.4k|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE5beginEv:
  127|  48.4k|        {
  128|  48.4k|            return data_;
  129|  48.4k|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE3endEv:
  131|  1.11M|        {
  132|  1.11M|            return data_ + size_;
  133|  1.11M|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE4sizeEv:
  111|  41.3k|        {
  112|  41.3k|            return size_;
  113|  41.3k|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE5beginEv:
  127|  41.3k|        {
  128|  41.3k|            return data_;
  129|  41.3k|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE3endEv:
  131|   482k|        {
  132|   482k|            return data_ + size_;
  133|   482k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE4sizeEv:
  111|  3.00k|        {
  112|  3.00k|            return size_;
  113|  3.00k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE5beginEv:
  127|  3.00k|        {
  128|  3.00k|            return data_;
  129|  3.00k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE3endEv:
  131|   373k|        {
  132|   373k|            return data_ + size_;
  133|   373k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE4sizeEv:
  111|  8.11k|        {
  112|  8.11k|            return size_;
  113|  8.11k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE5beginEv:
  127|  8.11k|        {
  128|  8.11k|            return data_;
  129|  8.11k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE3endEv:
  131|   491k|        {
  132|   491k|            return data_ + size_;
  133|   491k|        }
_ZN8jsoncons6detail4spanIKhLm18446744073709551615EEC2EPS2_m:
   57|  2.44k|        {
   58|  2.44k|        }
_ZN8jsoncons6detail4spanIKtLm18446744073709551615EEC2EPS2_m:
   57|  22.3k|        {
   58|  22.3k|        }
_ZN8jsoncons6detail4spanIKjLm18446744073709551615EEC2EPS2_m:
   57|  5.62k|        {
   58|  5.62k|        }
_ZN8jsoncons6detail4spanIKmLm18446744073709551615EEC2EPS2_m:
   57|  13.5k|        {
   58|  13.5k|        }
_ZN8jsoncons6detail4spanIKaLm18446744073709551615EEC2EPS2_m:
   57|  4.65k|        {
   58|  4.65k|        }
_ZN8jsoncons6detail4spanIKsLm18446744073709551615EEC2EPS2_m:
   57|  4.84k|        {
   58|  4.84k|        }
_ZN8jsoncons6detail4spanIKiLm18446744073709551615EEC2EPS2_m:
   57|  48.4k|        {
   58|  48.4k|        }
_ZN8jsoncons6detail4spanIKlLm18446744073709551615EEC2EPS2_m:
   57|  41.3k|        {
   58|  41.3k|        }
_ZN8jsoncons6detail4spanIKfLm18446744073709551615EEC2EPS2_m:
   57|  3.00k|        {
   58|  3.00k|        }
_ZN8jsoncons6detail4spanIKdLm18446744073709551615EEC2EPS2_m:
   57|  8.11k|        {
   58|  8.11k|        }
_ZN8jsoncons6detail4spanIKmLm18446744073709551615EEC2INSt3__16vectorImNS5_9allocatorImEEEEEERT_PNS5_9enable_ifIXaaaaaantsr7is_spanISA_EE5valuentsr16extension_traits12is_std_arrayISA_EE5valuesr16extension_traits21is_compatible_elementISA_S2_EE5valuesr16extension_traits17has_data_and_sizeISA_EE5valueEvE4typeE:
   64|  3.56k|        {
   65|  3.56k|        }

_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2IS4_NS2_9allocatorIcEEEERKNS2_12basic_stringIcT_T0_EE:
   60|   824k|        {
   61|   824k|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE5beginEv:
   79|  1.24M|        {
   80|  1.24M|            return data_;
   81|  1.24M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE3endEv:
   83|  1.24M|        {
   84|  1.24M|            return data_ + length_;
   85|  1.24M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2EPKcm:
   48|   993k|        {
   49|   993k|        }

_ZN8jsoncons6detail12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|  13.4M|    {
   38|  13.4M|        using char_type = typename Result::value_type;
   39|       |
   40|  13.4M|        char_type buf[255];
   41|  13.4M|        char_type *p = buf;
   42|  13.4M|        const char_type* last = buf+255;
   43|       |
   44|  13.4M|        bool is_negative = value < 0;
   45|       |
   46|  13.4M|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 0, False: 13.4M]
  ------------------
   47|      0|        {
   48|      0|            do
   49|      0|            {
   50|      0|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|      0|            }
   52|      0|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 0, False: 0]
  |  Branch (52:37): [True: 0, False: 0]
  ------------------
   53|      0|        }
   54|  13.4M|        else
   55|  13.4M|        {
   56|       |
   57|  13.4M|            do
   58|  46.8M|            {
   59|  46.8M|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  46.8M|            }
   61|  46.8M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 33.4M, False: 13.4M]
  |  Branch (61:37): [True: 33.4M, False: 0]
  ------------------
   62|  13.4M|        }
   63|  13.4M|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|  13.4M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 13.4M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|  13.4M|        std::size_t count = (p - buf);
   66|  13.4M|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 0, False: 13.4M]
  ------------------
   67|      0|        {
   68|      0|            result.push_back('-');
   69|      0|            ++count;
   70|      0|        }
   71|  60.3M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 46.8M, False: 13.4M]
  ------------------
   72|  46.8M|        {
   73|  46.8M|            result.push_back(*p);
   74|  46.8M|        }
   75|       |
   76|  13.4M|        return count;
   77|  13.4M|    }
_ZN8jsoncons6detail12from_integerIlNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|  4.52M|    {
   38|  4.52M|        using char_type = typename Result::value_type;
   39|       |
   40|  4.52M|        char_type buf[255];
   41|  4.52M|        char_type *p = buf;
   42|  4.52M|        const char_type* last = buf+255;
   43|       |
   44|  4.52M|        bool is_negative = value < 0;
   45|       |
   46|  4.52M|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 2.18M, False: 2.33M]
  ------------------
   47|  2.18M|        {
   48|  2.18M|            do
   49|  10.9M|            {
   50|  10.9M|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|  10.9M|            }
   52|  10.9M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 8.80M, False: 2.18M]
  |  Branch (52:37): [True: 8.80M, False: 0]
  ------------------
   53|  2.18M|        }
   54|  2.33M|        else
   55|  2.33M|        {
   56|       |
   57|  2.33M|            do
   58|  11.4M|            {
   59|  11.4M|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  11.4M|            }
   61|  11.4M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 9.14M, False: 2.33M]
  |  Branch (61:37): [True: 9.14M, False: 0]
  ------------------
   62|  2.33M|        }
   63|  4.52M|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|  4.52M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 4.52M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|  4.52M|        std::size_t count = (p - buf);
   66|  4.52M|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 2.18M, False: 2.33M]
  ------------------
   67|  2.18M|        {
   68|  2.18M|            result.push_back('-');
   69|  2.18M|            ++count;
   70|  2.18M|        }
   71|  26.9M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 22.4M, False: 4.52M]
  ------------------
   72|  22.4M|        {
   73|  22.4M|            result.push_back(*p);
   74|  22.4M|        }
   75|       |
   76|  4.52M|        return count;
   77|  4.52M|    }
_ZN8jsoncons6detail12write_doubleC2ENS_18float_chars_formatEi:
  472|  17.9M|        {
  473|  17.9M|    #if !defined(JSONCONS_NO_LOCALECONV)
  474|  17.9M|            struct lconv *lc = localeconv();
  475|  17.9M|            if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (475:17): [True: 17.9M, False: 0]
  |  Branch (475:34): [True: 17.9M, False: 0]
  ------------------
  476|  17.9M|            {
  477|  17.9M|                decimal_point_ = lc->decimal_point[0];
  478|  17.9M|            }
  479|  17.9M|    #endif
  480|  17.9M|        }
_ZN8jsoncons6detail12write_doubleclINS_11string_sinkINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEEmdRT_:
  487|  17.9M|        {
  488|  17.9M|            std::size_t count = 0;
  489|       |
  490|  17.9M|            char number_buffer[200];
  491|  17.9M|            int length = 0;
  492|       |
  493|  17.9M|            switch (float_format_)
  494|  17.9M|            {
  495|      0|            case float_chars_format::fixed:
  ------------------
  |  Branch (495:13): [True: 0, False: 17.9M]
  ------------------
  496|      0|                {
  497|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (497:25): [True: 0, False: 0]
  ------------------
  498|      0|                    {
  499|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*f", precision_, val);
  500|      0|                        if (length < 0)
  ------------------
  |  Branch (500:29): [True: 0, False: 0]
  ------------------
  501|      0|                        {
  502|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  503|      0|                        }
  504|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  505|      0|                    }
  506|      0|                    else
  507|      0|                    {
  508|      0|                        if (!dtoa_fixed(val, decimal_point_, result))
  ------------------
  |  Branch (508:29): [True: 0, False: 0]
  ------------------
  509|      0|                        {
  510|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  511|      0|                        }
  512|      0|                    }
  513|      0|                }
  514|      0|                break;
  515|      0|            case float_chars_format::scientific:
  ------------------
  |  Branch (515:13): [True: 0, False: 17.9M]
  ------------------
  516|      0|                {
  517|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (517:25): [True: 0, False: 0]
  ------------------
  518|      0|                    {
  519|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*e", precision_, val);
  520|      0|                        if (length < 0)
  ------------------
  |  Branch (520:29): [True: 0, False: 0]
  ------------------
  521|      0|                        {
  522|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  523|      0|                        }
  524|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  525|      0|                    }
  526|      0|                    else
  527|      0|                    {
  528|      0|                        if (!dtoa_scientific(val, decimal_point_, result))
  ------------------
  |  Branch (528:29): [True: 0, False: 0]
  ------------------
  529|      0|                        {
  530|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  531|      0|                        }
  532|      0|                    }
  533|      0|                }
  534|      0|                break;
  535|  17.9M|            case float_chars_format::general:
  ------------------
  |  Branch (535:13): [True: 17.9M, False: 0]
  ------------------
  536|  17.9M|                {
  537|  17.9M|                    if (precision_ > 0)
  ------------------
  |  Branch (537:25): [True: 0, False: 17.9M]
  ------------------
  538|      0|                    {
  539|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*g", precision_, val);
  540|      0|                        if (length < 0)
  ------------------
  |  Branch (540:29): [True: 0, False: 0]
  ------------------
  541|      0|                        {
  542|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  543|      0|                        }
  544|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  545|      0|                    }
  546|  17.9M|                    else
  547|  17.9M|                    {
  548|  17.9M|                        if (!dtoa_general(val, decimal_point_, result))
  ------------------
  |  Branch (548:29): [True: 0, False: 17.9M]
  ------------------
  549|      0|                        {
  550|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  551|      0|                        }
  552|  17.9M|                    }             
  553|  17.9M|                    break;
  554|  17.9M|                }
  555|  17.9M|                default:
  ------------------
  |  Branch (555:17): [True: 0, False: 17.9M]
  ------------------
  556|      0|                    JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  557|      0|                    break;
  558|  17.9M|            }
  559|  17.9M|            return count;
  560|  17.9M|        }
_ZN8jsoncons6detail11dump_bufferINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmcRT_:
  238|   192k|    {
  239|   192k|        const char *sbeg = buffer;
  240|   192k|        const char *send = sbeg + length;
  241|       |
  242|   192k|        if (sbeg != send)
  ------------------
  |  Branch (242:13): [True: 192k, False: 0]
  ------------------
  243|   192k|        {
  244|   192k|            bool needs_dot = true;
  245|  4.40M|            for (const char* q = sbeg; q < send; ++q)
  ------------------
  |  Branch (245:40): [True: 4.21M, False: 192k]
  ------------------
  246|  4.21M|            {
  247|  4.21M|                switch (*q)
  248|  4.21M|                {
  249|   161k|                case '-':
  ------------------
  |  Branch (249:17): [True: 161k, False: 4.05M]
  ------------------
  250|  1.00M|                case '0':
  ------------------
  |  Branch (250:17): [True: 845k, False: 3.36M]
  ------------------
  251|  1.44M|                case '1':
  ------------------
  |  Branch (251:17): [True: 435k, False: 3.77M]
  ------------------
  252|  1.84M|                case '2':
  ------------------
  |  Branch (252:17): [True: 407k, False: 3.80M]
  ------------------
  253|  2.20M|                case '3':
  ------------------
  |  Branch (253:17): [True: 358k, False: 3.85M]
  ------------------
  254|  2.47M|                case '4':
  ------------------
  |  Branch (254:17): [True: 269k, False: 3.94M]
  ------------------
  255|  2.73M|                case '5':
  ------------------
  |  Branch (255:17): [True: 254k, False: 3.95M]
  ------------------
  256|  3.15M|                case '6':
  ------------------
  |  Branch (256:17): [True: 421k, False: 3.78M]
  ------------------
  257|  3.36M|                case '7':
  ------------------
  |  Branch (257:17): [True: 212k, False: 3.99M]
  ------------------
  258|  3.79M|                case '8':
  ------------------
  |  Branch (258:17): [True: 431k, False: 3.77M]
  ------------------
  259|  3.96M|                case '9':
  ------------------
  |  Branch (259:17): [True: 171k, False: 4.04M]
  ------------------
  260|  3.97M|                case '+':
  ------------------
  |  Branch (260:17): [True: 1.32k, False: 4.21M]
  ------------------
  261|  3.97M|                    result.push_back(*q);
  262|  3.97M|                    break;
  263|  48.0k|                case 'e':
  ------------------
  |  Branch (263:17): [True: 48.0k, False: 4.16M]
  ------------------
  264|  48.0k|                case 'E':
  ------------------
  |  Branch (264:17): [True: 0, False: 4.21M]
  ------------------
  265|  48.0k|                    result.push_back('e');
  266|  48.0k|                    needs_dot = false;
  267|  48.0k|                    break;
  268|   192k|                default:
  ------------------
  |  Branch (268:17): [True: 192k, False: 4.01M]
  ------------------
  269|   192k|                    if (*q == decimal_point)
  ------------------
  |  Branch (269:25): [True: 191k, False: 1.21k]
  ------------------
  270|   191k|                    {
  271|   191k|                        needs_dot = false;
  272|   191k|                        result.push_back('.');
  273|   191k|                    }
  274|   192k|                    break;
  275|  4.21M|                }
  276|  4.21M|            }
  277|   192k|            if (needs_dot)
  ------------------
  |  Branch (277:17): [True: 1.65k, False: 191k]
  ------------------
  278|  1.65k|            {
  279|  1.65k|                result.push_back('.');
  280|  1.65k|                result.push_back('0');
  281|  1.65k|            }
  282|   192k|        }
  283|   192k|    }
_ZN8jsoncons6detail15prettify_stringINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmiiiRT_:
  166|  16.6M|    {
  167|  16.6M|        int nb_digits = (int)length;
  168|  16.6M|        int offset;
  169|       |        /* v = buffer * 10^k
  170|       |           kk is such that 10^(kk-1) <= v < 10^kk
  171|       |           this way kk gives the position of the decimal point.
  172|       |        */
  173|  16.6M|        int kk = nb_digits + k;
  174|       |
  175|  16.6M|        if (nb_digits <= kk && kk <= max_exp)
  ------------------
  |  Branch (175:13): [True: 3.14M, False: 13.5M]
  |  Branch (175:32): [True: 2.01M, False: 1.13M]
  ------------------
  176|  2.01M|        {
  177|       |            /* the first digits are already in. Add some 0s and call it a day. */
  178|       |            /* the max_exp is a personal choice. Only 16 digits could possibly be relevant.
  179|       |             * Basically we want to print 12340000000 rather than 1234.0e7 or 1.234e10 */
  180|  9.16M|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (180:29): [True: 7.14M, False: 2.01M]
  ------------------
  181|  7.14M|            {
  182|  7.14M|                result.push_back(buffer[i]);
  183|  7.14M|            }
  184|  2.24M|            for (int i = nb_digits; i < kk; ++i)
  ------------------
  |  Branch (184:37): [True: 230k, False: 2.01M]
  ------------------
  185|   230k|            {
  186|   230k|                result.push_back('0');
  187|   230k|            }
  188|  2.01M|            result.push_back('.');
  189|  2.01M|            result.push_back('0');
  190|  2.01M|        } 
  191|  14.6M|        else if (0 < kk && kk <= max_exp)
  ------------------
  |  Branch (191:18): [True: 8.01M, False: 6.64M]
  |  Branch (191:28): [True: 6.88M, False: 1.13M]
  ------------------
  192|  6.88M|        {
  193|       |            /* comma number. Just insert a '.' at the correct location. */
  194|  21.1M|            for (int i = 0; i < kk; ++i)
  ------------------
  |  Branch (194:29): [True: 14.3M, False: 6.88M]
  ------------------
  195|  14.3M|            {
  196|  14.3M|                result.push_back(buffer[i]);
  197|  14.3M|            }
  198|  6.88M|            result.push_back('.');
  199|  32.0M|            for (int i = kk; i < nb_digits; ++i)
  ------------------
  |  Branch (199:30): [True: 25.2M, False: 6.88M]
  ------------------
  200|  25.2M|            {
  201|  25.2M|                result.push_back(buffer[i]);
  202|  25.2M|            }
  203|  6.88M|        } 
  204|  7.77M|        else if (min_exp < kk && kk <= 0)
  ------------------
  |  Branch (204:18): [True: 4.93M, False: 2.84M]
  |  Branch (204:34): [True: 3.80M, False: 1.13M]
  ------------------
  205|  3.80M|        {
  206|  3.80M|            offset = 2 - kk;
  207|       |
  208|  3.80M|            result.push_back('0');
  209|  3.80M|            result.push_back('.');
  210|  10.0M|            for (int i = 2; i < offset; ++i) 
  ------------------
  |  Branch (210:29): [True: 6.28M, False: 3.80M]
  ------------------
  211|  6.28M|                result.push_back('0');
  212|  55.2M|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (212:29): [True: 51.4M, False: 3.80M]
  ------------------
  213|  51.4M|            {
  214|  51.4M|                result.push_back(buffer[i]);
  215|  51.4M|            }
  216|  3.80M|        } 
  217|  3.97M|        else if (nb_digits == 1)
  ------------------
  |  Branch (217:18): [True: 844, False: 3.97M]
  ------------------
  218|    844|        {
  219|    844|            result.push_back(buffer[0]);
  220|    844|            result.push_back('e');
  221|    844|            fill_exponent(kk - 1, result);
  222|    844|        } 
  223|  3.97M|        else
  224|  3.97M|        {
  225|  3.97M|            result.push_back(buffer[0]);
  226|  3.97M|            result.push_back('.');
  227|  64.1M|            for (int i = 1; i < nb_digits; ++i)
  ------------------
  |  Branch (227:29): [True: 60.1M, False: 3.97M]
  ------------------
  228|  60.1M|            {
  229|  60.1M|                result.push_back(buffer[i]);
  230|  60.1M|            }
  231|  3.97M|            result.push_back('e');
  232|  3.97M|            fill_exponent(kk - 1, result);
  233|  3.97M|        }
  234|  16.6M|    }
_ZN8jsoncons6detail13fill_exponentINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEviRT_:
  131|  3.97M|    {
  132|  3.97M|        if (K < 0)
  ------------------
  |  Branch (132:13): [True: 2.84M, False: 1.13M]
  ------------------
  133|  2.84M|        {
  134|  2.84M|            result.push_back('-');
  135|  2.84M|            K = -K;
  136|  2.84M|        }
  137|  1.13M|        else
  138|  1.13M|        {
  139|  1.13M|            result.push_back('+'); // compatibility with sprintf
  140|  1.13M|        }
  141|       |
  142|  3.97M|        if (K < 10)
  ------------------
  |  Branch (142:13): [True: 2.50M, False: 1.47M]
  ------------------
  143|  2.50M|        {
  144|  2.50M|            result.push_back('0'); // compatibility with sprintf
  145|  2.50M|            result.push_back((char)('0' + K));
  146|  2.50M|        }
  147|  1.47M|        else if (K < 100)
  ------------------
  |  Branch (147:18): [True: 326k, False: 1.14M]
  ------------------
  148|   326k|        {
  149|   326k|            result.push_back((char)('0' + K / 10)); K %= 10;
  150|   326k|            result.push_back((char)('0' + K));
  151|   326k|        }
  152|  1.14M|        else if (K < 1000)
  ------------------
  |  Branch (152:18): [True: 1.14M, False: 0]
  ------------------
  153|  1.14M|        {
  154|  1.14M|            result.push_back((char)('0' + K / 100)); K %= 100;
  155|  1.14M|            result.push_back((char)('0' + K / 10)); K %= 10;
  156|  1.14M|            result.push_back((char)('0' + K));
  157|  1.14M|        }
  158|      0|        else
  159|      0|        {
  160|      0|            jsoncons::detail::from_integer(K, result);
  161|      0|        }
  162|  3.97M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_:
  458|  17.9M|    {
  459|  17.9M|        return dtoa_general(v, decimal_point, result, std::integral_constant<bool, std::numeric_limits<double>::is_iec559>());
  460|  17.9M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb1EEE:
  353|  17.9M|    {
  354|  17.9M|        if (v == 0)
  ------------------
  |  Branch (354:13): [True: 1.09M, False: 16.8M]
  ------------------
  355|  1.09M|        {
  356|  1.09M|            result.push_back('0');
  357|  1.09M|            result.push_back('.');
  358|  1.09M|            result.push_back('0');
  359|  1.09M|            return true;
  360|  1.09M|        }
  361|       |
  362|  16.8M|        int length = 0;
  363|  16.8M|        int k;
  364|       |
  365|  16.8M|        char buffer[100];
  366|       |
  367|  16.8M|        double u = std::signbit(v) ? -v : v;
  ------------------
  |  Branch (367:20): [True: 7.12M, False: 9.74M]
  ------------------
  368|  16.8M|        if (jsoncons::detail::grisu3(u, buffer, &length, &k))
  ------------------
  |  Branch (368:13): [True: 16.6M, False: 192k]
  ------------------
  369|  16.6M|        {
  370|  16.6M|            if (std::signbit(v))
  ------------------
  |  Branch (370:17): [True: 7.00M, False: 9.66M]
  ------------------
  371|  7.00M|            {
  372|  7.00M|                result.push_back('-');
  373|  7.00M|            }
  374|       |            // min exp: -4 is consistent with sprintf
  375|       |            // max exp: std::numeric_limits<double>::max_digits10
  376|  16.6M|            jsoncons::detail::prettify_string(buffer, length, k, -4, std::numeric_limits<double>::max_digits10, result);
  377|  16.6M|            return true;
  378|  16.6M|        }
  379|   192k|        else
  380|   192k|        {
  381|   192k|            return dtoa_general(v, decimal_point, result, std::false_type());
  382|   192k|        }
  383|  16.8M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb0EEE:
  320|   192k|    {
  321|   192k|        if (val == 0)
  ------------------
  |  Branch (321:13): [True: 0, False: 192k]
  ------------------
  322|      0|        {
  323|      0|            result.push_back('0');
  324|      0|            result.push_back('.');
  325|      0|            result.push_back('0');
  326|      0|            return true;
  327|      0|        }
  328|       |
  329|   192k|        jsoncons::detail::chars_to to_double_;
  330|       |
  331|   192k|        char buffer[100];
  332|   192k|        int precision = std::numeric_limits<double>::digits10;
  333|   192k|        int length = snprintf(buffer, sizeof(buffer), "%1.*g", precision, val);
  334|   192k|        if (length < 0)
  ------------------
  |  Branch (334:13): [True: 0, False: 192k]
  ------------------
  335|      0|        {
  336|      0|            return false;
  337|      0|        }
  338|   192k|        if (to_double_(buffer, sizeof(buffer)) != val)
  ------------------
  |  Branch (338:13): [True: 192k, False: 690]
  ------------------
  339|   192k|        {
  340|   192k|            const int precision2 = std::numeric_limits<double>::max_digits10;
  341|   192k|            length = snprintf(buffer, sizeof(buffer), "%1.*g", precision2, val);
  342|   192k|            if (length < 0)
  ------------------
  |  Branch (342:17): [True: 0, False: 192k]
  ------------------
  343|      0|            {
  344|      0|                return false;
  345|      0|            }
  346|   192k|        }
  347|   192k|        dump_buffer(buffer, length, decimal_point, result);
  348|   192k|        return true;
  349|   192k|    }
_ZN8jsoncons6detail15prettify_stringINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEvPKcmiiiRT_:
  166|   136k|    {
  167|   136k|        int nb_digits = (int)length;
  168|   136k|        int offset;
  169|       |        /* v = buffer * 10^k
  170|       |           kk is such that 10^(kk-1) <= v < 10^kk
  171|       |           this way kk gives the position of the decimal point.
  172|       |        */
  173|   136k|        int kk = nb_digits + k;
  174|       |
  175|   136k|        if (nb_digits <= kk && kk <= max_exp)
  ------------------
  |  Branch (175:13): [True: 126k, False: 10.7k]
  |  Branch (175:32): [True: 4.11k, False: 122k]
  ------------------
  176|  4.11k|        {
  177|       |            /* the first digits are already in. Add some 0s and call it a day. */
  178|       |            /* the max_exp is a personal choice. Only 16 digits could possibly be relevant.
  179|       |             * Basically we want to print 12340000000 rather than 1234.0e7 or 1.234e10 */
  180|  13.4k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (180:29): [True: 9.35k, False: 4.11k]
  ------------------
  181|  9.35k|            {
  182|  9.35k|                result.push_back(buffer[i]);
  183|  9.35k|            }
  184|  12.3k|            for (int i = nb_digits; i < kk; ++i)
  ------------------
  |  Branch (184:37): [True: 8.26k, False: 4.11k]
  ------------------
  185|  8.26k|            {
  186|  8.26k|                result.push_back('0');
  187|  8.26k|            }
  188|  4.11k|            result.push_back('.');
  189|  4.11k|            result.push_back('0');
  190|  4.11k|        } 
  191|   132k|        else if (0 < kk && kk <= max_exp)
  ------------------
  |  Branch (191:18): [True: 129k, False: 3.44k]
  |  Branch (191:28): [True: 6.99k, False: 122k]
  ------------------
  192|  6.99k|        {
  193|       |            /* comma number. Just insert a '.' at the correct location. */
  194|  15.1k|            for (int i = 0; i < kk; ++i)
  ------------------
  |  Branch (194:29): [True: 8.20k, False: 6.99k]
  ------------------
  195|  8.20k|            {
  196|  8.20k|                result.push_back(buffer[i]);
  197|  8.20k|            }
  198|  6.99k|            result.push_back('.');
  199|  15.5k|            for (int i = kk; i < nb_digits; ++i)
  ------------------
  |  Branch (199:30): [True: 8.57k, False: 6.99k]
  ------------------
  200|  8.57k|            {
  201|  8.57k|                result.push_back(buffer[i]);
  202|  8.57k|            }
  203|  6.99k|        } 
  204|   125k|        else if (min_exp < kk && kk <= 0)
  ------------------
  |  Branch (204:18): [True: 123k, False: 2.52k]
  |  Branch (204:34): [True: 918, False: 122k]
  ------------------
  205|    918|        {
  206|    918|            offset = 2 - kk;
  207|       |
  208|    918|            result.push_back('0');
  209|    918|            result.push_back('.');
  210|  2.32k|            for (int i = 2; i < offset; ++i) 
  ------------------
  |  Branch (210:29): [True: 1.40k, False: 918]
  ------------------
  211|  1.40k|                result.push_back('0');
  212|  2.93k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (212:29): [True: 2.01k, False: 918]
  ------------------
  213|  2.01k|            {
  214|  2.01k|                result.push_back(buffer[i]);
  215|  2.01k|            }
  216|    918|        } 
  217|   124k|        else if (nb_digits == 1)
  ------------------
  |  Branch (217:18): [True: 2.70k, False: 122k]
  ------------------
  218|  2.70k|        {
  219|  2.70k|            result.push_back(buffer[0]);
  220|  2.70k|            result.push_back('e');
  221|  2.70k|            fill_exponent(kk - 1, result);
  222|  2.70k|        } 
  223|   122k|        else
  224|   122k|        {
  225|   122k|            result.push_back(buffer[0]);
  226|   122k|            result.push_back('.');
  227|   672k|            for (int i = 1; i < nb_digits; ++i)
  ------------------
  |  Branch (227:29): [True: 549k, False: 122k]
  ------------------
  228|   549k|            {
  229|   549k|                result.push_back(buffer[i]);
  230|   549k|            }
  231|   122k|            result.push_back('e');
  232|   122k|            fill_exponent(kk - 1, result);
  233|   122k|        }
  234|   136k|    }
_ZN8jsoncons6detail13fill_exponentINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEviRT_:
  131|   124k|    {
  132|   124k|        if (K < 0)
  ------------------
  |  Branch (132:13): [True: 2.52k, False: 122k]
  ------------------
  133|  2.52k|        {
  134|  2.52k|            result.push_back('-');
  135|  2.52k|            K = -K;
  136|  2.52k|        }
  137|   122k|        else
  138|   122k|        {
  139|   122k|            result.push_back('+'); // compatibility with sprintf
  140|   122k|        }
  141|       |
  142|   124k|        if (K < 10)
  ------------------
  |  Branch (142:13): [True: 643, False: 124k]
  ------------------
  143|    643|        {
  144|    643|            result.push_back('0'); // compatibility with sprintf
  145|    643|            result.push_back((char)('0' + K));
  146|    643|        }
  147|   124k|        else if (K < 100)
  ------------------
  |  Branch (147:18): [True: 123k, False: 662]
  ------------------
  148|   123k|        {
  149|   123k|            result.push_back((char)('0' + K / 10)); K %= 10;
  150|   123k|            result.push_back((char)('0' + K));
  151|   123k|        }
  152|    662|        else if (K < 1000)
  ------------------
  |  Branch (152:18): [True: 223, False: 439]
  ------------------
  153|    223|        {
  154|    223|            result.push_back((char)('0' + K / 100)); K %= 100;
  155|    223|            result.push_back((char)('0' + K / 10)); K %= 10;
  156|    223|            result.push_back((char)('0' + K));
  157|    223|        }
  158|    439|        else
  159|    439|        {
  160|    439|            jsoncons::detail::from_integer(K, result);
  161|    439|        }
  162|   124k|    }
_ZN8jsoncons6detail12from_integerIiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|    439|    {
   38|    439|        using char_type = typename Result::value_type;
   39|       |
   40|    439|        char_type buf[255];
   41|    439|        char_type *p = buf;
   42|    439|        const char_type* last = buf+255;
   43|       |
   44|    439|        bool is_negative = value < 0;
   45|       |
   46|    439|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 0, False: 439]
  ------------------
   47|      0|        {
   48|      0|            do
   49|      0|            {
   50|      0|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|      0|            }
   52|      0|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 0, False: 0]
  |  Branch (52:37): [True: 0, False: 0]
  ------------------
   53|      0|        }
   54|    439|        else
   55|    439|        {
   56|       |
   57|    439|            do
   58|  2.90k|            {
   59|  2.90k|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  2.90k|            }
   61|  2.90k|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 2.46k, False: 439]
  |  Branch (61:37): [True: 2.46k, False: 0]
  ------------------
   62|    439|        }
   63|    439|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|    439|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 439]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|    439|        std::size_t count = (p - buf);
   66|    439|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 0, False: 439]
  ------------------
   67|      0|        {
   68|      0|            result.push_back('-');
   69|      0|            ++count;
   70|      0|        }
   71|  3.34k|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 2.90k, False: 439]
  ------------------
   72|  2.90k|        {
   73|  2.90k|            result.push_back(*p);
   74|  2.90k|        }
   75|       |
   76|    439|        return count;
   77|    439|    }
_ZN8jsoncons6detail21integer_to_string_hexImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   84|   115k|    {
   85|   115k|        using char_type = typename Result::value_type;
   86|       |
   87|   115k|        char_type buf[255];
   88|   115k|        char_type *p = buf;
   89|   115k|        const char_type* last = buf+255;
   90|       |
   91|   115k|        bool is_negative = value < 0;
   92|       |
   93|   115k|        if (value < 0)
  ------------------
  |  Branch (93:13): [True: 0, False: 115k]
  ------------------
   94|      0|        {
   95|      0|            do
   96|      0|            {
   97|      0|                *p++ = to_hex_character(0-(value % 16));
   98|      0|            }
   99|      0|            while ((value /= 16) && (p < last));
  ------------------
  |  Branch (99:20): [True: 0, False: 0]
  |  Branch (99:37): [True: 0, False: 0]
  ------------------
  100|      0|        }
  101|   115k|        else
  102|   115k|        {
  103|       |
  104|   115k|            do
  105|   231k|            {
  106|   231k|                *p++ = to_hex_character(value % 16);
  107|   231k|            }
  108|   231k|            while ((value /= 16) && (p < last));
  ------------------
  |  Branch (108:20): [True: 115k, False: 115k]
  |  Branch (108:37): [True: 115k, False: 0]
  ------------------
  109|   115k|        }
  110|   115k|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|   115k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 115k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  111|       |
  112|   115k|        std::size_t count = (p - buf);
  113|   115k|        if (is_negative)
  ------------------
  |  Branch (113:13): [True: 0, False: 115k]
  ------------------
  114|      0|        {
  115|      0|            result.push_back('-');
  116|      0|            ++count;
  117|      0|        }
  118|   347k|        while (--p >= buf)
  ------------------
  |  Branch (118:16): [True: 231k, False: 115k]
  ------------------
  119|   231k|        {
  120|   231k|            result.push_back(*p);
  121|   231k|        }
  122|       |
  123|   115k|        return count;
  124|   115k|    }
_ZN8jsoncons6detail16to_hex_characterEh:
   28|   231k|    {
   29|   231k|        return (char)((c < 10) ? ('0' + c) : ('A' - 10 + c));
  ------------------
  |  Branch (29:23): [True: 219k, False: 11.7k]
  ------------------
   30|   231k|    }

_ZN8jsoncons16extension_traits16to_plain_pointerImEEPT_S3_:
  238|  5.47M|    {       
  239|  5.47M|        return (ptr);
  240|  5.47M|    }  

_ZN8jsoncons24basic_item_event_visitorIcED2Ev:
   35|  9.77k|        virtual ~basic_item_event_visitor() noexcept = default;
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE11visit_flushEv:
  856|  2.39k|        {
  857|  2.39k|            destination_->flush();
  858|  2.39k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  861|  2.57M|        {
  862|  2.57M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (862:17): [True: 2.54M, False: 29.9k]
  ------------------
  863|  2.54M|            {
  864|  2.54M|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (864:21): [True: 2.54M, False: 958]
  |  Branch (864:73): [True: 12.1k, False: 2.52M]
  ------------------
  865|  12.1k|                {
  866|  12.1k|                    key_buffer_.push_back(',');
  867|  12.1k|                }
  868|  2.54M|                level_stack_.emplace_back(target_t::buffer, container_t::object);
  869|  2.54M|                key_buffer_.push_back('{');
  870|  2.54M|                return true;
  871|  2.54M|            }
  872|  29.9k|            else
  873|  29.9k|            {
  874|  29.9k|                switch (level_stack_.back().target())
  875|  29.9k|                {
  876|  27.2k|                    case target_t::buffer:
  ------------------
  |  Branch (876:21): [True: 27.2k, False: 2.75k]
  ------------------
  877|  27.2k|                        level_stack_.emplace_back(target_t::buffer, container_t::object);
  878|  27.2k|                        key_buffer_.push_back('{');
  879|  27.2k|                        return true;
  880|  2.75k|                    default:
  ------------------
  |  Branch (880:21): [True: 2.75k, False: 27.2k]
  ------------------
  881|  2.75k|                        level_stack_.emplace_back(target_t::destination, container_t::object);
  882|  2.75k|                        return destination_->begin_object(tag, context, ec);
  883|  29.9k|                }
  884|  29.9k|            }
  885|  2.57M|        }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6is_keyEv:
  786|   162M|            {
  787|   162M|                return even_odd_ == 0;
  788|   162M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6targetEv:
  796|   105M|            {
  797|   105M|                return state_;
  798|   105M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level5countEv:
  801|  48.4M|            {
  802|  48.4M|                return count_;
  803|  48.4M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5levelC2ENS4_8target_tENS4_11container_tE:
  770|  11.7M|            {
  771|  11.7M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  888|   603k|        {
  889|   603k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (889:17): [True: 556k, False: 47.6k]
  ------------------
  890|   556k|            {
  891|   556k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (891:21): [True: 553k, False: 2.84k]
  |  Branch (891:73): [True: 18.7k, False: 534k]
  ------------------
  892|  18.7k|                {
  893|  18.7k|                    key_buffer_.push_back(',');
  894|  18.7k|                }
  895|   556k|                level_stack_.emplace_back(target_t::buffer, container_t::object);
  896|   556k|                key_buffer_.push_back('{');
  897|   556k|                return true;
  898|   556k|            }
  899|  47.6k|            else
  900|  47.6k|            {
  901|  47.6k|                switch (level_stack_.back().target())
  902|  47.6k|                {
  903|  41.6k|                    case target_t::buffer:
  ------------------
  |  Branch (903:21): [True: 41.6k, False: 5.99k]
  ------------------
  904|  41.6k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (904:29): [True: 17.7k, False: 23.9k]
  |  Branch (904:65): [True: 8.63k, False: 9.07k]
  ------------------
  905|  8.63k|                        {
  906|  8.63k|                            key_buffer_.push_back(',');
  907|  8.63k|                        }
  908|  41.6k|                        level_stack_.emplace_back(target_t::buffer, container_t::object);
  909|  41.6k|                        key_buffer_.push_back('{');
  910|  41.6k|                        return true;
  911|  5.99k|                    default:
  ------------------
  |  Branch (911:21): [True: 5.99k, False: 41.6k]
  ------------------
  912|  5.99k|                        level_stack_.emplace_back(target_t::destination, container_t::object);
  913|  5.99k|                        return destination_->begin_object(length, tag, context, ec);
  914|  47.6k|                }
  915|  47.6k|            }
  916|   603k|        }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level9is_objectEv:
  791|  98.2M|            {
  792|  98.2M|                return type_ == container_t::object;
  793|  98.2M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE16visit_end_objectERKNS_11ser_contextERNS1_10error_codeE:
  919|  58.1k|        {
  920|  58.1k|            bool retval = true;
  921|  58.1k|            switch (level_stack_.back().target())
  922|  58.1k|            {
  923|  55.8k|                case target_t::buffer:
  ------------------
  |  Branch (923:17): [True: 55.8k, False: 2.27k]
  ------------------
  924|  55.8k|                    key_buffer_.push_back('}');
  925|  55.8k|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  55.8k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 55.8k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  926|  55.8k|                    level_stack_.pop_back();
  927|       |                    
  928|  55.8k|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (928:25): [True: 2.40k, False: 53.4k]
  ------------------
  929|  2.40k|                    {
  930|  2.40k|                        retval = destination_->key(key_buffer_,context, ec);
  931|  2.40k|                        key_buffer_.clear();
  932|  2.40k|                    }
  933|  53.4k|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (933:30): [True: 22.5k, False: 30.9k]
  ------------------
  934|  22.5k|                    {
  935|  22.5k|                        key_buffer_.push_back(':');
  936|  22.5k|                    }
  937|  55.8k|                    level_stack_.back().advance();
  938|  55.8k|                    break;
  939|  2.27k|                default:
  ------------------
  |  Branch (939:17): [True: 2.27k, False: 55.8k]
  ------------------
  940|  2.27k|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  2.27k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.27k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  941|  2.27k|                    level_stack_.pop_back();
  942|  2.27k|                    level_stack_.back().advance();
  943|  2.27k|                    retval = destination_->end_object(context, ec);
  944|  2.27k|                    break;
  945|  58.1k|            }
  946|  58.1k|            return retval;
  947|  58.1k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level7advanceEv:
  774|  51.5M|            {
  775|  51.5M|                if (!is_key())
  ------------------
  |  Branch (775:21): [True: 43.3M, False: 8.23M]
  ------------------
  776|  43.3M|                {
  777|  43.3M|                    ++count_;
  778|  43.3M|                }
  779|  51.5M|                if (is_object())
  ------------------
  |  Branch (779:21): [True: 16.4M, False: 35.1M]
  ------------------
  780|  16.4M|                {
  781|  16.4M|                    even_odd_ = !even_odd_;
  782|  16.4M|                }
  783|  51.5M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  950|  1.39M|        {
  951|  1.39M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (951:17): [True: 6.55k, False: 1.38M]
  ------------------
  952|  6.55k|            {
  953|  6.55k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (953:21): [True: 5.96k, False: 593]
  |  Branch (953:73): [True: 4.61k, False: 1.34k]
  ------------------
  954|  4.61k|                {
  955|  4.61k|                    key_buffer_.push_back(',');
  956|  4.61k|                }
  957|  6.55k|                level_stack_.emplace_back(target_t::buffer, container_t::array);
  958|  6.55k|                key_buffer_.push_back('[');
  959|  6.55k|                return true;
  960|  6.55k|            }
  961|  1.38M|            else
  962|  1.38M|            {
  963|  1.38M|                switch (level_stack_.back().target())
  964|  1.38M|                {
  965|  1.34M|                    case target_t::buffer:
  ------------------
  |  Branch (965:21): [True: 1.34M, False: 43.3k]
  ------------------
  966|  1.34M|                        if (level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (966:29): [True: 2.23k, False: 1.33M]
  |  Branch (966:64): [True: 1.73k, False: 495]
  ------------------
  967|  1.73k|                        {
  968|  1.73k|                            key_buffer_.push_back(',');
  969|  1.73k|                        }
  970|  1.34M|                        level_stack_.emplace_back(target_t::buffer, container_t::array);
  971|  1.34M|                        key_buffer_.push_back('[');
  972|  1.34M|                        return true;
  973|  43.3k|                    default:
  ------------------
  |  Branch (973:21): [True: 43.3k, False: 1.34M]
  ------------------
  974|  43.3k|                        level_stack_.emplace_back(target_t::destination, container_t::array);
  975|  43.3k|                        return destination_->begin_array(tag, context, ec);
  976|  1.38M|                }
  977|  1.38M|            }
  978|  1.39M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  981|  7.21M|        {
  982|  7.21M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (982:17): [True: 549k, False: 6.66M]
  ------------------
  983|   549k|            {
  984|   549k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (984:21): [True: 540k, False: 9.11k]
  |  Branch (984:73): [True: 529k, False: 10.3k]
  ------------------
  985|   529k|                {
  986|   529k|                    key_buffer_.push_back(',');
  987|   529k|                }
  988|   549k|                level_stack_.emplace_back(target_t::buffer, container_t::array);
  989|   549k|                key_buffer_.push_back('[');
  990|   549k|                return true;
  991|   549k|            }
  992|  6.66M|            else
  993|  6.66M|            {
  994|  6.66M|                switch (level_stack_.back().target())
  995|  6.66M|                {
  996|  4.72M|                    case target_t::buffer:
  ------------------
  |  Branch (996:21): [True: 4.72M, False: 1.94M]
  ------------------
  997|  4.72M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (997:29): [True: 4.18M, False: 536k]
  |  Branch (997:65): [True: 450k, False: 3.73M]
  ------------------
  998|   450k|                        {
  999|   450k|                            key_buffer_.push_back(',');
 1000|   450k|                        }
 1001|  4.72M|                        level_stack_.emplace_back(target_t::buffer, container_t::array);
 1002|  4.72M|                        key_buffer_.push_back('[');
 1003|  4.72M|                        return true;
 1004|  1.94M|                    default:
  ------------------
  |  Branch (1004:21): [True: 1.94M, False: 4.72M]
  ------------------
 1005|  1.94M|                        level_stack_.emplace_back(target_t::destination, container_t::array);
 1006|  1.94M|                        return destination_->begin_array(length, tag, context, ec);
 1007|  6.66M|                }
 1008|  6.66M|            }
 1009|  7.21M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE15visit_end_arrayERKNS_11ser_contextERNS1_10error_codeE:
 1012|  1.92M|        {
 1013|  1.92M|            bool retval = true;
 1014|  1.92M|            switch (level_stack_.back().target())
 1015|  1.92M|            {
 1016|  1.71M|                case target_t::buffer:
  ------------------
  |  Branch (1016:17): [True: 1.71M, False: 211k]
  ------------------
 1017|  1.71M|                    key_buffer_.push_back(']');
 1018|  1.71M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  1.71M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.71M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1019|  1.71M|                    level_stack_.pop_back();
 1020|  1.71M|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (1020:25): [True: 8.92k, False: 1.70M]
  ------------------
 1021|  8.92k|                    {
 1022|  8.92k|                        retval = destination_->key(key_buffer_, context, ec);
 1023|  8.92k|                        key_buffer_.clear();
 1024|  8.92k|                    }
 1025|  1.70M|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (1025:30): [True: 535k, False: 1.17M]
  ------------------
 1026|   535k|                    {
 1027|   535k|                        key_buffer_.push_back(':');
 1028|   535k|                    }
 1029|  1.71M|                    level_stack_.back().advance();
 1030|  1.71M|                    break;
 1031|   211k|                default:
  ------------------
  |  Branch (1031:17): [True: 211k, False: 1.71M]
  ------------------
 1032|   211k|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|   211k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 211k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1033|   211k|                    level_stack_.pop_back();
 1034|   211k|                    level_stack_.back().advance();
 1035|   211k|                    retval = destination_->end_array(context, ec);
 1036|   211k|                    break;
 1037|  1.92M|            }
 1038|  1.92M|            return retval;
 1039|  1.92M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1473|   785k|        {
 1474|   785k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1474:17): [True: 296k, False: 489k]
  |  Branch (1474:49): [True: 483k, False: 5.76k]
  ------------------
 1475|   780k|            {
 1476|   780k|                key_.clear(); 
 1477|   780k|                key_.insert(key_.begin(), null_constant.begin(), null_constant.end());
 1478|   780k|            }
 1479|       |
 1480|   785k|            bool retval;
 1481|   785k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1481:17): [True: 296k, False: 489k]
  ------------------
 1482|   296k|            {
 1483|   296k|                switch (level_stack_.back().target())
 1484|   296k|                {
 1485|   295k|                    case target_t::buffer:
  ------------------
  |  Branch (1485:21): [True: 295k, False: 1.22k]
  ------------------
 1486|   295k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1486:29): [True: 293k, False: 1.52k]
  ------------------
 1487|   293k|                        {
 1488|   293k|                            key_buffer_.push_back(',');
 1489|   293k|                        }
 1490|   295k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1491|   295k|                        key_buffer_.push_back(':');
 1492|   295k|                        retval = true; 
 1493|   295k|                        break;
 1494|  1.22k|                    default:
  ------------------
  |  Branch (1494:21): [True: 1.22k, False: 295k]
  ------------------
 1495|  1.22k|                        retval = destination_->key(key_, context, ec);
 1496|  1.22k|                        break;
 1497|   296k|                }
 1498|   296k|            }
 1499|   489k|            else
 1500|   489k|            {
 1501|   489k|                switch (level_stack_.back().target())
 1502|   489k|                {
 1503|   483k|                    case target_t::buffer:
  ------------------
  |  Branch (1503:21): [True: 483k, False: 5.76k]
  ------------------
 1504|   483k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1504:29): [True: 189k, False: 294k]
  |  Branch (1504:65): [True: 188k, False: 412]
  ------------------
 1505|   188k|                        {
 1506|   188k|                            key_buffer_.push_back(',');
 1507|   188k|                        }
 1508|   483k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1509|   483k|                        retval = true; 
 1510|   483k|                        break;
 1511|  5.76k|                    default:
  ------------------
  |  Branch (1511:21): [True: 5.76k, False: 483k]
  ------------------
 1512|  5.76k|                        retval = destination_->null_value(tag, context, ec);
 1513|  5.76k|                        break;
 1514|   489k|                }
 1515|   489k|            }
 1516|       |
 1517|   785k|            level_stack_.back().advance();
 1518|   785k|            return retval;
 1519|   785k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1417|   932k|        {
 1418|   932k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1418:17): [True: 283k, False: 649k]
  |  Branch (1418:49): [True: 647k, False: 1.82k]
  ------------------
 1419|   930k|            {
 1420|   930k|                key_.clear(); 
 1421|   930k|                if (value)
  ------------------
  |  Branch (1421:21): [True: 741k, False: 188k]
  ------------------
 1422|   741k|                {
 1423|   741k|                    key_.insert(key_.begin(), true_constant.begin(), true_constant.end());
 1424|   741k|                }
 1425|   188k|                else
 1426|   188k|                {
 1427|   188k|                    key_.insert(key_.begin(), false_constant.begin(), false_constant.end());
 1428|   188k|                }
 1429|   930k|            }
 1430|       |
 1431|   932k|            bool retval;
 1432|   932k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1432:17): [True: 283k, False: 649k]
  ------------------
 1433|   283k|            {
 1434|   283k|                switch (level_stack_.back().target())
 1435|   283k|                {
 1436|   282k|                    case target_t::buffer:
  ------------------
  |  Branch (1436:21): [True: 282k, False: 648]
  ------------------
 1437|   282k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1437:29): [True: 281k, False: 832]
  ------------------
 1438|   281k|                        {
 1439|   281k|                            key_buffer_.push_back(',');
 1440|   281k|                        }
 1441|   282k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1442|   282k|                        key_buffer_.push_back(':');
 1443|   282k|                        retval = true; 
 1444|   282k|                        break;
 1445|    648|                    default:
  ------------------
  |  Branch (1445:21): [True: 648, False: 282k]
  ------------------
 1446|    648|                        retval = destination_->key(key_, context, ec);
 1447|    648|                        break;
 1448|   283k|                }
 1449|   283k|            }
 1450|   649k|            else
 1451|   649k|            {
 1452|   649k|                switch (level_stack_.back().target())
 1453|   649k|                {
 1454|   647k|                    case target_t::buffer:
  ------------------
  |  Branch (1454:21): [True: 647k, False: 1.82k]
  ------------------
 1455|   647k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1455:29): [True: 365k, False: 282k]
  |  Branch (1455:65): [True: 364k, False: 456]
  ------------------
 1456|   364k|                        {
 1457|   364k|                            key_buffer_.push_back(',');
 1458|   364k|                        }
 1459|   647k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1460|   647k|                        retval = true; 
 1461|   647k|                        break;
 1462|  1.82k|                    default:
  ------------------
  |  Branch (1462:21): [True: 1.82k, False: 647k]
  ------------------
 1463|  1.82k|                        retval = destination_->bool_value(value, tag, context, ec);
 1464|  1.82k|                        break;
 1465|   649k|                }
 1466|   649k|            }
 1467|       |
 1468|   932k|            level_stack_.back().advance();
 1469|   932k|            return retval;
 1470|   932k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_stringERKNS_6detail17basic_string_viewIcNS1_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1045|  1.27M|        {
 1046|  1.27M|            bool retval;
 1047|       |
 1048|  1.27M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1048:17): [True: 328k, False: 950k]
  ------------------
 1049|   328k|            {
 1050|   328k|                switch (level_stack_.back().target())
 1051|   328k|                {
 1052|   317k|                    case target_t::buffer:
  ------------------
  |  Branch (1052:21): [True: 317k, False: 11.1k]
  ------------------
 1053|   317k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1053:29): [True: 293k, False: 23.9k]
  ------------------
 1054|   293k|                        {
 1055|   293k|                            key_buffer_.push_back(',');
 1056|   293k|                        }
 1057|   317k|                        key_buffer_.push_back('\"');
 1058|   317k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1059|   317k|                        key_buffer_.push_back('\"');
 1060|   317k|                        key_buffer_.push_back(':');
 1061|   317k|                        retval = true;
 1062|   317k|                        break;
 1063|  11.1k|                    default:
  ------------------
  |  Branch (1063:21): [True: 11.1k, False: 317k]
  ------------------
 1064|  11.1k|                        retval = destination_->key(value, context, ec);
 1065|  11.1k|                        break;
 1066|   328k|                }
 1067|   328k|            }
 1068|   950k|            else
 1069|   950k|            {
 1070|   950k|                switch (level_stack_.back().target())
 1071|   950k|                {
 1072|   931k|                    case target_t::buffer:
  ------------------
  |  Branch (1072:21): [True: 931k, False: 19.4k]
  ------------------
 1073|   931k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1073:29): [True: 636k, False: 294k]
  |  Branch (1073:65): [True: 630k, False: 6.84k]
  ------------------
 1074|   630k|                        {
 1075|   630k|                            key_buffer_.push_back(',');
 1076|   630k|                        }
 1077|   931k|                        key_buffer_.push_back('\"');
 1078|   931k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1079|   931k|                        key_buffer_.push_back('\"');
 1080|   931k|                        retval = true;
 1081|   931k|                        break;
 1082|  19.4k|                    default:
  ------------------
  |  Branch (1082:21): [True: 19.4k, False: 931k]
  ------------------
 1083|  19.4k|                        retval = destination_->string_value(value, tag, context, ec);
 1084|  19.4k|                        break;
 1085|   950k|                }
 1086|   950k|            }
 1087|       |
 1088|  1.27M|            level_stack_.back().advance();
 1089|  1.27M|            return retval;
 1090|  1.27M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1096|  9.92M|        {
 1097|  9.92M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1097:17): [True: 3.73M, False: 6.19M]
  |  Branch (1097:49): [True: 5.56M, False: 623k]
  ------------------
 1098|  9.29M|            {
 1099|  9.29M|                key_.clear();
 1100|  9.29M|                switch (tag)
 1101|  9.29M|                {
 1102|  1.19k|                    case semantic_tag::base64:
  ------------------
  |  Branch (1102:21): [True: 1.19k, False: 9.29M]
  ------------------
 1103|  1.19k|                        encode_base64(value.begin(), value.end(), key_);
 1104|  1.19k|                        break;
 1105|  1.58k|                    case semantic_tag::base16:
  ------------------
  |  Branch (1105:21): [True: 1.58k, False: 9.29M]
  ------------------
 1106|  1.58k|                        encode_base16(value.begin(), value.end(),key_);
 1107|  1.58k|                        break;
 1108|  9.29M|                    default:
  ------------------
  |  Branch (1108:21): [True: 9.29M, False: 2.77k]
  ------------------
 1109|  9.29M|                        encode_base64url(value.begin(), value.end(),key_);
 1110|  9.29M|                        break;
 1111|  9.29M|                }
 1112|  9.29M|            }
 1113|       |
 1114|  9.92M|            bool retval;
 1115|  9.92M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1115:17): [True: 3.73M, False: 6.19M]
  ------------------
 1116|  3.73M|            {
 1117|  3.73M|                switch (level_stack_.back().target())
 1118|  3.73M|                {
 1119|  3.24M|                    case target_t::buffer:
  ------------------
  |  Branch (1119:21): [True: 3.24M, False: 485k]
  ------------------
 1120|  3.24M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1120:29): [True: 3.24M, False: 3.00k]
  ------------------
 1121|  3.24M|                        {
 1122|  3.24M|                            key_buffer_.push_back(',');
 1123|  3.24M|                        }
 1124|  3.24M|                        key_buffer_.push_back('\"');
 1125|  3.24M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1126|  3.24M|                        key_buffer_.push_back('\"');
 1127|  3.24M|                        key_buffer_.push_back(':');
 1128|  3.24M|                        retval = true; 
 1129|  3.24M|                        break;
 1130|   485k|                    default:
  ------------------
  |  Branch (1130:21): [True: 485k, False: 3.24M]
  ------------------
 1131|   485k|                        retval = destination_->key(key_, context, ec);
 1132|   485k|                        break;
 1133|  3.73M|                }
 1134|  3.73M|            }
 1135|  6.19M|            else
 1136|  6.19M|            {
 1137|  6.19M|                switch (level_stack_.back().target())
 1138|  6.19M|                {
 1139|  5.56M|                    case target_t::buffer:
  ------------------
  |  Branch (1139:21): [True: 5.56M, False: 623k]
  ------------------
 1140|  5.56M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1140:29): [True: 2.32M, False: 3.24M]
  |  Branch (1140:65): [True: 2.31M, False: 7.14k]
  ------------------
 1141|  2.31M|                        {
 1142|  2.31M|                            key_buffer_.push_back(',');
 1143|  2.31M|                        }
 1144|  5.56M|                        key_buffer_.push_back('\"');
 1145|  5.56M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1146|  5.56M|                        key_buffer_.push_back('\"');
 1147|  5.56M|                        retval = true; 
 1148|  5.56M|                        break;
 1149|   623k|                    default:
  ------------------
  |  Branch (1149:21): [True: 623k, False: 5.56M]
  ------------------
 1150|   623k|                        retval = destination_->byte_string_value(value, tag, context, ec);
 1151|   623k|                        break;
 1152|  6.19M|                }
 1153|  6.19M|            }
 1154|       |
 1155|  9.92M|            level_stack_.back().advance();
 1156|  9.92M|            return retval;
 1157|  9.92M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS1_10error_codeE:
 1163|  27.2k|        {
 1164|  27.2k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1164:17): [True: 10.4k, False: 16.7k]
  |  Branch (1164:49): [True: 15.4k, False: 1.27k]
  ------------------
 1165|  25.9k|            {
 1166|  25.9k|                key_.clear();
 1167|  25.9k|                encode_base64url(value.begin(), value.end(),key_);
 1168|  25.9k|            }
 1169|       |
 1170|  27.2k|            bool retval;
 1171|  27.2k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1171:17): [True: 10.4k, False: 16.7k]
  ------------------
 1172|  10.4k|            {
 1173|  10.4k|                switch (level_stack_.back().target())
 1174|  10.4k|                {
 1175|  9.64k|                    case target_t::buffer:
  ------------------
  |  Branch (1175:21): [True: 9.64k, False: 827]
  ------------------
 1176|  9.64k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1176:29): [True: 8.03k, False: 1.60k]
  ------------------
 1177|  8.03k|                        {
 1178|  8.03k|                            key_buffer_.push_back(',');
 1179|  8.03k|                        }
 1180|  9.64k|                        key_buffer_.push_back('\"');
 1181|  9.64k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1182|  9.64k|                        key_buffer_.push_back('\"');
 1183|  9.64k|                        key_buffer_.push_back(':');
 1184|  9.64k|                        retval = true; 
 1185|  9.64k|                        break;
 1186|    827|                    default:
  ------------------
  |  Branch (1186:21): [True: 827, False: 9.64k]
  ------------------
 1187|    827|                        retval = destination_->key(key_, context, ec);
 1188|    827|                        break;
 1189|  10.4k|                }
 1190|  10.4k|            }
 1191|  16.7k|            else
 1192|  16.7k|            {
 1193|  16.7k|                switch (level_stack_.back().target())
 1194|  16.7k|                {
 1195|  15.4k|                    case target_t::buffer:
  ------------------
  |  Branch (1195:21): [True: 15.4k, False: 1.27k]
  ------------------
 1196|  15.4k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1196:29): [True: 9.02k, False: 6.45k]
  |  Branch (1196:65): [True: 7.93k, False: 1.09k]
  ------------------
 1197|  7.93k|                        {
 1198|  7.93k|                            key_buffer_.push_back(',');
 1199|  7.93k|                        }
 1200|  15.4k|                        key_buffer_.push_back('\"');
 1201|  15.4k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1202|  15.4k|                        key_buffer_.push_back('\"');
 1203|  15.4k|                        retval = true; 
 1204|  15.4k|                        break;
 1205|  1.27k|                    default:
  ------------------
  |  Branch (1205:21): [True: 1.27k, False: 15.4k]
  ------------------
 1206|  1.27k|                        retval = destination_->byte_string_value(value, ext_tag, context, ec);
 1207|  1.27k|                        break;
 1208|  16.7k|                }
 1209|  16.7k|            }
 1210|       |
 1211|  27.2k|            level_stack_.back().advance();
 1212|  27.2k|            return retval;
 1213|  27.2k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1216|  13.8M|        {
 1217|  13.8M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1217:17): [True: 2.23M, False: 11.5M]
  |  Branch (1217:49): [True: 11.2M, False: 358k]
  ------------------
 1218|  13.4M|            {
 1219|  13.4M|                key_.clear();
 1220|  13.4M|                jsoncons::detail::from_integer(value,key_);
 1221|  13.4M|            }
 1222|       |
 1223|  13.8M|            bool retval;
 1224|  13.8M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1224:17): [True: 2.23M, False: 11.5M]
  ------------------
 1225|  2.23M|            {
 1226|  2.23M|                switch (level_stack_.back().target())
 1227|  2.23M|                {
 1228|  2.20M|                    case target_t::buffer:
  ------------------
  |  Branch (1228:21): [True: 2.20M, False: 29.7k]
  ------------------
 1229|  2.20M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1229:29): [True: 2.19M, False: 6.97k]
  ------------------
 1230|  2.19M|                        {
 1231|  2.19M|                            key_buffer_.push_back(',');
 1232|  2.19M|                        }
 1233|  2.20M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1234|  2.20M|                        key_buffer_.push_back(':');
 1235|  2.20M|                        retval = true; 
 1236|  2.20M|                        break;
 1237|  29.7k|                    default:
  ------------------
  |  Branch (1237:21): [True: 29.7k, False: 2.20M]
  ------------------
 1238|  29.7k|                        retval = destination_->key(key_, context, ec);
 1239|  29.7k|                        break;
 1240|  2.23M|                }
 1241|  2.23M|            }
 1242|  11.5M|            else
 1243|  11.5M|            {
 1244|  11.5M|                switch (level_stack_.back().target())
 1245|  11.5M|                {
 1246|  11.2M|                    case target_t::buffer:
  ------------------
  |  Branch (1246:21): [True: 11.2M, False: 358k]
  ------------------
 1247|  11.2M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1247:29): [True: 9.02M, False: 2.20M]
  |  Branch (1247:65): [True: 8.99M, False: 32.1k]
  ------------------
 1248|  8.99M|                        {
 1249|  8.99M|                            key_buffer_.push_back(',');
 1250|  8.99M|                        }
 1251|  11.2M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1252|  11.2M|                        retval = true; 
 1253|  11.2M|                        break;
 1254|   358k|                    default:
  ------------------
  |  Branch (1254:21): [True: 358k, False: 11.2M]
  ------------------
 1255|   358k|                        retval = destination_->uint64_value(value, tag, context, ec);
 1256|   358k|                        break;
 1257|  11.5M|                }
 1258|  11.5M|            }
 1259|       |
 1260|  13.8M|            level_stack_.back().advance();
 1261|  13.8M|            return retval;
 1262|  13.8M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1265|  4.65M|        {
 1266|  4.65M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1266:17): [True: 735k, False: 3.92M]
  |  Branch (1266:49): [True: 3.78M, False: 136k]
  ------------------
 1267|  4.51M|            {
 1268|  4.51M|                key_.clear();
 1269|  4.51M|                jsoncons::detail::from_integer(value,key_);
 1270|  4.51M|            }
 1271|       |
 1272|  4.65M|            bool retval;
 1273|  4.65M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1273:17): [True: 735k, False: 3.92M]
  ------------------
 1274|   735k|            {
 1275|   735k|                switch (level_stack_.back().target())
 1276|   735k|                {
 1277|   727k|                    case target_t::buffer:
  ------------------
  |  Branch (1277:21): [True: 727k, False: 7.60k]
  ------------------
 1278|   727k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1278:29): [True: 722k, False: 4.71k]
  ------------------
 1279|   722k|                        {
 1280|   722k|                            key_buffer_.push_back(',');
 1281|   722k|                        }
 1282|   727k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1283|   727k|                        key_buffer_.push_back(':');
 1284|   727k|                        retval = true; 
 1285|   727k|                        break;
 1286|  7.60k|                    default:
  ------------------
  |  Branch (1286:21): [True: 7.60k, False: 727k]
  ------------------
 1287|  7.60k|                        retval = destination_->key(key_, context, ec);
 1288|  7.60k|                        break;
 1289|   735k|                }
 1290|   735k|            }
 1291|  3.92M|            else
 1292|  3.92M|            {
 1293|  3.92M|                switch (level_stack_.back().target())
 1294|  3.92M|                {
 1295|  3.78M|                    case target_t::buffer:
  ------------------
  |  Branch (1295:21): [True: 3.78M, False: 136k]
  ------------------
 1296|  3.78M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1296:29): [True: 3.05M, False: 729k]
  |  Branch (1296:65): [True: 3.02M, False: 32.7k]
  ------------------
 1297|  3.02M|                        {
 1298|  3.02M|                            key_buffer_.push_back(',');
 1299|  3.02M|                        }
 1300|  3.78M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1301|  3.78M|                        retval = true; 
 1302|  3.78M|                        break;
 1303|   136k|                    default:
  ------------------
  |  Branch (1303:21): [True: 136k, False: 3.78M]
  ------------------
 1304|   136k|                        retval = destination_->int64_value(value, tag, context, ec);
 1305|   136k|                        break;
 1306|  3.92M|                }
 1307|  3.92M|            }
 1308|       |
 1309|  4.65M|            level_stack_.back().advance();
 1310|  4.65M|            return retval;
 1311|  4.65M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_halfEtNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1314|  17.1M|        {
 1315|  17.1M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1315:17): [True: 12.2k, False: 17.1M]
  |  Branch (1315:49): [True: 17.0M, False: 19.8k]
  ------------------
 1316|  17.0M|            {
 1317|  17.0M|                key_.clear();
 1318|  17.0M|                jsoncons::string_sink<string_type> sink(key_);
 1319|  17.0M|                jsoncons::detail::write_double f{float_chars_format::general,0};
 1320|  17.0M|                double x = binary::decode_half(value);
 1321|  17.0M|                f(x, sink);
 1322|  17.0M|            }
 1323|       |
 1324|  17.1M|            bool retval;
 1325|  17.1M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1325:17): [True: 12.2k, False: 17.1M]
  ------------------
 1326|  12.2k|            {
 1327|  12.2k|                switch (level_stack_.back().target())
 1328|  12.2k|                {
 1329|  11.5k|                    case target_t::buffer:
  ------------------
  |  Branch (1329:21): [True: 11.5k, False: 687]
  ------------------
 1330|  11.5k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1330:29): [True: 10.7k, False: 822]
  ------------------
 1331|  10.7k|                        {
 1332|  10.7k|                            key_buffer_.push_back(',');
 1333|  10.7k|                        }
 1334|  11.5k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1335|  11.5k|                        key_buffer_.push_back(':');
 1336|  11.5k|                        retval = true; 
 1337|  11.5k|                        break;
 1338|    687|                    default:
  ------------------
  |  Branch (1338:21): [True: 687, False: 11.5k]
  ------------------
 1339|    687|                        retval = destination_->key(key_, context, ec);
 1340|    687|                        break;
 1341|  12.2k|                }
 1342|  12.2k|            }
 1343|  17.1M|            else
 1344|  17.1M|            {
 1345|  17.1M|                switch (level_stack_.back().target())
 1346|  17.1M|                {
 1347|  17.0M|                    case target_t::buffer:
  ------------------
  |  Branch (1347:21): [True: 17.0M, False: 19.8k]
  ------------------
 1348|  17.0M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1348:29): [True: 17.0M, False: 10.9k]
  |  Branch (1348:65): [True: 17.0M, False: 11.3k]
  ------------------
 1349|  17.0M|                        {
 1350|  17.0M|                            key_buffer_.push_back(',');
 1351|  17.0M|                        }
 1352|  17.0M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1353|  17.0M|                        retval = true; 
 1354|  17.0M|                        break;
 1355|  19.8k|                    default:
  ------------------
  |  Branch (1355:21): [True: 19.8k, False: 17.0M]
  ------------------
 1356|  19.8k|                        retval = destination_->half_value(value, tag, context, ec);
 1357|  19.8k|                        break;
 1358|  17.1M|                }
 1359|  17.1M|            }
 1360|       |
 1361|  17.1M|            level_stack_.back().advance();
 1362|  17.1M|            return retval;
 1363|  17.1M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1366|   866k|        {
 1367|   866k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1367:17): [True: 7.53k, False: 858k]
  |  Branch (1367:49): [True: 856k, False: 2.58k]
  ------------------
 1368|   863k|            {
 1369|   863k|                key_.clear();
 1370|   863k|                string_sink<string_type> sink(key_);
 1371|   863k|                jsoncons::detail::write_double f{float_chars_format::general,0};
 1372|   863k|                f(value, sink);
 1373|   863k|            }
 1374|       |
 1375|   866k|            bool retval;
 1376|   866k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1376:17): [True: 7.53k, False: 858k]
  ------------------
 1377|  7.53k|            {
 1378|  7.53k|                switch (level_stack_.back().target())
 1379|  7.53k|                {
 1380|  6.06k|                    case target_t::buffer:
  ------------------
  |  Branch (1380:21): [True: 6.06k, False: 1.47k]
  ------------------
 1381|  6.06k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1381:29): [True: 4.97k, False: 1.08k]
  ------------------
 1382|  4.97k|                        {
 1383|  4.97k|                            key_buffer_.push_back(',');
 1384|  4.97k|                        }
 1385|  6.06k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1386|  6.06k|                        key_buffer_.push_back(':');
 1387|  6.06k|                        retval = true; 
 1388|  6.06k|                        break;
 1389|  1.47k|                    default:
  ------------------
  |  Branch (1389:21): [True: 1.47k, False: 6.06k]
  ------------------
 1390|  1.47k|                        retval = destination_->key(key_, context, ec);
 1391|  1.47k|                        break;
 1392|  7.53k|                }
 1393|  7.53k|            }
 1394|   858k|            else
 1395|   858k|            {
 1396|   858k|                switch (level_stack_.back().target())
 1397|   858k|                {
 1398|   856k|                    case target_t::buffer:
  ------------------
  |  Branch (1398:21): [True: 856k, False: 2.58k]
  ------------------
 1399|   856k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1399:29): [True: 850k, False: 5.26k]
  |  Branch (1399:65): [True: 844k, False: 6.17k]
  ------------------
 1400|   844k|                        {
 1401|   844k|                            key_buffer_.push_back(',');
 1402|   844k|                        }
 1403|   856k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1404|   856k|                        retval = true; 
 1405|   856k|                        break;
 1406|  2.58k|                    default:
  ------------------
  |  Branch (1406:21): [True: 2.58k, False: 856k]
  ------------------
 1407|  2.58k|                        retval = destination_->double_value(value, tag, context, ec);
 1408|  2.58k|                        break;
 1409|   858k|                }
 1410|   858k|            }
 1411|       |
 1412|   866k|            level_stack_.back().advance();
 1413|   866k|            return retval;
 1414|   866k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1525|  2.44k|        {
 1526|  2.44k|            bool is_key = level_stack_.back().is_key();
 1527|  2.44k|            level_stack_.back().advance();
 1528|       |
 1529|  2.44k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1529:17): [True: 857, False: 1.58k]
  |  Branch (1529:27): [True: 1.06k, False: 517]
  ------------------
 1530|  1.92k|            {
 1531|  1.92k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1532|  1.92k|            }
 1533|    517|            else
 1534|    517|            {
 1535|    517|                return destination_->typed_array(s, tag, context, ec);
 1536|    517|            }
 1537|  2.44k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  533|  1.92k|        {
  534|  1.92k|            bool more = begin_array(s.size(), tag, context, ec);
  535|   918k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (535:38): [True: 918k, False: 0]
  |  Branch (535:46): [True: 916k, False: 1.92k]
  ------------------
  536|   916k|            {
  537|   916k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  538|   916k|            }
  539|  1.92k|            if (more)
  ------------------
  |  Branch (539:17): [True: 1.92k, False: 0]
  ------------------
  540|  1.92k|            {
  541|  1.92k|                more = end_array(context, ec);
  542|  1.92k|            }
  543|  1.92k|            return more;
  544|  1.92k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  271|  7.20M|        {
  272|  7.20M|            return visit_begin_array(length, tag, context, ec);
  273|  7.20M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  332|  13.8M|        {
  333|  13.8M|            return visit_uint64(value, tag, context, ec);
  334|  13.8M|        }
_ZN8jsoncons24basic_item_event_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  276|  1.92M|        {
  277|  1.92M|            return visit_end_array(context, ec);
  278|  1.92M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1543|  8.85k|        {
 1544|  8.85k|            bool is_key = level_stack_.back().is_key();
 1545|  8.85k|            level_stack_.back().advance();
 1546|       |
 1547|  8.85k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1547:17): [True: 1.93k, False: 6.92k]
  |  Branch (1547:27): [True: 5.87k, False: 1.05k]
  ------------------
 1548|  7.80k|            {
 1549|  7.80k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1550|  7.80k|            }
 1551|  1.05k|            else
 1552|  1.05k|            {
 1553|  1.05k|                return destination_->typed_array(s, tag, context, ec);
 1554|  1.05k|            }
 1555|  8.85k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  550|  7.80k|        {
  551|  7.80k|            bool more = begin_array(s.size(), tag, context, ec);
  552|  1.24M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (552:38): [True: 1.24M, False: 0]
  |  Branch (552:46): [True: 1.24M, False: 7.80k]
  ------------------
  553|  1.24M|            {
  554|  1.24M|                more = uint64_value(*p, semantic_tag::none, context, ec);
  555|  1.24M|            }
  556|  7.80k|            if (more)
  ------------------
  |  Branch (556:17): [True: 7.80k, False: 0]
  ------------------
  557|  7.80k|            {
  558|  7.80k|                more = end_array(context, ec);
  559|  7.80k|            }
  560|  7.80k|            return more;
  561|  7.80k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1561|  5.62k|        {
 1562|  5.62k|            bool is_key = level_stack_.back().is_key();
 1563|  5.62k|            level_stack_.back().advance();
 1564|       |
 1565|  5.62k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1565:17): [True: 1.38k, False: 4.23k]
  |  Branch (1565:27): [True: 3.47k, False: 762]
  ------------------
 1566|  4.85k|            {
 1567|  4.85k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1568|  4.85k|            }
 1569|    762|            else
 1570|    762|            {
 1571|    762|                return destination_->typed_array(s, tag, context, ec);
 1572|    762|            }
 1573|  5.62k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  567|  4.85k|        {
  568|  4.85k|            bool more = begin_array(s.size(), tag, context, ec);
  569|  1.58M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (569:38): [True: 1.58M, False: 0]
  |  Branch (569:46): [True: 1.57M, False: 4.85k]
  ------------------
  570|  1.57M|            {
  571|  1.57M|                more = uint64_value(*p, semantic_tag::none, context, ec);
  572|  1.57M|            }
  573|  4.85k|            if (more)
  ------------------
  |  Branch (573:17): [True: 4.85k, False: 0]
  ------------------
  574|  4.85k|            {
  575|  4.85k|                more = end_array(context, ec);
  576|  4.85k|            }
  577|  4.85k|            return more;
  578|  4.85k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1579|  13.5k|        {
 1580|  13.5k|            bool is_key = level_stack_.back().is_key();
 1581|  13.5k|            level_stack_.back().advance();
 1582|       |
 1583|  13.5k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1583:17): [True: 4.63k, False: 8.94k]
  |  Branch (1583:27): [True: 8.16k, False: 783]
  ------------------
 1584|  12.7k|            {
 1585|  12.7k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1586|  12.7k|            }
 1587|    783|            else
 1588|    783|            {
 1589|    783|                return destination_->typed_array(s, tag, context, ec);
 1590|    783|            }
 1591|  13.5k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  584|  12.7k|        {
  585|  12.7k|            bool more = begin_array(s.size(), tag, context, ec);
  586|   892k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (586:38): [True: 892k, False: 0]
  |  Branch (586:46): [True: 879k, False: 12.7k]
  ------------------
  587|   879k|            {
  588|   879k|                more = uint64_value(*p,semantic_tag::none,context, ec);
  589|   879k|            }
  590|  12.7k|            if (more)
  ------------------
  |  Branch (590:17): [True: 12.7k, False: 0]
  ------------------
  591|  12.7k|            {
  592|  12.7k|                more = end_array(context, ec);
  593|  12.7k|            }
  594|  12.7k|            return more;
  595|  12.7k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1597|  4.65k|        {
 1598|  4.65k|            bool is_key = level_stack_.back().is_key();
 1599|  4.65k|            level_stack_.back().advance();
 1600|       |
 1601|  4.65k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1601:17): [True: 1.49k, False: 3.16k]
  |  Branch (1601:27): [True: 2.86k, False: 294]
  ------------------
 1602|  4.36k|            {
 1603|  4.36k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1604|  4.36k|            }
 1605|    294|            else
 1606|    294|            {
 1607|    294|                return destination_->typed_array(s, tag, context, ec);
 1608|    294|            }
 1609|  4.65k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  601|  4.36k|        {
  602|  4.36k|            bool more = begin_array(s.size(), tag,context, ec);
  603|  27.2k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (603:38): [True: 27.2k, False: 0]
  |  Branch (603:46): [True: 22.8k, False: 4.36k]
  ------------------
  604|  22.8k|            {
  605|  22.8k|                more = int64_value(*p,semantic_tag::none,context, ec);
  606|  22.8k|            }
  607|  4.36k|            if (more)
  ------------------
  |  Branch (607:17): [True: 4.36k, False: 0]
  ------------------
  608|  4.36k|            {
  609|  4.36k|                more = end_array(context, ec);
  610|  4.36k|            }
  611|  4.36k|            return more;
  612|  4.36k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  340|  4.65M|        {
  341|  4.65M|            return visit_int64(value, tag, context, ec);
  342|  4.65M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1615|  4.84k|        {
 1616|  4.84k|            bool is_key = level_stack_.back().is_key();
 1617|  4.84k|            level_stack_.back().advance();
 1618|       |
 1619|  4.84k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1619:17): [True: 2.26k, False: 2.57k]
  |  Branch (1619:27): [True: 1.92k, False: 657]
  ------------------
 1620|  4.19k|            {
 1621|  4.19k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1622|  4.19k|            }
 1623|    657|            else
 1624|    657|            {
 1625|    657|                return destination_->typed_array(s, tag, context, ec);
 1626|    657|            }
 1627|  4.84k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  618|  4.19k|        {
  619|  4.19k|            bool more = begin_array(s.size(), tag,context, ec);
  620|  1.14M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (620:38): [True: 1.14M, False: 0]
  |  Branch (620:46): [True: 1.14M, False: 4.19k]
  ------------------
  621|  1.14M|            {
  622|  1.14M|                more = int64_value(*p,semantic_tag::none,context, ec);
  623|  1.14M|            }
  624|  4.19k|            if (more)
  ------------------
  |  Branch (624:17): [True: 4.19k, False: 0]
  ------------------
  625|  4.19k|            {
  626|  4.19k|                more = end_array(context, ec);
  627|  4.19k|            }
  628|  4.19k|            return more;
  629|  4.19k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1633|  48.4k|        {
 1634|  48.4k|            bool is_key = level_stack_.back().is_key();
 1635|  48.4k|            level_stack_.back().advance();
 1636|       |
 1637|  48.4k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1637:17): [True: 5.72k, False: 42.6k]
  |  Branch (1637:27): [True: 35.6k, False: 7.07k]
  ------------------
 1638|  41.3k|            {
 1639|  41.3k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1640|  41.3k|            }
 1641|  7.07k|            else
 1642|  7.07k|            {
 1643|  7.07k|                return destination_->typed_array(s, tag, context, ec);
 1644|  7.07k|            }
 1645|  48.4k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  635|  41.3k|        {
  636|  41.3k|            bool more = begin_array(s.size(), tag,context, ec);
  637|  1.10M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (637:38): [True: 1.10M, False: 0]
  |  Branch (637:46): [True: 1.06M, False: 41.3k]
  ------------------
  638|  1.06M|            {
  639|  1.06M|                more = int64_value(*p,semantic_tag::none,context, ec);
  640|  1.06M|            }
  641|  41.3k|            if (more)
  ------------------
  |  Branch (641:17): [True: 41.3k, False: 0]
  ------------------
  642|  41.3k|            {
  643|  41.3k|                more = end_array(context, ec);
  644|  41.3k|            }
  645|  41.3k|            return more;
  646|  41.3k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1651|  41.3k|        {
 1652|  41.3k|            bool is_key = level_stack_.back().is_key();
 1653|  41.3k|            level_stack_.back().advance();
 1654|       |
 1655|  41.3k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1655:17): [True: 844, False: 40.4k]
  |  Branch (1655:27): [True: 28.6k, False: 11.7k]
  ------------------
 1656|  29.5k|            {
 1657|  29.5k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1658|  29.5k|            }
 1659|  11.7k|            else
 1660|  11.7k|            {
 1661|  11.7k|                return destination_->typed_array(s, tag, context, ec);
 1662|  11.7k|            }
 1663|  41.3k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  652|  29.5k|        {
  653|  29.5k|            bool more = begin_array(s.size(), tag,context, ec);
  654|   469k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (654:38): [True: 469k, False: 0]
  |  Branch (654:46): [True: 440k, False: 29.5k]
  ------------------
  655|   440k|            {
  656|   440k|                more = int64_value(*p,semantic_tag::none,context, ec);
  657|   440k|            }
  658|  29.5k|            if (more)
  ------------------
  |  Branch (658:17): [True: 29.5k, False: 0]
  ------------------
  659|  29.5k|            {
  660|  29.5k|                more = end_array(context, ec);
  661|  29.5k|            }
  662|  29.5k|            return more;
  663|  29.5k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1670|  13.4k|        {
 1671|  13.4k|            bool is_key = level_stack_.back().is_key();
 1672|  13.4k|            level_stack_.back().advance();
 1673|       |
 1674|  13.4k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1674:17): [True: 2.22k, False: 11.2k]
  |  Branch (1674:27): [True: 10.2k, False: 969]
  ------------------
 1675|  12.5k|            {
 1676|  12.5k|                return basic_item_event_visitor<CharT>::visit_typed_array(half_arg,s,tag,context,ec);
 1677|  12.5k|            }
 1678|    969|            else
 1679|    969|            {
 1680|    969|                return destination_->typed_array(half_arg, s, tag, context, ec);
 1681|    969|            }
 1682|  13.4k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  670|  12.5k|        {
  671|  12.5k|            bool more = begin_array(s.size(), tag, context, ec);
  672|  17.1M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (672:38): [True: 17.1M, False: 0]
  |  Branch (672:46): [True: 17.0M, False: 12.5k]
  ------------------
  673|  17.0M|            {
  674|  17.0M|                more = half_value(*p, semantic_tag::none, context, ec);
  675|  17.0M|            }
  676|  12.5k|            if (more)
  ------------------
  |  Branch (676:17): [True: 12.5k, False: 0]
  ------------------
  677|  12.5k|            {
  678|  12.5k|                more = end_array(context, ec);
  679|  12.5k|            }
  680|  12.5k|            return more;
  681|  12.5k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10half_valueEtNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  348|  17.1M|        {
  349|  17.1M|            return visit_half(value, tag, context, ec);
  350|  17.1M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1688|  3.00k|        {
 1689|  3.00k|            bool is_key = level_stack_.back().is_key();
 1690|  3.00k|            level_stack_.back().advance();
 1691|       |
 1692|  3.00k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1692:17): [True: 905, False: 2.09k]
  |  Branch (1692:27): [True: 1.14k, False: 947]
  ------------------
 1693|  2.05k|            {
 1694|  2.05k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1695|  2.05k|            }
 1696|    947|            else
 1697|    947|            {
 1698|    947|                return destination_->typed_array(s, tag, context, ec);
 1699|    947|            }
 1700|  3.00k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  687|  2.05k|        {
  688|  2.05k|            bool more = begin_array(s.size(), tag,context, ec);
  689|   371k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (689:38): [True: 371k, False: 0]
  |  Branch (689:46): [True: 369k, False: 2.05k]
  ------------------
  690|   369k|            {
  691|   369k|                more = double_value(*p,semantic_tag::none,context, ec);
  692|   369k|            }
  693|  2.05k|            if (more)
  ------------------
  |  Branch (693:17): [True: 2.05k, False: 0]
  ------------------
  694|  2.05k|            {
  695|  2.05k|                more = end_array(context, ec);
  696|  2.05k|            }
  697|  2.05k|            return more;
  698|  2.05k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  356|   866k|        {
  357|   866k|            return visit_double(value, tag, context, ec);
  358|   866k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1706|  8.11k|        {
 1707|  8.11k|            bool is_key = level_stack_.back().is_key();
 1708|  8.11k|            level_stack_.back().advance();
 1709|       |
 1710|  8.11k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1710:17): [True: 2.39k, False: 5.71k]
  |  Branch (1710:27): [True: 4.73k, False: 986]
  ------------------
 1711|  7.12k|            {
 1712|  7.12k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1713|  7.12k|            }
 1714|    986|            else
 1715|    986|            {
 1716|    986|                return destination_->typed_array(s, tag, context, ec);
 1717|    986|            }
 1718|  8.11k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  704|  7.12k|        {
  705|  7.12k|            bool more = begin_array(s.size(), tag,context, ec);
  706|   487k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (706:38): [True: 487k, False: 0]
  |  Branch (706:46): [True: 480k, False: 7.12k]
  ------------------
  707|   480k|            {
  708|   480k|                more = double_value(*p,semantic_tag::none,context, ec);
  709|   480k|            }
  710|  7.12k|            if (more)
  ------------------
  |  Branch (710:17): [True: 7.12k, False: 0]
  ------------------
  711|  7.12k|            {
  712|  7.12k|                more = end_array(context, ec);
  713|  7.12k|            }
  714|  7.12k|            return more;
  715|  7.12k|        }
_ZN8jsoncons24basic_item_event_visitorIcE21visit_begin_multi_dimERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  721|  3.56k|        {
  722|  3.56k|            bool more = visit_begin_array(2, tag, context, ec);
  723|  3.56k|            if (more)
  ------------------
  |  Branch (723:17): [True: 3.56k, False: 0]
  ------------------
  724|  3.56k|            {
  725|  3.56k|                more = visit_begin_array(shape.size(), tag, context, ec);
  726|  9.35k|                for (auto it = shape.begin(); more && it != shape.end(); ++it)
  ------------------
  |  Branch (726:47): [True: 9.35k, False: 0]
  |  Branch (726:55): [True: 5.79k, False: 3.56k]
  ------------------
  727|  5.79k|                {
  728|  5.79k|                    visit_uint64(*it, semantic_tag::none, context, ec);
  729|  5.79k|                }
  730|  3.56k|                if (more)
  ------------------
  |  Branch (730:21): [True: 3.56k, False: 0]
  ------------------
  731|  3.56k|                {
  732|  3.56k|                    more = visit_end_array(context, ec);
  733|  3.56k|                }
  734|  3.56k|            }
  735|  3.56k|            return more;
  736|  3.56k|        }
_ZN8jsoncons24basic_item_event_visitorIcE19visit_end_multi_dimERKNS_11ser_contextERNSt3__110error_codeE:
  740|  2.17k|        {
  741|  2.17k|            return visit_end_array(context, ec);
  742|  2.17k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEEC2ERNS_18basic_json_visitorIcEERKS3_:
  832|  9.77k|        {
  833|  9.77k|            level_stack_.emplace_back(target_t::destination,container_t::root); // root
  834|  9.77k|        }
_ZN8jsoncons24basic_item_event_visitorIcEC2Ev:
   33|  9.77k|        basic_item_event_visitor() = default;
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr16extension_traits16is_byte_sequenceIS8_EE5valueEiE4typeE:
  314|  9.92M|        {
  315|  9.92M|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  316|  9.92M|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKhEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  2.44k|        {
  380|  2.44k|            return visit_typed_array(data, tag, context, ec);
  381|  2.44k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKtEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  8.85k|        {
  380|  8.85k|            return visit_typed_array(data, tag, context, ec);
  381|  8.85k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKjEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  5.62k|        {
  380|  5.62k|            return visit_typed_array(data, tag, context, ec);
  381|  5.62k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKmEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  13.5k|        {
  380|  13.5k|            return visit_typed_array(data, tag, context, ec);
  381|  13.5k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKaEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  4.65k|        {
  380|  4.65k|            return visit_typed_array(data, tag, context, ec);
  381|  4.65k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKsEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  4.84k|        {
  380|  4.84k|            return visit_typed_array(data, tag, context, ec);
  381|  4.84k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKiEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  48.4k|        {
  380|  48.4k|            return visit_typed_array(data, tag, context, ec);
  381|  48.4k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKlEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  41.3k|        {
  380|  41.3k|            return visit_typed_array(data, tag, context, ec);
  381|  41.3k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  400|  13.4k|        {
  401|  13.4k|            return visit_typed_array(half_arg, s, tag, context, ec);
  402|  13.4k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKfEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  3.00k|        {
  380|  3.00k|            return visit_typed_array(data, tag, context, ec);
  381|  3.00k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKdEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  8.11k|        {
  380|  8.11k|            return visit_typed_array(data, tag, context, ec);
  381|  8.11k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_mRKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr16extension_traits16is_byte_sequenceIS8_EE5valueEiE4typeE:
  324|  27.2k|        {
  325|  27.2k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  326|  27.2k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  296|   932k|        {
  297|   932k|            return visit_bool(value, tag, context, ec);
  298|   932k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  288|   785k|        {
  289|   785k|            return visit_null(tag, context, ec);
  290|   785k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  304|  1.27M|        {
  305|  1.27M|            return visit_string(value, tag, context, ec);
  306|  1.27M|        }
_ZN8jsoncons24basic_item_event_visitorIcE15begin_multi_dimERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  421|  3.56k|        {
  422|  3.56k|            return visit_begin_multi_dim(shape, tag, context, ec);
  423|  3.56k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  266|  1.39M|        {
  267|  1.39M|            return visit_begin_array(tag, context, ec);
  268|  1.39M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  248|  2.57M|        {
  249|  2.57M|            return visit_begin_object(tag, context, ec);
  250|  2.57M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  256|   603k|        {
  257|   603k|            return visit_begin_object(length, tag, context, ec);
  258|   603k|        }
_ZN8jsoncons24basic_item_event_visitorIcE13end_multi_dimERKNS_11ser_contextERNSt3__110error_codeE:
  438|  2.17k|        {
  439|  2.17k|            return visit_end_multi_dim(context, ec);
  440|  2.17k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  261|  58.1k|        {
  262|  58.1k|            return visit_end_object(context, ec);
  263|  58.1k|        }
_ZN8jsoncons24basic_item_event_visitorIcE5flushEv:
   38|  2.39k|        {
   39|  2.39k|            visit_flush();
   40|  2.39k|        }

_ZN8jsoncons18basic_json_visitorIcE5flushEv:
   41|  2.39k|        {
   42|  2.39k|            visit_flush();
   43|  2.39k|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  251|  2.75k|        {
  252|  2.75k|            return visit_begin_object(tag, context, ec);
  253|  2.75k|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  259|  5.99k|        {
  260|  5.99k|            return visit_begin_object(length, tag, context, ec);
  261|  5.99k|        }
_ZN8jsoncons18basic_json_visitorIcE3keyERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEERKNS_11ser_contextERNS4_10error_codeE:
  284|   550k|        {
  285|   550k|            return visit_key(name, context, ec);
  286|   550k|        }
_ZN8jsoncons18basic_json_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  264|  2.27k|        {
  265|  2.27k|            return visit_end_object(context, ec);
  266|  2.27k|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  269|  43.3k|        {
  270|  43.3k|            return visit_begin_array(tag, context, ec);
  271|  43.3k|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  274|  1.97M|        {
  275|  1.97M|            return visit_begin_array(length, tag, context, ec);
  276|  1.97M|        }
_ZN8jsoncons18basic_json_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  279|   237k|        {
  280|   237k|            return visit_end_array(context, ec);
  281|   237k|        }
_ZN8jsoncons18basic_json_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  291|  5.76k|        {
  292|  5.76k|            return visit_null(tag, context, ec);
  293|  5.76k|        }
_ZN8jsoncons18basic_json_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  299|  1.82k|        {
  300|  1.82k|            return visit_bool(value, tag, context, ec);
  301|  1.82k|        }
_ZN8jsoncons18basic_json_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  307|  19.4k|        {
  308|  19.4k|            return visit_string(value, tag, context, ec);
  309|  19.4k|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeENSB_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  317|   623k|        {
  318|   623k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  319|   623k|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_mRKNS_11ser_contextERNSt3__110error_codeENSA_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  327|  1.27k|        {
  328|  1.27k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  329|  1.27k|        }
_ZN8jsoncons18basic_json_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  335|   434k|        {
  336|   434k|            return visit_uint64(value, tag, context, ec);
  337|   434k|        }
_ZN8jsoncons18basic_json_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  343|   177k|        {
  344|   177k|            return visit_int64(value, tag, context, ec);
  345|   177k|        }
_ZN8jsoncons18basic_json_visitorIcE10half_valueEtNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  351|  40.6k|        {
  352|  40.6k|            return visit_half(value, tag, context, ec);
  353|  40.6k|        }
_ZN8jsoncons18basic_json_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  359|  6.47k|        {
  360|  6.47k|            return visit_double(value, tag, context, ec);
  361|  6.47k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKhEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    517|        {
  383|    517|            return visit_typed_array(data, tag, context, ec);
  384|    517|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKtEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  1.05k|        {
  383|  1.05k|            return visit_typed_array(data, tag, context, ec);
  384|  1.05k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKjEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    762|        {
  383|    762|            return visit_typed_array(data, tag, context, ec);
  384|    762|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKmEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    783|        {
  383|    783|            return visit_typed_array(data, tag, context, ec);
  384|    783|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKaEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    294|        {
  383|    294|            return visit_typed_array(data, tag, context, ec);
  384|    294|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKsEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    657|        {
  383|    657|            return visit_typed_array(data, tag, context, ec);
  384|    657|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKiEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  7.07k|        {
  383|  7.07k|            return visit_typed_array(data, tag, context, ec);
  384|  7.07k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKlEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  11.7k|        {
  383|  11.7k|            return visit_typed_array(data, tag, context, ec);
  384|  11.7k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  403|    969|        {
  404|    969|            return visit_typed_array(half_arg, s, tag, context, ec);
  405|    969|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKfEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    947|        {
  383|    947|            return visit_typed_array(data, tag, context, ec);
  384|    947|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKdEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|    986|        {
  383|    986|            return visit_typed_array(data, tag, context, ec);
  384|    986|        }
_ZN8jsoncons18basic_json_visitorIcED2Ev:
   38|  19.5k|        virtual ~basic_json_visitor() noexcept = default;
_ZN8jsoncons26basic_default_json_visitorIcEC2EbNSt3__110error_codeE:
  931|  19.5k|        {
  932|  19.5k|        }
_ZN8jsoncons18basic_json_visitorIcEC2Ev:
   36|  19.5k|        basic_json_visitor() = default;
_ZN8jsoncons26basic_default_json_visitorIcE11visit_flushEv:
  935|  2.39k|        {
  936|  2.39k|        }
_ZN8jsoncons26basic_default_json_visitorIcE18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  939|  8.75k|        {
  940|  8.75k|            if (ec_)
  ------------------
  |  Branch (940:17): [True: 0, False: 8.75k]
  ------------------
  941|      0|            {
  942|      0|                ec = ec_;
  943|      0|            }
  944|  8.75k|            return parse_more_;
  945|  8.75k|        }
_ZN8jsoncons18basic_json_visitorIcE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  625|  5.99k|        {
  626|  5.99k|            return visit_begin_object(tag, context, ec);
  627|  5.99k|        }
_ZN8jsoncons26basic_default_json_visitorIcE16visit_end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  948|  2.27k|        {
  949|  2.27k|            if (ec_)
  ------------------
  |  Branch (949:17): [True: 0, False: 2.27k]
  ------------------
  950|      0|            {
  951|      0|                ec = ec_;
  952|      0|            }
  953|  2.27k|            return parse_more_;
  954|  2.27k|        }
_ZN8jsoncons26basic_default_json_visitorIcE17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  957|  2.01M|        {
  958|  2.01M|            if (ec_)
  ------------------
  |  Branch (958:17): [True: 0, False: 2.01M]
  ------------------
  959|      0|            {
  960|      0|                ec = ec_;
  961|      0|            }
  962|  2.01M|            return parse_more_;
  963|  2.01M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  640|  1.97M|        {
  641|  1.97M|            return visit_begin_array(tag, context, ec);
  642|  1.97M|        }
_ZN8jsoncons26basic_default_json_visitorIcE15visit_end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  966|   237k|        {
  967|   237k|            if (ec_)
  ------------------
  |  Branch (967:17): [True: 0, False: 237k]
  ------------------
  968|      0|            {
  969|      0|                ec = ec_;
  970|      0|            }
  971|   237k|            return parse_more_;
  972|   237k|        }
_ZN8jsoncons26basic_default_json_visitorIcE9visit_keyERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEERKNS_11ser_contextERNS4_10error_codeE:
  975|   550k|        {
  976|   550k|            if (ec_)
  ------------------
  |  Branch (976:17): [True: 0, False: 550k]
  ------------------
  977|      0|            {
  978|      0|                ec = ec_;
  979|      0|            }
  980|   550k|            return parse_more_;
  981|   550k|        }
_ZN8jsoncons26basic_default_json_visitorIcE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  984|  5.76k|        {
  985|  5.76k|            if (ec_)
  ------------------
  |  Branch (985:17): [True: 0, False: 5.76k]
  ------------------
  986|      0|            {
  987|      0|                ec = ec_;
  988|      0|            }
  989|  5.76k|            return parse_more_;
  990|  5.76k|        }
_ZN8jsoncons26basic_default_json_visitorIcE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1047|  1.82k|        {
 1048|  1.82k|            if (ec_)
  ------------------
  |  Branch (1048:17): [True: 0, False: 1.82k]
  ------------------
 1049|      0|            {
 1050|      0|                ec = ec_;
 1051|      0|            }
 1052|  1.82k|            return parse_more_;
 1053|  1.82k|        }
_ZN8jsoncons26basic_default_json_visitorIcE12visit_stringERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  993|  19.4k|        {
  994|  19.4k|            if (ec_)
  ------------------
  |  Branch (994:17): [True: 0, False: 19.4k]
  ------------------
  995|      0|            {
  996|      0|                ec = ec_;
  997|      0|            }
  998|  19.4k|            return parse_more_;
  999|  19.4k|        }
_ZN8jsoncons26basic_default_json_visitorIcE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1002|   624k|        {
 1003|   624k|            if (ec_)
  ------------------
  |  Branch (1003:17): [True: 0, False: 624k]
  ------------------
 1004|      0|            {
 1005|      0|                ec = ec_;
 1006|      0|            }
 1007|   624k|            return parse_more_;
 1008|   624k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNSt3__110error_codeE:
  674|  1.27k|        {
  675|  1.27k|            return visit_byte_string(value, semantic_tag::none, context, ec);
  676|  1.27k|        }
_ZN8jsoncons26basic_default_json_visitorIcE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1011|   434k|        {
 1012|   434k|            if (ec_)
  ------------------
  |  Branch (1012:17): [True: 0, False: 434k]
  ------------------
 1013|      0|            {
 1014|      0|                ec = ec_;
 1015|      0|            }
 1016|   434k|            return parse_more_;
 1017|   434k|        }
_ZN8jsoncons26basic_default_json_visitorIcE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1020|   177k|        {
 1021|   177k|            if (ec_)
  ------------------
  |  Branch (1021:17): [True: 0, False: 177k]
  ------------------
 1022|      0|            {
 1023|      0|                ec = ec_;
 1024|      0|            }
 1025|   177k|            return parse_more_;
 1026|   177k|        }
_ZN8jsoncons26basic_default_json_visitorIcE10visit_halfEtNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1029|  40.6k|        {
 1030|  40.6k|            if (ec_)
  ------------------
  |  Branch (1030:17): [True: 0, False: 40.6k]
  ------------------
 1031|      0|            {
 1032|      0|                ec = ec_;
 1033|      0|            }
 1034|  40.6k|            return parse_more_;
 1035|  40.6k|        }
_ZN8jsoncons26basic_default_json_visitorIcE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
 1038|  6.47k|        {
 1039|  6.47k|            if (ec_)
  ------------------
  |  Branch (1039:17): [True: 0, False: 6.47k]
  ------------------
 1040|      0|            {
 1041|      0|                ec = ec_;
 1042|      0|            }
 1043|  6.47k|            return parse_more_;
 1044|  6.47k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  708|    517|        {
  709|    517|            bool more = begin_array(s.size(), tag, context, ec);
  710|  2.05k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (710:38): [True: 2.05k, False: 0]
  |  Branch (710:46): [True: 1.54k, False: 517]
  ------------------
  711|  1.54k|            {
  712|  1.54k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  713|  1.54k|            }
  714|    517|            if (more)
  ------------------
  |  Branch (714:17): [True: 517, False: 0]
  ------------------
  715|    517|            {
  716|    517|                more = end_array(context, ec);
  717|    517|            }
  718|    517|            return more;
  719|    517|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  725|  1.05k|        {
  726|  1.05k|            bool more = begin_array(s.size(), tag, context, ec);
  727|  6.97k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (727:38): [True: 6.97k, False: 0]
  |  Branch (727:46): [True: 5.92k, False: 1.05k]
  ------------------
  728|  5.92k|            {
  729|  5.92k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  730|  5.92k|            }
  731|  1.05k|            if (more)
  ------------------
  |  Branch (731:17): [True: 1.05k, False: 0]
  ------------------
  732|  1.05k|            {
  733|  1.05k|                more = end_array(context, ec);
  734|  1.05k|            }
  735|  1.05k|            return more;
  736|  1.05k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  742|    762|        {
  743|    762|            bool more = begin_array(s.size(), tag, context, ec);
  744|  67.3k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (744:38): [True: 67.3k, False: 0]
  |  Branch (744:46): [True: 66.6k, False: 762]
  ------------------
  745|  66.6k|            {
  746|  66.6k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  747|  66.6k|            }
  748|    762|            if (more)
  ------------------
  |  Branch (748:17): [True: 762, False: 0]
  ------------------
  749|    762|            {
  750|    762|                more = end_array(context, ec);
  751|    762|            }
  752|    762|            return more;
  753|    762|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  759|    783|        {
  760|    783|            bool more = begin_array(s.size(), tag, context, ec);
  761|  2.68k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (761:38): [True: 2.68k, False: 0]
  |  Branch (761:46): [True: 1.89k, False: 783]
  ------------------
  762|  1.89k|            {
  763|  1.89k|                more = uint64_value(*p,semantic_tag::none,context, ec);
  764|  1.89k|            }
  765|    783|            if (more)
  ------------------
  |  Branch (765:17): [True: 783, False: 0]
  ------------------
  766|    783|            {
  767|    783|                more = end_array(context, ec);
  768|    783|            }
  769|    783|            return more;
  770|    783|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  776|    294|        {
  777|    294|            bool more = begin_array(s.size(), tag,context, ec);
  778|    659|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (778:38): [True: 659, False: 0]
  |  Branch (778:46): [True: 365, False: 294]
  ------------------
  779|    365|            {
  780|    365|                more = int64_value(*p,semantic_tag::none,context, ec);
  781|    365|            }
  782|    294|            if (more)
  ------------------
  |  Branch (782:17): [True: 294, False: 0]
  ------------------
  783|    294|            {
  784|    294|                more = end_array(context, ec);
  785|    294|            }
  786|    294|            return more;
  787|    294|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  793|    657|        {
  794|    657|            bool more = begin_array(s.size(), tag,context, ec);
  795|  38.3k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (795:38): [True: 38.3k, False: 0]
  |  Branch (795:46): [True: 37.7k, False: 657]
  ------------------
  796|  37.7k|            {
  797|  37.7k|                more = int64_value(*p,semantic_tag::none,context, ec);
  798|  37.7k|            }
  799|    657|            if (more)
  ------------------
  |  Branch (799:17): [True: 657, False: 0]
  ------------------
  800|    657|            {
  801|    657|                more = end_array(context, ec);
  802|    657|            }
  803|    657|            return more;
  804|    657|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  810|  7.07k|        {
  811|  7.07k|            bool more = begin_array(s.size(), tag,context, ec);
  812|  9.38k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (812:38): [True: 9.38k, False: 0]
  |  Branch (812:46): [True: 2.30k, False: 7.07k]
  ------------------
  813|  2.30k|            {
  814|  2.30k|                more = int64_value(*p,semantic_tag::none,context, ec);
  815|  2.30k|            }
  816|  7.07k|            if (more)
  ------------------
  |  Branch (816:17): [True: 7.07k, False: 0]
  ------------------
  817|  7.07k|            {
  818|  7.07k|                more = end_array(context, ec);
  819|  7.07k|            }
  820|  7.07k|            return more;
  821|  7.07k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  827|  11.7k|        {
  828|  11.7k|            bool more = begin_array(s.size(), tag,context, ec);
  829|  12.9k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (829:38): [True: 12.9k, False: 0]
  |  Branch (829:46): [True: 1.21k, False: 11.7k]
  ------------------
  830|  1.21k|            {
  831|  1.21k|                more = int64_value(*p,semantic_tag::none,context, ec);
  832|  1.21k|            }
  833|  11.7k|            if (more)
  ------------------
  |  Branch (833:17): [True: 11.7k, False: 0]
  ------------------
  834|  11.7k|            {
  835|  11.7k|                more = end_array(context, ec);
  836|  11.7k|            }
  837|  11.7k|            return more;
  838|  11.7k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  845|    969|        {
  846|    969|            bool more = begin_array(s.size(), tag, context, ec);
  847|  21.8k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (847:38): [True: 21.8k, False: 0]
  |  Branch (847:46): [True: 20.8k, False: 969]
  ------------------
  848|  20.8k|            {
  849|  20.8k|                more = half_value(*p, semantic_tag::none, context, ec);
  850|  20.8k|            }
  851|    969|            if (more)
  ------------------
  |  Branch (851:17): [True: 969, False: 0]
  ------------------
  852|    969|            {
  853|    969|                more = end_array(context, ec);
  854|    969|            }
  855|    969|            return more;
  856|    969|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  862|    947|        {
  863|    947|            bool more = begin_array(s.size(), tag,context, ec);
  864|  2.15k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (864:38): [True: 2.15k, False: 0]
  |  Branch (864:46): [True: 1.20k, False: 947]
  ------------------
  865|  1.20k|            {
  866|  1.20k|                more = double_value(*p,semantic_tag::none,context, ec);
  867|  1.20k|            }
  868|    947|            if (more)
  ------------------
  |  Branch (868:17): [True: 947, False: 0]
  ------------------
  869|    947|            {
  870|    947|                more = end_array(context, ec);
  871|    947|            }
  872|    947|            return more;
  873|    947|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  879|    986|        {
  880|    986|            bool more = begin_array(s.size(), tag,context, ec);
  881|  3.67k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (881:38): [True: 3.67k, False: 0]
  |  Branch (881:46): [True: 2.68k, False: 986]
  ------------------
  882|  2.68k|            {
  883|  2.68k|                more = double_value(*p,semantic_tag::none,context, ec);
  884|  2.68k|            }
  885|    986|            if (more)
  ------------------
  |  Branch (885:17): [True: 986, False: 0]
  ------------------
  886|    986|            {
  887|    986|                more = end_array(context, ec);
  888|    986|            }
  889|    986|            return more;
  890|    986|        }

_ZN8jsoncons11ser_contextD2Ev:
   15|  9.77k|    virtual ~ser_context() noexcept = default;

_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2ERS7_:
  222|  17.9M|        {
  223|  17.9M|        }
_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE9push_backEc:
  243|   222M|        {
  244|   222M|            buf_ptr->push_back(ch);
  245|   222M|        }

_ZN8jsoncons13stream_sourceIhED2Ev:
  121|  9.77k|        {
  122|  9.77k|        }
_ZN8jsoncons13stream_sourceIhEC2ERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEEm:
  101|  9.77k|        {
  102|  9.77k|        }
_ZN8jsoncons18basic_null_istreamIcEC1Ev:
   48|  9.77k|        {
   49|  9.77k|        }
_ZN8jsoncons18basic_null_istreamIcE11null_bufferC2Ev:
   36|  9.77k|            null_buffer() = default;
_ZN8jsoncons13stream_sourceIhE4readEPhm:
  220|  47.0M|        {
  221|  47.0M|            std::size_t len = 0;
  222|  47.0M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (222:17): [True: 47.0M, False: 1.69k]
  ------------------
  223|  47.0M|            {
  224|  47.0M|                len = (std::min)(buffer_length_, length);
  225|  47.0M|                std::memcpy(p, buffer_data_, len*sizeof(value_type));
  226|  47.0M|                buffer_data_ += len;
  227|  47.0M|                buffer_length_ -= len;
  228|  47.0M|                position_ += len;
  229|  47.0M|            }
  230|  47.0M|            if (length - len == 0)
  ------------------
  |  Branch (230:17): [True: 47.0M, False: 4.43k]
  ------------------
  231|  47.0M|            {
  232|  47.0M|                return len;
  233|  47.0M|            }
  234|  4.43k|            else if (length - len < buffer_.size())
  ------------------
  |  Branch (234:22): [True: 4.26k, False: 161]
  ------------------
  235|  4.26k|            {
  236|  4.26k|                fill_buffer();
  237|  4.26k|                if (buffer_length_ > 0)
  ------------------
  |  Branch (237:21): [True: 2.45k, False: 1.81k]
  ------------------
  238|  2.45k|                {
  239|  2.45k|                    std::size_t len2 = (std::min)(buffer_length_, length-len);
  240|  2.45k|                    std::memcpy(p+len, buffer_data_, len2*sizeof(value_type));
  241|  2.45k|                    buffer_data_ += len2;
  242|  2.45k|                    buffer_length_ -= len2;
  243|  2.45k|                    position_ += len2;
  244|  2.45k|                    len += len2;
  245|  2.45k|                }
  246|  4.26k|                return len;
  247|  4.26k|            }
  248|    161|            else
  249|    161|            {
  250|    161|                if (stream_ptr_->eof())
  ------------------
  |  Branch (250:21): [True: 0, False: 161]
  ------------------
  251|      0|                {
  252|      0|                    buffer_length_ = 0;
  253|      0|                    return 0;
  254|      0|                }
  255|    161|                JSONCONS_TRY
  ------------------
  |  |  239|    161|    #define JSONCONS_TRY try
  ------------------
  256|    161|                {
  257|    161|                    std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(p+len), length-len);
  258|    161|                    std::size_t len2 = static_cast<std::size_t>(count);
  259|    161|                    if (len2 < length-len)
  ------------------
  |  Branch (259:25): [True: 22, False: 139]
  ------------------
  260|     22|                    {
  261|     22|                        stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  262|     22|                    }
  263|    161|                    len += len2;
  264|    161|                    position_ += len2;
  265|    161|                    return len;
  266|    161|                }
  267|    161|                JSONCONS_CATCH(const std::exception&)     
  268|    161|                {
  269|      0|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  270|      0|                    return 0;
  271|      0|                }
  272|    161|            }
  273|  47.0M|        }
_ZN8jsoncons13stream_sourceIhE11fill_bufferEv:
  276|  22.7k|        {
  277|  22.7k|            if (stream_ptr_->eof())
  ------------------
  |  Branch (277:17): [True: 7.62k, False: 15.1k]
  ------------------
  278|  7.62k|            {
  279|  7.62k|                buffer_length_ = 0;
  280|  7.62k|                return;
  281|  7.62k|            }
  282|       |
  283|  15.1k|            buffer_data_ = buffer_.data();
  284|  15.1k|            JSONCONS_TRY
  ------------------
  |  |  239|  15.1k|    #define JSONCONS_TRY try
  ------------------
  285|  15.1k|            {
  286|  15.1k|                std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(buffer_.data()), buffer_.size());
  287|  15.1k|                buffer_length_ = static_cast<std::size_t>(count);
  288|       |
  289|  15.1k|                if (buffer_length_ < buffer_.size())
  ------------------
  |  Branch (289:21): [True: 9.71k, False: 5.40k]
  ------------------
  290|  9.71k|                {
  291|  9.71k|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  292|  9.71k|                }
  293|  15.1k|            }
  294|  15.1k|            JSONCONS_CATCH(const std::exception&)     
  295|  15.1k|            {
  296|      0|                stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  297|      0|                buffer_length_ = 0;
  298|      0|            }
  299|  15.1k|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__16vectorIhNS5_9allocatorIhEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISB_EE5valuesr16extension_traits14has_data_exactIPhSB_EE5valueEmE4typeERS2_RSB_m:
  736|  10.5M|        {
  737|  10.5M|            std::size_t unread = length;
  738|       |
  739|  10.5M|            std::size_t n = (std::min)(max_buffer_length, unread);
  740|  13.5M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (740:20): [True: 3.02M, False: 10.5M]
  |  Branch (740:29): [True: 3.02M, False: 518]
  ------------------
  741|  3.02M|            {
  742|  3.02M|                std::size_t offset = v.size();
  743|  3.02M|                v.resize(v.size()+n);
  744|  3.02M|                std::size_t actual = source.read(v.data()+offset, n);
  745|  3.02M|                unread -= actual;
  746|  3.02M|                n = (std::min)(max_buffer_length, unread);
  747|  3.02M|            }
  748|       |
  749|  10.5M|            return length - unread;
  750|  10.5M|        }
_ZNK8jsoncons13stream_sourceIhE3eofEv:
  148|  3.56M|        {
  149|  3.56M|            return buffer_length_ == 0 && stream_ptr_->eof();
  ------------------
  |  Branch (149:20): [True: 1.32k, False: 3.55M]
  |  Branch (149:43): [True: 841, False: 485]
  ------------------
  150|  3.56M|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISD_EE5valuentsr16extension_traits14has_data_exactIPhSD_EE5valueEmE4typeERS2_RSD_m:
  759|   993k|        {
  760|   993k|            std::size_t unread = length;
  761|       |
  762|   993k|            std::size_t n = (std::min)(max_buffer_length, unread);
  763|  1.53M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (763:20): [True: 538k, False: 993k]
  |  Branch (763:29): [True: 538k, False: 323]
  ------------------
  764|   538k|            {
  765|   538k|                v.reserve(v.size()+n);
  766|   538k|                std::size_t actual = 0;
  767|  9.42M|                while (actual < n)
  ------------------
  |  Branch (767:24): [True: 8.89M, False: 538k]
  ------------------
  768|  8.89M|                {
  769|  8.89M|                    typename Source::value_type c;
  770|  8.89M|                    if (source.read(&c,1) != 1)
  ------------------
  |  Branch (770:25): [True: 207, False: 8.89M]
  ------------------
  771|    207|                    {
  772|    207|                        break;
  773|    207|                    }
  774|  8.89M|                    v.push_back(c);
  775|  8.89M|                    ++actual;
  776|  8.89M|                }
  777|   538k|                unread -= actual;
  778|   538k|                n = (std::min)(max_buffer_length, unread);
  779|   538k|            }
  780|       |
  781|   993k|            return length - unread;
  782|   993k|        }
_ZN8jsoncons13stream_sourceIhE4peekEv:
  188|   114M|        {
  189|   114M|            if (buffer_length_ == 0)
  ------------------
  |  Branch (189:17): [True: 18.4k, False: 114M]
  ------------------
  190|  18.4k|            {
  191|  18.4k|                fill_buffer();
  192|  18.4k|            }
  193|   114M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (193:17): [True: 114M, False: 5.84k]
  ------------------
  194|   114M|            {
  195|   114M|                value_type c = *buffer_data_;
  196|   114M|                return char_result<value_type>{c, false};
  197|   114M|            }
  198|  5.84k|            else
  199|  5.84k|            {
  200|  5.84k|                return char_result<value_type>{0, true};
  201|  5.84k|            }
  202|   114M|        }
_ZN8jsoncons13stream_sourceIhE6ignoreEm:
  163|  15.4M|        {
  164|  15.4M|            std::size_t len = 0;
  165|  15.4M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (165:17): [True: 15.4M, False: 0]
  ------------------
  166|  15.4M|            {
  167|  15.4M|                len = (std::min)(buffer_length_, length);
  168|  15.4M|                position_ += len;
  169|  15.4M|                buffer_data_ += len;
  170|  15.4M|                buffer_length_ -= len;
  171|  15.4M|            }
  172|  15.4M|            while (len < length)
  ------------------
  |  Branch (172:20): [True: 0, False: 15.4M]
  ------------------
  173|      0|            {
  174|      0|                fill_buffer();
  175|      0|                if (buffer_length_ == 0)
  ------------------
  |  Branch (175:21): [True: 0, False: 0]
  ------------------
  176|      0|                {
  177|      0|                    break;
  178|      0|                }
  179|      0|                std::size_t len2 = (std::min)(buffer_length_, length-len);
  180|      0|                position_ += len2;
  181|      0|                buffer_data_ += len2;
  182|      0|                buffer_length_ -= len2;
  183|      0|                len += len2;
  184|      0|            }
  185|  15.4M|        }

_ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m:
 1130|   993k|    {
 1131|   993k|        conv_errc  result = conv_errc();
 1132|   993k|        const CharT* last = data + length;
 1133|  4.90M|        while (data != last) 
  ------------------
  |  Branch (1133:16): [True: 3.90M, False: 992k]
  ------------------
 1134|  3.90M|        {
 1135|  3.90M|            std::size_t len = static_cast<std::size_t>(trailing_bytes_for_utf8[static_cast<uint8_t>(*data)]) + 1;
 1136|  3.90M|            if (len > (std::size_t)(last - data))
  ------------------
  |  Branch (1136:17): [True: 16, False: 3.90M]
  ------------------
 1137|     16|            {
 1138|     16|                return convert_result<CharT>{data, conv_errc::source_exhausted};
 1139|     16|            }
 1140|  3.90M|            if ((result=is_legal_utf8(data, len)) != conv_errc())
  ------------------
  |  Branch (1140:17): [True: 83, False: 3.90M]
  ------------------
 1141|     83|            {
 1142|     83|                return convert_result<CharT>{data,result} ;
 1143|     83|            }
 1144|  3.90M|            data += len;
 1145|  3.90M|        }
 1146|   992k|        return convert_result<CharT>{data,result} ;
 1147|   993k|    }
_ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m:
  299|  3.90M|    {
  300|  3.90M|        uint8_t a;
  301|  3.90M|        const CharT* srcptr = first+length;
  302|  3.90M|        switch (length) {
  303|      7|        default:
  ------------------
  |  Branch (303:9): [True: 7, False: 3.90M]
  ------------------
  304|      7|            return conv_errc::over_long_utf8_sequence;
  305|  2.94k|        case 4:
  ------------------
  |  Branch (305:9): [True: 2.94k, False: 3.90M]
  ------------------
  306|  2.94k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (306:17): [True: 4, False: 2.93k]
  ------------------
  307|      4|                return conv_errc::expected_continuation_byte;
  308|  2.94k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  2.93k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  309|  3.40k|        case 3:
  ------------------
  |  Branch (309:9): [True: 472, False: 3.90M]
  ------------------
  310|  3.40k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (310:17): [True: 4, False: 3.40k]
  ------------------
  311|      4|                return conv_errc::expected_continuation_byte;
  312|  3.40k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  3.40k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  313|  3.64k|        case 2:
  ------------------
  |  Branch (313:9): [True: 236, False: 3.90M]
  ------------------
  314|  3.64k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (314:17): [True: 20, False: 3.62k]
  ------------------
  315|     20|                return conv_errc::expected_continuation_byte;
  316|       |
  317|  3.62k|            switch (static_cast<uint8_t>(*first)) 
  318|  3.62k|            {
  319|       |                // no fall-through in this inner switch
  320|    264|                case 0xE0: if (a < 0xA0) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (320:17): [True: 264, False: 3.35k]
  |  Branch (320:32): [True: 6, False: 258]
  ------------------
  321|    258|                case 0xED: if (a > 0x9F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (321:17): [True: 200, False: 3.42k]
  |  Branch (321:32): [True: 1, False: 199]
  ------------------
  322|  2.60k|                case 0xF0: if (a < 0x90) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (322:17): [True: 2.60k, False: 1.01k]
  |  Branch (322:32): [True: 4, False: 2.59k]
  ------------------
  323|  2.59k|                case 0xF4: if (a > 0x8F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (323:17): [True: 323, False: 3.29k]
  |  Branch (323:32): [True: 3, False: 320]
  ------------------
  324|    320|                default:   if (a < 0x80) return conv_errc::source_illegal;
  ------------------
  |  Branch (324:17): [True: 231, False: 3.38k]
  |  Branch (324:32): [True: 0, False: 231]
  ------------------
  325|  3.62k|            }
  326|       |
  327|  3.62k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  3.60k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  328|  3.90M|        case 1:
  ------------------
  |  Branch (328:9): [True: 3.90M, False: 3.65k]
  ------------------
  329|  3.90M|            if (static_cast<uint8_t>(*first) >= 0x80 && static_cast<uint8_t>(*first) < 0xC2)
  ------------------
  |  Branch (329:17): [True: 3.63k, False: 3.90M]
  |  Branch (329:57): [True: 33, False: 3.60k]
  ------------------
  330|     33|                return conv_errc::source_illegal;
  331|  3.90M|            break;
  332|  3.90M|        }
  333|  3.90M|        if (static_cast<uint8_t>(*first) > 0xF4) 
  ------------------
  |  Branch (333:13): [True: 1, False: 3.90M]
  ------------------
  334|      1|            return conv_errc::source_illegal;
  335|       |
  336|  3.90M|        return conv_errc();
  337|  3.90M|    }

_ZN8jsoncons4cbor6detail24min_length_for_stringrefEm:
   66|  3.62M|{
   67|  3.62M|    std::size_t n;
   68|  3.62M|    if (index <= 23)
  ------------------
  |  Branch (68:9): [True: 175k, False: 3.44M]
  ------------------
   69|   175k|    {
   70|   175k|        n = 3;
   71|   175k|    }
   72|  3.44M|    else if (index <= 255)
  ------------------
  |  Branch (72:14): [True: 250k, False: 3.19M]
  ------------------
   73|   250k|    {
   74|   250k|        n = 4;
   75|   250k|    }
   76|  3.19M|    else if (index <= 65535)
  ------------------
  |  Branch (76:14): [True: 3.09M, False: 105k]
  ------------------
   77|  3.09M|    {
   78|  3.09M|        n = 5;
   79|  3.09M|    }
   80|   105k|    else if (index <= 4294967295)
  ------------------
  |  Branch (80:14): [True: 105k, False: 0]
  ------------------
   81|   105k|    {
   82|   105k|        n = 7;
   83|   105k|    }
   84|      0|    else 
   85|      0|    {
   86|      0|        n = 11;
   87|      0|    }
   88|  3.62M|    return n;
   89|  3.62M|}

_ZN8jsoncons4cbor15make_error_codeENS0_9cbor_errcE:
   84|  7.82k|{
   85|  7.82k|    return std::error_code(static_cast<int>(e),cbor_error_category());
   86|  7.82k|}
_ZN8jsoncons4cbor19cbor_error_categoryEv:
   77|  7.82k|{
   78|  7.82k|  static cbor_error_category_impl instance;
   79|  7.82k|  return instance;
   80|  7.82k|}

_ZN8jsoncons4cbor19cbor_options_commonC2Ev:
   30|  9.77k|    {
   31|  9.77k|    }
_ZN8jsoncons4cbor19cbor_decode_optionsC2Ev:
   49|  9.77k|    {
   50|  9.77k|    }
_ZN8jsoncons4cbor19cbor_encode_optionsC2Ev:
   63|  9.77k|    {
   64|  9.77k|    }
_ZN8jsoncons4cbor19cbor_options_commonD2Ev:
   26|  19.5k|    virtual ~cbor_options_common() = default;
_ZN8jsoncons4cbor12cbor_options17max_nesting_depthEi:
   85|  9.77k|    {
   86|  9.77k|        this->max_nesting_depth_ = value;
   87|  9.77k|        return *this;
   88|  9.77k|    }
_ZN8jsoncons4cbor19cbor_options_commonC2ERKS1_:
   33|  9.77k|    cbor_options_common(const cbor_options_common&) = default;
_ZNK8jsoncons4cbor19cbor_options_common17max_nesting_depthEv:
   39|  11.6M|    {
   40|  11.6M|        return max_nesting_depth_;
   41|  11.6M|    }

_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_19basic_istringstreamIcNS4_11char_traitsIcEES6_EEEEOT_RKNS0_19cbor_decode_optionsERKS6_:
  186|  9.77k|    {
  187|  9.77k|        state_stack_.emplace_back(parse_mode::root,0);
  188|  9.77k|    }
_ZN8jsoncons4cbor11parse_stateC2ENS0_10parse_modeEmb:
   37|  11.6M|    {
   38|  11.6M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5resetEv:
  196|  9.77k|    {
  197|  9.77k|        more_ = true;
  198|  9.77k|        done_ = false;
  199|  9.77k|        text_buffer_.clear();
  200|  9.77k|        bytes_buffer_.clear();
  201|  9.77k|        item_tag_ = 0;
  202|  9.77k|        state_stack_.clear();
  203|  9.77k|        state_stack_.emplace_back(parse_mode::root,0);
  204|  9.77k|        typed_array_.clear();
  205|  9.77k|        stringref_map_stack_.clear();
  206|  9.77k|        nesting_depth_ = 0;
  207|  9.77k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5parseERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  237|  9.77k|    {
  238|  37.9M|        while (!done_ && more_)
  ------------------
  |  Branch (238:16): [True: 37.9M, False: 2.39k]
  |  Branch (238:26): [True: 37.9M, False: 6.19k]
  ------------------
  239|  37.9M|        {
  240|  37.9M|            switch (state_stack_.back().mode)
  ------------------
  |  Branch (240:21): [True: 0, False: 37.9M]
  ------------------
  241|  37.9M|            {
  242|  5.73k|                case parse_mode::multi_dim:
  ------------------
  |  Branch (242:17): [True: 5.73k, False: 37.9M]
  ------------------
  243|  5.73k|                {
  244|  5.73k|                    if (state_stack_.back().index == 0)
  ------------------
  |  Branch (244:25): [True: 3.56k, False: 2.17k]
  ------------------
  245|  3.56k|                    {
  246|  3.56k|                        ++state_stack_.back().index;
  247|  3.56k|                        read_item(visitor, ec);
  248|  3.56k|                    }
  249|  2.17k|                    else
  250|  2.17k|                    {
  251|  2.17k|                        produce_end_multi_dim(visitor, ec);
  252|  2.17k|                    }
  253|  5.73k|                    break;
  254|      0|                }
  255|  8.32M|                case parse_mode::array:
  ------------------
  |  Branch (255:17): [True: 8.32M, False: 29.5M]
  ------------------
  256|  8.32M|                {
  257|  8.32M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (257:25): [True: 6.63M, False: 1.68M]
  ------------------
  258|  6.63M|                    {
  259|  6.63M|                        ++state_stack_.back().index;
  260|  6.63M|                        read_item(visitor, ec);
  261|  6.63M|                    }
  262|  1.68M|                    else
  263|  1.68M|                    {
  264|  1.68M|                        end_array(visitor, ec);
  265|  1.68M|                    }
  266|  8.32M|                    break;
  267|      0|                }
  268|  9.94M|                case parse_mode::indefinite_array:
  ------------------
  |  Branch (268:17): [True: 9.94M, False: 27.9M]
  ------------------
  269|  9.94M|                {
  270|  9.94M|                    auto c = source_.peek();
  271|  9.94M|                    if (c.eof)
  ------------------
  |  Branch (271:25): [True: 644, False: 9.94M]
  ------------------
  272|    644|                    {
  273|    644|                        ec = cbor_errc::unexpected_eof;
  274|    644|                        more_ = false;
  275|    644|                        return;
  276|    644|                    }
  277|  9.94M|                    if (c.value == 0xff)
  ------------------
  |  Branch (277:25): [True: 107k, False: 9.83M]
  ------------------
  278|   107k|                    {
  279|   107k|                        source_.ignore(1);
  280|   107k|                        end_array(visitor, ec);
  281|   107k|                    }
  282|  9.83M|                    else
  283|  9.83M|                    {
  284|  9.83M|                        read_item(visitor, ec);
  285|  9.83M|                    }
  286|  9.94M|                    break;
  287|  9.94M|                }
  288|  5.60M|                case parse_mode::map_key:
  ------------------
  |  Branch (288:17): [True: 5.60M, False: 32.3M]
  ------------------
  289|  5.60M|                {
  290|  5.60M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (290:25): [True: 5.55M, False: 49.2k]
  ------------------
  291|  5.55M|                    {
  292|  5.55M|                        ++state_stack_.back().index;
  293|  5.55M|                        state_stack_.back().mode = parse_mode::map_value;
  294|  5.55M|                        read_item(visitor, ec);
  295|  5.55M|                    }
  296|  49.2k|                    else
  297|  49.2k|                    {
  298|  49.2k|                        end_object(visitor, ec);
  299|  49.2k|                    }
  300|  5.60M|                    break;
  301|  9.94M|                }
  302|  5.00M|                case parse_mode::map_value:
  ------------------
  |  Branch (302:17): [True: 5.00M, False: 32.8M]
  ------------------
  303|  5.00M|                {
  304|  5.00M|                    state_stack_.back().mode = parse_mode::map_key;
  305|  5.00M|                    read_item(visitor, ec);
  306|  5.00M|                    break;
  307|  9.94M|                }
  308|  5.78M|                case parse_mode::indefinite_map_key:
  ------------------
  |  Branch (308:17): [True: 5.78M, False: 32.1M]
  ------------------
  309|  5.78M|                {
  310|  5.78M|                    auto c = source_.peek();
  311|  5.78M|                    if (c.eof)
  ------------------
  |  Branch (311:25): [True: 538, False: 5.78M]
  ------------------
  312|    538|                    {
  313|    538|                        ec = cbor_errc::unexpected_eof;
  314|    538|                        more_ = false;
  315|    538|                        return;
  316|    538|                    }
  317|  5.78M|                    if (c.value == 0xff)
  ------------------
  |  Branch (317:25): [True: 8.81k, False: 5.77M]
  ------------------
  318|  8.81k|                    {
  319|  8.81k|                        source_.ignore(1);
  320|  8.81k|                        end_object(visitor, ec);
  321|  8.81k|                    }
  322|  5.77M|                    else
  323|  5.77M|                    {
  324|  5.77M|                        state_stack_.back().mode = parse_mode::indefinite_map_value;
  325|  5.77M|                        read_item(visitor, ec);
  326|  5.77M|                    }
  327|  5.78M|                    break;
  328|  5.78M|                }
  329|  3.22M|                case parse_mode::indefinite_map_value:
  ------------------
  |  Branch (329:17): [True: 3.22M, False: 34.6M]
  ------------------
  330|  3.22M|                {
  331|  3.22M|                    state_stack_.back().mode = parse_mode::indefinite_map_key;
  332|  3.22M|                    read_item(visitor, ec);
  333|  3.22M|                    break;
  334|  5.78M|                }
  335|  9.77k|                case parse_mode::root:
  ------------------
  |  Branch (335:17): [True: 9.77k, False: 37.8M]
  ------------------
  336|  9.77k|                {
  337|  9.77k|                    state_stack_.back().mode = parse_mode::accept;
  338|  9.77k|                    read_item(visitor, ec);
  339|  9.77k|                    break;
  340|  5.78M|                }
  341|  2.39k|                case parse_mode::accept:
  ------------------
  |  Branch (341:17): [True: 2.39k, False: 37.9M]
  ------------------
  342|  2.39k|                {
  343|  2.39k|                    JSONCONS_ASSERT(state_stack_.size() == 1);
  ------------------
  |  |  378|  2.39k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.39k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  344|  2.39k|                    state_stack_.clear();
  345|  2.39k|                    more_ = false;
  346|  2.39k|                    done_ = true;
  347|  2.39k|                    visitor.flush();
  348|  2.39k|                    break;
  349|  2.39k|                }
  350|  37.9M|            }
  351|  37.9M|        }
  352|  9.77k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9read_itemERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  355|  36.0M|    {
  356|  36.0M|        read_tags(ec);
  357|  36.0M|        if (!more_)
  ------------------
  |  Branch (357:13): [True: 4.41k, False: 36.0M]
  ------------------
  358|  4.41k|        {
  359|  4.41k|            return;
  360|  4.41k|        }
  361|  36.0M|        auto c = source_.peek();
  362|  36.0M|        if (c.eof)
  ------------------
  |  Branch (362:13): [True: 0, False: 36.0M]
  ------------------
  363|      0|        {
  364|      0|            ec = cbor_errc::unexpected_eof;
  365|      0|            more_ = false;
  366|      0|            return;
  367|      0|        }
  368|  36.0M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  369|  36.0M|        uint8_t info = get_additional_information_value(c.value);
  370|       |
  371|  36.0M|        switch (major_type)
  372|  36.0M|        {
  373|  9.26M|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (373:13): [True: 9.26M, False: 26.7M]
  ------------------
  374|  9.26M|            {
  375|  9.26M|                uint64_t val = get_uint64_value(ec);
  376|  9.26M|                if (ec)
  ------------------
  |  Branch (376:21): [True: 10.7k, False: 9.24M]
  ------------------
  377|  10.7k|                {
  378|  10.7k|                    return;
  379|  10.7k|                }
  380|  9.24M|                if (!stringref_map_stack_.empty() && other_tags_[stringref_tag])
  ------------------
  |  Branch (380:21): [True: 4.31M, False: 4.93M]
  |  Branch (380:21): [True: 44.2k, False: 9.20M]
  |  Branch (380:54): [True: 44.2k, False: 4.26M]
  ------------------
  381|  44.2k|                {
  382|  44.2k|                    other_tags_[stringref_tag] = false;
  383|  44.2k|                    if (val >= stringref_map_stack_.back().size())
  ------------------
  |  Branch (383:25): [True: 111, False: 44.1k]
  ------------------
  384|    111|                    {
  385|    111|                        ec = cbor_errc::stringref_too_large;
  386|    111|                        more_ = false;
  387|    111|                        return;
  388|    111|                    }
  389|  44.1k|                    auto index = static_cast<typename stringref_map::size_type>(val);
  390|  44.1k|                    if (index != val)
  ------------------
  |  Branch (390:25): [True: 0, False: 44.1k]
  ------------------
  391|      0|                    {
  392|      0|                        ec = cbor_errc::number_too_large;
  393|      0|                        more_ = false;
  394|      0|                        return;
  395|      0|                    }
  396|  44.1k|                    auto& str = stringref_map_stack_.back().at(index);
  397|  44.1k|                    switch (str.type)
  398|  44.1k|                    {
  399|    425|                        case jsoncons::cbor::detail::cbor_major_type::text_string:
  ------------------
  |  Branch (399:25): [True: 425, False: 43.7k]
  ------------------
  400|    425|                        {
  401|    425|                            handle_string(visitor, jsoncons::basic_string_view<char>(str.str.data(),str.str.length()),ec);
  402|    425|                            if (ec)
  ------------------
  |  Branch (402:33): [True: 0, False: 425]
  ------------------
  403|      0|                            {
  404|      0|                                return;
  405|      0|                            }
  406|    425|                            break;
  407|    425|                        }
  408|  43.7k|                        case jsoncons::cbor::detail::cbor_major_type::byte_string:
  ------------------
  |  Branch (408:25): [True: 43.7k, False: 425]
  ------------------
  409|  43.7k|                        {
  410|  43.7k|                            read_byte_string_from_buffer read(byte_string_view(str.bytes));
  411|  43.7k|                            write_byte_string(read, visitor, ec);
  412|  43.7k|                            if (ec)
  ------------------
  |  Branch (412:33): [True: 0, False: 43.7k]
  ------------------
  413|      0|                            {
  414|      0|                                return;
  415|      0|                            }
  416|  43.7k|                            break;
  417|  43.7k|                        }
  418|  43.7k|                        default:
  ------------------
  |  Branch (418:25): [True: 0, False: 44.1k]
  ------------------
  419|      0|                            JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
  420|      0|                            break;
  421|  44.1k|                    }
  422|  44.1k|                }
  423|  9.20M|                else
  424|  9.20M|                {
  425|  9.20M|                    semantic_tag tag = semantic_tag::none;
  426|  9.20M|                    if (other_tags_[item_tag])
  ------------------
  |  Branch (426:25): [True: 19.1k, False: 9.18M]
  ------------------
  427|  19.1k|                    {
  428|  19.1k|                        if (item_tag_ == 1)
  ------------------
  |  Branch (428:29): [True: 579, False: 18.5k]
  ------------------
  429|    579|                        {
  430|    579|                            tag = semantic_tag::epoch_second;
  431|    579|                        }
  432|  19.1k|                        other_tags_[item_tag] = false;
  433|  19.1k|                    }
  434|  9.20M|                    more_ = visitor.uint64_value(val, tag, *this, ec);
  435|  9.20M|                }
  436|  9.24M|                break;
  437|  9.24M|            }
  438|  9.24M|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (438:13): [True: 1.98M, False: 34.0M]
  ------------------
  439|  1.98M|            {
  440|  1.98M|                int64_t val = get_int64_value(ec);
  441|  1.98M|                if (ec)
  ------------------
  |  Branch (441:21): [True: 599, False: 1.98M]
  ------------------
  442|    599|                {
  443|    599|                    return;
  444|    599|                }
  445|  1.98M|                semantic_tag tag = semantic_tag::none;
  446|  1.98M|                if (other_tags_[item_tag])
  ------------------
  |  Branch (446:21): [True: 13.0k, False: 1.96M]
  ------------------
  447|  13.0k|                {
  448|  13.0k|                    if (item_tag_ == 1)
  ------------------
  |  Branch (448:25): [True: 212, False: 12.8k]
  ------------------
  449|    212|                    {
  450|    212|                        tag = semantic_tag::epoch_second;
  451|    212|                    }
  452|  13.0k|                    other_tags_[item_tag] = false;
  453|  13.0k|                }
  454|  1.98M|                more_ = visitor.int64_value(val, tag, *this, ec);
  455|  1.98M|                break;
  456|  1.98M|            }
  457|  10.1M|            case jsoncons::cbor::detail::cbor_major_type::byte_string:
  ------------------
  |  Branch (457:13): [True: 10.1M, False: 25.8M]
  ------------------
  458|  10.1M|            {
  459|  10.1M|                read_byte_string_from_source read(this);
  460|  10.1M|                write_byte_string(read, visitor, ec);
  461|  10.1M|                if (ec)
  ------------------
  |  Branch (461:21): [True: 40.2k, False: 10.1M]
  ------------------
  462|  40.2k|                {
  463|  40.2k|                    return;
  464|  40.2k|                }
  465|  10.1M|                break;
  466|  10.1M|            }
  467|  10.1M|            case jsoncons::cbor::detail::cbor_major_type::text_string:
  ------------------
  |  Branch (467:13): [True: 994k, False: 35.0M]
  ------------------
  468|   994k|            {
  469|   994k|                text_buffer_.clear();
  470|       |
  471|   994k|                read_text_string(text_buffer_, ec);
  472|   994k|                if (ec)
  ------------------
  |  Branch (472:21): [True: 1.07k, False: 993k]
  ------------------
  473|  1.07k|                {
  474|  1.07k|                    return;
  475|  1.07k|                }
  476|   993k|                auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  477|   993k|                if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (477:21): [True: 99, False: 992k]
  ------------------
  478|     99|                {
  479|     99|                    ec = cbor_errc::invalid_utf8_text_string;
  480|     99|                    more_ = false;
  481|     99|                    return;
  482|     99|                }
  483|   992k|                handle_string(visitor, jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()),ec);
  484|   992k|                if (ec)
  ------------------
  |  Branch (484:21): [True: 0, False: 992k]
  ------------------
  485|      0|                {
  486|      0|                    return;
  487|      0|                }
  488|   992k|                break;
  489|   992k|            }
  490|   992k|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (490:13): [True: 0, False: 36.0M]
  ------------------
  491|      0|            {
  492|      0|                JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
  493|      0|                break;
  494|   992k|            }
  495|  1.76M|            case jsoncons::cbor::detail::cbor_major_type::simple:
  ------------------
  |  Branch (495:13): [True: 1.76M, False: 34.2M]
  ------------------
  496|  1.76M|            {
  497|  1.76M|                switch (info)
  498|  1.76M|                {
  499|   189k|                    case 0x14:
  ------------------
  |  Branch (499:21): [True: 189k, False: 1.57M]
  ------------------
  500|   189k|                        more_ = visitor.bool_value(false, semantic_tag::none, *this, ec);
  501|   189k|                        source_.ignore(1);
  502|   189k|                        break;
  503|   742k|                    case 0x15:
  ------------------
  |  Branch (503:21): [True: 742k, False: 1.02M]
  ------------------
  504|   742k|                        more_ = visitor.bool_value(true, semantic_tag::none, *this, ec);
  505|   742k|                        source_.ignore(1);
  506|   742k|                        break;
  507|   749k|                    case 0x16:
  ------------------
  |  Branch (507:21): [True: 749k, False: 1.01M]
  ------------------
  508|   749k|                        more_ = visitor.null_value(semantic_tag::none, *this, ec);
  509|   749k|                        source_.ignore(1);
  510|   749k|                        break;
  511|  36.1k|                    case 0x17:
  ------------------
  |  Branch (511:21): [True: 36.1k, False: 1.72M]
  ------------------
  512|  36.1k|                        more_ = visitor.null_value(semantic_tag::undefined, *this, ec);
  513|  36.1k|                        source_.ignore(1);
  514|  36.1k|                        break;
  515|  30.6k|                    case 0x19: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (515:21): [True: 30.6k, False: 1.73M]
  ------------------
  516|  30.6k|                    {
  517|  30.6k|                        uint64_t val = get_uint64_value(ec);
  518|  30.6k|                        if (ec)
  ------------------
  |  Branch (518:29): [True: 1.45k, False: 29.1k]
  ------------------
  519|  1.45k|                        {
  520|  1.45k|                            return;
  521|  1.45k|                        }
  522|  29.1k|                        more_ = visitor.half_value(static_cast<uint16_t>(val), semantic_tag::none, *this, ec);
  523|  29.1k|                        break;
  524|  30.6k|                    }
  525|  13.2k|                    case 0x1a: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (525:21): [True: 13.2k, False: 1.75M]
  ------------------
  526|  16.2k|                    case 0x1b: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (526:21): [True: 3.04k, False: 1.76M]
  ------------------
  527|  16.2k|                    {
  528|  16.2k|                        double val = get_double(ec);
  529|  16.2k|                        if (ec)
  ------------------
  |  Branch (529:29): [True: 229, False: 16.0k]
  ------------------
  530|    229|                        {
  531|    229|                            return;
  532|    229|                        }
  533|  16.0k|                        semantic_tag tag = semantic_tag::none;
  534|  16.0k|                        if (other_tags_[item_tag])
  ------------------
  |  Branch (534:29): [True: 706, False: 15.3k]
  ------------------
  535|    706|                        {
  536|    706|                            if (item_tag_ == 1)
  ------------------
  |  Branch (536:33): [True: 197, False: 509]
  ------------------
  537|    197|                            {
  538|    197|                                tag = semantic_tag::epoch_second;
  539|    197|                            }
  540|    706|                            other_tags_[item_tag] = false;
  541|    706|                        }
  542|  16.0k|                        more_ = visitor.double_value(val, tag, *this, ec);
  543|  16.0k|                        break;
  544|  16.2k|                    }
  545|    153|                    default:
  ------------------
  |  Branch (545:21): [True: 153, False: 1.76M]
  ------------------
  546|    153|                    {
  547|    153|                        ec = cbor_errc::unknown_type;
  548|    153|                        more_ = false;
  549|    153|                        return;
  550|  16.2k|                    }
  551|  1.76M|                }
  552|  1.76M|                break;
  553|  1.76M|            }
  554|  8.70M|            case jsoncons::cbor::detail::cbor_major_type::array:
  ------------------
  |  Branch (554:13): [True: 8.70M, False: 27.3M]
  ------------------
  555|  8.70M|            {
  556|  8.70M|                if (other_tags_[item_tag])
  ------------------
  |  Branch (556:21): [True: 260k, False: 8.44M]
  ------------------
  557|   260k|                {
  558|   260k|                    switch (item_tag_)
  559|   260k|                    {
  560|   137k|                        case 0x04:
  ------------------
  |  Branch (560:25): [True: 137k, False: 122k]
  ------------------
  561|   137k|                            text_buffer_.clear();
  562|   137k|                            read_decimal_fraction(text_buffer_, ec);
  563|   137k|                            if (ec)
  ------------------
  |  Branch (563:33): [True: 955, False: 136k]
  ------------------
  564|    955|                            {
  565|    955|                                return;
  566|    955|                            }
  567|   136k|                            more_ = visitor.string_value(text_buffer_, semantic_tag::bigdec, *this, ec);
  568|   136k|                            break;
  569|  97.2k|                        case 0x05:
  ------------------
  |  Branch (569:25): [True: 97.2k, False: 162k]
  ------------------
  570|  97.2k|                            text_buffer_.clear();
  571|  97.2k|                            read_bigfloat(text_buffer_, ec);
  572|  97.2k|                            if (ec)
  ------------------
  |  Branch (572:33): [True: 1.11k, False: 96.1k]
  ------------------
  573|  1.11k|                            {
  574|  1.11k|                                return;
  575|  1.11k|                            }
  576|  96.1k|                            more_ = visitor.string_value(text_buffer_, semantic_tag::bigfloat, *this, ec);
  577|  96.1k|                            break;
  578|  2.74k|                        case 40: // row major storage
  ------------------
  |  Branch (578:25): [True: 2.74k, False: 257k]
  ------------------
  579|  2.74k|                            produce_begin_multi_dim(visitor, semantic_tag::multi_dim_row_major, ec);
  580|  2.74k|                            break;
  581|  1.22k|                        case 1040: // column major storage
  ------------------
  |  Branch (581:25): [True: 1.22k, False: 258k]
  ------------------
  582|  1.22k|                            produce_begin_multi_dim(visitor, semantic_tag::multi_dim_column_major, ec);
  583|  1.22k|                            break;
  584|  20.8k|                        default:
  ------------------
  |  Branch (584:25): [True: 20.8k, False: 239k]
  ------------------
  585|  20.8k|                            begin_array(visitor, info, ec);
  586|  20.8k|                            break;
  587|   260k|                    }
  588|   257k|                    other_tags_[item_tag] = false;
  589|   257k|                }
  590|  8.44M|                else
  591|  8.44M|                {
  592|  8.44M|                    begin_array(visitor, info, ec);
  593|  8.44M|                }
  594|  8.70M|                break;
  595|  8.70M|            }
  596|  8.70M|            case jsoncons::cbor::detail::cbor_major_type::map:
  ------------------
  |  Branch (596:13): [True: 3.17M, False: 32.8M]
  ------------------
  597|  3.17M|            {
  598|  3.17M|                begin_object(visitor, info, ec);
  599|  3.17M|                break;
  600|  8.70M|            }
  601|      0|            default:
  ------------------
  |  Branch (601:13): [True: 0, False: 36.0M]
  ------------------
  602|      0|                break;
  603|  36.0M|        }
  604|  35.9M|        other_tags_[item_tag] = false;
  605|  35.9M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9read_tagsERNS4_10error_codeE:
 1420|  36.0M|    {
 1421|  36.0M|        auto c = source_.peek();
 1422|  36.0M|        if (c.eof)
  ------------------
  |  Branch (1422:13): [True: 4.07k, False: 36.0M]
  ------------------
 1423|  4.07k|        {
 1424|  4.07k|            ec = cbor_errc::unexpected_eof;
 1425|  4.07k|            more_ = false;
 1426|  4.07k|            return;
 1427|  4.07k|        }
 1428|  36.0M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
 1429|       |
 1430|  38.0M|        while (major_type == jsoncons::cbor::detail::cbor_major_type::semantic_tag)
  ------------------
  |  Branch (1430:16): [True: 2.04M, False: 36.0M]
  ------------------
 1431|  2.04M|        {
 1432|  2.04M|            uint64_t val = get_uint64_value(ec);
 1433|  2.04M|            if (!more_)
  ------------------
  |  Branch (1433:17): [True: 52, False: 2.04M]
  ------------------
 1434|     52|            {
 1435|     52|                return;
 1436|     52|            }
 1437|  2.04M|            switch(val)
 1438|  2.04M|            {
 1439|  53.2k|                case 25: // stringref
  ------------------
  |  Branch (1439:17): [True: 53.2k, False: 1.98M]
  ------------------
 1440|  53.2k|                    other_tags_[stringref_tag] = true;
 1441|  53.2k|                    break;
 1442|   305k|                case 256: // stringref-namespace
  ------------------
  |  Branch (1442:17): [True: 305k, False: 1.73M]
  ------------------
 1443|   305k|                    other_tags_[stringref_namespace_tag] = true;
 1444|   305k|                    break;
 1445|  1.68M|                default:
  ------------------
  |  Branch (1445:17): [True: 1.68M, False: 358k]
  ------------------
 1446|  1.68M|                    other_tags_[item_tag] = true;
 1447|  1.68M|                    item_tag_ = val;
 1448|  1.68M|                    break;
 1449|  2.04M|            }
 1450|  2.04M|            c = source_.peek();
 1451|  2.04M|            if (c.eof)
  ------------------
  |  Branch (1451:17): [True: 282, False: 2.04M]
  ------------------
 1452|    282|            {
 1453|    282|                ec = cbor_errc::unexpected_eof;
 1454|    282|                more_ = false;
 1455|    282|                return;
 1456|    282|            }
 1457|  2.04M|            major_type = get_major_type(c.value);
 1458|  2.04M|        }
 1459|  36.0M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE14get_major_typeEh:
 1406|  95.4M|    {
 1407|  95.4M|        static constexpr uint8_t major_type_shift = 0x05;
 1408|  95.4M|        uint8_t value = type >> major_type_shift;
 1409|  95.4M|        return static_cast<jsoncons::cbor::detail::cbor_major_type>(value);
 1410|  95.4M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE32get_additional_information_valueEh:
 1413|  91.0M|    {
 1414|  91.0M|        static constexpr uint8_t additional_information_mask = (1U << 5) - 1;
 1415|  91.0M|        uint8_t value = type & additional_information_mask;
 1416|  91.0M|        return value;
 1417|  91.0M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16get_uint64_valueERNS4_10error_codeE:
  881|  34.1M|    {
  882|  34.1M|        uint64_t val = 0;
  883|       |
  884|  34.1M|        uint8_t initial_b;
  885|  34.1M|        if (source_.read(&initial_b, 1) == 0)
  ------------------
  |  Branch (885:13): [True: 137, False: 34.1M]
  ------------------
  886|    137|        {
  887|    137|            ec = cbor_errc::unexpected_eof;
  888|    137|            more_ = false;
  889|    137|            return 0;
  890|    137|        }
  891|  34.1M|        uint8_t info = get_additional_information_value(initial_b);
  892|  34.1M|        switch (info)
  893|  34.1M|        {
  894|  30.1M|            case JSONCONS_CBOR_0x00_0x17: // Integer 0x00..0x17 (0..23)
  ------------------
  |  |   22|  30.1M|    0x00:case 0x01:case 0x02:case 0x03:case 0x04:case 0x05:case 0x06:case 0x07:case 0x08:case 0x09:case 0x0a:case 0x0b:case 0x0c:case 0x0d:case 0x0e:case 0x0f:case 0x10:case 0x11:case 0x12:case 0x13:case 0x14:case 0x15:case 0x16:case 0x17
  |  |  ------------------
  |  |  |  Branch (22:10): [True: 736k, False: 33.4M]
  |  |  |  Branch (22:20): [True: 373k, False: 33.7M]
  |  |  |  Branch (22:30): [True: 52.7k, False: 34.1M]
  |  |  |  Branch (22:40): [True: 263k, False: 33.9M]
  |  |  |  Branch (22:50): [True: 3.47M, False: 30.6M]
  |  |  |  Branch (22:60): [True: 18.1k, False: 34.1M]
  |  |  |  Branch (22:70): [True: 557k, False: 33.6M]
  |  |  |  Branch (22:80): [True: 26.2k, False: 34.1M]
  |  |  |  Branch (22:90): [True: 1.91M, False: 32.2M]
  |  |  |  Branch (22:100): [True: 17.7k, False: 34.1M]
  |  |  |  Branch (22:110): [True: 102k, False: 34.0M]
  |  |  |  Branch (22:120): [True: 339k, False: 33.8M]
  |  |  |  Branch (22:130): [True: 8.24k, False: 34.1M]
  |  |  |  Branch (22:140): [True: 10.8k, False: 34.1M]
  |  |  |  Branch (22:150): [True: 25.1k, False: 34.1M]
  |  |  |  Branch (22:160): [True: 1.25M, False: 32.9M]
  |  |  |  Branch (22:170): [True: 3.53M, False: 30.6M]
  |  |  |  Branch (22:180): [True: 17.7k, False: 34.1M]
  |  |  |  Branch (22:190): [True: 23.0k, False: 34.1M]
  |  |  |  Branch (22:200): [True: 14.0k, False: 34.1M]
  |  |  |  Branch (22:210): [True: 529k, False: 33.6M]
  |  |  |  Branch (22:220): [True: 21.4k, False: 34.1M]
  |  |  ------------------
  ------------------
  |  Branch (894:13): [True: 16.7M, False: 17.4M]
  ------------------
  895|  30.1M|            {
  896|  30.1M|                val = info;
  897|  30.1M|                break;
  898|   534M|            }
  899|       |
  900|   317k|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (900:13): [True: 317k, False: 33.8M]
  ------------------
  901|   317k|            {
  902|   317k|                uint8_t b;
  903|   317k|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (903:21): [True: 82, False: 317k]
  ------------------
  904|     82|                {
  905|     82|                    ec = cbor_errc::unexpected_eof;
  906|     82|                    more_ = false;
  907|     82|                    return val;
  908|     82|                }
  909|   317k|                val = b;
  910|   317k|                break;
  911|   317k|            }
  912|       |
  913|   349k|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (913:13): [True: 349k, False: 33.8M]
  ------------------
  914|   349k|            {
  915|   349k|                uint8_t buf[sizeof(uint16_t)];
  916|   349k|                source_.read(buf, sizeof(uint16_t));
  917|   349k|                val = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  918|   349k|                break;
  919|   317k|            }
  920|       |
  921|  5.93k|            case 0x1a: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (921:13): [True: 5.93k, False: 34.1M]
  ------------------
  922|  5.93k|            {
  923|  5.93k|                uint8_t buf[sizeof(uint32_t)];
  924|  5.93k|                source_.read(buf, sizeof(uint32_t));
  925|  5.93k|                val = binary::big_to_native<uint32_t>(buf, sizeof(buf));
  926|  5.93k|                break;
  927|   317k|            }
  928|       |
  929|  10.1k|            case 0x1b: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (929:13): [True: 10.1k, False: 34.1M]
  ------------------
  930|  10.1k|            {
  931|  10.1k|                uint8_t buf[sizeof(uint64_t)];
  932|  10.1k|                source_.read(buf, sizeof(uint64_t));
  933|  10.1k|                val = binary::big_to_native<uint64_t>(buf, sizeof(buf));
  934|  10.1k|                break;
  935|   317k|            }
  936|  3.38M|            default:
  ------------------
  |  Branch (936:13): [True: 3.38M, False: 30.7M]
  ------------------
  937|  3.38M|                break;
  938|  34.1M|        }
  939|  34.1M|        return val;
  940|  34.1M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13handle_stringERNS_24basic_item_event_visitorIcEERKNS_6detail17basic_string_viewIcNS4_11char_traitsIcEEEERNS4_10error_codeE:
 1462|   993k|    {
 1463|   993k|        semantic_tag tag = semantic_tag::none;
 1464|   993k|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1464:13): [True: 4.06k, False: 989k]
  ------------------
 1465|  4.06k|        {
 1466|  4.06k|            switch (item_tag_)
 1467|  4.06k|            {
 1468|    228|                case 0:
  ------------------
  |  Branch (1468:17): [True: 228, False: 3.83k]
  ------------------
 1469|    228|                    tag = semantic_tag::datetime;
 1470|    228|                    break;
 1471|    320|                case 32:
  ------------------
  |  Branch (1471:17): [True: 320, False: 3.74k]
  ------------------
 1472|    320|                    tag = semantic_tag::uri;
 1473|    320|                    break;
 1474|    194|                case 33:
  ------------------
  |  Branch (1474:17): [True: 194, False: 3.87k]
  ------------------
 1475|    194|                    tag = semantic_tag::base64url;
 1476|    194|                    break;
 1477|    213|                case 34:
  ------------------
  |  Branch (1477:17): [True: 213, False: 3.85k]
  ------------------
 1478|    213|                    tag = semantic_tag::base64;
 1479|    213|                    break;
 1480|  3.11k|                default:
  ------------------
  |  Branch (1480:17): [True: 3.11k, False: 955]
  ------------------
 1481|  3.11k|                    break;
 1482|  4.06k|            }
 1483|  4.06k|            other_tags_[item_tag] = false;
 1484|  4.06k|        }
 1485|   993k|        more_ = visitor.string_value(v, tag, *this, ec);
 1486|   993k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_bufferC2ERKNS_16byte_string_viewE:
  139|  43.7k|        {
  140|  43.7k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE17write_byte_stringINS7_28read_byte_string_from_bufferEEEvT_RNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1503|  43.7k|    {
 1504|  43.7k|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1504:13): [True: 38.9k, False: 4.79k]
  ------------------
 1505|  38.9k|        {
 1506|  38.9k|            switch (item_tag_)
 1507|  38.9k|            {
 1508|  2.32k|                case 0x2:
  ------------------
  |  Branch (1508:17): [True: 2.32k, False: 36.6k]
  ------------------
 1509|  2.32k|                {
 1510|  2.32k|                    bytes_buffer_.clear();
 1511|  2.32k|                    read(bytes_buffer_,ec);
 1512|  2.32k|                    if (ec)
  ------------------
  |  Branch (1512:25): [True: 0, False: 2.32k]
  ------------------
 1513|      0|                    {
 1514|      0|                        more_ = false;
 1515|      0|                        return;
 1516|      0|                    }
 1517|  2.32k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1518|  2.32k|                    text_buffer_.clear();
 1519|  2.32k|                    n.write_string(text_buffer_);
 1520|  2.32k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1521|  2.32k|                    break;
 1522|  2.32k|                }
 1523|  1.96k|                case 0x3:
  ------------------
  |  Branch (1523:17): [True: 1.96k, False: 36.9k]
  ------------------
 1524|  1.96k|                {
 1525|  1.96k|                    bytes_buffer_.clear();
 1526|  1.96k|                    read(bytes_buffer_,ec);
 1527|  1.96k|                    if (ec)
  ------------------
  |  Branch (1527:25): [True: 0, False: 1.96k]
  ------------------
 1528|      0|                    {
 1529|      0|                        more_ = false;
 1530|      0|                        return;
 1531|      0|                    }
 1532|  1.96k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1533|  1.96k|                    n = -1 - n;
 1534|  1.96k|                    text_buffer_.clear();
 1535|  1.96k|                    n.write_string(text_buffer_);
 1536|  1.96k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1537|  1.96k|                    break;
 1538|  1.96k|                }
 1539|    195|                case 0x15:
  ------------------
  |  Branch (1539:17): [True: 195, False: 38.7k]
  ------------------
 1540|    195|                {
 1541|    195|                    read(bytes_buffer_,ec);
 1542|    195|                    if (ec)
  ------------------
  |  Branch (1542:25): [True: 0, False: 195]
  ------------------
 1543|      0|                    {
 1544|      0|                        more_ = false;
 1545|      0|                        return;
 1546|      0|                    }
 1547|    195|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64url, *this, ec);
 1548|    195|                    break;
 1549|    195|                }
 1550|    231|                case 0x16:
  ------------------
  |  Branch (1550:17): [True: 231, False: 38.7k]
  ------------------
 1551|    231|                {
 1552|    231|                    read(bytes_buffer_,ec);
 1553|    231|                    if (ec)
  ------------------
  |  Branch (1553:25): [True: 0, False: 231]
  ------------------
 1554|      0|                    {
 1555|      0|                        more_ = false;
 1556|      0|                        return;
 1557|      0|                    }
 1558|    231|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64, *this, ec);
 1559|    231|                    break;
 1560|    231|                }
 1561|    252|                case 0x17:
  ------------------
  |  Branch (1561:17): [True: 252, False: 38.7k]
  ------------------
 1562|    252|                {
 1563|    252|                    read(bytes_buffer_,ec);
 1564|    252|                    if (ec)
  ------------------
  |  Branch (1564:25): [True: 0, False: 252]
  ------------------
 1565|      0|                    {
 1566|      0|                        more_ = false;
 1567|      0|                        return;
 1568|      0|                    }
 1569|    252|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base16, *this, ec);
 1570|    252|                    break;
 1571|    252|                }
 1572|    651|                case 0x40:
  ------------------
  |  Branch (1572:17): [True: 651, False: 38.3k]
  ------------------
 1573|    651|                {
 1574|    651|                    typed_array_.clear();
 1575|    651|                    read(typed_array_,ec);
 1576|    651|                    if (ec)
  ------------------
  |  Branch (1576:25): [True: 0, False: 651]
  ------------------
 1577|      0|                    {
 1578|      0|                        more_ = false;
 1579|      0|                        return;
 1580|      0|                    }
 1581|    651|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1582|    651|                    std::size_t size = typed_array_.size();
 1583|    651|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::none, *this, ec);
 1584|    651|                    break;
 1585|    651|                }
 1586|    274|                case 0x44:
  ------------------
  |  Branch (1586:17): [True: 274, False: 38.6k]
  ------------------
 1587|    274|                {
 1588|    274|                    typed_array_.clear();
 1589|    274|                    read(typed_array_,ec);
 1590|    274|                    if (ec)
  ------------------
  |  Branch (1590:25): [True: 0, False: 274]
  ------------------
 1591|      0|                    {
 1592|      0|                        more_ = false;
 1593|      0|                        return;
 1594|      0|                    }
 1595|    274|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1596|    274|                    std::size_t size = typed_array_.size();
 1597|    274|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::clamped, *this, ec);
 1598|    274|                    break;
 1599|    274|                }
 1600|  3.03k|                case 0x41:
  ------------------
  |  Branch (1600:17): [True: 3.03k, False: 35.9k]
  ------------------
 1601|  3.25k|                case 0x45:
  ------------------
  |  Branch (1601:17): [True: 216, False: 38.7k]
  ------------------
 1602|  3.25k|                {
 1603|  3.25k|                    typed_array_.clear();
 1604|  3.25k|                    read(typed_array_,ec);
 1605|  3.25k|                    if (ec)
  ------------------
  |  Branch (1605:25): [True: 0, False: 3.25k]
  ------------------
 1606|      0|                    {
 1607|      0|                        more_ = false;
 1608|      0|                        return;
 1609|      0|                    }
 1610|  3.25k|                    const uint8_t tag = (uint8_t)item_tag_;
 1611|  3.25k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1612|  3.25k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1613|       |
 1614|  3.25k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1615|  3.25k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1616|       |
 1617|  3.25k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1617:25): [True: 3.03k, False: 216]
  ------------------
 1618|  3.03k|                    {
 1619|  1.14M|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1619:49): [True: 1.14M, False: 3.03k]
  ------------------
 1620|  1.14M|                        {
 1621|  1.14M|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1622|  1.14M|                        }
 1623|  3.03k|                    }
 1624|  3.25k|                    more_ = visitor.typed_array(jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1625|  3.25k|                    break;
 1626|  3.25k|                }
 1627|  1.19k|                case 0x42:
  ------------------
  |  Branch (1627:17): [True: 1.19k, False: 37.7k]
  ------------------
 1628|  1.47k|                case 0x46:
  ------------------
  |  Branch (1628:17): [True: 276, False: 38.6k]
  ------------------
 1629|  1.47k|                {
 1630|  1.47k|                    typed_array_.clear();
 1631|  1.47k|                    read(typed_array_,ec);
 1632|  1.47k|                    if (ec)
  ------------------
  |  Branch (1632:25): [True: 0, False: 1.47k]
  ------------------
 1633|      0|                    {
 1634|      0|                        more_ = false;
 1635|      0|                        return;
 1636|      0|                    }
 1637|  1.47k|                    const uint8_t tag = (uint8_t)item_tag_;
 1638|  1.47k|                    jsoncons::endian e = get_typed_array_endianness(tag);
 1639|  1.47k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1640|       |
 1641|  1.47k|                    uint32_t* data = reinterpret_cast<uint32_t*>(typed_array_.data());
 1642|  1.47k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1643|  1.47k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1643:25): [True: 1.19k, False: 276]
  ------------------
 1644|  1.19k|                    {
 1645|   550k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1645:49): [True: 549k, False: 1.19k]
  ------------------
 1646|   549k|                        {
 1647|   549k|                            data[i] = binary::byte_swap<uint32_t>(data[i]);
 1648|   549k|                        }
 1649|  1.19k|                    }
 1650|  1.47k|                    more_ = visitor.typed_array(jsoncons::span<const uint32_t>(data,size), semantic_tag::none, *this, ec);
 1651|  1.47k|                    break;
 1652|  1.47k|                }
 1653|  4.12k|                case 0x43:
  ------------------
  |  Branch (1653:17): [True: 4.12k, False: 34.8k]
  ------------------
 1654|  4.85k|                case 0x47:
  ------------------
  |  Branch (1654:17): [True: 726, False: 38.2k]
  ------------------
 1655|  4.85k|                {
 1656|  4.85k|                    typed_array_.clear();
 1657|  4.85k|                    read(typed_array_,ec);
 1658|  4.85k|                    if (ec)
  ------------------
  |  Branch (1658:25): [True: 0, False: 4.85k]
  ------------------
 1659|      0|                    {
 1660|      0|                        more_ = false;
 1661|      0|                        return;
 1662|      0|                    }
 1663|  4.85k|                    const uint8_t tag = (uint8_t)item_tag_;
 1664|  4.85k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1665|  4.85k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1666|       |
 1667|  4.85k|                    uint64_t* data = reinterpret_cast<uint64_t*>(typed_array_.data());
 1668|  4.85k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1669|  4.85k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1669:25): [True: 4.12k, False: 726]
  ------------------
 1670|  4.12k|                    {
 1671|   571k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1671:49): [True: 567k, False: 4.12k]
  ------------------
 1672|   567k|                        {
 1673|   567k|                            data[i] = binary::byte_swap<uint64_t>(data[i]);
 1674|   567k|                        }
 1675|  4.12k|                    }
 1676|  4.85k|                    more_ = visitor.typed_array(jsoncons::span<const uint64_t>(data,size), semantic_tag::none, *this, ec);
 1677|  4.85k|                    break;
 1678|  4.85k|                }
 1679|    289|                case 0x48:
  ------------------
  |  Branch (1679:17): [True: 289, False: 38.6k]
  ------------------
 1680|    289|                {
 1681|    289|                    typed_array_.clear();
 1682|    289|                    read(typed_array_,ec);
 1683|    289|                    if (ec)
  ------------------
  |  Branch (1683:25): [True: 0, False: 289]
  ------------------
 1684|      0|                    {
 1685|      0|                        more_ = false;
 1686|      0|                        return;
 1687|      0|                    }
 1688|    289|                    int8_t* data = reinterpret_cast<int8_t*>(typed_array_.data());
 1689|    289|                    std::size_t size = typed_array_.size();
 1690|    289|                    more_ = visitor.typed_array(jsoncons::span<const int8_t>(data,size), semantic_tag::none, *this, ec);
 1691|    289|                    break;
 1692|    289|                }
 1693|    302|                case 0x49:
  ------------------
  |  Branch (1693:17): [True: 302, False: 38.6k]
  ------------------
 1694|  2.80k|                case 0x4d:
  ------------------
  |  Branch (1694:17): [True: 2.50k, False: 36.4k]
  ------------------
 1695|  2.80k|                {
 1696|  2.80k|                    typed_array_.clear();
 1697|  2.80k|                    read(typed_array_,ec);
 1698|  2.80k|                    if (ec)
  ------------------
  |  Branch (1698:25): [True: 0, False: 2.80k]
  ------------------
 1699|      0|                    {
 1700|      0|                        more_ = false;
 1701|      0|                        return;
 1702|      0|                    }
 1703|  2.80k|                    const uint8_t tag = (uint8_t)item_tag_;
 1704|  2.80k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1705|  2.80k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1706|       |
 1707|  2.80k|                    int16_t* data = reinterpret_cast<int16_t*>(typed_array_.data());
 1708|  2.80k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1709|  2.80k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1709:25): [True: 302, False: 2.50k]
  ------------------
 1710|    302|                    {
 1711|   199k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1711:49): [True: 199k, False: 302]
  ------------------
 1712|   199k|                        {
 1713|   199k|                            data[i] = binary::byte_swap<int16_t>(data[i]);
 1714|   199k|                        }
 1715|    302|                    }
 1716|  2.80k|                    more_ = visitor.typed_array(jsoncons::span<const int16_t>(data,size), semantic_tag::none, *this, ec);
 1717|  2.80k|                    break;
 1718|  2.80k|                }
 1719|  1.04k|                case 0x4a:
  ------------------
  |  Branch (1719:17): [True: 1.04k, False: 37.9k]
  ------------------
 1720|  1.49k|                case 0x4e:
  ------------------
  |  Branch (1720:17): [True: 448, False: 38.5k]
  ------------------
 1721|  1.49k|                {
 1722|  1.49k|                    typed_array_.clear();
 1723|  1.49k|                    read(typed_array_,ec);
 1724|  1.49k|                    if (ec)
  ------------------
  |  Branch (1724:25): [True: 0, False: 1.49k]
  ------------------
 1725|      0|                    {
 1726|      0|                        more_ = false;
 1727|      0|                        return;
 1728|      0|                    }
 1729|  1.49k|                    const uint8_t tag = (uint8_t)item_tag_;
 1730|  1.49k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1731|  1.49k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1732|       |
 1733|  1.49k|                    int32_t* data = reinterpret_cast<int32_t*>(typed_array_.data());
 1734|  1.49k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1735|  1.49k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1735:25): [True: 1.04k, False: 448]
  ------------------
 1736|  1.04k|                    {
 1737|   378k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1737:49): [True: 377k, False: 1.04k]
  ------------------
 1738|   377k|                        {
 1739|   377k|                            data[i] = binary::byte_swap<int32_t>(data[i]);
 1740|   377k|                        }
 1741|  1.04k|                    }
 1742|  1.49k|                    more_ = visitor.typed_array(jsoncons::span<const int32_t>(data,size), semantic_tag::none, *this, ec);
 1743|  1.49k|                    break;
 1744|  1.49k|                }
 1745|  2.41k|                case 0x4b:
  ------------------
  |  Branch (1745:17): [True: 2.41k, False: 36.5k]
  ------------------
 1746|  2.67k|                case 0x4f:
  ------------------
  |  Branch (1746:17): [True: 255, False: 38.6k]
  ------------------
 1747|  2.67k|                {
 1748|  2.67k|                    typed_array_.clear();
 1749|  2.67k|                    read(typed_array_,ec);
 1750|  2.67k|                    if (ec)
  ------------------
  |  Branch (1750:25): [True: 0, False: 2.67k]
  ------------------
 1751|      0|                    {
 1752|      0|                        more_ = false;
 1753|      0|                        return;
 1754|      0|                    }
 1755|  2.67k|                    const uint8_t tag = (uint8_t)item_tag_;
 1756|  2.67k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1757|  2.67k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1758|       |
 1759|  2.67k|                    int64_t* data = reinterpret_cast<int64_t*>(typed_array_.data());
 1760|  2.67k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1761|  2.67k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1761:25): [True: 2.41k, False: 255]
  ------------------
 1762|  2.41k|                    {
 1763|   174k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1763:49): [True: 172k, False: 2.41k]
  ------------------
 1764|   172k|                        {
 1765|   172k|                            data[i] = binary::byte_swap<int64_t>(data[i]);
 1766|   172k|                        }
 1767|  2.41k|                    }
 1768|  2.67k|                    more_ = visitor.typed_array(jsoncons::span<const int64_t>(data,size), semantic_tag::none, *this, ec);
 1769|  2.67k|                    break;
 1770|  2.67k|                }
 1771|    916|                case 0x50:
  ------------------
  |  Branch (1771:17): [True: 916, False: 38.0k]
  ------------------
 1772|  10.9k|                case 0x54:
  ------------------
  |  Branch (1772:17): [True: 10.0k, False: 28.9k]
  ------------------
 1773|  10.9k|                {
 1774|  10.9k|                    typed_array_.clear();
 1775|  10.9k|                    read(typed_array_,ec);
 1776|  10.9k|                    if (ec)
  ------------------
  |  Branch (1776:25): [True: 0, False: 10.9k]
  ------------------
 1777|      0|                    {
 1778|      0|                        more_ = false;
 1779|      0|                        return;
 1780|      0|                    }
 1781|  10.9k|                    const uint8_t tag = (uint8_t)item_tag_;
 1782|  10.9k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1783|  10.9k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1784|       |
 1785|  10.9k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1786|  10.9k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1787|  10.9k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1787:25): [True: 916, False: 10.0k]
  ------------------
 1788|    916|                    {
 1789|  1.99M|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1789:49): [True: 1.99M, False: 916]
  ------------------
 1790|  1.99M|                        {
 1791|  1.99M|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1792|  1.99M|                        }
 1793|    916|                    }
 1794|  10.9k|                    more_ = visitor.typed_array(half_arg, jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1795|  10.9k|                    break;
 1796|  10.9k|                }
 1797|    941|                case 0x51:
  ------------------
  |  Branch (1797:17): [True: 941, False: 38.0k]
  ------------------
 1798|  1.32k|                case 0x55:
  ------------------
  |  Branch (1798:17): [True: 383, False: 38.5k]
  ------------------
 1799|  1.32k|                {
 1800|  1.32k|                    typed_array_.clear();
 1801|  1.32k|                    read(typed_array_,ec);
 1802|  1.32k|                    if (ec)
  ------------------
  |  Branch (1802:25): [True: 0, False: 1.32k]
  ------------------
 1803|      0|                    {
 1804|      0|                        more_ = false;
 1805|      0|                        return;
 1806|      0|                    }
 1807|  1.32k|                    const uint8_t tag = (uint8_t)item_tag_;
 1808|  1.32k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1809|  1.32k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1810|       |
 1811|  1.32k|                    float* data = reinterpret_cast<float*>(typed_array_.data());
 1812|  1.32k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1813|  1.32k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1813:25): [True: 941, False: 383]
  ------------------
 1814|    941|                    {
 1815|   129k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1815:49): [True: 128k, False: 941]
  ------------------
 1816|   128k|                        {
 1817|   128k|                            data[i] = binary::byte_swap<float>(data[i]);
 1818|   128k|                        }
 1819|    941|                    }
 1820|  1.32k|                    more_ = visitor.typed_array(jsoncons::span<const float>(data,size), semantic_tag::none, *this, ec);
 1821|  1.32k|                    break;
 1822|  1.32k|                }
 1823|  1.62k|                case 0x52:
  ------------------
  |  Branch (1823:17): [True: 1.62k, False: 37.3k]
  ------------------
 1824|  2.65k|                case 0x56:
  ------------------
  |  Branch (1824:17): [True: 1.02k, False: 37.9k]
  ------------------
 1825|  2.65k|                {
 1826|  2.65k|                    typed_array_.clear();
 1827|  2.65k|                    read(typed_array_,ec);
 1828|  2.65k|                    if (ec)
  ------------------
  |  Branch (1828:25): [True: 0, False: 2.65k]
  ------------------
 1829|      0|                    {
 1830|      0|                        more_ = false;
 1831|      0|                        return;
 1832|      0|                    }
 1833|  2.65k|                    const uint8_t tag = (uint8_t)item_tag_;
 1834|  2.65k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1835|  2.65k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1836|       |
 1837|  2.65k|                    double* data = reinterpret_cast<double*>(typed_array_.data());
 1838|  2.65k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1839|       |
 1840|  2.65k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1840:25): [True: 1.62k, False: 1.02k]
  ------------------
 1841|  1.62k|                    {
 1842|   411k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1842:49): [True: 409k, False: 1.62k]
  ------------------
 1843|   409k|                        {
 1844|   409k|                            data[i] = binary::byte_swap<double>(data[i]);
 1845|   409k|                        }
 1846|  1.62k|                    }
 1847|  2.65k|                    more_ = visitor.typed_array(jsoncons::span<const double>(data,size), semantic_tag::none, *this, ec);
 1848|  2.65k|                    break;
 1849|  2.65k|                }
 1850|  1.30k|                default:
  ------------------
  |  Branch (1850:17): [True: 1.30k, False: 37.6k]
  ------------------
 1851|  1.30k|                {
 1852|  1.30k|                    read(bytes_buffer_,ec);
 1853|  1.30k|                    if (ec)
  ------------------
  |  Branch (1853:25): [True: 0, False: 1.30k]
  ------------------
 1854|      0|                    {
 1855|      0|                        more_ = false;
 1856|      0|                        return;
 1857|      0|                    }
 1858|  1.30k|                    more_ = visitor.byte_string_value(bytes_buffer_, item_tag_, *this, ec);
 1859|  1.30k|                    break;
 1860|  1.30k|                }
 1861|  38.9k|            }
 1862|  38.9k|            other_tags_[item_tag] = false;
 1863|  38.9k|        }
 1864|  4.79k|        else
 1865|  4.79k|        {
 1866|  4.79k|            read(bytes_buffer_,ec);
 1867|  4.79k|            if (ec)
  ------------------
  |  Branch (1867:17): [True: 0, False: 4.79k]
  ------------------
 1868|      0|            {
 1869|      0|                return;
 1870|      0|            }
 1871|  4.79k|            more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::none, *this, ec);
 1872|  4.79k|        }
 1873|  43.7k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_bufferclINS4_6vectorIhNS5_IhEEEEEEvRT_RNS4_10error_codeE:
  143|  43.7k|        {
  144|  43.7k|            c.clear();
  145|  43.7k|            c.reserve(bytes.size());
  146|  43.7k|            for (auto b : bytes)
  ------------------
  |  Branch (146:25): [True: 101M, False: 43.7k]
  ------------------
  147|   101M|            {
  148|   101M|                c.push_back(b);
  149|   101M|            }
  150|  43.7k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE26get_typed_array_endiannessEh:
 1489|   147k|    {
 1490|   147k|        return ((tag & detail::cbor_array_tags_e_mask) >> detail::cbor_array_tags_e_shift) == 0 ? jsoncons::endian::big : jsoncons::endian::little; 
  ------------------
  |  Branch (1490:16): [True: 113k, False: 33.7k]
  ------------------
 1491|   147k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE33get_typed_array_bytes_per_elementEh:
 1494|   147k|    {
 1495|   147k|        const uint8_t f = (tag & detail::cbor_array_tags_f_mask) >> detail::cbor_array_tags_f_shift; 
 1496|   147k|        const uint8_t ll = (tag & detail::cbor_array_tags_ll_mask) >> detail::cbor_array_tags_ll_shift; 
 1497|       |
 1498|   147k|        return std::size_t(1) << (f + ll); 
 1499|   147k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE15get_int64_valueERNS4_10error_codeE:
  943|  2.09M|    {
  944|  2.09M|        int64_t val = 0;
  945|       |
  946|  2.09M|        auto ch = source_.peek();
  947|  2.09M|        if (ch.eof)
  ------------------
  |  Branch (947:13): [True: 0, False: 2.09M]
  ------------------
  948|      0|        {
  949|      0|            ec = cbor_errc::unexpected_eof;
  950|      0|            more_ = false;
  951|      0|            return val;
  952|      0|        }
  953|       |
  954|  2.09M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(ch.value);
  955|  2.09M|        uint8_t info = get_additional_information_value(ch.value);
  956|  2.09M|        switch (major_type)
  957|  2.09M|        {
  958|  2.09M|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (958:13): [True: 2.09M, False: 0]
  ------------------
  959|  2.09M|                source_.ignore(1);
  960|  2.09M|                switch (info)
  ------------------
  |  Branch (960:25): [True: 893k, False: 1.20M]
  ------------------
  961|  2.09M|                {
  962|  1.19M|                    case JSONCONS_CBOR_0x00_0x17: // 0x00..0x17 (0..23)
  ------------------
  |  |   22|  1.19M|    0x00:case 0x01:case 0x02:case 0x03:case 0x04:case 0x05:case 0x06:case 0x07:case 0x08:case 0x09:case 0x0a:case 0x0b:case 0x0c:case 0x0d:case 0x0e:case 0x0f:case 0x10:case 0x11:case 0x12:case 0x13:case 0x14:case 0x15:case 0x16:case 0x17
  |  |  ------------------
  |  |  |  Branch (22:10): [True: 9.52k, False: 2.08M]
  |  |  |  Branch (22:20): [True: 150k, False: 1.94M]
  |  |  |  Branch (22:30): [True: 4.42k, False: 2.09M]
  |  |  |  Branch (22:40): [True: 2.86k, False: 2.09M]
  |  |  |  Branch (22:50): [True: 3.46k, False: 2.09M]
  |  |  |  Branch (22:60): [True: 14.5k, False: 2.08M]
  |  |  |  Branch (22:70): [True: 8.28k, False: 2.08M]
  |  |  |  Branch (22:80): [True: 9.97k, False: 2.08M]
  |  |  |  Branch (22:90): [True: 5.47k, False: 2.09M]
  |  |  |  Branch (22:100): [True: 32.7k, False: 2.06M]
  |  |  |  Branch (22:110): [True: 1.59k, False: 2.09M]
  |  |  |  Branch (22:120): [True: 9.41k, False: 2.08M]
  |  |  |  Branch (22:130): [True: 6.60k, False: 2.08M]
  |  |  |  Branch (22:140): [True: 8.13k, False: 2.08M]
  |  |  |  Branch (22:150): [True: 9.80k, False: 2.08M]
  |  |  |  Branch (22:160): [True: 811k, False: 1.28M]
  |  |  |  Branch (22:170): [True: 24.2k, False: 2.07M]
  |  |  |  Branch (22:180): [True: 20.7k, False: 2.07M]
  |  |  |  Branch (22:190): [True: 2.46k, False: 2.09M]
  |  |  |  Branch (22:200): [True: 4.93k, False: 2.09M]
  |  |  |  Branch (22:210): [True: 29.9k, False: 2.06M]
  |  |  |  Branch (22:220): [True: 3.80k, False: 2.09M]
  |  |  ------------------
  ------------------
  |  Branch (962:21): [True: 16.8k, False: 2.07M]
  ------------------
  963|  1.19M|                    {
  964|  1.19M|                        val = static_cast<int8_t>(- 1 - info);
  965|  1.19M|                        break;
  966|  11.3M|                    }
  967|  1.68k|                    case 0x18: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (967:21): [True: 1.68k, False: 2.09M]
  ------------------
  968|  1.68k|                        {
  969|  1.68k|                            uint8_t b;
  970|  1.68k|                            if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (970:33): [True: 1, False: 1.68k]
  ------------------
  971|      1|                            {
  972|      1|                                ec = cbor_errc::unexpected_eof;
  973|      1|                                more_ = false;
  974|      1|                                return val;
  975|      1|                            }
  976|  1.68k|                            val = static_cast<int64_t>(-1) - static_cast<int64_t>(b);
  977|  1.68k|                            break;
  978|  1.68k|                        }
  979|       |
  980|  1.56k|                    case 0x19: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (980:21): [True: 1.56k, False: 2.09M]
  ------------------
  981|  1.56k|                        {
  982|  1.56k|                            uint8_t buf[sizeof(uint16_t)];
  983|  1.56k|                            if (source_.read(buf, sizeof(uint16_t)) != sizeof(uint16_t))
  ------------------
  |  Branch (983:33): [True: 3, False: 1.55k]
  ------------------
  984|      3|                            {
  985|      3|                                ec = cbor_errc::unexpected_eof;
  986|      3|                                more_ = false;
  987|      3|                                return val;
  988|      3|                            }
  989|  1.55k|                            auto x = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  990|  1.55k|                            val = static_cast<int64_t>(-1)- x;
  991|  1.55k|                            break;
  992|  1.56k|                        }
  993|       |
  994|  1.75k|                    case 0x1a: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (994:21): [True: 1.75k, False: 2.09M]
  ------------------
  995|  1.75k|                        {
  996|  1.75k|                            uint8_t buf[sizeof(uint32_t)];
  997|  1.75k|                            if (source_.read(buf, sizeof(uint32_t)) != sizeof(uint32_t))
  ------------------
  |  Branch (997:33): [True: 7, False: 1.75k]
  ------------------
  998|      7|                            {
  999|      7|                                ec = cbor_errc::unexpected_eof;
 1000|      7|                                more_ = false;
 1001|      7|                                return val;
 1002|      7|                            }
 1003|  1.75k|                            auto x = binary::big_to_native<uint32_t>(buf, sizeof(buf));
 1004|  1.75k|                            val = static_cast<int64_t>(-1)- x;
 1005|  1.75k|                            break;
 1006|  1.75k|                        }
 1007|       |
 1008|  4.58k|                    case 0x1b: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (1008:21): [True: 4.58k, False: 2.09M]
  ------------------
 1009|  4.58k|                        {
 1010|  4.58k|                            uint8_t buf[sizeof(uint64_t)];
 1011|  4.58k|                            if (source_.read(buf, sizeof(uint64_t)) != sizeof(uint64_t))
  ------------------
  |  Branch (1011:33): [True: 9, False: 4.58k]
  ------------------
 1012|      9|                            {
 1013|      9|                                ec = cbor_errc::unexpected_eof;
 1014|      9|                                more_ = false;
 1015|      9|                                return val;
 1016|      9|                            }
 1017|  4.58k|                            auto x = binary::big_to_native<uint64_t>(buf, sizeof(buf));
 1018|  4.58k|                            val = static_cast<int64_t>(-1)- static_cast<int64_t>(x);
 1019|  4.58k|                            break;
 1020|  4.58k|                        }
 1021|  2.09M|                }
 1022|  2.09M|                break;
 1023|       |
 1024|  2.09M|                case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1024:17): [True: 0, False: 2.09M]
  ------------------
 1025|      0|                {
 1026|      0|                    uint64_t x = get_uint64_value(ec);
 1027|      0|                    if (ec)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                    {
 1029|      0|                        return 0;
 1030|      0|                    }
 1031|      0|                    if (x <= static_cast<uint64_t>((std::numeric_limits<int64_t>::max)()))
  ------------------
  |  Branch (1031:25): [True: 0, False: 0]
  ------------------
 1032|      0|                    {
 1033|      0|                        val = x;
 1034|      0|                    }
 1035|      0|                    else
 1036|      0|                    {
 1037|       |                        // error;
 1038|      0|                    }
 1039|       |                    
 1040|      0|                    break;
 1041|      0|                }
 1042|      0|                break;
 1043|      0|            default:
  ------------------
  |  Branch (1043:13): [True: 0, False: 2.09M]
  ------------------
 1044|      0|                break;
 1045|  2.09M|        }
 1046|       |
 1047|  2.09M|        return val;
 1048|  2.09M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_sourceC2EPS7_:
  159|  10.1M|        {
  160|  10.1M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE17write_byte_stringINS7_28read_byte_string_from_sourceEEEvT_RNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1503|  10.1M|    {
 1504|  10.1M|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1504:13): [True: 202k, False: 9.95M]
  ------------------
 1505|   202k|        {
 1506|   202k|            switch (item_tag_)
 1507|   202k|            {
 1508|  45.2k|                case 0x2:
  ------------------
  |  Branch (1508:17): [True: 45.2k, False: 157k]
  ------------------
 1509|  45.2k|                {
 1510|  45.2k|                    bytes_buffer_.clear();
 1511|  45.2k|                    read(bytes_buffer_,ec);
 1512|  45.2k|                    if (ec)
  ------------------
  |  Branch (1512:25): [True: 3, False: 45.2k]
  ------------------
 1513|      3|                    {
 1514|      3|                        more_ = false;
 1515|      3|                        return;
 1516|      3|                    }
 1517|  45.2k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1518|  45.2k|                    text_buffer_.clear();
 1519|  45.2k|                    n.write_string(text_buffer_);
 1520|  45.2k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1521|  45.2k|                    break;
 1522|  45.2k|                }
 1523|  2.83k|                case 0x3:
  ------------------
  |  Branch (1523:17): [True: 2.83k, False: 199k]
  ------------------
 1524|  2.83k|                {
 1525|  2.83k|                    bytes_buffer_.clear();
 1526|  2.83k|                    read(bytes_buffer_,ec);
 1527|  2.83k|                    if (ec)
  ------------------
  |  Branch (1527:25): [True: 9, False: 2.82k]
  ------------------
 1528|      9|                    {
 1529|      9|                        more_ = false;
 1530|      9|                        return;
 1531|      9|                    }
 1532|  2.82k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1533|  2.82k|                    n = -1 - n;
 1534|  2.82k|                    text_buffer_.clear();
 1535|  2.82k|                    n.write_string(text_buffer_);
 1536|  2.82k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1537|  2.82k|                    break;
 1538|  2.83k|                }
 1539|  4.09k|                case 0x15:
  ------------------
  |  Branch (1539:17): [True: 4.09k, False: 198k]
  ------------------
 1540|  4.09k|                {
 1541|  4.09k|                    read(bytes_buffer_,ec);
 1542|  4.09k|                    if (ec)
  ------------------
  |  Branch (1542:25): [True: 2, False: 4.09k]
  ------------------
 1543|      2|                    {
 1544|      2|                        more_ = false;
 1545|      2|                        return;
 1546|      2|                    }
 1547|  4.09k|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64url, *this, ec);
 1548|  4.09k|                    break;
 1549|  4.09k|                }
 1550|  1.09k|                case 0x16:
  ------------------
  |  Branch (1550:17): [True: 1.09k, False: 201k]
  ------------------
 1551|  1.09k|                {
 1552|  1.09k|                    read(bytes_buffer_,ec);
 1553|  1.09k|                    if (ec)
  ------------------
  |  Branch (1553:25): [True: 2, False: 1.08k]
  ------------------
 1554|      2|                    {
 1555|      2|                        more_ = false;
 1556|      2|                        return;
 1557|      2|                    }
 1558|  1.08k|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64, *this, ec);
 1559|  1.08k|                    break;
 1560|  1.09k|                }
 1561|  1.45k|                case 0x17:
  ------------------
  |  Branch (1561:17): [True: 1.45k, False: 200k]
  ------------------
 1562|  1.45k|                {
 1563|  1.45k|                    read(bytes_buffer_,ec);
 1564|  1.45k|                    if (ec)
  ------------------
  |  Branch (1564:25): [True: 3, False: 1.45k]
  ------------------
 1565|      3|                    {
 1566|      3|                        more_ = false;
 1567|      3|                        return;
 1568|      3|                    }
 1569|  1.45k|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base16, *this, ec);
 1570|  1.45k|                    break;
 1571|  1.45k|                }
 1572|    561|                case 0x40:
  ------------------
  |  Branch (1572:17): [True: 561, False: 201k]
  ------------------
 1573|    561|                {
 1574|    561|                    typed_array_.clear();
 1575|    561|                    read(typed_array_,ec);
 1576|    561|                    if (ec)
  ------------------
  |  Branch (1576:25): [True: 2, False: 559]
  ------------------
 1577|      2|                    {
 1578|      2|                        more_ = false;
 1579|      2|                        return;
 1580|      2|                    }
 1581|    559|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1582|    559|                    std::size_t size = typed_array_.size();
 1583|    559|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::none, *this, ec);
 1584|    559|                    break;
 1585|    561|                }
 1586|    960|                case 0x44:
  ------------------
  |  Branch (1586:17): [True: 960, False: 201k]
  ------------------
 1587|    960|                {
 1588|    960|                    typed_array_.clear();
 1589|    960|                    read(typed_array_,ec);
 1590|    960|                    if (ec)
  ------------------
  |  Branch (1590:25): [True: 2, False: 958]
  ------------------
 1591|      2|                    {
 1592|      2|                        more_ = false;
 1593|      2|                        return;
 1594|      2|                    }
 1595|    958|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1596|    958|                    std::size_t size = typed_array_.size();
 1597|    958|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::clamped, *this, ec);
 1598|    958|                    break;
 1599|    960|                }
 1600|  3.15k|                case 0x41:
  ------------------
  |  Branch (1600:17): [True: 3.15k, False: 199k]
  ------------------
 1601|  5.61k|                case 0x45:
  ------------------
  |  Branch (1601:17): [True: 2.45k, False: 199k]
  ------------------
 1602|  5.61k|                {
 1603|  5.61k|                    typed_array_.clear();
 1604|  5.61k|                    read(typed_array_,ec);
 1605|  5.61k|                    if (ec)
  ------------------
  |  Branch (1605:25): [True: 6, False: 5.60k]
  ------------------
 1606|      6|                    {
 1607|      6|                        more_ = false;
 1608|      6|                        return;
 1609|      6|                    }
 1610|  5.60k|                    const uint8_t tag = (uint8_t)item_tag_;
 1611|  5.60k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1612|  5.60k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1613|       |
 1614|  5.60k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1615|  5.60k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1616|       |
 1617|  5.60k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1617:25): [True: 3.14k, False: 2.45k]
  ------------------
 1618|  3.14k|                    {
 1619|   107k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1619:49): [True: 103k, False: 3.14k]
  ------------------
 1620|   103k|                        {
 1621|   103k|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1622|   103k|                        }
 1623|  3.14k|                    }
 1624|  5.60k|                    more_ = visitor.typed_array(jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1625|  5.60k|                    break;
 1626|  5.61k|                }
 1627|  2.06k|                case 0x42:
  ------------------
  |  Branch (1627:17): [True: 2.06k, False: 200k]
  ------------------
 1628|  4.16k|                case 0x46:
  ------------------
  |  Branch (1628:17): [True: 2.09k, False: 200k]
  ------------------
 1629|  4.16k|                {
 1630|  4.16k|                    typed_array_.clear();
 1631|  4.16k|                    read(typed_array_,ec);
 1632|  4.16k|                    if (ec)
  ------------------
  |  Branch (1632:25): [True: 12, False: 4.15k]
  ------------------
 1633|     12|                    {
 1634|     12|                        more_ = false;
 1635|     12|                        return;
 1636|     12|                    }
 1637|  4.15k|                    const uint8_t tag = (uint8_t)item_tag_;
 1638|  4.15k|                    jsoncons::endian e = get_typed_array_endianness(tag);
 1639|  4.15k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1640|       |
 1641|  4.15k|                    uint32_t* data = reinterpret_cast<uint32_t*>(typed_array_.data());
 1642|  4.15k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1643|  4.15k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1643:25): [True: 2.06k, False: 2.08k]
  ------------------
 1644|  2.06k|                    {
 1645|  1.09M|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1645:49): [True: 1.09M, False: 2.06k]
  ------------------
 1646|  1.09M|                        {
 1647|  1.09M|                            data[i] = binary::byte_swap<uint32_t>(data[i]);
 1648|  1.09M|                        }
 1649|  2.06k|                    }
 1650|  4.15k|                    more_ = visitor.typed_array(jsoncons::span<const uint32_t>(data,size), semantic_tag::none, *this, ec);
 1651|  4.15k|                    break;
 1652|  4.16k|                }
 1653|  3.71k|                case 0x43:
  ------------------
  |  Branch (1653:17): [True: 3.71k, False: 198k]
  ------------------
 1654|  8.72k|                case 0x47:
  ------------------
  |  Branch (1654:17): [True: 5.01k, False: 197k]
  ------------------
 1655|  8.72k|                {
 1656|  8.72k|                    typed_array_.clear();
 1657|  8.72k|                    read(typed_array_,ec);
 1658|  8.72k|                    if (ec)
  ------------------
  |  Branch (1658:25): [True: 5, False: 8.72k]
  ------------------
 1659|      5|                    {
 1660|      5|                        more_ = false;
 1661|      5|                        return;
 1662|      5|                    }
 1663|  8.72k|                    const uint8_t tag = (uint8_t)item_tag_;
 1664|  8.72k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1665|  8.72k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1666|       |
 1667|  8.72k|                    uint64_t* data = reinterpret_cast<uint64_t*>(typed_array_.data());
 1668|  8.72k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1669|  8.72k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1669:25): [True: 3.71k, False: 5.01k]
  ------------------
 1670|  3.71k|                    {
 1671|   311k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1671:49): [True: 307k, False: 3.71k]
  ------------------
 1672|   307k|                        {
 1673|   307k|                            data[i] = binary::byte_swap<uint64_t>(data[i]);
 1674|   307k|                        }
 1675|  3.71k|                    }
 1676|  8.72k|                    more_ = visitor.typed_array(jsoncons::span<const uint64_t>(data,size), semantic_tag::none, *this, ec);
 1677|  8.72k|                    break;
 1678|  8.72k|                }
 1679|  4.36k|                case 0x48:
  ------------------
  |  Branch (1679:17): [True: 4.36k, False: 197k]
  ------------------
 1680|  4.36k|                {
 1681|  4.36k|                    typed_array_.clear();
 1682|  4.36k|                    read(typed_array_,ec);
 1683|  4.36k|                    if (ec)
  ------------------
  |  Branch (1683:25): [True: 2, False: 4.36k]
  ------------------
 1684|      2|                    {
 1685|      2|                        more_ = false;
 1686|      2|                        return;
 1687|      2|                    }
 1688|  4.36k|                    int8_t* data = reinterpret_cast<int8_t*>(typed_array_.data());
 1689|  4.36k|                    std::size_t size = typed_array_.size();
 1690|  4.36k|                    more_ = visitor.typed_array(jsoncons::span<const int8_t>(data,size), semantic_tag::none, *this, ec);
 1691|  4.36k|                    break;
 1692|  4.36k|                }
 1693|  1.77k|                case 0x49:
  ------------------
  |  Branch (1693:17): [True: 1.77k, False: 200k]
  ------------------
 1694|  2.04k|                case 0x4d:
  ------------------
  |  Branch (1694:17): [True: 272, False: 202k]
  ------------------
 1695|  2.04k|                {
 1696|  2.04k|                    typed_array_.clear();
 1697|  2.04k|                    read(typed_array_,ec);
 1698|  2.04k|                    if (ec)
  ------------------
  |  Branch (1698:25): [True: 2, False: 2.04k]
  ------------------
 1699|      2|                    {
 1700|      2|                        more_ = false;
 1701|      2|                        return;
 1702|      2|                    }
 1703|  2.04k|                    const uint8_t tag = (uint8_t)item_tag_;
 1704|  2.04k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1705|  2.04k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1706|       |
 1707|  2.04k|                    int16_t* data = reinterpret_cast<int16_t*>(typed_array_.data());
 1708|  2.04k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1709|  2.04k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1709:25): [True: 1.77k, False: 272]
  ------------------
 1710|  1.77k|                    {
 1711|  51.8k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1711:49): [True: 50.1k, False: 1.77k]
  ------------------
 1712|  50.1k|                        {
 1713|  50.1k|                            data[i] = binary::byte_swap<int16_t>(data[i]);
 1714|  50.1k|                        }
 1715|  1.77k|                    }
 1716|  2.04k|                    more_ = visitor.typed_array(jsoncons::span<const int16_t>(data,size), semantic_tag::none, *this, ec);
 1717|  2.04k|                    break;
 1718|  2.04k|                }
 1719|  43.8k|                case 0x4a:
  ------------------
  |  Branch (1719:17): [True: 43.8k, False: 158k]
  ------------------
 1720|  46.9k|                case 0x4e:
  ------------------
  |  Branch (1720:17): [True: 3.08k, False: 199k]
  ------------------
 1721|  46.9k|                {
 1722|  46.9k|                    typed_array_.clear();
 1723|  46.9k|                    read(typed_array_,ec);
 1724|  46.9k|                    if (ec)
  ------------------
  |  Branch (1724:25): [True: 4, False: 46.9k]
  ------------------
 1725|      4|                    {
 1726|      4|                        more_ = false;
 1727|      4|                        return;
 1728|      4|                    }
 1729|  46.9k|                    const uint8_t tag = (uint8_t)item_tag_;
 1730|  46.9k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1731|  46.9k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1732|       |
 1733|  46.9k|                    int32_t* data = reinterpret_cast<int32_t*>(typed_array_.data());
 1734|  46.9k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1735|  46.9k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1735:25): [True: 43.8k, False: 3.07k]
  ------------------
 1736|  43.8k|                    {
 1737|  80.8k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1737:49): [True: 37.0k, False: 43.8k]
  ------------------
 1738|  37.0k|                        {
 1739|  37.0k|                            data[i] = binary::byte_swap<int32_t>(data[i]);
 1740|  37.0k|                        }
 1741|  43.8k|                    }
 1742|  46.9k|                    more_ = visitor.typed_array(jsoncons::span<const int32_t>(data,size), semantic_tag::none, *this, ec);
 1743|  46.9k|                    break;
 1744|  46.9k|                }
 1745|  38.2k|                case 0x4b:
  ------------------
  |  Branch (1745:17): [True: 38.2k, False: 164k]
  ------------------
 1746|  38.6k|                case 0x4f:
  ------------------
  |  Branch (1746:17): [True: 402, False: 201k]
  ------------------
 1747|  38.6k|                {
 1748|  38.6k|                    typed_array_.clear();
 1749|  38.6k|                    read(typed_array_,ec);
 1750|  38.6k|                    if (ec)
  ------------------
  |  Branch (1750:25): [True: 26, False: 38.6k]
  ------------------
 1751|     26|                    {
 1752|     26|                        more_ = false;
 1753|     26|                        return;
 1754|     26|                    }
 1755|  38.6k|                    const uint8_t tag = (uint8_t)item_tag_;
 1756|  38.6k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1757|  38.6k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1758|       |
 1759|  38.6k|                    int64_t* data = reinterpret_cast<int64_t*>(typed_array_.data());
 1760|  38.6k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1761|  38.6k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1761:25): [True: 38.2k, False: 401]
  ------------------
 1762|  38.2k|                    {
 1763|   205k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1763:49): [True: 166k, False: 38.2k]
  ------------------
 1764|   166k|                        {
 1765|   166k|                            data[i] = binary::byte_swap<int64_t>(data[i]);
 1766|   166k|                        }
 1767|  38.2k|                    }
 1768|  38.6k|                    more_ = visitor.typed_array(jsoncons::span<const int64_t>(data,size), semantic_tag::none, *this, ec);
 1769|  38.6k|                    break;
 1770|  38.6k|                }
 1771|  1.45k|                case 0x50:
  ------------------
  |  Branch (1771:17): [True: 1.45k, False: 200k]
  ------------------
 1772|  2.52k|                case 0x54:
  ------------------
  |  Branch (1772:17): [True: 1.07k, False: 201k]
  ------------------
 1773|  2.52k|                {
 1774|  2.52k|                    typed_array_.clear();
 1775|  2.52k|                    read(typed_array_,ec);
 1776|  2.52k|                    if (ec)
  ------------------
  |  Branch (1776:25): [True: 2, False: 2.52k]
  ------------------
 1777|      2|                    {
 1778|      2|                        more_ = false;
 1779|      2|                        return;
 1780|      2|                    }
 1781|  2.52k|                    const uint8_t tag = (uint8_t)item_tag_;
 1782|  2.52k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1783|  2.52k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1784|       |
 1785|  2.52k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1786|  2.52k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1787|  2.52k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1787:25): [True: 1.45k, False: 1.07k]
  ------------------
 1788|  1.45k|                    {
 1789|  4.52k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1789:49): [True: 3.06k, False: 1.45k]
  ------------------
 1790|  3.06k|                        {
 1791|  3.06k|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1792|  3.06k|                        }
 1793|  1.45k|                    }
 1794|  2.52k|                    more_ = visitor.typed_array(half_arg, jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1795|  2.52k|                    break;
 1796|  2.52k|                }
 1797|  1.41k|                case 0x51:
  ------------------
  |  Branch (1797:17): [True: 1.41k, False: 200k]
  ------------------
 1798|  1.68k|                case 0x55:
  ------------------
  |  Branch (1798:17): [True: 270, False: 202k]
  ------------------
 1799|  1.68k|                {
 1800|  1.68k|                    typed_array_.clear();
 1801|  1.68k|                    read(typed_array_,ec);
 1802|  1.68k|                    if (ec)
  ------------------
  |  Branch (1802:25): [True: 6, False: 1.67k]
  ------------------
 1803|      6|                    {
 1804|      6|                        more_ = false;
 1805|      6|                        return;
 1806|      6|                    }
 1807|  1.67k|                    const uint8_t tag = (uint8_t)item_tag_;
 1808|  1.67k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1809|  1.67k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1810|       |
 1811|  1.67k|                    float* data = reinterpret_cast<float*>(typed_array_.data());
 1812|  1.67k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1813|  1.67k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1813:25): [True: 1.40k, False: 268]
  ------------------
 1814|  1.40k|                    {
 1815|   164k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1815:49): [True: 163k, False: 1.40k]
  ------------------
 1816|   163k|                        {
 1817|   163k|                            data[i] = binary::byte_swap<float>(data[i]);
 1818|   163k|                        }
 1819|  1.40k|                    }
 1820|  1.67k|                    more_ = visitor.typed_array(jsoncons::span<const float>(data,size), semantic_tag::none, *this, ec);
 1821|  1.67k|                    break;
 1822|  1.68k|                }
 1823|  2.24k|                case 0x52:
  ------------------
  |  Branch (1823:17): [True: 2.24k, False: 200k]
  ------------------
 1824|  5.47k|                case 0x56:
  ------------------
  |  Branch (1824:17): [True: 3.23k, False: 199k]
  ------------------
 1825|  5.47k|                {
 1826|  5.47k|                    typed_array_.clear();
 1827|  5.47k|                    read(typed_array_,ec);
 1828|  5.47k|                    if (ec)
  ------------------
  |  Branch (1828:25): [True: 15, False: 5.46k]
  ------------------
 1829|     15|                    {
 1830|     15|                        more_ = false;
 1831|     15|                        return;
 1832|     15|                    }
 1833|  5.46k|                    const uint8_t tag = (uint8_t)item_tag_;
 1834|  5.46k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1835|  5.46k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1836|       |
 1837|  5.46k|                    double* data = reinterpret_cast<double*>(typed_array_.data());
 1838|  5.46k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1839|       |
 1840|  5.46k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1840:25): [True: 2.23k, False: 3.22k]
  ------------------
 1841|  2.23k|                    {
 1842|  33.5k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1842:49): [True: 31.3k, False: 2.23k]
  ------------------
 1843|  31.3k|                        {
 1844|  31.3k|                            data[i] = binary::byte_swap<double>(data[i]);
 1845|  31.3k|                        }
 1846|  2.23k|                    }
 1847|  5.46k|                    more_ = visitor.typed_array(jsoncons::span<const double>(data,size), semantic_tag::none, *this, ec);
 1848|  5.46k|                    break;
 1849|  5.47k|                }
 1850|  25.9k|                default:
  ------------------
  |  Branch (1850:17): [True: 25.9k, False: 176k]
  ------------------
 1851|  25.9k|                {
 1852|  25.9k|                    read(bytes_buffer_,ec);
 1853|  25.9k|                    if (ec)
  ------------------
  |  Branch (1853:25): [True: 24, False: 25.9k]
  ------------------
 1854|     24|                    {
 1855|     24|                        more_ = false;
 1856|     24|                        return;
 1857|     24|                    }
 1858|  25.9k|                    more_ = visitor.byte_string_value(bytes_buffer_, item_tag_, *this, ec);
 1859|  25.9k|                    break;
 1860|  25.9k|                }
 1861|   202k|            }
 1862|   202k|            other_tags_[item_tag] = false;
 1863|   202k|        }
 1864|  9.95M|        else
 1865|  9.95M|        {
 1866|  9.95M|            read(bytes_buffer_,ec);
 1867|  9.95M|            if (ec)
  ------------------
  |  Branch (1867:17): [True: 40.1k, False: 9.91M]
  ------------------
 1868|  40.1k|            {
 1869|  40.1k|                return;
 1870|  40.1k|            }
 1871|  9.91M|            more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::none, *this, ec);
 1872|  9.91M|        }
 1873|  10.1M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_sourceclINS4_6vectorIhNS5_IhEEEEEEvRT_RNS4_10error_codeE:
  163|  10.1M|        {
  164|  10.1M|            source->read_byte_string(cont,ec);
  165|  10.1M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeE:
  757|  10.3M|    {
  758|  10.3M|        bool more = true;
  759|  10.3M|        v.clear();
  760|  10.3M|        auto c = source_.peek();
  761|  10.3M|        if (c.eof)
  ------------------
  |  Branch (761:13): [True: 0, False: 10.3M]
  ------------------
  762|      0|        {
  763|      0|            ec = cbor_errc::unexpected_eof;
  764|      0|            more = false;
  765|      0|            return more;
  766|      0|        }
  767|  10.3M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  768|  10.3M|        uint8_t info = get_additional_information_value(c.value);
  769|       |
  770|  10.3M|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::byte_string);
  ------------------
  |  |  378|  10.3M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 10.3M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  771|       |
  772|  10.3M|        switch(info)
  773|  10.3M|        {
  774|  1.03k|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (774:13): [True: 1.03k, False: 10.3M]
  ------------------
  775|  1.03k|            {
  776|  1.03k|                auto func = [&v,&more](Source& source, std::size_t length, std::error_code& ec) -> bool
  777|  1.03k|                {
  778|  1.03k|                    if (source_reader<Source>::read(source, v, length) != length)
  779|  1.03k|                    {
  780|  1.03k|                        ec = cbor_errc::unexpected_eof;
  781|  1.03k|                        more = false;
  782|  1.03k|                        return more;
  783|  1.03k|                    }
  784|  1.03k|                    return true;
  785|  1.03k|                };
  786|  1.03k|                iterate_string_chunks(func, major_type, ec);
  787|  1.03k|                break;
  788|      0|            }
  789|  10.3M|            default:
  ------------------
  |  Branch (789:13): [True: 10.3M, False: 1.03k]
  ------------------
  790|  10.3M|            {
  791|  10.3M|                std::size_t length = get_size(ec);
  792|  10.3M|                if (ec)
  ------------------
  |  Branch (792:21): [True: 39.6k, False: 10.3M]
  ------------------
  793|  39.6k|                {
  794|  39.6k|                    more = false;
  795|  39.6k|                    return more;
  796|  39.6k|                }
  797|  10.3M|                if (source_reader<Source>::read(source_, v, length) != length)
  ------------------
  |  Branch (797:21): [True: 371, False: 10.3M]
  ------------------
  798|    371|                {
  799|    371|                    ec = cbor_errc::unexpected_eof;
  800|    371|                    more = false;
  801|    371|                    return more;
  802|    371|                }
  803|  10.3M|                if (!stringref_map_stack_.empty() &&
  ------------------
  |  Branch (803:21): [True: 2.95M, False: 7.35M]
  ------------------
  804|  10.3M|                    v.size() >= jsoncons::cbor::detail::min_length_for_stringref(stringref_map_stack_.back().size()))
  ------------------
  |  Branch (804:21): [True: 2.54M, False: 408k]
  ------------------
  805|  2.54M|                {
  806|  2.54M|                    stringref_map_stack_.back().emplace_back(mapped_string(v, alloc_));
  807|  2.54M|                }
  808|  10.3M|                break;
  809|  10.3M|            }
  810|       |
  811|  10.3M|        }
  812|  10.3M|        return more;
  813|  10.3M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21iterate_string_chunksIZNS7_16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeEEUlRS3_mSE_E_EEvRT_NS0_6detail15cbor_major_typeESE_:
  817|  1.03k|    {
  818|  1.03k|        int nesting_level = 0;
  819|       |
  820|  1.03k|        bool done = false;
  821|  4.45M|        while (!done)
  ------------------
  |  Branch (821:16): [True: 4.45M, False: 597]
  ------------------
  822|  4.45M|        {
  823|  4.45M|            auto c = source_.peek();
  824|  4.45M|            if (c.eof)
  ------------------
  |  Branch (824:17): [True: 100, False: 4.45M]
  ------------------
  825|    100|            {
  826|    100|                ec = cbor_errc::unexpected_eof;
  827|    100|                more_ = false;
  828|    100|                return;
  829|    100|            }
  830|  4.45M|            if (nesting_level > 0 && c.value == 0xff)
  ------------------
  |  Branch (830:17): [True: 4.45M, False: 1.03k]
  |  Branch (830:38): [True: 579k, False: 3.87M]
  ------------------
  831|   579k|            {
  832|   579k|                --nesting_level;
  833|   579k|                if (nesting_level == 0)
  ------------------
  |  Branch (833:21): [True: 597, False: 578k]
  ------------------
  834|    597|                {
  835|    597|                    done = true;
  836|    597|                }
  837|   579k|                source_.ignore(1);
  838|   579k|                continue;
  839|   579k|            }
  840|       |
  841|  3.87M|            jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  842|  3.87M|            if (major_type != type)
  ------------------
  |  Branch (842:17): [True: 187, False: 3.87M]
  ------------------
  843|    187|            {
  844|    187|                ec = cbor_errc::illegal_chunked_string;
  845|    187|                more_ = false;
  846|    187|                return;
  847|    187|            }
  848|  3.87M|            uint8_t info = get_additional_information_value(c.value);
  849|       |
  850|  3.87M|            switch (info)
  851|  3.87M|            {
  852|  3.62M|                case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (852:17): [True: 3.62M, False: 248k]
  ------------------
  853|  3.62M|                {
  854|  3.62M|                    ++nesting_level;
  855|  3.62M|                    source_.ignore(1);
  856|  3.62M|                    break;
  857|      0|                }
  858|   248k|                default: // definite length
  ------------------
  |  Branch (858:17): [True: 248k, False: 3.62M]
  ------------------
  859|   248k|                {
  860|   248k|                    std::size_t length = get_size(ec);
  861|   248k|                    if (!more_)
  ------------------
  |  Branch (861:25): [True: 1, False: 248k]
  ------------------
  862|      1|                    {
  863|      1|                        return;
  864|      1|                    }
  865|   248k|                    more_ = func(source_, length, ec);
  866|   248k|                    if (!more_)
  ------------------
  |  Branch (866:25): [True: 147, False: 248k]
  ------------------
  867|    147|                    {
  868|    147|                        return;
  869|    147|                    }
  870|   248k|                    if (nesting_level == 0)
  ------------------
  |  Branch (870:25): [True: 0, False: 248k]
  ------------------
  871|      0|                    {
  872|      0|                        done = true;
  873|      0|                    }
  874|   248k|                    break;
  875|   248k|                }
  876|  3.87M|            }
  877|  3.87M|        } 
  878|  1.03k|    }
_ZZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeEENKUlRS3_mSD_E_clESE_mSD_:
  777|   248k|                {
  778|   248k|                    if (source_reader<Source>::read(source, v, length) != length)
  ------------------
  |  Branch (778:25): [True: 147, False: 248k]
  ------------------
  779|    147|                    {
  780|    147|                        ec = cbor_errc::unexpected_eof;
  781|    147|                        more = false;
  782|    147|                        return more;
  783|    147|                    }
  784|   248k|                    return true;
  785|   248k|                };
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE8get_sizeERNS4_10error_codeE:
  741|  22.6M|    {
  742|  22.6M|        uint64_t u = get_uint64_value(ec);
  743|  22.6M|        if (!more_)
  ------------------
  |  Branch (743:13): [True: 162, False: 22.6M]
  ------------------
  744|    162|        {
  745|    162|            return 0;
  746|    162|        }
  747|  22.6M|        std::size_t len = static_cast<std::size_t>(u);
  748|  22.6M|        if (len != u)
  ------------------
  |  Branch (748:13): [True: 0, False: 22.6M]
  ------------------
  749|      0|        {
  750|      0|            ec = cbor_errc::number_too_large;
  751|      0|            more_ = false;
  752|      0|        }
  753|  22.6M|        return len;
  754|  22.6M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2EOS8_:
   89|  6.90M|        mapped_string(mapped_string&&) noexcept = default;
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2ERKNS4_6vectorIhNS5_IhEEEERKS6_:
   78|  2.54M|        {
   79|  2.54M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
  708|   994k|    {
  709|   994k|        auto c = source_.peek();
  710|   994k|        if (c.eof)
  ------------------
  |  Branch (710:13): [True: 0, False: 994k]
  ------------------
  711|      0|        {
  712|      0|            ec = cbor_errc::unexpected_eof;
  713|      0|            more_ = false;
  714|      0|            return;
  715|      0|        }
  716|   994k|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  717|   994k|        uint8_t info = get_additional_information_value(c.value);
  718|       |
  719|   994k|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::text_string);
  ------------------
  |  |  378|   994k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 994k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  720|   994k|        auto func = [&str](Source& source, std::size_t length, std::error_code& ec) -> bool
  721|   994k|        {
  722|   994k|            if (source_reader<Source>::read(source, str, length) != length)
  723|   994k|            {
  724|   994k|                ec = cbor_errc::unexpected_eof;
  725|   994k|                return false;
  726|   994k|            }
  727|   994k|            return true;
  728|   994k|        };
  729|   994k|        iterate_string_chunks(func, major_type, ec);
  730|       |
  731|   994k|        if (!stringref_map_stack_.empty() && 
  ------------------
  |  Branch (731:13): [True: 670k, False: 324k]
  ------------------
  732|   994k|            info != jsoncons::cbor::detail::additional_info::indefinite_length &&
  ------------------
  |  Branch (732:13): [True: 669k, False: 683]
  ------------------
  733|   994k|            str.length() >= jsoncons::cbor::detail::min_length_for_stringref(stringref_map_stack_.back().size()))
  ------------------
  |  Branch (733:13): [True: 534k, False: 134k]
  ------------------
  734|   534k|        {
  735|   534k|            stringref_map_stack_.back().emplace_back(mapped_string(str,alloc_));
  736|   534k|        }
  737|       |
  738|   994k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21iterate_string_chunksIZNS7_16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeEEUlRS3_mSF_E_EEvRT_NS0_6detail15cbor_major_typeESF_:
  817|   994k|    {
  818|   994k|        int nesting_level = 0;
  819|       |
  820|   994k|        bool done = false;
  821|  4.52M|        while (!done)
  ------------------
  |  Branch (821:16): [True: 3.53M, False: 993k]
  ------------------
  822|  3.53M|        {
  823|  3.53M|            auto c = source_.peek();
  824|  3.53M|            if (c.eof)
  ------------------
  |  Branch (824:17): [True: 56, False: 3.53M]
  ------------------
  825|     56|            {
  826|     56|                ec = cbor_errc::unexpected_eof;
  827|     56|                more_ = false;
  828|     56|                return;
  829|     56|            }
  830|  3.53M|            if (nesting_level > 0 && c.value == 0xff)
  ------------------
  |  Branch (830:17): [True: 2.53M, False: 994k]
  |  Branch (830:38): [True: 237k, False: 2.30M]
  ------------------
  831|   237k|            {
  832|   237k|                --nesting_level;
  833|   237k|                if (nesting_level == 0)
  ------------------
  |  Branch (833:21): [True: 1.55k, False: 236k]
  ------------------
  834|  1.55k|                {
  835|  1.55k|                    done = true;
  836|  1.55k|                }
  837|   237k|                source_.ignore(1);
  838|   237k|                continue;
  839|   237k|            }
  840|       |
  841|  3.29M|            jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  842|  3.29M|            if (major_type != type)
  ------------------
  |  Branch (842:17): [True: 34, False: 3.29M]
  ------------------
  843|     34|            {
  844|     34|                ec = cbor_errc::illegal_chunked_string;
  845|     34|                more_ = false;
  846|     34|                return;
  847|     34|            }
  848|  3.29M|            uint8_t info = get_additional_information_value(c.value);
  849|       |
  850|  3.29M|            switch (info)
  851|  3.29M|            {
  852|  2.30M|                case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (852:17): [True: 2.30M, False: 993k]
  ------------------
  853|  2.30M|                {
  854|  2.30M|                    ++nesting_level;
  855|  2.30M|                    source_.ignore(1);
  856|  2.30M|                    break;
  857|      0|                }
  858|   993k|                default: // definite length
  ------------------
  |  Branch (858:17): [True: 993k, False: 2.30M]
  ------------------
  859|   993k|                {
  860|   993k|                    std::size_t length = get_size(ec);
  861|   993k|                    if (!more_)
  ------------------
  |  Branch (861:25): [True: 1, False: 993k]
  ------------------
  862|      1|                    {
  863|      1|                        return;
  864|      1|                    }
  865|   993k|                    more_ = func(source_, length, ec);
  866|   993k|                    if (!more_)
  ------------------
  |  Branch (866:25): [True: 323, False: 993k]
  ------------------
  867|    323|                    {
  868|    323|                        return;
  869|    323|                    }
  870|   993k|                    if (nesting_level == 0)
  ------------------
  |  Branch (870:25): [True: 992k, False: 1.52k]
  ------------------
  871|   992k|                    {
  872|   992k|                        done = true;
  873|   992k|                    }
  874|   993k|                    break;
  875|   993k|                }
  876|  3.29M|            }
  877|  3.29M|        } 
  878|   994k|    }
_ZZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeEENKUlRS3_mSE_E_clESF_mSE_:
  721|   993k|        {
  722|   993k|            if (source_reader<Source>::read(source, str, length) != length)
  ------------------
  |  Branch (722:17): [True: 323, False: 993k]
  ------------------
  723|    323|            {
  724|    323|                ec = cbor_errc::unexpected_eof;
  725|    323|                return false;
  726|    323|            }
  727|   993k|            return true;
  728|   993k|        };
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2ERKNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERKS6_:
   67|   534k|        {
   68|   534k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10get_doubleERNS4_10error_codeE:
 1051|  16.2k|    {
 1052|  16.2k|        double val = 0;
 1053|       |
 1054|  16.2k|        uint8_t b;
 1055|  16.2k|        if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1055:13): [True: 0, False: 16.2k]
  ------------------
 1056|      0|        {
 1057|      0|            ec = cbor_errc::unexpected_eof;
 1058|      0|            more_ = false;
 1059|      0|            return 0;
 1060|      0|        }
 1061|  16.2k|        uint8_t info = get_additional_information_value(b);
 1062|  16.2k|        switch (info)
 1063|  16.2k|        {
 1064|  13.2k|        case 0x1a: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (1064:9): [True: 13.2k, False: 3.04k]
  ------------------
 1065|  13.2k|            {
 1066|  13.2k|                uint8_t buf[sizeof(float)];
 1067|  13.2k|                if (source_.read(buf, sizeof(float)) !=sizeof(float)) 
  ------------------
  |  Branch (1067:21): [True: 23, False: 13.1k]
  ------------------
 1068|     23|                {
 1069|     23|                    ec = cbor_errc::unexpected_eof;
 1070|     23|                    more_ = false;
 1071|     23|                    return 0;
 1072|     23|                }
 1073|  13.1k|                val = binary::big_to_native<float>(buf, sizeof(buf));
 1074|  13.1k|                break;
 1075|  13.2k|            }
 1076|       |
 1077|  3.04k|        case 0x1b: //  Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (1077:9): [True: 3.04k, False: 13.2k]
  ------------------
 1078|  3.04k|            {
 1079|  3.04k|                uint8_t buf[sizeof(double)];
 1080|  3.04k|                if (source_.read(buf, sizeof(double)) != sizeof(double))
  ------------------
  |  Branch (1080:21): [True: 16, False: 3.02k]
  ------------------
 1081|     16|                {
 1082|     16|                    ec = cbor_errc::unexpected_eof;
 1083|     16|                    more_ = false;
 1084|     16|                    return 0;
 1085|     16|                }
 1086|  3.02k|                val = binary::big_to_native<double>(buf, sizeof(buf));
 1087|  3.02k|                break;
 1088|  3.04k|            }
 1089|      0|            default:
  ------------------
  |  Branch (1089:13): [True: 0, False: 16.2k]
  ------------------
 1090|      0|                break;
 1091|  16.2k|        }
 1092|       |        
 1093|  16.2k|        return val;
 1094|  16.2k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21read_decimal_fractionERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
 1097|   137k|    {
 1098|   137k|        std::size_t size = get_size(ec);
 1099|   137k|        if (!more_)
  ------------------
  |  Branch (1099:13): [True: 1, False: 137k]
  ------------------
 1100|      1|        {
 1101|      1|            return;
 1102|      1|        }
 1103|   137k|        if (size != 2)
  ------------------
  |  Branch (1103:13): [True: 86, False: 137k]
  ------------------
 1104|     86|        {
 1105|     86|            ec = cbor_errc::invalid_decimal_fraction;
 1106|     86|            more_ = false;
 1107|     86|            return;
 1108|     86|        }
 1109|       |
 1110|   137k|        auto c = source_.peek();
 1111|   137k|        if (c.eof)
  ------------------
  |  Branch (1111:13): [True: 20, False: 137k]
  ------------------
 1112|     20|        {
 1113|     20|            ec = cbor_errc::unexpected_eof;
 1114|     20|            more_ = false;
 1115|     20|            return;
 1116|     20|        }
 1117|   137k|        int64_t exponent = 0;
 1118|   137k|        switch (get_major_type(c.value))
 1119|   137k|        {
 1120|   124k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1120:13): [True: 124k, False: 13.4k]
  ------------------
 1121|   124k|            {
 1122|   124k|                exponent = get_uint64_value(ec);
 1123|   124k|                if (ec)
  ------------------
  |  Branch (1123:21): [True: 258, False: 124k]
  ------------------
 1124|    258|                {
 1125|    258|                    return;
 1126|    258|                }
 1127|   124k|                break;
 1128|   124k|            }
 1129|   124k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1129:13): [True: 13.4k, False: 124k]
  ------------------
 1130|  13.4k|            {
 1131|  13.4k|                exponent = get_int64_value(ec);
 1132|  13.4k|                if (ec)
  ------------------
  |  Branch (1132:21): [True: 473, False: 12.9k]
  ------------------
 1133|    473|                {
 1134|    473|                    return;
 1135|    473|                }
 1136|  12.9k|                break;
 1137|  13.4k|            }
 1138|  12.9k|            default:
  ------------------
  |  Branch (1138:13): [True: 4, False: 137k]
  ------------------
 1139|      4|            {
 1140|      4|                ec = cbor_errc::invalid_decimal_fraction;
 1141|      4|                more_ = false;
 1142|      4|                return;
 1143|  13.4k|            }
 1144|   137k|        }
 1145|       |
 1146|   137k|        string_type str(alloc_);
 1147|       |
 1148|   137k|        c = source_.peek();
 1149|   137k|        if (c.eof)
  ------------------
  |  Branch (1149:13): [True: 18, False: 137k]
  ------------------
 1150|     18|        {
 1151|     18|            ec = cbor_errc::unexpected_eof;
 1152|     18|            more_ = false;
 1153|     18|            return;
 1154|     18|        }
 1155|       |
 1156|   137k|        switch (get_major_type(c.value))
 1157|   137k|        {
 1158|  10.8k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1158:13): [True: 10.8k, False: 126k]
  ------------------
 1159|  10.8k|            {
 1160|  10.8k|                uint64_t val = get_uint64_value(ec);
 1161|  10.8k|                if (ec)
  ------------------
  |  Branch (1161:21): [True: 1, False: 10.8k]
  ------------------
 1162|      1|                {
 1163|      1|                    return;
 1164|      1|                }
 1165|  10.8k|                jsoncons::detail::from_integer(val, str);
 1166|  10.8k|                break;
 1167|  10.8k|            }
 1168|  1.37k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1168:13): [True: 1.37k, False: 135k]
  ------------------
 1169|  1.37k|            {
 1170|  1.37k|                int64_t val = get_int64_value(ec);
 1171|  1.37k|                if (ec)
  ------------------
  |  Branch (1171:21): [True: 1, False: 1.37k]
  ------------------
 1172|      1|                {
 1173|      1|                    return;
 1174|      1|                }
 1175|  1.37k|                jsoncons::detail::from_integer(val, str);
 1176|  1.37k|                break;
 1177|  1.37k|            }
 1178|   124k|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (1178:13): [True: 124k, False: 12.2k]
  ------------------
 1179|   124k|            {
 1180|   124k|                uint8_t b;
 1181|   124k|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1181:21): [True: 0, False: 124k]
  ------------------
 1182|      0|                {
 1183|      0|                    ec = cbor_errc::unexpected_eof;
 1184|      0|                    more_ = false;
 1185|      0|                    return;
 1186|      0|                }
 1187|   124k|                uint8_t tag = get_additional_information_value(b);
 1188|   124k|                c = source_.peek();
 1189|   124k|                if (c.eof)
  ------------------
  |  Branch (1189:21): [True: 3, False: 124k]
  ------------------
 1190|      3|                {
 1191|      3|                    ec = cbor_errc::unexpected_eof;
 1192|      3|                    more_ = false;
 1193|      3|                    return;
 1194|      3|                }
 1195|       |
 1196|   124k|                if (get_major_type(c.value) == jsoncons::cbor::detail::cbor_major_type::byte_string)
  ------------------
  |  Branch (1196:21): [True: 124k, False: 6]
  ------------------
 1197|   124k|                {
 1198|   124k|                    bytes_buffer_.clear();
 1199|   124k|                    read_byte_string(bytes_buffer_, ec);
 1200|   124k|                    if (ec)
  ------------------
  |  Branch (1200:25): [True: 4, False: 124k]
  ------------------
 1201|      4|                    {
 1202|      4|                        more_ = false;
 1203|      4|                        return;
 1204|      4|                    }
 1205|   124k|                    if (tag == 2)
  ------------------
  |  Branch (1205:25): [True: 124k, False: 772]
  ------------------
 1206|   124k|                    {
 1207|   124k|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1208|   124k|                        n.write_string(str);
 1209|   124k|                    }
 1210|    772|                    else if (tag == 3)
  ------------------
  |  Branch (1210:30): [True: 766, False: 6]
  ------------------
 1211|    766|                    {
 1212|    766|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1213|    766|                        n = -1 - n;
 1214|    766|                        n.write_string(str);
 1215|    766|                    }
 1216|   124k|                }
 1217|   124k|                break;
 1218|   124k|            }
 1219|   124k|            default:
  ------------------
  |  Branch (1219:13): [True: 7, False: 137k]
  ------------------
 1220|      7|            {
 1221|      7|                ec = cbor_errc::invalid_decimal_fraction;
 1222|      7|                more_ = false;
 1223|      7|                return;
 1224|   124k|            }
 1225|   137k|        }
 1226|       |
 1227|   137k|        if (str.size() >= static_cast<std::size_t>((std::numeric_limits<int32_t>::max)()) || 
  ------------------
  |  Branch (1227:13): [True: 0, False: 137k]
  ------------------
 1228|   137k|            exponent >= (std::numeric_limits<int32_t>::max)() || 
  ------------------
  |  Branch (1228:13): [True: 1, False: 137k]
  ------------------
 1229|   137k|            exponent <= (std::numeric_limits<int32_t>::min)())
  ------------------
  |  Branch (1229:13): [True: 66, False: 136k]
  ------------------
 1230|     67|        {
 1231|     67|            ec = cbor_errc::invalid_decimal_fraction;
 1232|     67|            more_ = false;
 1233|     67|            return;
 1234|     67|        }
 1235|   136k|        else if (str.size() > 0)
  ------------------
  |  Branch (1235:18): [True: 136k, False: 12]
  ------------------
 1236|   136k|        {
 1237|   136k|            if (str[0] == '-')
  ------------------
  |  Branch (1237:17): [True: 1.99k, False: 134k]
  ------------------
 1238|  1.99k|            {
 1239|  1.99k|                result.push_back('-');
 1240|  1.99k|                jsoncons::detail::prettify_string(str.c_str()+1, str.size()-1, (int)exponent, -4, 17, result);
 1241|  1.99k|            }
 1242|   134k|            else
 1243|   134k|            {
 1244|   134k|                jsoncons::detail::prettify_string(str.c_str(), str.size(), (int)exponent, -4, 17, result);
 1245|   134k|            }
 1246|   136k|        }
 1247|     12|        else
 1248|     12|        {
 1249|     12|            ec = cbor_errc::invalid_decimal_fraction;
 1250|     12|            more_ = false;
 1251|     12|            return;
 1252|     12|        }
 1253|   137k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13read_bigfloatERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
 1256|  97.2k|    {
 1257|  97.2k|        std::size_t size = get_size(ec);
 1258|  97.2k|        if (!more_)
  ------------------
  |  Branch (1258:13): [True: 1, False: 97.2k]
  ------------------
 1259|      1|        {
 1260|      1|            return;
 1261|      1|        }
 1262|  97.2k|        if (size != 2)
  ------------------
  |  Branch (1262:13): [True: 92, False: 97.1k]
  ------------------
 1263|     92|        {
 1264|     92|            ec = cbor_errc::invalid_bigfloat;
 1265|     92|            more_ = false;
 1266|     92|            return;
 1267|     92|        }
 1268|       |
 1269|  97.1k|        auto c = source_.peek();
 1270|  97.1k|        if (c.eof)
  ------------------
  |  Branch (1270:13): [True: 20, False: 97.1k]
  ------------------
 1271|     20|        {
 1272|     20|            ec = cbor_errc::unexpected_eof;
 1273|     20|            more_ = false;
 1274|     20|            return;
 1275|     20|        }
 1276|  97.1k|        int64_t exponent = 0;
 1277|  97.1k|        switch (get_major_type(c.value))
 1278|  97.1k|        {
 1279|  6.40k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1279:13): [True: 6.40k, False: 90.7k]
  ------------------
 1280|  6.40k|            {
 1281|  6.40k|                exponent = get_uint64_value(ec);
 1282|  6.40k|                if (ec)
  ------------------
  |  Branch (1282:21): [True: 534, False: 5.87k]
  ------------------
 1283|    534|                {
 1284|    534|                    return;
 1285|    534|                }
 1286|  5.87k|                break;
 1287|  6.40k|            }
 1288|  90.7k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1288:13): [True: 90.7k, False: 6.41k]
  ------------------
 1289|  90.7k|            {
 1290|  90.7k|                exponent = get_int64_value(ec);
 1291|  90.7k|                if (ec)
  ------------------
  |  Branch (1291:21): [True: 262, False: 90.4k]
  ------------------
 1292|    262|                {
 1293|    262|                    return;
 1294|    262|                }
 1295|  90.4k|                break;
 1296|  90.7k|            }
 1297|  90.4k|            default:
  ------------------
  |  Branch (1297:13): [True: 2, False: 97.1k]
  ------------------
 1298|      2|            {
 1299|      2|                ec = cbor_errc::invalid_bigfloat;
 1300|      2|                more_ = false;
 1301|      2|                return;
 1302|  90.7k|            }
 1303|  97.1k|        }
 1304|       |
 1305|  96.3k|        c = source_.peek();
 1306|  96.3k|        if (c.eof)
  ------------------
  |  Branch (1306:13): [True: 15, False: 96.3k]
  ------------------
 1307|     15|        {
 1308|     15|            ec = cbor_errc::unexpected_eof;
 1309|     15|            more_ = false;
 1310|     15|            return;
 1311|     15|        }
 1312|  96.3k|        switch (get_major_type(c.value))
 1313|  96.3k|        {
 1314|  12.3k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1314:13): [True: 12.3k, False: 83.9k]
  ------------------
 1315|  12.3k|            {
 1316|  12.3k|                uint64_t val = get_uint64_value(ec);
 1317|  12.3k|                if (ec)
  ------------------
  |  Branch (1317:21): [True: 1, False: 12.3k]
  ------------------
 1318|      1|                {
 1319|      1|                    return;
 1320|      1|                }
 1321|  12.3k|                str.push_back('0');
 1322|  12.3k|                str.push_back('x');
 1323|  12.3k|                jsoncons::detail::integer_to_string_hex(val, str);
 1324|  12.3k|                break;
 1325|  12.3k|            }
 1326|  7.15k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1326:13): [True: 7.15k, False: 89.1k]
  ------------------
 1327|  7.15k|            {
 1328|  7.15k|                int64_t val = get_int64_value(ec);
 1329|  7.15k|                if (ec)
  ------------------
  |  Branch (1329:21): [True: 1, False: 7.14k]
  ------------------
 1330|      1|                {
 1331|      1|                    return;
 1332|      1|                }
 1333|  7.14k|                str.push_back('-');
 1334|  7.14k|                str.push_back('0');
 1335|  7.14k|                str.push_back('x');
 1336|  7.14k|                jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(-val), str);
 1337|  7.14k|                break;
 1338|  7.15k|            }
 1339|  76.8k|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (1339:13): [True: 76.8k, False: 19.5k]
  ------------------
 1340|  76.8k|            {
 1341|  76.8k|                uint8_t b;
 1342|  76.8k|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1342:21): [True: 0, False: 76.8k]
  ------------------
 1343|      0|                {
 1344|      0|                    ec = cbor_errc::unexpected_eof;
 1345|      0|                    more_ = false;
 1346|      0|                    return;
 1347|      0|                }
 1348|  76.8k|                uint8_t tag = get_additional_information_value(b);
 1349|       |
 1350|  76.8k|                c = source_.peek();
 1351|  76.8k|                if (c.eof)
  ------------------
  |  Branch (1351:21): [True: 7, False: 76.8k]
  ------------------
 1352|      7|                {
 1353|      7|                    ec = cbor_errc::unexpected_eof;
 1354|      7|                    more_ = false;
 1355|      7|                    return;
 1356|      7|                }
 1357|       |
 1358|  76.8k|                if (get_major_type(c.value) == jsoncons::cbor::detail::cbor_major_type::byte_string)
  ------------------
  |  Branch (1358:21): [True: 72.1k, False: 4.65k]
  ------------------
 1359|  72.1k|                {
 1360|  72.1k|                    bytes_buffer_.clear(); 
 1361|  72.1k|                    more_ = read_byte_string(bytes_buffer_, ec);
 1362|  72.1k|                    if (!more_)
  ------------------
  |  Branch (1362:25): [True: 8, False: 72.1k]
  ------------------
 1363|      8|                    {
 1364|      8|                        return;
 1365|      8|                    }
 1366|  72.1k|                    if (tag == 2)
  ------------------
  |  Branch (1366:25): [True: 67.5k, False: 4.62k]
  ------------------
 1367|  67.5k|                    {
 1368|  67.5k|                        str.push_back('0');
 1369|  67.5k|                        str.push_back('x');
 1370|  67.5k|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1371|  67.5k|                        n.write_string_hex(str);
 1372|  67.5k|                    }
 1373|  4.62k|                    else if (tag == 3)
  ------------------
  |  Branch (1373:30): [True: 1.76k, False: 2.86k]
  ------------------
 1374|  1.76k|                    {
 1375|  1.76k|                        str.push_back('-');
 1376|  1.76k|                        str.push_back('0');
 1377|  1.76k|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1378|  1.76k|                        n = -1 - n;
 1379|  1.76k|                        n.write_string_hex(str);
 1380|  1.76k|                        str[2] = 'x'; // overwrite minus
 1381|  1.76k|                    }
 1382|  72.1k|                }
 1383|  76.7k|                break;
 1384|  76.8k|            }
 1385|  76.7k|            default:
  ------------------
  |  Branch (1385:13): [True: 2, False: 96.3k]
  ------------------
 1386|      2|            {
 1387|      2|                ec = cbor_errc::invalid_bigfloat;
 1388|      2|                more_ = false;
 1389|      2|                return;
 1390|  76.8k|            }
 1391|  96.3k|        }
 1392|       |
 1393|  96.2k|        str.push_back('p');
 1394|  96.2k|        if (exponent >=0)
  ------------------
  |  Branch (1394:13): [True: 5.93k, False: 90.3k]
  ------------------
 1395|  5.93k|        {
 1396|  5.93k|            jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(exponent), str);
 1397|  5.93k|        }
 1398|  90.3k|        else
 1399|  90.3k|        {
 1400|  90.3k|            str.push_back('-');
 1401|  90.3k|            jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(-exponent), str);
 1402|  90.3k|        }
 1403|  96.2k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE23produce_begin_multi_dimERNS_24basic_item_event_visitorIcEENS_12semantic_tagERNS4_10error_codeE:
 1878|  3.96k|    {
 1879|  3.96k|        uint8_t b;
 1880|  3.96k|        if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1880:13): [True: 0, False: 3.96k]
  ------------------
 1881|      0|        {
 1882|      0|            ec = cbor_errc::unexpected_eof;
 1883|      0|            more_ = false;
 1884|      0|            return;
 1885|      0|        }
 1886|  3.96k|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(b);
 1887|  3.96k|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::array);
  ------------------
  |  |  378|  3.96k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 3.96k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1888|  3.96k|        uint8_t info = get_additional_information_value(b);
 1889|       |       
 1890|  3.96k|        read_shape(info, ec);   
 1891|  3.96k|        if (ec)
  ------------------
  |  Branch (1891:13): [True: 406, False: 3.56k]
  ------------------
 1892|    406|        {
 1893|    406|            return;
 1894|    406|        }
 1895|       |
 1896|  3.56k|        state_stack_.emplace_back(parse_mode::multi_dim, 0);
 1897|  3.56k|        more_ = visitor.begin_multi_dim(shape_, tag, *this, ec);
 1898|  3.56k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10read_shapeEhRNS4_10error_codeE:
 1907|  3.96k|    {
 1908|  3.96k|        shape_.clear();
 1909|  3.96k|        switch (info)
 1910|  3.96k|        {
 1911|     72|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (1911:13): [True: 72, False: 3.89k]
  ------------------
 1912|     72|            {
 1913|  2.22M|                while (true)
  ------------------
  |  Branch (1913:24): [Folded - Ignored]
  ------------------
 1914|  2.22M|                {
 1915|  2.22M|                    auto c = source_.peek();
 1916|  2.22M|                    if (c.eof)
  ------------------
  |  Branch (1916:25): [True: 68, False: 2.22M]
  ------------------
 1917|     68|                    {
 1918|     68|                        ec = cbor_errc::unexpected_eof;
 1919|     68|                        more_ = false;
 1920|     68|                        return;
 1921|     68|                    }
 1922|  2.22M|                    if (c.value == 0xff)
  ------------------
  |  Branch (1922:25): [True: 825k, False: 1.39M]
  ------------------
 1923|   825k|                    {
 1924|   825k|                        source_.ignore(1);
 1925|   825k|                    }
 1926|  1.39M|                    else
 1927|  1.39M|                    {
 1928|  1.39M|                        std::size_t dim = get_size(ec);
 1929|  1.39M|                        if (!more_)
  ------------------
  |  Branch (1929:29): [True: 4, False: 1.39M]
  ------------------
 1930|      4|                        {
 1931|      4|                            return;
 1932|      4|                        }
 1933|  1.39M|                        shape_.push_back(dim);
 1934|  1.39M|                    }
 1935|  2.22M|                }
 1936|      0|                break;
 1937|     72|            }
 1938|  3.89k|            default:
  ------------------
  |  Branch (1938:13): [True: 3.89k, False: 72]
  ------------------
 1939|  3.89k|            {
 1940|  3.89k|                std::size_t size = get_size(ec);
 1941|  3.89k|                if (!more_)
  ------------------
  |  Branch (1941:21): [True: 28, False: 3.86k]
  ------------------
 1942|     28|                {
 1943|     28|                    return;
 1944|     28|                }
 1945|  1.77M|                for (std::size_t i = 0; more_ && i < size; ++i)
  ------------------
  |  Branch (1945:41): [True: 1.77M, False: 0]
  |  Branch (1945:50): [True: 1.77M, False: 3.76k]
  ------------------
 1946|  1.77M|                {
 1947|  1.77M|                    std::size_t dim = get_size(ec);
 1948|  1.77M|                    if (!more_)
  ------------------
  |  Branch (1948:25): [True: 109, False: 1.77M]
  ------------------
 1949|    109|                    {
 1950|    109|                        return;
 1951|    109|                    }
 1952|  1.77M|                    shape_.push_back(dim);
 1953|  1.77M|                }
 1954|  3.76k|                break;
 1955|  3.86k|            }
 1956|  3.96k|        }
 1957|  3.96k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE11begin_arrayERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  608|  8.47M|    {
  609|  8.47M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  8.47M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 0, False: 8.47M]
  |  |  ------------------
  ------------------
  610|      0|        {
  611|      0|            ec = cbor_errc::max_nesting_depth_exceeded;
  612|      0|            more_ = false;
  613|      0|            return;
  614|      0|        } 
  615|  8.47M|        semantic_tag tag = semantic_tag::none;
  616|  8.47M|        bool pop_stringref_map_stack = false;
  617|  8.47M|        if (other_tags_[stringref_namespace_tag])
  ------------------
  |  Branch (617:13): [True: 29.0k, False: 8.44M]
  ------------------
  618|  29.0k|        {
  619|  29.0k|            stringref_map_stack_.emplace_back();
  620|  29.0k|            other_tags_[stringref_namespace_tag] = false;
  621|  29.0k|            pop_stringref_map_stack = true;
  622|  29.0k|        }
  623|  8.47M|        switch (info)
  624|  8.47M|        {
  625|  1.39M|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (625:13): [True: 1.39M, False: 7.08M]
  ------------------
  626|  1.39M|            {
  627|  1.39M|                state_stack_.emplace_back(parse_mode::indefinite_array,0,pop_stringref_map_stack);
  628|  1.39M|                more_ = visitor.begin_array(tag, *this, ec);
  629|  1.39M|                source_.ignore(1);
  630|  1.39M|                break;
  631|      0|            }
  632|  7.08M|            default: // definite length
  ------------------
  |  Branch (632:13): [True: 7.08M, False: 1.39M]
  ------------------
  633|  7.08M|            {
  634|  7.08M|                std::size_t len = get_size(ec);
  635|  7.08M|                if (!more_)
  ------------------
  |  Branch (635:21): [True: 10, False: 7.08M]
  ------------------
  636|     10|                {
  637|     10|                    return;
  638|     10|                }
  639|  7.08M|                state_stack_.emplace_back(parse_mode::array,len,pop_stringref_map_stack);
  640|  7.08M|                more_ = visitor.begin_array(len, tag, *this, ec);
  641|  7.08M|                break;
  642|  7.08M|            }
  643|  8.47M|        }
  644|  8.47M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE12begin_objectERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  659|  3.17M|    {
  660|  3.17M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  3.17M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 0, False: 3.17M]
  |  |  ------------------
  ------------------
  661|      0|        {
  662|      0|            ec = cbor_errc::max_nesting_depth_exceeded;
  663|      0|            more_ = false;
  664|      0|            return;
  665|      0|        } 
  666|  3.17M|        bool pop_stringref_map_stack = false;
  667|  3.17M|        if (other_tags_[stringref_namespace_tag])
  ------------------
  |  Branch (667:13): [True: 275k, False: 2.90M]
  ------------------
  668|   275k|        {
  669|   275k|            stringref_map_stack_.emplace_back();
  670|   275k|            other_tags_[stringref_namespace_tag] = false;
  671|   275k|            pop_stringref_map_stack = true;
  672|   275k|        }
  673|  3.17M|        switch (info)
  674|  3.17M|        {
  675|  2.57M|            case jsoncons::cbor::detail::additional_info::indefinite_length: 
  ------------------
  |  Branch (675:13): [True: 2.57M, False: 603k]
  ------------------
  676|  2.57M|            {
  677|  2.57M|                state_stack_.emplace_back(parse_mode::indefinite_map_key,0,pop_stringref_map_stack);
  678|  2.57M|                more_ = visitor.begin_object(semantic_tag::none, *this, ec);
  679|  2.57M|                source_.ignore(1);
  680|  2.57M|                break;
  681|      0|            }
  682|   603k|            default: // definite_length
  ------------------
  |  Branch (682:13): [True: 603k, False: 2.57M]
  ------------------
  683|   603k|            {
  684|   603k|                std::size_t len = get_size(ec);
  685|   603k|                if (!more_)
  ------------------
  |  Branch (685:21): [True: 1, False: 603k]
  ------------------
  686|      1|                {
  687|      1|                    return;
  688|      1|                }
  689|   603k|                state_stack_.emplace_back(parse_mode::map_key,len,pop_stringref_map_stack);
  690|   603k|                more_ = visitor.begin_object(len, semantic_tag::none, *this, ec);
  691|   603k|                break;
  692|   603k|            }
  693|  3.17M|        }
  694|  3.17M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21produce_end_multi_dimERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1901|  2.17k|    {
 1902|  2.17k|        more_ = visitor.end_multi_dim(*this, ec);
 1903|  2.17k|        state_stack_.pop_back();
 1904|  2.17k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9end_arrayERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  647|  1.79M|    {
  648|  1.79M|        --nesting_depth_;
  649|       |
  650|  1.79M|        more_ = visitor.end_array(*this, ec);
  651|  1.79M|        if (state_stack_.back().pop_stringref_map_stack)
  ------------------
  |  Branch (651:13): [True: 24.1k, False: 1.77M]
  ------------------
  652|  24.1k|        {
  653|  24.1k|            stringref_map_stack_.pop_back();
  654|  24.1k|        }
  655|  1.79M|        state_stack_.pop_back();
  656|  1.79M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10end_objectERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  697|  58.1k|    {
  698|  58.1k|        --nesting_depth_;
  699|  58.1k|        more_ = visitor.end_object(*this, ec);
  700|  58.1k|        if (state_stack_.back().pop_stringref_map_stack)
  ------------------
  |  Branch (700:13): [True: 494, False: 57.6k]
  ------------------
  701|    494|        {
  702|    494|            stringref_map_stack_.pop_back();
  703|    494|        }
  704|  58.1k|        state_stack_.pop_back();
  705|  58.1k|    }

_ZN8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_19basic_istringstreamIcNS4_11char_traitsIcEES6_EEEEOT_RNS_18basic_json_visitorIcEERKNS0_19cbor_decode_optionsERKS6_:
   51|  9.77k|    {
   52|  9.77k|    }
_ZN8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readERNS4_10error_codeE:
   85|  9.77k|    {
   86|  9.77k|        parser_.reset();
   87|  9.77k|        parser_.parse(visitor_, ec);
   88|  9.77k|        if (ec)
  ------------------
  |  Branch (88:13): [True: 7.52k, False: 2.24k]
  ------------------
   89|  7.52k|        {
   90|  7.52k|            return;
   91|  7.52k|        }
   92|  9.77k|    }

